@Override public OrTrigger build(String namespace, String applicationName, String applicationVersion) { return new OrTrigger(getBuiltTriggers(namespace, applicationName, applicationVersion)); } }
@Override public boolean isSatisfied(ProgramSchedule schedule, List<Notification> notifications) { for (SatisfiableTrigger trigger : getTriggers()) { if (trigger.isSatisfied(schedule, notifications)) { return true; } } return false; }
@Override public List<TriggerInfo> getTriggerInfos(TriggerInfoContext context) { return getUnitTriggerInfosAddRuntimeArgs(context); }
public SatisfiableTrigger getTriggerWithDeletedProgram(ProgramId programId) { List<SatisfiableTrigger> updatedTriggers = new ArrayList<>(); for (SatisfiableTrigger trigger : getTriggers()) { if (trigger instanceof ProgramStatusTrigger && programId.equals(((ProgramStatusTrigger) trigger).getProgramId())) { return new co.cask.cdap.internal.app.runtime.schedule.trigger.OrTrigger(updatedTriggers);
public SatisfiableTrigger getTriggerWithDeletedProgram(ProgramId programId) { List<SatisfiableTrigger> updatedTriggers = new ArrayList<>(); for (SatisfiableTrigger trigger : getTriggers()) { if (trigger instanceof ProgramStatusTrigger && programId.equals(((ProgramStatusTrigger) trigger).getProgramId())) { return new co.cask.cdap.internal.app.runtime.schedule.trigger.OrTrigger(updatedTriggers);
@Override public OrTrigger build(String namespace, String applicationName, String applicationVersion) { return new OrTrigger(getBuiltTriggers(namespace, applicationName, applicationVersion)); } }
@Override public boolean isSatisfied(ProgramSchedule schedule, List<Notification> notifications) { for (SatisfiableTrigger trigger : getTriggers()) { if (trigger.isSatisfied(schedule, notifications)) { return true; } } return false; }
@Override public List<TriggerInfo> getTriggerInfos(TriggerInfoContext context) { return getUnitTriggerInfosAddRuntimeArgs(context); }
new OrTrigger(new PartitionTrigger(DS1_ID, 1), prog1Trigger, new AndTrigger(new OrTrigger(prog1Trigger, prog2Trigger), new PartitionTrigger(DS2_ID, 1)), new OrTrigger(prog2Trigger)), ImmutableList.<Constraint>of()); final ProgramSchedule schedOrNew = new ProgramSchedule("schedOr", "an OR trigger", PROG3_ID, ImmutableMap.of("propper", "popper"), new OrTrigger(new PartitionTrigger(DS1_ID, 1), new AndTrigger(prog2Trigger, new PartitionTrigger(DS2_ID,
@Test public void testTriggerCodec() { ProtoTrigger.PartitionTrigger protoPartition = new ProtoTrigger.PartitionTrigger(new DatasetId("test", "myds"), 4); PartitionTrigger partitionTrigger = new PartitionTrigger(new DatasetId("test", "myds"), 4); testSerDeserYieldsTrigger(protoPartition, partitionTrigger); ProtoTrigger.TimeTrigger protoTime = new ProtoTrigger.TimeTrigger("* * * * *"); TimeTrigger timeTrigger = new TimeTrigger("* * * * *"); testSerDeserYieldsTrigger(protoTime, timeTrigger); ProtoTrigger.ProgramStatusTrigger protoProgramStatus = new ProtoTrigger.ProgramStatusTrigger(new ProgramId("test", "myapp", ProgramType.SERVICE, "myprog"), ImmutableSet.of(ProgramStatus.COMPLETED)); ProgramStatusTrigger programStatusTrigger = new ProgramStatusTrigger(new ProgramId("test", "myapp", ProgramType.SERVICE, "myprog"), ImmutableSet.of(ProgramStatus.COMPLETED)); testSerDeserYieldsTrigger(protoProgramStatus, programStatusTrigger); ProtoTrigger.OrTrigger protoOr = ProtoTrigger.or(protoPartition, ProtoTrigger.and(protoTime, protoProgramStatus)); OrTrigger orTrigger = new OrTrigger(partitionTrigger, new AndTrigger(timeTrigger, programStatusTrigger)); testSerDeserYieldsTrigger(protoOr, orTrigger); ProtoTrigger.AndTrigger protoAnd = ProtoTrigger.and(protoOr, protoTime, ProtoTrigger.or(protoPartition, protoProgramStatus)); AndTrigger andTrigger = new AndTrigger(orTrigger, timeTrigger, new OrTrigger(partitionTrigger, programStatusTrigger)); testSerDeserYieldsTrigger(protoAnd, andTrigger); }
new ScheduleDetail(TEST_NAMESPACE1, AppWithSchedule.NAME, ApplicationId.DEFAULT_VERSION, orScheduleName, description, programInfo, properties, new OrTrigger(timeTrigger, partitionTrigger), Collections.emptyList(), Schedulers.JOB_QUEUE_TIMEOUT_MILLIS, null);