Java tutorial
/******************************************************************************* * Copyright (c) 2013 * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v2.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * * Contributors: * Lautaro Matas (lmatas@gmail.com) - Desarrollo e implementacin * Emiliano Marmonti(emarmonti@gmail.com) - Coordinacin del componente III * * Este software fue desarrollado en el marco de la consultora "Desarrollo e implementacin de las soluciones - Prueba piloto del Componente III -Desarrollador para las herramientas de back-end" del proyecto Estrategia Regional y Marco de Interoperabilidad y Gestin para una Red Federada Latinoamericana de Repositorios Institucionales de Documentacin Cientfica? financiado por Banco Interamericano de Desarrollo (BID) y ejecutado por la Cooperacin Latino Americana de Redes Avanzadas, CLARA. ******************************************************************************/ package org.lareferencia.backend.tasks; import java.util.Date; import org.lareferencia.backend.domain.Network; import org.springframework.scheduling.Trigger; import org.springframework.scheduling.TriggerContext; import org.springframework.scheduling.support.CronTrigger; public class SnapshotCronTrigger implements Trigger { CronTrigger cronTrigger; Network network; public SnapshotCronTrigger(Network network) { /** * TODO: SnapshotCronTrigger no es una extensin de CronTrigger porque resta implementar un mecanismo que sincronize nextExecutionTime * con los valores (probablemente cambiantes) de Schedule. * Es posible refrescar network cada vez y cambiar entonces la instancia de cronTrigger (por eso no es prctica la herencia) * , de esa manera podra modificarse las futuras ejecuciones, mas no la ya programada. */ this.network = network; if (network.getScheduleCronExpression() != null && !network.getScheduleCronExpression().trim().equals("")) { try { cronTrigger = new CronTrigger(network.getScheduleCronExpression()); } catch (java.lang.IllegalArgumentException e) { // TODO: handle exception System.out.println("Problemas con el trigger de:" + network.getName()); } } } @Override public Date nextExecutionTime(TriggerContext ctx) { Date execTime = null; if (cronTrigger != null) { System.out.println(network.getName() + " next exec: " + cronTrigger.nextExecutionTime(ctx)); execTime = cronTrigger.nextExecutionTime(ctx); } // Si retorna null entonce return execTime; } }