From: John W. <jwe...@us...> - 2003-07-29 20:32:26
|
Update of /cvsroot/dlese/dlese-tools-project/src/org/dlese/dpc/index/writer In directory sc8-pr-cvs1:/tmp/cvs-serv21398/dlese-tools-project/src/org/dlese/dpc/index/writer Modified Files: ADNFileIndexingWriter.java XMLFileIndexingWriter.java Log Message: added subjects and resourceTypes to the default field as well as their own fields Index: ADNFileIndexingWriter.java =================================================================== RCS file: /cvsroot/dlese/dlese-tools-project/src/org/dlese/dpc/index/writer/ADNFileIndexingWriter.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -r1.12 -r1.13 *** ADNFileIndexingWriter.java 25 Jul 2003 00:26:47 -0000 1.12 --- ADNFileIndexingWriter.java 29 Jul 2003 19:39:23 -0000 1.13 *************** *** 95,99 **** * example 'dcc,' 'comet' or 'dwel'. * ! * @return The collection keys */ public String getCollection() { --- 95,99 ---- * example 'dcc,' 'comet' or 'dwel'. * ! * @return The collection keys */ public String getCollection() { *************** *** 111,130 **** } /** ! * Returns the accession status of this record, for example 'accessioned'. The ! * String is tokenized, stored and indexed under the field key 'accessionstatus'. * * @return The accession status. * @exception Exception This method should throw and Exception with appropriate error * message if an error occurs. ! */ ! protected String getAccessionStatus() throws Exception ! { ! if(recordDataService == null) return "accessioned"; else ! return recordDataService.getAccessionStatus(getId(),getCollection()); } /** * Initialize the XML map prior to processing --- 111,131 ---- } + /** ! * Returns the accession status of this record, for example 'accessioned'. The String is ! * tokenized, stored and indexed under the field key 'accessionstatus'. * * @return The accession status. * @exception Exception This method should throw and Exception with appropriate error * message if an error occurs. ! */ ! protected String getAccessionStatus() throws Exception { ! if (recordDataService == null) return "accessioned"; else ! return recordDataService.getAccessionStatus(getId(), getCollection()); } + /** * Initialize the XML map prior to processing *************** *** 141,145 **** additionalIds.clear(); additionalIdsFiles.clear(); ! XMLDoc myXmlDoc = new XMLDoc("file:///" + source.getAbsolutePath(), this.isValidationEnabled(), --- 142,146 ---- additionalIds.clear(); additionalIdsFiles.clear(); ! XMLDoc myXmlDoc = new XMLDoc("file:///" + source.getAbsolutePath(), this.isValidationEnabled(), *************** *** 153,186 **** singleRecord = true; } ! MmdRecord myMmdRecord = null; ! if(recordDataService != null) ! myMmdRecord = recordDataService.getMmdRecord(myID,collection); ! ! myID = myXmlDoc.getXmlString("metaMetadata/catalogEntries/catalog@entry"); prtln("Indexing ID " + myID); ! // Index a single doc. if (recordDataService == null || singleRecord) { adnXmlDoc = new XMLDoc[]{myXmlDoc}; ! /* if(myMmdRecord != null) ! accessionStatus = myMmdRecord.getStatus(); ! else ! accessionStatus = "accessioned"; */ } // Index a multi-doc. else { MmdRecord[] associatedRecs = recordDataService.getAssociatedMMDRecs(myID, collection); ! // Set up the accession status(s) ! /* accessionStatus = ""; ! if(myMmdRecord != null) ! accessionStatus = myMmdRecord.getStatus(); ! if (associatedRecs != null) ! for(int i =0; i < associatedRecs.length; i++) ! accessionStatus += " " + associatedRecs[i].getStatus(); ! accessionStatus = accessionStatus.trim(); */ ! if (associatedRecs == null) adnXmlDoc = new XMLDoc[]{myXmlDoc}; --- 154,189 ---- singleRecord = true; } ! MmdRecord myMmdRecord = null; ! if (recordDataService != null) ! myMmdRecord = recordDataService.getMmdRecord(myID, collection); ! myID = myXmlDoc.getXmlString("metaMetadata/catalogEntries/catalog@entry"); prtln("Indexing ID " + myID); ! // Index a single doc. if (recordDataService == null || singleRecord) { adnXmlDoc = new XMLDoc[]{myXmlDoc}; ! /* ! * if(myMmdRecord != null) ! * accessionStatus = myMmdRecord.getStatus(); ! * else ! * accessionStatus = "accessioned"; ! */ } // Index a multi-doc. else { MmdRecord[] associatedRecs = recordDataService.getAssociatedMMDRecs(myID, collection); ! // Set up the accession status(s) ! /* ! * accessionStatus = ""; ! * if(myMmdRecord != null) ! * accessionStatus = myMmdRecord.getStatus(); ! * if (associatedRecs != null) ! * for(int i =0; i < associatedRecs.length; i++) ! * accessionStatus += " " + associatedRecs[i].getStatus(); ! * accessionStatus = accessionStatus.trim(); ! */ if (associatedRecs == null) adnXmlDoc = new XMLDoc[]{myXmlDoc}; *************** *** 198,202 **** additionalIds.add(associatedRecs[i].getId()); additionalCollections.add(associatedRecs[i].getCollKey()); ! additionalIdsFiles.add(recordDataService.getFileForId(associatedRecs[i])); } catch (NullPointerException npe) { prtlnErr("NullPointerException in ADNFileIndexingWriter.init()."); --- 201,205 ---- additionalIds.add(associatedRecs[i].getId()); additionalCollections.add(associatedRecs[i].getCollKey()); ! additionalIdsFiles.add(recordDataService.getFileForId(associatedRecs[i])); } catch (NullPointerException npe) { prtlnErr("NullPointerException in ADNFileIndexingWriter.init()."); *************** *** 212,224 **** if (adnXmlDoc.length > 1) { indexIndividualDupDoc(myID, collection, getSourceFile(), getSourceDir()); ! for(int i = 0; i < additionalIds.size(); i++){ File dupDocFile = (File) additionalIdsFiles.get(i); indexIndividualDupDoc( ! (String)additionalIds.get(i), ! (String)additionalCollections.get(i), ! dupDocFile, ! dupDocFile.getParentFile()); } ! String[] idsSorted = new String[adnXmlDoc.length]; for (int i = 0; i < adnXmlDoc.length; i++) --- 215,227 ---- if (adnXmlDoc.length > 1) { indexIndividualDupDoc(myID, collection, getSourceFile(), getSourceDir()); ! for (int i = 0; i < additionalIds.size(); i++) { File dupDocFile = (File) additionalIdsFiles.get(i); indexIndividualDupDoc( ! (String) additionalIds.get(i), ! (String) additionalCollections.get(i), ! dupDocFile, ! dupDocFile.getParentFile()); } ! String[] idsSorted = new String[adnXmlDoc.length]; for (int i = 0; i < adnXmlDoc.length; i++) *************** *** 230,234 **** abortIndexing(); } ! prtln("A total of " + adnXmlDoc.length + " existing associated records were found for id " + myID); } --- 233,237 ---- abortIndexing(); } ! prtln("A total of " + adnXmlDoc.length + " existing associated records were found for id " + myID); } *************** *** 421,440 **** protected final void addFrameworkFields(Document newDoc, Document existingDoc) throws Exception { newDoc.add(Field.Text(getFieldName("gradeRange"), getFieldContent(getGradeRange(), "gradeRange"))); newDoc.add(Field.Text(getFieldName("resourceType"), getFieldContent(getResourceTypes(), "resourceType"))); newDoc.add(Field.Text(getFieldName("subject"), getFieldContent(getSubjects(), "subject"))); newDoc.add(Field.Text(getFieldName("contentStandard"), getFieldContent(getContentStandards(), "contentStandard"))); ! if (adnXmlDoc.length > 1) { ! //prtln("ANDFileIndexingWriter.addFrameworkFields() - multidoc"); newDoc.add(Field.Text("multirecord", "true")); ! } ! else { ! //prtln("ANDFileIndexingWriter.addFrameworkFields() - single doc"); newDoc.add(Field.Text("multirecord", "false")); ! } } --- 424,447 ---- protected final void addFrameworkFields(Document newDoc, Document existingDoc) throws Exception { + String terms; newDoc.add(Field.Text(getFieldName("gradeRange"), getFieldContent(getGradeRange(), "gradeRange"))); newDoc.add(Field.Text(getFieldName("resourceType"), getFieldContent(getResourceTypes(), "resourceType"))); + terms = getTermStringFromStringArray(getResourceTypes()); + newDoc.add(Field.Text("resourcetype", terms)); + addToDefaultField(terms); newDoc.add(Field.Text(getFieldName("subject"), getFieldContent(getSubjects(), "subject"))); + terms = getTermStringFromStringArray(getSubjects()); + newDoc.add(Field.Text("subject", terms)); + addToDefaultField(terms); newDoc.add(Field.Text(getFieldName("contentStandard"), getFieldContent(getContentStandards(), "contentStandard"))); ! if (adnXmlDoc.length > 1) newDoc.add(Field.Text("multirecord", "true")); ! else newDoc.add(Field.Text("multirecord", "false")); ! } *************** *** 548,551 **** --- 555,577 ---- } return (String[]) vals.toArray(new String[]{}); + } + + + /** + * Gets the appropriate terms from a string array of metadata fields. Uses all terms + * found after the last colon ":" found in the string. + * + * @param vals Metadata fields that must be delemited by colons. + * @return The individual terms used for indexing. + */ + protected String getTermStringFromStringArray(String[] vals) { + if (vals == null) + return ""; + String tmp = ""; + try { + for (int i = 0; i < vals.length; i++) + tmp += " " + vals[i].substring(vals[i].lastIndexOf(":") + 1, vals[i].length()); + } catch (Throwable e) {} + return tmp.trim(); } Index: XMLFileIndexingWriter.java =================================================================== RCS file: /cvsroot/dlese/dlese-tools-project/src/org/dlese/dpc/index/writer/XMLFileIndexingWriter.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -r1.9 -r1.10 *** XMLFileIndexingWriter.java 15 Jul 2003 00:16:02 -0000 1.9 --- XMLFileIndexingWriter.java 29 Jul 2003 19:39:23 -0000 1.10 *************** *** 190,199 **** /** ! * Gets the fieldContent attribute of the XMLFileIndexingWriter object * ! * @param values DESCRIPTION ! * @param useVocabMapping DESCRIPTION ! * @return The fieldContent value ! * @exception Exception DESCRIPTION */ protected String getFieldContent(String[] values, String useVocabMapping) --- 190,199 ---- /** ! * Gets the vocab encoded keys for the given values, separated by the '+' symbol. * ! * @param values The valuse to encode. ! * @param useVocabMapping The mapping to use, for example "contentStandards". ! * @return The encoded vocab keys. ! * @exception Exception If error. */ protected String getFieldContent(String[] values, String useVocabMapping) *************** *** 223,232 **** /** ! * Gets the fieldContent attribute of the XMLFileIndexingWriter object * ! * @param value DESCRIPTION ! * @param useVocabMapping DESCRIPTION ! * @return The fieldContent value ! * @exception Exception DESCRIPTION */ protected String getFieldContent(String value, String useVocabMapping) --- 223,232 ---- /** ! * Gets the encoded vocab key for the given content. * ! * @param value The value to encode. ! * @param useVocabMapping The vocab mapping to use, for example "contentStandard". ! * @return The encoded value. ! * @exception Exception If error. */ protected String getFieldContent(String value, String useVocabMapping) |