public void doRun()

in app/src/main/java/org/apache/roller/weblogger/business/search/lucene/RebuildWebsiteIndexOperation.java [77:155]


    public void doRun() {

        Date start = new Date();

        // since this operation can be run on a separate thread we must treat
        // the weblog object passed in as a detached object which is proned to
        // lazy initialization problems, so requery for the object now
        if (this.website != null) {
            logger.debug("Reindexining weblog " + website.getHandle());
            try {
                this.website = roller.getWeblogManager().getWeblog(
                        this.website.getId());
            } catch (WebloggerException ex) {
                logger.error("Error getting website object", ex);
                return;
            }
        } else {
            logger.debug("Reindexining entire site");
        }

        IndexWriter writer = beginWriting();

        try {
            if (writer != null) {

                // Delete Doc
                Term tWebsite = null;
                if (website != null) {
                    tWebsite = IndexUtil.getTerm(FieldConstants.WEBSITE_HANDLE,
                            website.getHandle());
                }
                if (tWebsite != null) {
                    writer.deleteDocuments(tWebsite);
                } else {
                    Term all = IndexUtil.getTerm(FieldConstants.CONSTANT,
                            FieldConstants.CONSTANT_V);
                    writer.deleteDocuments(all);
                }

                // Add Doc
                WeblogEntryManager weblogManager = roller
                        .getWeblogEntryManager();
                WeblogEntrySearchCriteria wesc = new WeblogEntrySearchCriteria();
                wesc.setWeblog(website);
                wesc.setStatus(PubStatus.PUBLISHED);
                List<WeblogEntry> entries = weblogManager.getWeblogEntries(wesc);

                logger.debug("Entries to index: " + entries.size());

                for (WeblogEntry entry : entries) {
                    writer.addDocument(getDocument(entry));
                    logger.debug(MessageFormat.format(
                            "Indexed entry {0}: {1}",
                            entry.getPubTime(), entry.getAnchor()));
                }

                // release the database connection
                roller.release();
            }
        } catch (Exception e) {
            logger.error("ERROR adding/deleting doc to index", e);
        } finally {
            endWriting();
            if (roller != null) {
                roller.release();
            }
        }

        Date end = new Date();
        double length = (end.getTime() - start.getTime()) / (double) RollerConstants.SEC_IN_MS;

        if (website == null) {
            logger.info("Completed rebuilding index for all users in '"
                    + length + "' secs");
        } else {
            logger.info("Completed rebuilding index for website handle: '"
                    + website.getHandle() + "' in '" + length + "' seconds");
        }
    }