com.atlassian.jira.issue.index
Class DefaultIndexManager

java.lang.Object
  extended by com.atlassian.jira.issue.index.DefaultIndexManager
All Implemented Interfaces:
IssueIndexManager, Sized, IndexLifecycleManager, Shutdown
Direct Known Subclasses:
BulkOnlyIndexManager

public class DefaultIndexManager
extends java.lang.Object
implements IssueIndexManager


Nested Class Summary
 
Nested classes/interfaces inherited from interface com.atlassian.jira.util.index.IndexLifecycleManager
IndexLifecycleManager.Composite
 
Field Summary
static org.apache.lucene.analysis.Analyzer ANALYZER_FOR_INDEXING
           
static org.apache.lucene.analysis.Analyzer ANALYZER_FOR_SEARCHING
           
static java.lang.String COMMENTS_SUBDIR
           
static java.lang.String ISSUES_SUBDIR
           
static java.lang.String PLUGINS_SUBDIR
           
 
Constructor Summary
DefaultIndexManager(IndexingConfiguration indexProperties, IssueIndexer issueIndexer, IndexPathManager indexPath, ReindexMessageManager reindexMessageManager)
           
 
Method Summary
 long activate(Context context)
          Activates search indexes.
 void deactivate()
          De-activates indexing (as happens from the admin page) and removes index directories.
 void deIndex(org.ofbiz.core.entity.GenericValue entity)
          Remove an issue from the search index.
static void flushThreadLocalSearchers()
           
 java.util.Collection<java.lang.String> getAllIndexPaths()
           
 org.apache.lucene.search.IndexSearcher getCommentSearcher()
          Get an IndexSearcher that can be used to search the comment index.
 java.util.List<java.lang.String> getExistingPluginsPaths()
          Returns a collection of Strings, each one representing the absolute path to the actual existing directory where a plugin keeps its indexes.
 org.apache.lucene.search.IndexSearcher getIssueSearcher()
          Get an IndexSearcher that can be used to search the issue index.
 java.lang.String getPluginsRootPath()
          Get the root path of the index directory for plugins.
 boolean isEmpty()
           
 boolean isIndexingEnabled()
           
 long optimize()
          Optimize the underlying indexes.
 void reIndex(org.ofbiz.core.entity.GenericValue issueGV)
          Reindex an issue (eg.
 void reIndex(Issue issue)
          Reindex an issue (eg.
 long reIndexAll()
          Reindex all issues.
 long reIndexAll(Context context)
          Reindex everything.
 long reIndexIssueObjects(java.util.Collection<? extends Issue> issueObjects)
          Reindex a set of issues.
 long reIndexIssues(java.util.Collection<org.ofbiz.core.entity.GenericValue> issues)
          Reindex a set of issues (GenericValues).
 long reIndexIssues(IssuesIterable issuesIterable, Context context)
          Reindex a list of issues, passing an optional event that will be set progress
 void shutdown()
          Shuts down the indexing manager and closes its resources (if any).
 int size()
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ANALYZER_FOR_SEARCHING

public static final org.apache.lucene.analysis.Analyzer ANALYZER_FOR_SEARCHING

ANALYZER_FOR_INDEXING

public static final org.apache.lucene.analysis.Analyzer ANALYZER_FOR_INDEXING

COMMENTS_SUBDIR

public static final java.lang.String COMMENTS_SUBDIR
See Also:
Constant Field Values

ISSUES_SUBDIR

public static final java.lang.String ISSUES_SUBDIR
See Also:
Constant Field Values

PLUGINS_SUBDIR

public static final java.lang.String PLUGINS_SUBDIR
See Also:
Constant Field Values
Constructor Detail

DefaultIndexManager

public DefaultIndexManager(IndexingConfiguration indexProperties,
                           IssueIndexer issueIndexer,
                           IndexPathManager indexPath,
                           ReindexMessageManager reindexMessageManager)
Method Detail

deactivate

public void deactivate()
Description copied from interface: IndexLifecycleManager
De-activates indexing (as happens from the admin page) and removes index directories.

Specified by:
deactivate in interface IndexLifecycleManager

activate

public long activate(Context context)
Description copied from interface: IndexLifecycleManager
Activates search indexes.

Specified by:
activate in interface IndexLifecycleManager
Parameters:
context - used to report progress back to the user or to the logs. Must not be null.
Returns:
Reindex time in ms

isIndexingEnabled

public boolean isIndexingEnabled()
Specified by:
isIndexingEnabled in interface IndexLifecycleManager
Returns:
whether this index is enabled or true if all sub indexes are enabled

reIndexAll

public long reIndexAll()
                throws IndexException
Description copied from interface: IssueIndexManager
Reindex all issues.

Specified by:
reIndexAll in interface IssueIndexManager
Returns:
The number of milliseconds taken to reindex everything, or -1 if not indexing
Throws:
IndexException

reIndexAll

public long reIndexAll(Context context)
Description copied from interface: IndexLifecycleManager
Reindex everything.

Specified by:
reIndexAll in interface IndexLifecycleManager
Parameters:
context - used to report progress back to the user or to the logs. Must not be null.
Returns:
Reindex time in ms.

reIndexIssues

public long reIndexIssues(java.util.Collection<org.ofbiz.core.entity.GenericValue> issues)
                   throws IndexException
Description copied from interface: IssueIndexManager
Reindex a set of issues (GenericValues). Use IssueIndexManager.reIndexIssueObjects(Collection) instead when possible.

Specified by:
reIndexIssues in interface IssueIndexManager
Parameters:
issues - The Issue GenericValues to reindex.
Returns:
Reindex time in ms.
Throws:
IndexException

reIndexIssueObjects

public long reIndexIssueObjects(java.util.Collection<? extends Issue> issueObjects)
                         throws IndexException
Description copied from interface: IssueIndexManager
Reindex a set of issues.

Specified by:
reIndexIssueObjects in interface IssueIndexManager
Parameters:
issueObjects - Set of Issues to reindex.
Returns:
Reindex time in ms.
Throws:
IndexException

reIndex

public void reIndex(Issue issue)
             throws IndexException
Description copied from interface: IssueIndexManager
Reindex an issue (eg. after field updates).

Specified by:
reIndex in interface IssueIndexManager
Throws:
IndexException

reIndex

public void reIndex(org.ofbiz.core.entity.GenericValue issueGV)
             throws IndexException
Description copied from interface: IssueIndexManager
Reindex an issue (eg. after field updates).

Specified by:
reIndex in interface IssueIndexManager
Throws:
IndexException

reIndexIssues

public long reIndexIssues(IssuesIterable issuesIterable,
                          Context context)
                   throws IndexException
Description copied from interface: IssueIndexManager
Reindex a list of issues, passing an optional event that will be set progress

Specified by:
reIndexIssues in interface IssueIndexManager
Parameters:
issuesIterable - IssuesIterable
context - used to report progress back to the user or to the logs. Must not be null.
Returns:
Reindex time in ms.
Throws:
IndexException

size

public int size()
Specified by:
size in interface Sized
Specified by:
size in interface IndexLifecycleManager
Returns:
how many Entities will be re-indexed by IndexLifecycleManager.reIndexAll(Context)

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface Sized

optimize

public long optimize()
              throws IndexException
Description copied from interface: IndexLifecycleManager
Optimize the underlying indexes. Make the subsequent searching more efficient.

Specified by:
optimize in interface IndexLifecycleManager
Returns:
the amount of time in millis this method took (because you are too lazy to time me), 0 if indexing is not enabled or -1 if we cannot obtain the index writeLock.
Throws:
IndexException - if the indexes are seriously in trouble

deIndex

public void deIndex(org.ofbiz.core.entity.GenericValue entity)
             throws IndexException
Description copied from interface: IssueIndexManager
Remove an issue from the search index.

Specified by:
deIndex in interface IssueIndexManager
Throws:
IndexException

getPluginsRootPath

public java.lang.String getPluginsRootPath()
Description copied from interface: IssueIndexManager
Get the root path of the index directory for plugins. Any plugin that keeps indexes should create its own sub-directory under this path and create its indexes in its own sub-directory

Specified by:
getPluginsRootPath in interface IssueIndexManager

getExistingPluginsPaths

public java.util.List<java.lang.String> getExistingPluginsPaths()
Description copied from interface: IssueIndexManager
Returns a collection of Strings, each one representing the absolute path to the actual existing directory where a plugin keeps its indexes. Each directory in the collection should be a sub-directory under the plugin's index root path. See IssueIndexManager.getPluginsRootPath().

If a plugin index root path does not exist, or is empty (no sub-directopries exist) then an empty collection will be returned.

Specified by:
getExistingPluginsPaths in interface IssueIndexManager

getAllIndexPaths

public java.util.Collection<java.lang.String> getAllIndexPaths()
Specified by:
getAllIndexPaths in interface IndexLifecycleManager
Returns:
a collection of Strings that map to all paths that contain Lucene indexes. Must not be null.

getIssueSearcher

public org.apache.lucene.search.IndexSearcher getIssueSearcher()
Description copied from interface: IssueIndexManager
Get an IndexSearcher that can be used to search the issue index.

Note: This is an unmanaged IndexSearcher. You MUST call IndexSearcher.close() when you are done with it. Alternatively you should really call SearchProviderFactory#getSearcher(String)) passing in SearchProviderFactory.ISSUE_INDEX as it is a managed searcher and all the closing semantics are handled for you.

Specified by:
getIssueSearcher in interface IssueIndexManager

getCommentSearcher

public org.apache.lucene.search.IndexSearcher getCommentSearcher()
Description copied from interface: IssueIndexManager
Get an IndexSearcher that can be used to search the comment index.

Note: This is an unmanaged IndexSearcher. You MUST call IndexSearcher.close() when you are done with it. Alternatively you should really call SearchProviderFactory#getSearcher(String)) passing in SearchProviderFactory.COMMENT_INDEX as it is a managed searcher and all the closing semantics are handled for you.

Specified by:
getCommentSearcher in interface IssueIndexManager

shutdown

public void shutdown()
Description copied from interface: IndexLifecycleManager
Shuts down the indexing manager and closes its resources (if any).

Specified by:
shutdown in interface IndexLifecycleManager
Specified by:
shutdown in interface Shutdown

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

flushThreadLocalSearchers

public static void flushThreadLocalSearchers()


Copyright © 2002-2010 Atlassian. All Rights Reserved.