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
35
36
37
38
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
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
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
73 String checkedOutContent = checkoutManager.checkOut(uuid, "mockUser", "checkout");
74 assertNotNull(checkedOutContent);
75
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
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
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 }