Revision 8023
Added by Jing Tao over 11 years ago
metacat-index/src/main/java/edu/ucsb/nceas/metacat/index/resourcemap/ResourceMapSubprocessor.java | ||
---|---|---|
69 | 69 |
import org.dataone.cn.indexer.parser.AbstractDocumentSubprocessor; |
70 | 70 |
import org.dataone.cn.indexer.parser.IDocumentSubprocessor; |
71 | 71 |
import org.dataone.cn.indexer.resourcemap.ResourceMap; |
72 |
import org.dataone.cn.indexer.resourcemap.ResourceMapFactory; |
|
72 | 73 |
import org.dataone.cn.indexer.solrhttp.SolrDoc; |
73 | 74 |
import org.dataone.cn.indexer.solrhttp.SolrElementField; |
74 | 75 |
import org.dataone.service.exceptions.NotFound; |
75 | 76 |
import org.dataone.service.exceptions.NotImplemented; |
76 | 77 |
import org.dataone.service.exceptions.UnsupportedType; |
77 | 78 |
import org.dataone.service.types.v1.Subject; |
79 |
import org.dspace.foresite.OREParserException; |
|
78 | 80 |
import org.w3c.dom.Document; |
79 | 81 |
import org.w3c.dom.Element; |
80 | 82 |
import org.w3c.dom.NodeList; |
... | ... | |
113 | 115 |
@Override |
114 | 116 |
public Map<String, SolrDoc> processDocument(String identifier, Map<String, SolrDoc> docs, |
115 | 117 |
Document doc) throws IOException, EncoderException, SAXException, |
116 |
XPathExpressionException, ParserConfigurationException, SolrServerException, NotImplemented, NotFound, UnsupportedType { |
|
118 |
XPathExpressionException, ParserConfigurationException, SolrServerException, NotImplemented, NotFound, UnsupportedType, OREParserException {
|
|
117 | 119 |
SolrDoc resourceMapDoc = docs.get(identifier); |
118 | 120 |
List<SolrDoc> processedDocs = processResourceMap(resourceMapDoc, doc); |
119 | 121 |
Map<String, SolrDoc> processedDocsMap = new HashMap<String, SolrDoc>(); |
... | ... | |
124 | 126 |
} |
125 | 127 |
|
126 | 128 |
private List<SolrDoc> processResourceMap(SolrDoc indexDocument, Document resourceMapDocument) |
127 |
throws XPathExpressionException, IOException, SAXException, ParserConfigurationException, EncoderException, SolrServerException, NotImplemented, NotFound, UnsupportedType{ |
|
128 |
ResourceMap resourceMap = new ResourceMap(resourceMapDocument); |
|
129 |
throws XPathExpressionException, IOException, SAXException, ParserConfigurationException, EncoderException, SolrServerException, NotImplemented, NotFound, UnsupportedType, OREParserException{ |
|
130 |
//ResourceMap resourceMap = new ResourceMap(resourceMapDocument); |
|
131 |
ResourceMap resourceMap = ResourceMapFactory.buildResourceMap(resourceMapDocument); |
|
129 | 132 |
List<String> documentIds = resourceMap.getAllDocumentIDs();//this list includes the resourceMap id itself. |
130 | 133 |
//List<SolrDoc> updateDocuments = getHttpService().getDocuments(getSolrQueryUri(), documentIds); |
131 | 134 |
List<SolrDoc> updateDocuments = getSolrDocs(resourceMap.getIdentifier(), documentIds); |
metacat-index/src/main/java/edu/ucsb/nceas/metacat/index/SolrIndex.java | ||
---|---|---|
63 | 63 |
import org.dataone.cn.indexer.parser.SolrField; |
64 | 64 |
import org.dataone.cn.indexer.resourcemap.ResourceEntry; |
65 | 65 |
import org.dataone.cn.indexer.resourcemap.ResourceMap; |
66 |
import org.dataone.cn.indexer.resourcemap.ResourceMapFactory; |
|
66 | 67 |
import org.dataone.cn.indexer.solrhttp.SolrDoc; |
67 | 68 |
import org.dataone.cn.indexer.solrhttp.SolrElementField; |
68 | 69 |
import org.dataone.service.exceptions.NotFound; |
... | ... | |
73 | 74 |
import org.dataone.service.types.v1.Identifier; |
74 | 75 |
import org.dataone.service.types.v1.SystemMetadata; |
75 | 76 |
import org.dataone.service.util.TypeMarshaller; |
77 |
import org.dspace.foresite.OREParserException; |
|
76 | 78 |
import org.jibx.runtime.JiBXException; |
77 | 79 |
import org.w3c.dom.Document; |
78 | 80 |
import org.xml.sax.SAXException; |
... | ... | |
450 | 452 |
* @throws NotFound |
451 | 453 |
* @throws NotImplemented |
452 | 454 |
* @throws ServiceFailure |
455 |
* @throws OREParserException |
|
453 | 456 |
*/ |
454 | 457 |
public void update(String pid, List<String> obsoleteIds, SystemMetadata systemMetadata, InputStream data) |
455 | 458 |
throws IOException, SAXException, ParserConfigurationException, |
456 |
XPathExpressionException, SolrServerException, JiBXException, EncoderException, NotImplemented, NotFound, UnsupportedType, ServiceFailure { |
|
459 |
XPathExpressionException, SolrServerException, JiBXException, EncoderException, NotImplemented, NotFound, UnsupportedType, ServiceFailure, OREParserException {
|
|
457 | 460 |
checkParams(pid, systemMetadata, data); |
458 | 461 |
boolean isArchive = systemMetadata.getArchived(); |
459 | 462 |
if(isArchive || systemMetadata.getObsoletedBy() != null) { |
... | ... | |
476 | 479 |
} |
477 | 480 |
|
478 | 481 |
|
479 |
private void removeObsoletesChain(String obsoleteId, List<String> obsoleteIdChain) throws SolrServerException, IOException, ServiceFailure, XPathExpressionException, NotImplemented, NotFound, UnsupportedType, SAXException, ParserConfigurationException { |
|
482 |
private void removeObsoletesChain(String obsoleteId, List<String> obsoleteIdChain) throws SolrServerException, IOException, ServiceFailure, XPathExpressionException, NotImplemented, NotFound, UnsupportedType, SAXException, ParserConfigurationException, OREParserException {
|
|
480 | 483 |
if(obsoleteId != null && !obsoleteId.trim().equals("")) { |
481 | 484 |
if(obsoleteIdChain == null || obsoleteIdChain.isEmpty()) { |
482 | 485 |
throw new SolrServerException("SolrIndex.removeObsoletesChain - The obsoletes chain can't be null or empty since the system metadata already has the obsoletes element."); |
... | ... | |
502 | 505 |
* @throws NotImplemented |
503 | 506 |
* @throws XPathExpressionException |
504 | 507 |
* @throws ServiceFailure |
508 |
* @throws OREParserException |
|
505 | 509 |
*/ |
506 |
private void remove(List<String> pidList) throws IOException, SolrServerException, ServiceFailure, XPathExpressionException, NotImplemented, NotFound, UnsupportedType, SAXException, ParserConfigurationException { |
|
510 |
private void remove(List<String> pidList) throws IOException, SolrServerException, ServiceFailure, XPathExpressionException, NotImplemented, NotFound, UnsupportedType, SAXException, ParserConfigurationException, OREParserException {
|
|
507 | 511 |
if(pidList != null) { |
508 | 512 |
for(String id : pidList) { |
509 | 513 |
remove(id); |
... | ... | |
523 | 527 |
* @throws NotImplemented |
524 | 528 |
* @throws XPathExpressionException |
525 | 529 |
* @throws ServiceFailure |
530 |
* @throws OREParserException |
|
526 | 531 |
*/ |
527 |
public void remove(String pid) throws IOException, SolrServerException, ServiceFailure, XPathExpressionException, NotImplemented, NotFound, UnsupportedType, SAXException, ParserConfigurationException { |
|
532 |
public void remove(String pid) throws IOException, SolrServerException, ServiceFailure, XPathExpressionException, NotImplemented, NotFound, UnsupportedType, SAXException, ParserConfigurationException, OREParserException {
|
|
528 | 533 |
if (isDataPackage(pid)) { |
529 | 534 |
removeDataPackage(pid); |
530 | 535 |
} else if (isPartOfDataPackage(pid)) { |
... | ... | |
540 | 545 |
/* |
541 | 546 |
* Remove a resource map pid |
542 | 547 |
*/ |
543 |
private void removeDataPackage(String pid) throws ServiceFailure, SAXException, XPathExpressionException, NotImplemented, NotFound, UnsupportedType, SolrServerException, IOException, ParserConfigurationException { |
|
548 |
private void removeDataPackage(String pid) throws ServiceFailure, SAXException, XPathExpressionException, NotImplemented, NotFound, UnsupportedType, SolrServerException, IOException, ParserConfigurationException, OREParserException {
|
|
544 | 549 |
Document resourceMapDoc = generateXmlDocument(DistributedMapsFactory.getDataObject(pid)); |
545 |
ResourceMap resourceMap = new ResourceMap(resourceMapDoc); |
|
550 |
//ResourceMap resourceMap = new ResourceMap(resourceMapDoc); |
|
551 |
ResourceMap resourceMap = ResourceMapFactory.buildResourceMap(resourceMapDoc); |
|
546 | 552 |
List<String> documentIds = resourceMap.getAllDocumentIDs(); |
547 | 553 |
List<SolrDoc> indexDocuments =ResourceMapSubprocessor.getSolrDocs(documentIds); |
548 | 554 |
removeFromIndex(pid); |
metacat-index/src/main/java/edu/ucsb/nceas/metacat/index/IndexGenerator.java | ||
---|---|---|
58 | 58 |
import org.dataone.service.types.v1.Identifier; |
59 | 59 |
import org.dataone.service.types.v1.ObjectFormatIdentifier; |
60 | 60 |
import org.dataone.service.types.v1.SystemMetadata; |
61 |
import org.dspace.foresite.OREParserException; |
|
61 | 62 |
import org.xml.sax.SAXException; |
62 | 63 |
|
63 | 64 |
import com.hazelcast.core.IMap; |
... | ... | |
160 | 161 |
* @throws UnsupportedType |
161 | 162 |
* @throws NotFound |
162 | 163 |
* @throws XPathExpressionException |
164 |
* @throws OREParserException |
|
163 | 165 |
*/ |
164 | 166 |
public void indexAll() throws InvalidRequest, InvalidToken, |
165 |
NotAuthorized, NotImplemented, ServiceFailure, SolrServerException, ClassNotFoundException, InstantiationException, IllegalAccessException, IndexEventLogException, XPathExpressionException, NotFound, UnsupportedType, IOException, SAXException, ParserConfigurationException { |
|
167 |
NotAuthorized, NotImplemented, ServiceFailure, SolrServerException, ClassNotFoundException, InstantiationException, IllegalAccessException, IndexEventLogException, XPathExpressionException, NotFound, UnsupportedType, IOException, SAXException, ParserConfigurationException, OREParserException {
|
|
166 | 168 |
Date since = null; |
167 | 169 |
Date until = null; |
168 | 170 |
index(since, until); |
... | ... | |
187 | 189 |
* @throws UnsupportedType |
188 | 190 |
* @throws NotFound |
189 | 191 |
* @throws XPathExpressionException |
192 |
* @throws OREParserException |
|
190 | 193 |
*/ |
191 | 194 |
public void index(Date since) throws InvalidRequest, InvalidToken, |
192 |
NotAuthorized, NotImplemented, ServiceFailure, SolrServerException, ClassNotFoundException, InstantiationException, IllegalAccessException, IndexEventLogException, XPathExpressionException, NotFound, UnsupportedType, IOException, SAXException, ParserConfigurationException { |
|
195 |
NotAuthorized, NotImplemented, ServiceFailure, SolrServerException, ClassNotFoundException, InstantiationException, IllegalAccessException, IndexEventLogException, XPathExpressionException, NotFound, UnsupportedType, IOException, SAXException, ParserConfigurationException, OREParserException {
|
|
193 | 196 |
Date until = null; |
194 | 197 |
index(since, until); |
195 | 198 |
} |
... | ... | |
214 | 217 |
* @throws UnsupportedType |
215 | 218 |
* @throws NotFound |
216 | 219 |
* @throws XPathExpressionException |
220 |
* @throws OREParserException |
|
217 | 221 |
*/ |
218 | 222 |
public void index(Date since, Date until) throws SolrServerException, InvalidRequest, |
219 |
InvalidToken, NotAuthorized, NotImplemented, ServiceFailure, ClassNotFoundException, InstantiationException, IllegalAccessException, IndexEventLogException, XPathExpressionException, NotFound, UnsupportedType, IOException, SAXException, ParserConfigurationException { |
|
223 |
InvalidToken, NotAuthorized, NotImplemented, ServiceFailure, ClassNotFoundException, InstantiationException, IllegalAccessException, IndexEventLogException, XPathExpressionException, NotFound, UnsupportedType, IOException, SAXException, ParserConfigurationException, OREParserException {
|
|
220 | 224 |
Date processedDate = null; |
221 | 225 |
List<String> solrIds = null; |
222 | 226 |
initSystemMetadataMap(); |
... | ... | |
500 | 504 |
} catch (ParserConfigurationException e) { |
501 | 505 |
// TODO Auto-generated catch block |
502 | 506 |
log.error("IndexGenerator.run - Metadata-Index couldn't generate indexes for those documents which haven't been indexed : "+e.getMessage()); |
507 |
} catch (OREParserException e) { |
|
508 |
// TODO Auto-generated catch block |
|
509 |
log.error("IndexGenerator.run - Metadata-Index couldn't generate indexes for those documents which haven't been indexed : "+e.getMessage()); |
|
503 | 510 |
} |
504 | 511 |
} |
505 | 512 |
|
... | ... | |
678 | 685 |
/* |
679 | 686 |
* Remove the solr index for the list of ids |
680 | 687 |
*/ |
681 |
private void removeIndex(List<String> ids) throws ServiceFailure, XPathExpressionException, NotImplemented, NotFound, UnsupportedType, IOException, SolrServerException, SAXException, ParserConfigurationException { |
|
688 |
private void removeIndex(List<String> ids) throws ServiceFailure, XPathExpressionException, NotImplemented, NotFound, UnsupportedType, IOException, SolrServerException, SAXException, ParserConfigurationException, OREParserException {
|
|
682 | 689 |
if(ids!= null) { |
683 | 690 |
for(String id :ids) { |
684 | 691 |
removeIndex(id); |
... | ... | |
689 | 696 |
/* |
690 | 697 |
* Remove the index for the id |
691 | 698 |
*/ |
692 |
private void removeIndex(String id) throws ServiceFailure, XPathExpressionException, NotImplemented, NotFound, UnsupportedType, IOException, SolrServerException, SAXException, ParserConfigurationException { |
|
699 |
private void removeIndex(String id) throws ServiceFailure, XPathExpressionException, NotImplemented, NotFound, UnsupportedType, IOException, SolrServerException, SAXException, ParserConfigurationException, OREParserException {
|
|
693 | 700 |
if(id != null) { |
694 | 701 |
solrIndex.remove(id); |
695 | 702 |
} |
Also available in: Unified diff
Use the ResourceMapFactory rather than the ResourceMap constructor to build a resource map.