From 370e88e7323f0538b9436d9f543b7330419e8640 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Fri, 13 Aug 2010 13:50:35 +0000 Subject: [PATCH] ALF-4346 - Initial service interface for scheduled persisted actions git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21792 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../scheduled/ScheduledPersistedAction.java | 90 +++++++++++++++++++ .../ScheduledPersistedActionService.java | 64 +++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 source/java/org/alfresco/repo/action/scheduled/ScheduledPersistedAction.java create mode 100644 source/java/org/alfresco/repo/action/scheduled/ScheduledPersistedActionService.java diff --git a/source/java/org/alfresco/repo/action/scheduled/ScheduledPersistedAction.java b/source/java/org/alfresco/repo/action/scheduled/ScheduledPersistedAction.java new file mode 100644 index 0000000000..c7c9c8fe21 --- /dev/null +++ b/source/java/org/alfresco/repo/action/scheduled/ScheduledPersistedAction.java @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2005-2010 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.repo.action.scheduled; + +import java.util.Date; + +import org.alfresco.service.cmr.action.Action; + +/** + * The scheduling wrapper around a persisted + * action, which is to be executed on a + * scheduled basis. + * + * @author Nick Burch + * @since 3.4 + */ +public interface ScheduledPersistedAction { + /** Get the action which the schedule applies to */ + public Action getAction(); + + /** + * Get the first date that the action should be run + * on or after, or null if it should start shortly + * after each startup. + */ + public Date getScheduleStart(); + + /** + * Sets the first date that the action should be + * run on or after. Set to null if the action + * should be run shortly after each startup. + */ + public void setScheduleStart(Date startDate); + + + /** + * How many {@link #getScheduleIntervalPeriod()} periods + * should we wait between executions? + * Will be null if the action isn't scheduled to + * be repeated. + */ + public Integer getScheduleIntervalCount(); + + /** + * Sets how many periods should be waited between + * each execution, or null if it shouldn't be + * repeated. + */ + public void setScheduleIntervalCount(Integer count); + + + /** + * How long are {@link #getScheduleIntervalCount()} counts + * measured in? + */ + public IntervalPeriod getScheduleIntervalPeriod(); + + /** + * Sets the interval period + */ + public void setScheduleIntervalPeriod(IntervalPeriod period); + + + /** + * Returns the interval in a form like 1D (1 day) + * or 2h (2 hours) + */ + public String getScheduleInterval(); + + + public static enum IntervalPeriod { + Month, Week, Day, Hour, Minute + } +} diff --git a/source/java/org/alfresco/repo/action/scheduled/ScheduledPersistedActionService.java b/source/java/org/alfresco/repo/action/scheduled/ScheduledPersistedActionService.java new file mode 100644 index 0000000000..ddc9329786 --- /dev/null +++ b/source/java/org/alfresco/repo/action/scheduled/ScheduledPersistedActionService.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2005-2010 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.repo.action.scheduled; + +import java.util.List; + +import org.alfresco.service.cmr.action.Action; + +/** + * A service which handles the scheduling of the + * execution of persisted actions. + * It handles registering them with the Quartz + * scheduler on repository start, and handles + * the edit, creation and deletion of them. + * + * @author Nick Burch + * @since 3.4 + */ +public interface ScheduledPersistedActionService { + /** + * Creates a new schedule, for the specified Action. + */ + public ScheduledPersistedAction createSchedule(Action persistedAction); + + /** + * Saves the changes to the schedule to the repository, + * and updates the Scheduler with any changed details. + */ + public void saveSchedule(ScheduledPersistedAction schedule); + + /** + * Removes the schedule for the action, and cancels future + * executions of it. + * The persisted action is unchanged. + */ + public void deleteSchedule(ScheduledPersistedAction schedule); + + /** + * Returns the schedule for the specified action, or + * null if it isn't currently scheduled. + */ + public ScheduledPersistedAction getSchedule(Action persistedAction); + + /** + * Returns all currently scheduled actions. + */ + public List listSchedules(); +}