package de.cinovo.cloudconductor.server; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import de.cinovo.cloudconductor.api.lib.helper.SchedulerService; import de.cinovo.cloudconductor.server.dao.IServerOptionsDAO; import de.cinovo.cloudconductor.server.model.EServerOptions; import de.cinovo.cloudconductor.server.repo.IndexTask; import de.cinovo.cloudconductor.server.util.CleanUpTask; import de.cinovo.cloudconductor.server.util.ICCProperties; import de.cinovo.cloudconductor.server.util.IServerTasks; /** * Copyright 2014 Cinovo AG<br> * <br> * * @author psigloch * */ @Component public class ServerTaskHelper { @Autowired private IServerOptionsDAO optionsDao; @Autowired private CleanUpTask cleanupTask; @Autowired private IndexTask indexTask; /** * */ public void init() { EServerOptions options = this.optionsDao.get(); this.createCleanUpTask(options); this.createIndexTask(options); } private void createCleanUpTask(EServerOptions options) { SchedulerService.instance.register(IServerTasks.CLEAN_UP, this.cleanupTask, options.getHostCleanUpTimer(), options.getHostCleanUpTimerUnit()); } private void createIndexTask(EServerOptions options) { if (System.getProperty(ICCProperties.REPO_SCAN, "false").equals("true")) { SchedulerService.instance.register(IServerTasks.INDEXER, this.indexTask, options.getIndexScanTimer(), options.getIndexScanTimerUnit()); } } /** * update the tasks */ public void updateTasks() { EServerOptions options = this.optionsDao.get(); this.updateCleanUpTask(null, options); this.updateIndexTask(null, options); } /** * @param oldOptions the old options */ public void updateTasks(EServerOptions oldOptions) { EServerOptions options = this.optionsDao.get(); this.updateCleanUpTask(oldOptions, options); this.updateIndexTask(oldOptions, options); } private void updateCleanUpTask(EServerOptions oldOptions, EServerOptions options) { boolean change = false; if (oldOptions == null) { change = true; } else { if (oldOptions.getHostCleanUpTimer() != options.getHostCleanUpTimer()) { change = true; } if (!oldOptions.getHostCleanUpTimerUnit().equals(options.getHostCleanUpTimerUnit())) { change = true; } } if (change) { SchedulerService.instance.resetTask(IServerTasks.CLEAN_UP, options.getHostCleanUpTimer(), options.getHostCleanUpTimerUnit()); } } private void updateIndexTask(EServerOptions oldOptions, EServerOptions options) { boolean change = false; if (oldOptions == null) { change = true; } else { if (oldOptions.getIndexScanTimer() != options.getIndexScanTimer()) { change = true; } if (!oldOptions.getIndexScanTimerUnit().equals(options.getIndexScanTimerUnit())) { change = true; } } if (change) { SchedulerService.instance.resetTask(IServerTasks.INDEXER, options.getIndexScanTimer(), options.getIndexScanTimerUnit()); } } }