public static Trigger readTrigger( MarshallerReaderContext inCtx, ProtobufMessages.Trigger _trigger) { switch (_trigger.getType()) { case CRON: { ProtobufMessages.Trigger.CronTrigger _cron = _trigger.getCron(); CronTrigger trigger = new CronTrigger(); trigger.setStartTime(new Date(_cron.getStartTime())); if (_cron.hasEndTime()) { trigger.setEndTime(new Date(_cron.getEndTime())); } trigger.setRepeatLimit(_cron.getRepeatLimit()); trigger.setRepeatCount(_cron.getRepeatCount()); trigger.setCronExpression(_cron.getCronExpression()); if (_cron.hasNextFireTime()) { trigger.setNextFireTime(new Date(_cron.getNextFireTime())); } String[] calendarNames = new String[_cron.getCalendarNameCount()]; for (int i = 0; i < calendarNames.length; i++) { calendarNames[i] = _cron.getCalendarName(i); } trigger.setCalendarNames(calendarNames); return trigger; } case INTERVAL: { ProtobufMessages.Trigger.IntervalTrigger _interval = _trigger.getInterval(); IntervalTrigger trigger = new IntervalTrigger(); trigger.setStartTime(new Date(_interval.getStartTime())); if (_interval.hasEndTime()) { trigger.setEndTime(new Date(_interval.getEndTime())); } trigger.setRepeatLimit(_interval.getRepeatLimit()); trigger.setRepeatCount(_interval.getRepeatCount()); if (_interval.hasNextFireTime()) { trigger.setNextFireTime(new Date(_interval.getNextFireTime())); } trigger.setPeriod(_interval.getPeriod()); String[] calendarNames = new String[_interval.getCalendarNameCount()]; for (int i = 0; i < calendarNames.length; i++) { calendarNames[i] = _interval.getCalendarName(i); } trigger.setCalendarNames(calendarNames); return trigger; } case POINT_IN_TIME: { PointInTimeTrigger trigger = new PointInTimeTrigger(_trigger.getPit().getNextFireTime(), null, null); return trigger; } } throw new RuntimeException("Unable to deserialize Trigger for type: " + _trigger.getType()); }
public static ProtobufMessages.Trigger writeTrigger( Trigger trigger, MarshallerWriteContext outCtx) { if (trigger instanceof CronTrigger) { CronTrigger cronTrigger = (CronTrigger) trigger; ProtobufMessages.Trigger.CronTrigger.Builder _cron = ProtobufMessages.Trigger.CronTrigger.newBuilder() .setStartTime(cronTrigger.getStartTime().getTime()) .setRepeatLimit(cronTrigger.getRepeatLimit()) .setRepeatCount(cronTrigger.getRepeatCount()) .setCronExpression(cronTrigger.getCronEx().getCronExpression()); if (cronTrigger.getEndTime() != null) { _cron.setEndTime(cronTrigger.getEndTime().getTime()); } if (cronTrigger.getNextFireTime() != null) { _cron.setNextFireTime(cronTrigger.getNextFireTime().getTime()); } if (cronTrigger.getCalendarNames() != null) { for (String calendarName : cronTrigger.getCalendarNames()) { _cron.addCalendarName(calendarName); } } return ProtobufMessages.Trigger.newBuilder() .setType(ProtobufMessages.Trigger.TriggerType.CRON) .setCron(_cron.build()) .build(); } else if (trigger instanceof IntervalTrigger) { IntervalTrigger intTrigger = (IntervalTrigger) trigger; ProtobufMessages.Trigger.IntervalTrigger.Builder _interval = ProtobufMessages.Trigger.IntervalTrigger.newBuilder() .setStartTime(intTrigger.getStartTime().getTime()) .setRepeatLimit(intTrigger.getRepeatLimit()) .setRepeatCount(intTrigger.getRepeatCount()) .setPeriod(intTrigger.getPeriod()); if (intTrigger.getEndTime() != null) { _interval.setEndTime(intTrigger.getEndTime().getTime()); } if (intTrigger.getNextFireTime() != null) { _interval.setNextFireTime(intTrigger.getNextFireTime().getTime()); } if (intTrigger.getCalendarNames() != null) { for (String calendarName : intTrigger.getCalendarNames()) { _interval.addCalendarName(calendarName); } } return ProtobufMessages.Trigger.newBuilder() .setType(ProtobufMessages.Trigger.TriggerType.INTERVAL) .setInterval(_interval.build()) .build(); } else if (trigger instanceof PointInTimeTrigger) { PointInTimeTrigger pinTrigger = (PointInTimeTrigger) trigger; return ProtobufMessages.Trigger.newBuilder() .setType(ProtobufMessages.Trigger.TriggerType.POINT_IN_TIME) .setPit( ProtobufMessages.Trigger.PointInTimeTrigger.newBuilder() .setNextFireTime(pinTrigger.hasNextFireTime().getTime()) .build()) .build(); } else if (trigger instanceof CompositeMaxDurationTrigger) { CompositeMaxDurationTrigger cmdTrigger = (CompositeMaxDurationTrigger) trigger; ProtobufMessages.Trigger.CompositeMaxDurationTrigger.Builder _cmdt = ProtobufMessages.Trigger.CompositeMaxDurationTrigger.newBuilder(); if (cmdTrigger.getMaxDurationTimestamp() != null) { _cmdt.setMaxDurationTimestamp(cmdTrigger.getMaxDurationTimestamp().getTime()); } if (cmdTrigger.getTimerCurrentDate() != null) { _cmdt.setTimerCurrentDate(cmdTrigger.getTimerCurrentDate().getTime()); } if (cmdTrigger.getTimerTrigger() != null) { _cmdt.setTimerTrigger(writeTrigger(cmdTrigger.getTimerTrigger(), outCtx)); } return ProtobufMessages.Trigger.newBuilder() .setType(ProtobufMessages.Trigger.TriggerType.COMPOSITE_MAX_DURATION) .setCmdt(_cmdt.build()) .build(); } throw new RuntimeException("Unable to serialize Trigger for type: " + trigger.getClass()); }