import org.marc4j.marc.Record; import org.solrmarc.tools.Utils; import org.solrmarc.tools.CallNumUtils;

// define the base level indexer so that its methods can be called from the script. // note that the SolrIndexer code will set this value before the script methods are called. org.solrmarc.index.SolrIndexer indexer = null;

/**

* returns the facet value for dewey hundreds digits, and dewey tens digits
* @param record
* @return Set of Strings containing facet value for dewey hundreds digits, and dewey tens digits
*/

Set getDeweyFacet(Record record, String propertiesMapName) {

LinkedHashSet resultSet = new LinkedHashSet();
Set values = indexer.getFieldList(record, "082a");
String mapName = indexer.loadTranslationMap(propertiesMapName);
for (String dewey : values)
{
    if (! CallNumUtils.isValidDewey(dewey))  continue;
    String hundreds = dewey.substring(0, 1) + "00";
    String tens = dewey.substring(0,2) + "0";
    String hundredsMapped = Utils.remap(hundreds, indexer.findMap(mapName), true);
    String tensMapped = Utils.remap(tens, indexer.findMap(mapName), true);
    if (hundredsMapped != null) resultSet.add(hundredsMapped);
    if (tensMapped != null) resultSet.add(tensMapped);
}
return resultSet;

}

Set getDeweyText(Record record) {

LinkedHashSet resultSet = new LinkedHashSet();
Set values = indexer.getFieldList(record, "082a");
for (String dewey : values)
{
    if (! CallNumUtils.isValidDewey(dewey))  continue;
    dewey = dewey.replaceAll("/[.]", ".").replaceAll("/", " ");
    resultSet.add(dewey);
}
return resultSet;

}