001: /**********************************************************************************
002: * $URL: https://source.sakaiproject.org/svn/search/tags/sakai_2-4-1/search-api/api/src/java/org/sakaiproject/search/api/SearchIndexBuilderWorker.java $
003: * $Id: SearchIndexBuilderWorker.java 29635 2007-04-26 14:44:09Z ajpoland@iupui.edu $
004: ***********************************************************************************
005: *
006: * Copyright (c) 2003, 2004, 2005, 2006 The Sakai Foundation.
007: *
008: * Licensed under the Educational Community License, Version 1.0 (the "License");
009: * you may not use this file except in compliance with the License.
010: * You may obtain a copy of the License at
011: *
012: * http://www.opensource.org/licenses/ecl1.php
013: *
014: * Unless required by applicable law or agreed to in writing, software
015: * distributed under the License is distributed on an "AS IS" BASIS,
016: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: * See the License for the specific language governing permissions and
018: * limitations under the License.
019: *
020: **********************************************************************************/package org.sakaiproject.search.api;
021:
022: import java.sql.SQLException;
023: import java.util.List;
024:
025: import org.sakaiproject.search.model.SearchWriterLock;
026:
027: public interface SearchIndexBuilderWorker extends Diagnosable {
028:
029: /**
030: * Check running, and ping the thread if in a wait state
031: */
032: void checkRunning();
033:
034: /**
035: * Should the thread be running
036: */
037: boolean isRunning();
038:
039: /**
040: * get the current running Lock
041: * @return
042: */
043: SearchWriterLock getCurrentLock();
044:
045: /**
046: * get a list of node status records
047: * @return
048: */
049: List getNodeStatus();
050:
051: /**
052: * destroy the search index builder worker and release all resources
053: *
054: */
055: void destroy();
056:
057: /**
058: * forge the removal of the worker lock
059: * @return
060: */
061: boolean removeWorkerLock();
062:
063: /**
064: * Increment the activity counter
065: *
066: */
067: void incrementActivity();
068:
069: /**
070: * get an indication of the current activity level
071: * @return
072: */
073: int getActivity();
074:
075: /**
076: * reset the activity levels
077: *
078: */
079: void resetActivity();
080:
081: /**
082: * Get the ms time of the last search add/remove event (excluding master events)
083: * @return
084: */
085: long getLastEventTime();
086:
087: /**
088: *
089: * @param lifetime
090: * @return
091: */
092: boolean getLockTransaction(long lifetime);
093:
094: /**
095: *
096: * @param nodeLifetime
097: * @param forceLock force the lock to be taken even if there are no items in the queue
098: * @return
099: */
100: boolean getLockTransaction(long nodeLifetime, boolean forceLock);
101:
102: /**
103: *
104: * @param l
105: * @throws SQLException
106: */
107: void updateNodeLock(long l) throws SQLException;
108:
109: /**
110: *
111: * @param l
112: */
113: void setLastIndex(long l);
114:
115: /**
116: *
117: * @param startDocIndex
118: */
119: void setStartDocIndex(long startDocIndex);
120:
121: /**
122: *
123: * @param reference
124: */
125: void setNowIndexing(String reference);
126:
127: /**
128: *
129: * @return
130: */
131: long getLastIndex();
132:
133: /**
134: *
135: * @return
136: */
137: String getNowIndexing();
138:
139: /**
140: *
141: * @return
142: */
143: long getStartDocIndex();
144:
145: String getLastDocument();
146:
147: String getLastElapsed();
148:
149: String getCurrentDocument();
150:
151: String getCurrentElapsed();
152:
153: /**
154: * @return
155: */
156: boolean isLocalLock();
157:
158: }
|