/** * @return An immutable list of trigger info's of all the unit triggers in this composite trigger */ public List<TriggerInfo> getUnitTriggerInfosAddRuntimeArgs(TriggerInfoContext context) { ImmutableList.Builder<TriggerInfo> unitTriggerInfos = ImmutableList.builder(); for (Set<SatisfiableTrigger> triggeSet : getUnitTriggers().values()) { for (SatisfiableTrigger trigger : triggeSet) { unitTriggerInfos.addAll(trigger.getTriggerInfos(context)); } } return unitTriggerInfos.build(); }
/** * This method extracts all trigger keys from a schedule. These are the keys for which we need to index * the schedule, so that we can do a reverse lookup for an event received. * <p> * For now, we do not support composite trigger, but in the future this is where the triggers need to be * extracted from composite triggers. Hence the return type of this method is a list. */ private static Set<String> extractTriggerKeys(ProgramSchedule schedule) { return ((SatisfiableTrigger) schedule.getTrigger()).getTriggerKeys(); }
@Override public boolean isSatisfied(ProgramSchedule schedule, List<Notification> notifications) { for (SatisfiableTrigger trigger : getTriggers()) { if (trigger.isSatisfied(schedule, notifications)) { return true; } } return false; }
@Override public void updateLaunchArguments(ProgramSchedule schedule, List<Notification> notifications, Map<String, String> systemArgs, Map<String, String> userArgs) { for (SatisfiableTrigger trigger : getTriggers()) { trigger.updateLaunchArguments(schedule, notifications, systemArgs, userArgs); } }
@Override public void updateLaunchArguments(ProgramSchedule schedule, List<Notification> notifications, Map<String, String> systemArgs, Map<String, String> userArgs) { for (SatisfiableTrigger trigger : getTriggers()) { trigger.updateLaunchArguments(schedule, notifications, systemArgs, userArgs); } }
@Override public boolean isSatisfied(ProgramSchedule schedule, List<Notification> notifications) { for (Trigger trigger : getTriggers()) { if (!((SatisfiableTrigger) trigger).isSatisfied(schedule, notifications)) { return false; } } return true; }
/** * @return An immutable list of trigger info's of all the unit triggers in this composite trigger */ public List<TriggerInfo> getUnitTriggerInfosAddRuntimeArgs(TriggerInfoContext context) { ImmutableList.Builder<TriggerInfo> unitTriggerInfos = ImmutableList.builder(); for (Set<SatisfiableTrigger> triggeSet : getUnitTriggers().values()) { for (SatisfiableTrigger trigger : triggeSet) { unitTriggerInfos.addAll(trigger.getTriggerInfos(context)); } } return unitTriggerInfos.build(); }
public void launch(Job job) throws Exception { ProgramSchedule schedule = job.getSchedule(); ProgramId programId = schedule.getProgramId(); Map<String, String> userArgs = Maps.newHashMap(); userArgs.putAll(schedule.getProperties()); userArgs.putAll(propertiesResolver.getUserProperties(Id.Program.fromEntityId(programId))); Map<String, String> systemArgs = Maps.newHashMap(); systemArgs.putAll(propertiesResolver.getSystemProperties(Id.Program.fromEntityId(programId))); // Let the triggers update the arguments first before setting the triggering schedule info ((SatisfiableTrigger) job.getSchedule().getTrigger()).updateLaunchArguments(job.getSchedule(), job.getNotifications(), userArgs, systemArgs); TriggeringScheduleInfo triggeringScheduleInfo = getTriggeringScheduleInfo(job); systemArgs.put(ProgramOptionConstants.TRIGGERING_SCHEDULE_INFO, GSON.toJson(triggeringScheduleInfo)); execute(programId, systemArgs, userArgs); LOG.info("Successfully started program {} in schedule {}.", schedule.getProgramId(), schedule.getName()); }
@Override public Set<String> getTriggerKeys() { // Only keep unique trigger keys in the set ImmutableSet.Builder<String> triggerKeysBuilder = ImmutableSet.builder(); for (SatisfiableTrigger trigger : getTriggers()) { triggerKeysBuilder.addAll(trigger.getTriggerKeys()); } return triggerKeysBuilder.build(); }
@Override public boolean isSatisfied(ProgramSchedule schedule, List<Notification> notifications) { for (Trigger trigger : getTriggers()) { if (!((SatisfiableTrigger) trigger).isSatisfied(schedule, notifications)) { return false; } } return true; }
private TriggeringScheduleInfo getTriggeringScheduleInfo(Job job) { TriggerInfoContext triggerInfoContext = new TriggerInfoContext(job, store); SatisfiableTrigger trigger = ((SatisfiableTrigger) job.getSchedule().getTrigger()); List<TriggerInfo> triggerInfo = trigger.getTriggerInfos(triggerInfoContext); ProgramSchedule schedule = job.getSchedule(); return new DefaultTriggeringScheduleInfo(schedule.getName(), schedule.getDescription(), triggerInfo, schedule.getProperties()); }
public void launch(Job job) throws Exception { ProgramSchedule schedule = job.getSchedule(); ProgramId programId = schedule.getProgramId(); Map<String, String> userArgs = Maps.newHashMap(); userArgs.putAll(schedule.getProperties()); userArgs.putAll(propertiesResolver.getUserProperties(Id.Program.fromEntityId(programId))); Map<String, String> systemArgs = Maps.newHashMap(); systemArgs.putAll(propertiesResolver.getSystemProperties(Id.Program.fromEntityId(programId))); // Let the triggers update the arguments first before setting the triggering schedule info ((SatisfiableTrigger) job.getSchedule().getTrigger()).updateLaunchArguments(job.getSchedule(), job.getNotifications(), userArgs, systemArgs); TriggeringScheduleInfo triggeringScheduleInfo = getTriggeringScheduleInfo(job); systemArgs.put(ProgramOptionConstants.TRIGGERING_SCHEDULE_INFO, GSON.toJson(triggeringScheduleInfo)); execute(programId, systemArgs, userArgs); LOG.info("Successfully started program {} in schedule {}.", schedule.getProgramId(), schedule.getName()); }
@Override public Set<String> getTriggerKeys() { // Only keep unique trigger keys in the set ImmutableSet.Builder<String> triggerKeysBuilder = ImmutableSet.builder(); for (SatisfiableTrigger trigger : getTriggers()) { triggerKeysBuilder.addAll(trigger.getTriggerKeys()); } return triggerKeysBuilder.build(); }
@Override public boolean isSatisfied(ProgramSchedule schedule, List<Notification> notifications) { for (SatisfiableTrigger trigger : getTriggers()) { if (trigger.isSatisfied(schedule, notifications)) { return true; } } return false; }
private TriggeringScheduleInfo getTriggeringScheduleInfo(Job job) { TriggerInfoContext triggerInfoContext = new TriggerInfoContext(job, store); SatisfiableTrigger trigger = ((SatisfiableTrigger) job.getSchedule().getTrigger()); List<TriggerInfo> triggerInfo = trigger.getTriggerInfos(triggerInfoContext); ProgramSchedule schedule = job.getSchedule(); return new DefaultTriggeringScheduleInfo(schedule.getName(), schedule.getDescription(), triggerInfo, schedule.getProperties()); }
/** * This method extracts all trigger keys from a schedule. These are the keys for which we need to index * the schedule, so that we can do a reverse lookup for an event received. * <p> * For now, we do not support composite trigger, but in the future this is where the triggers need to be * extracted from composite triggers. Hence the return type of this method is a list. */ private static Set<String> extractTriggerKeys(ProgramSchedule schedule) { return ((SatisfiableTrigger) schedule.getTrigger()).getTriggerKeys(); }
private boolean isTriggerSatisfied(ProgramSchedule schedule, List<Notification> notifications) { return ((SatisfiableTrigger) schedule.getTrigger()).isSatisfied(schedule, notifications); }
private boolean isTriggerSatisfied(ProgramSchedule schedule, List<Notification> notifications) { return ((SatisfiableTrigger) schedule.getTrigger()).isSatisfied(schedule, notifications); }