You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by jv...@apache.org on 2005/07/23 20:58:53 UTC

svn commit: r224504 - in /maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/build: ./ settings/ settings/DefaultBuildSettingsActivator.java

Author: jvanzyl
Date: Sat Jul 23 11:58:50 2005
New Revision: 224504

URL: http://svn.apache.org/viewcvs?rev=224504&view=rev
Log:
o committing build settings activator


Added:
    maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/build/
    maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/
    maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultBuildSettingsActivator.java

Added: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultBuildSettingsActivator.java
URL: http://svn.apache.org/viewcvs/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultBuildSettingsActivator.java?rev=224504&view=auto
==============================================================================
--- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultBuildSettingsActivator.java (added)
+++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultBuildSettingsActivator.java Sat Jul 23 11:58:50 2005
@@ -0,0 +1,111 @@
+package org.apache.maven.continuum.build.settings;
+
+import org.apache.maven.continuum.Continuum;
+import org.apache.maven.continuum.project.ContinuumBuildSettings;
+import org.apache.maven.continuum.scheduler.ContinuumBuildJob;
+import org.apache.maven.continuum.scheduler.ContinuumScheduler;
+import org.apache.maven.continuum.store.ContinuumStore;
+import org.apache.maven.continuum.store.ContinuumStoreException;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.quartz.CronTrigger;
+import org.quartz.JobDataMap;
+import org.quartz.JobDetail;
+import org.quartz.Job;
+import org.quartz.Scheduler;
+
+import java.text.ParseException;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Iterator;
+
+/**
+ * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
+ * @version $Id:$
+ */
+public class DefaultBuildSettingsActivator
+    extends AbstractLogEnabled
+    implements BuildSettingsActivator
+{
+    /**
+     * @plexus.requirement
+     */
+    private ContinuumStore store;
+
+    /**
+     * @plexus.requirement
+     */
+    private ContinuumScheduler scheduler;
+
+    //private int delay = 3600;
+    private int delay = 1;
+
+    public void activateBuildSettings( Continuum continuum )
+        throws BuildSettingsActivationException
+    {
+        getLogger().info( "Activating build settings ..." );
+
+        try
+        {
+            Collection buildSettingsCollection = store.getBuildSettings();
+
+            for ( Iterator i = buildSettingsCollection.iterator(); i.hasNext(); )
+            {
+                ContinuumBuildSettings buildSettings = (ContinuumBuildSettings) i.next();
+
+                scheduleBuildSettings( buildSettings, continuum );
+            }
+        }
+        catch ( ContinuumStoreException e )
+        {
+            throw new BuildSettingsActivationException( "Error activating build settings.", e );
+        }
+    }
+
+    protected void scheduleBuildSettings( ContinuumBuildSettings buildSettings, Continuum continuum )
+        throws BuildSettingsActivationException
+    {
+        JobDataMap dataMap = new JobDataMap();
+
+        dataMap.put( "continuum", continuum );
+
+        dataMap.put( "logger", getLogger() );
+
+        //the name + group makes the job unique
+
+        JobDetail jobDetail = new JobDetail( buildSettings.getName(), Scheduler.DEFAULT_GROUP, ContinuumBuildJob.class );
+
+        jobDetail.setJobDataMap( dataMap );
+
+        CronTrigger trigger = new CronTrigger();
+
+        trigger.setName( buildSettings.getName() );
+
+        trigger.setGroup( Scheduler.DEFAULT_GROUP );
+
+        Date startTime = new Date( System.currentTimeMillis() + ( delay * 1000 ) );
+
+        trigger.setStartTime( startTime );
+
+        trigger.setNextFireTime( startTime );
+
+        try
+        {
+            trigger.setCronExpression( buildSettings.getCronExpression() );
+        }
+        catch ( ParseException e )
+        {
+            throw new BuildSettingsActivationException( "Error parsing cron expression.", e );
+        }
+
+        try
+        {
+            scheduler.scheduleJob( jobDetail, trigger );
+
+            getLogger().info( trigger.getNextFireTime() + "" );
+        }
+        catch ( Exception e )
+        {
+            throw new BuildSettingsActivationException( "Cannot schedule build job.", e );
+        }
+    }
+}