Example usage for org.apache.solr.handler.dataimport SolrWriter LAST_INDEX_KEY

List of usage examples for org.apache.solr.handler.dataimport SolrWriter LAST_INDEX_KEY

Introduction

In this page you can find the example usage for org.apache.solr.handler.dataimport SolrWriter LAST_INDEX_KEY.

Prototype

String LAST_INDEX_KEY

To view the source code for org.apache.solr.handler.dataimport SolrWriter LAST_INDEX_KEY.

Click Source Link

Usage

From source file:edu.stsci.registry.solr.OAIPMHEntityProcessor.java

@Override
public void init(Context context) {
    super.init(context);
    logger.debug("In init");
    rowIterator = null;//from w ww .ja v  a 2  s .co  m
    httpClient = HttpClients.createDefault();
    process = context.currentProcess(); //DELTA_DUMP or ...

    String waitStr = context.getEntityAttribute(WAIT_SECS);
    if (waitStr != null) {
        waitSeconds = Integer.valueOf(waitStr);
    }

    if (process.equals(Context.FIND_DELTA)) {
        logger.info("Find delta");
        deletedNodes = new ArrayList<>();
        modifiedNodes = new ArrayList<>();
        Map<String, Object> stats = context.getStats();
        //long docCount = (long) stats.get("docCount");
        //for(String key : stats.keySet()){
        //    logger.info(key + " " + stats.get(key).toString());
        //}
        // If we have no documents in the index, don't do a delta import
        //logger.info("docCount = " + docCount);
        // These stats aren't working (always 0) so don't rely on them
        //if(docCount > 0){        

        Map<String, Object> importerMap = (Map<String, Object>) context
                .resolve(ConfigNameConstants.IMPORTER_NS_SHORT);
        String lastIndexStr = (String) importerMap.get(SolrWriter.LAST_INDEX_KEY);
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            lastImport = dateFormat.parse(lastIndexStr);
            logger.info("lastImport: " + lastIndexStr);
        } catch (ParseException ex) {
            logger.error(ex);
        }
        //}
        XPath xpath = XPathFactory.newInstance().newXPath();

        while (true) {
            boolean hasResumption = initNodes();
            logger.debug("Delta found " + nodes.getLength() + " new nodes");

            while (currentNode < nodes.getLength()) {
                logger.debug("Current node: " + currentNode);
                Node node = nodes.item(currentNode);
                try {
                    Node nodeStat;

                    nodeStat = (Node) xpath.evaluate(STATUS_EXPRESSION, node, XPathConstants.NODE);
                    if (nodeStat != null) {
                        String status = nodeStat.getTextContent();
                        if (status.equals("deleted")) {
                            deletedNodes.add(node);
                        } else {
                            modifiedNodes.add(node);
                        }

                    } else {
                        modifiedNodes.add(node);
                    }
                } catch (XPathExpressionException ex) {
                    logger.error("Error getting node status", ex);
                }
                currentNode++;
            }
            if (!hasResumption)
                break;
        }
        logger.info("Found " + deletedNodes.size() + " deleted nodes.");
        logger.info("Found " + modifiedNodes.size() + " new or modified nodes.");
        currentDeletedNode = 0;
        currentModifiedNode = 0;

    }

    if (process.equals(Context.FULL_DUMP)) {
        logger.debug("Full import");
        initNodes();
    }

    if (process.equals(Context.DELTA_DUMP)) {
        logger.debug("Delta dump");
        returnedRow = false;
    }

}