View Javadoc

1   package org.kuali.ole.repository;
2   
3   import org.apache.commons.io.FileUtils;
4   import org.apache.solr.client.solrj.response.QueryResponse;
5   import org.junit.Assert;
6   import org.junit.Before;
7   import org.junit.Test;
8   import org.kuali.ole.BaseTestCase;
9   import org.kuali.ole.RepositoryManager;
10  import org.kuali.ole.docstore.model.xmlpojo.ingest.*;
11  import org.kuali.ole.docstore.model.xmlpojo.work.bib.marc.DataField;
12  import org.kuali.ole.docstore.model.xmlpojo.work.bib.marc.SubField;
13  import org.kuali.ole.docstore.model.xmlpojo.work.bib.marc.WorkBibMarcRecord;
14  import org.kuali.ole.docstore.model.xmlpojo.work.bib.marc.WorkBibMarcRecords;
15  import org.kuali.ole.docstore.model.xstream.ingest.RequestHandler;
16  import org.kuali.ole.docstore.model.xstream.work.bib.marc.WorkBibMarcRecordProcessor;
17  import org.kuali.ole.docstore.service.BeanLocator;
18  import org.kuali.ole.docstore.service.IngestNIndexHandlerService;
19  import org.kuali.ole.docstore.service.ServiceLocator;
20  import org.slf4j.Logger;
21  import org.slf4j.LoggerFactory;
22  
23  import javax.jcr.Node;
24  import javax.jcr.Session;
25  import java.io.File;
26  import java.net.URL;
27  import java.util.ArrayList;
28  import java.util.Iterator;
29  import java.util.List;
30  
31  import static junit.framework.Assert.assertNotNull;
32  
33  /**
34   * Created by IntelliJ IDEA.
35   * User: Pranitha
36   * Date: 3/9/12
37   * Time: 11:09 AM
38   * To change this template use File | Settings | File Templates.
39   */
40  public class CheckinManager_AT
41          extends BaseTestCase {
42      private static final Logger                     LOG                        = LoggerFactory
43              .getLogger(CheckinManager_AT.class);
44      private              IngestNIndexHandlerService ingestNIndexHandlerService = BeanLocator
45              .getIngestNIndexHandlerService();
46  
47      @Before
48      public void setUp() throws Exception {
49          super.setUp();
50      }
51  
52      @Test
53      public void checkInRecord() throws Exception {
54          CheckoutManager checkoutManager = new CheckoutManager();
55          NodeHandler nodeHandler = new NodeHandler();
56          String author = null;
57          String instIdValue = null;
58          // input record
59          URL resource = getClass().getResource("/org/kuali/ole/repository/request.xml");
60          File file = new File(resource.toURI());
61          String fileContent = FileUtils.readFileToString(file);
62  
63          ResponseDocument responseDocument = new ResponseDocument();
64          RequestHandler requestHandler = new RequestHandler();
65          Request request = requestHandler.toObject(fileContent);
66          // Ingest & Index input rec
67          Response xmlResponse = ingestNIndexHandlerService.ingestNIndexRequestDocuments(request);
68          responseDocument = xmlResponse.getDocuments().get(0);
69          String uuid = responseDocument.getUuid();
70          Session session = RepositoryManager.getRepositoryManager().getSession("ole-khuntley", "batchIngest");
71          instIdValue = "1234567890";
72          //content of marc rec
73          String checkedOutContent = checkoutManager.checkOut(uuid, "mockUser", "checkout");
74          assertNotNull(checkedOutContent);
75          //updating marc content
76          List<WorkBibMarcRecord> updatedMarcRecs = new ArrayList<WorkBibMarcRecord>();
77          WorkBibMarcRecordProcessor workBibMarcRecordProcessor = new WorkBibMarcRecordProcessor();
78          workBibMarcRecordProcessor.fromXML(checkedOutContent);
79          WorkBibMarcRecords workBibMarcRecords = workBibMarcRecordProcessor.fromXML(checkedOutContent);
80          for (Iterator<WorkBibMarcRecord> iterator = workBibMarcRecords.getRecords().iterator(); iterator.hasNext(); ) {
81              WorkBibMarcRecord rec = iterator.next();
82              DataField dataField = rec.getDataFieldForTag("100");
83              for (SubField subField : dataField.getSubFields()) {
84                  author = subField.getValue();
85                  author = author + "Updated version for author";
86                  subField.setValue(author);
87              }
88              updatedMarcRecs.add(rec);
89          }
90          workBibMarcRecords = new WorkBibMarcRecords();
91          workBibMarcRecords.setRecords(updatedMarcRecs);
92          workBibMarcRecordProcessor = new WorkBibMarcRecordProcessor();
93          String updatedContent = workBibMarcRecordProcessor.toXml(workBibMarcRecords);
94          updatedContent = updatedContent.replace("list", "collection");
95          RequestDocument updatedReqDoc = new RequestDocument();
96          buildRequestDoc(updatedReqDoc, responseDocument, updatedContent, instIdValue);
97          //checking in record with updated content and links
98          CheckinManager checkinManager = new CheckinManager();
99          String updatedVersion = checkinManager.updateContent(updatedReqDoc);
100         Assert.assertNotNull(updatedVersion);
101         checkedOutContent = checkoutManager.checkOut(uuid, "mockUser", "checkout");
102         assertNotNull(checkedOutContent);
103         Assert.assertEquals("Content matches with version updated record", checkedOutContent, updatedContent);
104         Node bibNode = nodeHandler.getNodeByUUID(session, uuid);
105         String instanceIdentifier = bibNode.getProperty("instanceIdentifier").getValue().getString();
106         Assert.assertEquals("Instance Identifier matches Docstore value", instanceIdentifier, instIdValue);
107         // getting instance identifier value from Solr
108         QueryResponse queryResponse = ServiceLocator.getIndexerService().searchBibRecord(responseDocument.getCategory(),
109                                                                                          responseDocument.getType(),
110                                                                                          responseDocument.getFormat(),
111                                                                                          "id", uuid,
112                                                                                          "instanceIdentifier");
113         LOG.info("queryResponse" + queryResponse);
114         List solrInstIdList = new ArrayList();
115         solrInstIdList = (List) queryResponse.getResults().get(0).getFieldValue("instanceIdentifier");
116         Assert.assertEquals("Instance Identifier matches search result", instIdValue, solrInstIdList.get(0));
117     }
118 
119 
120     private void buildRequestDoc(RequestDocument updatedReqDoc, ResponseDocument responseDocument,
121                                  String updatedContent, String instIdValue) {
122         updatedReqDoc.setCategory(responseDocument.getCategory());
123         updatedReqDoc.setType(responseDocument.getType());
124         updatedReqDoc.setFormat(responseDocument.getFormat());
125         updatedReqDoc.setId(responseDocument.getUuid());
126         Content updatedCont = new Content();
127         updatedCont.setContent(updatedContent);
128         updatedReqDoc.setContent(updatedCont);
129         AdditionalAttributes addAtt = new AdditionalAttributes();
130         addAtt.setDateEntered("12-12-2-2010");
131         addAtt.setLastUpdated("12-12-2-2010");
132         addAtt.setFastAddFlag("true");
133         addAtt.setSupressFromPublic("false");
134         updatedReqDoc.setAdditionalAttributes(addAtt);
135         updatedReqDoc.setUuid(responseDocument.getUuid());
136 
137     }
138 }