knguyen 2006/01/05 16:28:26 CET
Modified files:
core/src/java/org/jahia/services/scheduler
SchedulerService.java
SchedulerServiceImpl.java
core/src/java/org/jahia/services/search/valves
ContainerSearchIndexProcessValveImpl.java
FileFieldIndexingThread.java
Log:
- update file indexing job
Revision Changes Path
1.10 +15 -1
jahia/core/src/java/org/jahia/services/scheduler/SchedulerService.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/scheduler/SchedulerService.java.diff?r1=1.9&r2=1.10&f=h
1.13 +32 -1
jahia/core/src/java/org/jahia/services/scheduler/SchedulerServiceImpl.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/scheduler/SchedulerServiceImpl.java.diff?r1=1.12&r2=1.13&f=h
1.6 +49 -2
jahia/core/src/java/org/jahia/services/search/valves/ContainerSearchIndexProcessValveImpl.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/search/valves/ContainerSearchIndexProcessValveImpl.java.diff?r1=1.5&r2=1.6&f=h
1.6 +1 -1
jahia/core/src/java/org/jahia/services/search/valves/FileFieldIndexingThread.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/search/valves/FileFieldIndexingThread.java.diff?r1=1.5&r2=1.6&f=h
Index: SchedulerService.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/scheduler/SchedulerService.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- SchedulerService.java 21 Dec 2005 10:50:38 -0000 1.9
+++ SchedulerService.java 5 Jan 2006 15:28:25 -0000 1.10
@@ -5,11 +5,12 @@
import org.jahia.services.usermanager.JahiaUser;
import org.quartz.JobDetail;
import org.quartz.Trigger;
+import org.quartz.SchedulerException;
import java.util.List;
/**
- * @version $Id: SchedulerService.java,v 1.9 2005/12/21 10:50:38 dpillot Exp
$
+ * @version $Id: SchedulerService.java,v 1.10 2006/01/05 15:28:25 knguyen
Exp $
*/
public abstract class SchedulerService extends JahiaService {
@@ -23,6 +24,19 @@
throws JahiaException;
/**
+ * Delete the given Ram Job
+ *
+ * @param jobName
+ * @param groupName
+ * @throws JahiaException
+ */
+ public abstract void deleteRamJob(String jobName, String groupName)
+ throws JahiaException;
+
+ public abstract JobDetail getRamJobDetail(String jobName, String
groupName)
+ throws JahiaException;
+
+ /**
* Delete the given Job and associated trigger
*
* @param jobName
Index: SchedulerServiceImpl.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/scheduler/SchedulerServiceImpl.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- SchedulerServiceImpl.java 14 Dec 2005 16:08:39 -0000 1.12
+++ SchedulerServiceImpl.java 5 Jan 2006 15:28:25 -0000 1.13
@@ -14,7 +14,7 @@
import java.util.Vector;
/**
- * @version $Id: SchedulerServiceImpl.java,v 1.12 2005/12/14 16:08:39
dpillot Exp $
+ * @version $Id: SchedulerServiceImpl.java,v 1.13 2006/01/05 15:28:25
knguyen Exp $
*/
@@ -135,6 +135,37 @@
}
}
+ /**
+ * Delete the given Ram Job
+ *
+ * @param jobName
+ * @param groupName
+ * @throws JahiaException
+ */
+ public void deleteRamJob(String jobName, String groupName)
+ throws JahiaException {
+ if (!schedulerRunning) {
+ return;
+ }
+ try {
+ ramscheduler.deleteJob(jobName, groupName);
+ } catch (SchedulerException se) {
+ throw getJahiaException(se);
+ }
+ }
+
+ public JobDetail getRamJobDetail(String jobName, String groupName)
+ throws JahiaException {
+ if (!schedulerRunning) {
+ return null;
+ }
+ try {
+ return ramscheduler.getJobDetail(jobName, groupName);
+ } catch (SchedulerException se) {
+ throw getJahiaException(se);
+ }
+ }
+
public JobDetail getJobDetail(String jobName, String groupName)
throws JahiaException {
if (!schedulerRunning) {
Index: ContainerSearchIndexProcessValveImpl.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/search/valves/ContainerSearchIndexProcessValveImpl.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ContainerSearchIndexProcessValveImpl.java 4 Jan 2006 11:07:40 -0000
1.5
+++ ContainerSearchIndexProcessValveImpl.java 5 Jan 2006 15:28:25 -0000
1.6
@@ -3,6 +3,7 @@
import org.jahia.data.containers.JahiaContainer;
import org.jahia.data.fields.JahiaField;
import org.jahia.data.fields.JahiaFileFieldWrapper;
+import org.jahia.data.files.JahiaFileField;
import org.jahia.pipelines.PipelineException;
import org.jahia.pipelines.valves.Valve;
import org.jahia.pipelines.valves.ValveContext;
@@ -10,9 +11,16 @@
import org.jahia.services.search.*;
import org.jahia.services.version.EntryLoadRequest;
import org.jahia.services.fields.ContentField;
+import org.jahia.services.sites.JahiaSite;
+import org.jahia.services.webdav.DAVFileAccess;
+import org.jahia.services.webdav.JahiaWebdavBaseService;
import org.jahia.utils.LanguageCodeConverters;
import org.jahia.registries.ServicesRegistry;
import org.jahia.params.ProcessingContext;
+import org.quartz.JobDetail;
+import org.quartz.Scheduler;
+import org.quartz.JobDataMap;
+import org.quartz.SimpleTrigger;
import java.util.ArrayList;
import java.util.Arrays;
@@ -119,10 +127,49 @@
doc.setFieldValues(JahiaSearchConstant.CONTAINER_FIELD_PREFIX
+ field.getDefinition().getName(),values);
valuesList.addAll(Arrays.asList(values));
-
if ( field instanceof JahiaFileFieldWrapper ){
+ /*
ServicesRegistry.getInstance().getJahiaSearchService()
- .indexField(field.getID(), context.getUser(),
false, true);
+ .indexField(field.getID(), context.getUser(),
false, true);*/
+ JahiaFileField fField =
(JahiaFileField)field.getObject();
+ if ( fField == null ){
+ return values;
+ }
+ JahiaSite site = ServicesRegistry.getInstance ()
+ .getJahiaSitesService ().getSite
(field.getJahiaID());
+ DAVFileAccess file = JahiaWebdavBaseService.getInstance
()
+ .getDAVFileAccess (site, fField.getRealName ());
+ if (file.isValid () && file.hasRevisions () &&
!file.isCollection ()) {
+ String contentType = fField.getType ();
+ if ("application/pdf".equalsIgnoreCase(contentType))
{
+ long lastModifiedDate =
System.currentTimeMillis();
+ try {
+ lastModifiedDate = fField.getLastModifDate();
+ } catch ( Throwable t ){
+ logger.debug(t);
+ }
+ boolean newExtractionRequired =
ServicesRegistry.getInstance()
+
.getFileExtractionService().newExtractionRequired(
+ contentType,
file.getPath(),lastModifiedDate);
+ if ( newExtractionRequired ){
+ JobDetail jobDetail = new
JobDetail("Extracting File Field" + fField.getID(),
+ Scheduler.DEFAULT_GROUP,
FileFieldIndexingThread.class );
+ JobDataMap jobDataMap = new JobDataMap();
+ jobDataMap.put("field", field);
+ jobDataMap.put("context", context);
+ jobDetail.setJobDataMap(jobDataMap);
+ SimpleTrigger trigger = new
SimpleTrigger(jobDetail.getName(), Scheduler.DEFAULT_GROUP);
+
ServicesRegistry.getInstance().getSchedulerService().deleteRamJob(jobDetail.getName(),
Scheduler.DEFAULT_GROUP);
+
ServicesRegistry.getInstance().getSchedulerService().scheduleRamJob(jobDetail,
trigger);
+ } else {
+
ServicesRegistry.getInstance().getJahiaSearchService()
+ .indexField(field.getID(),
context.getUser(), false, true);
+ }
+ } else {
+
ServicesRegistry.getInstance().getJahiaSearchService()
+ .indexField(field.getID(),
context.getUser(), false, true);
+ }
+ }
}
} catch ( Throwable t){
logger.debug("Exception occured when getting field' values
for indexation",t);
Index: FileFieldIndexingThread.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/search/valves/FileFieldIndexingThread.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- FileFieldIndexingThread.java 21 Dec 2005 15:57:41 -0000 1.5
+++ FileFieldIndexingThread.java 5 Jan 2006 15:28:25 -0000 1.6
@@ -64,7 +64,7 @@
if (
ServicesRegistry.getInstance().getFileExtractionService()
.getAlreadyExtractedDocument(contentType,file.getPath()) != null ){
ServicesRegistry.getInstance().getJahiaSearchService()
- .indexField(field.getID(),
context.getUser(),false, false);
+ .indexField(field.getID(),
context.getUser(), false, true);
}
} catch (Throwable t) {
logger.debug(t);