if (! (descriptor instanceof ScheduledTimerDescriptor)) {
throw new IllegalArgumentException(getClass() +
" cannot handles descriptors of type " + descriptor.getClass());
}
ScheduledTimerDescriptor desc = (ScheduledTimerDescriptor) descriptor;
Node timerNode = super.writeDescriptor(parent, nodeName, descriptor);
Node scheduleNode = appendChild(timerNode, EjbTagNames.TIMER_SCHEDULE);
appendTextChild(scheduleNode, EjbTagNames.TIMER_SECOND, desc.getSecond());
appendTextChild(scheduleNode, EjbTagNames.TIMER_MINUTE, desc.getMinute());
appendTextChild(scheduleNode, EjbTagNames.TIMER_HOUR, desc.getHour());
appendTextChild(scheduleNode, EjbTagNames.TIMER_DAY_OF_MONTH, desc.getDayOfMonth());
appendTextChild(scheduleNode, EjbTagNames.TIMER_MONTH, desc.getMonth());
appendTextChild(scheduleNode, EjbTagNames.TIMER_DAY_OF_WEEK, desc.getDayOfWeek());
appendTextChild(scheduleNode, EjbTagNames.TIMER_YEAR, desc.getYear());
try {
DatatypeFactory dFactory = DatatypeFactory.newInstance();
GregorianCalendar cal = new GregorianCalendar();
if (desc.getStart() != null) {
cal.setTime(desc.getStart());
XMLGregorianCalendar xmlGreg = dFactory.newXMLGregorianCalendar(cal);
appendTextChild(timerNode, EjbTagNames.TIMER_START, xmlGreg.toXMLFormat());
}
if (desc.getEnd() != null) {
cal.setTime(desc.getEnd());
XMLGregorianCalendar xmlGreg = dFactory.newXMLGregorianCalendar(cal);
appendTextChild(timerNode, EjbTagNames.TIMER_END, xmlGreg.toXMLFormat());
}
} catch (Exception e) {
DOLUtils.getDefaultLogger().log(Level.WARNING, e.getMessage(), e);
}
MethodNode methodNode = new MethodNode();
methodNode.writeJavaMethodDescriptor(timerNode, EjbTagNames.TIMEOUT_METHOD,
desc.getTimeoutMethod());
appendTextChild(timerNode, EjbTagNames.TIMER_PERSISTENT,
Boolean.toString(desc.getPersistent()));
String tz = desc.getTimezone();
if( tz != null ) {
appendTextChild(timerNode, EjbTagNames.TIMER_TIMEZONE, tz);
}
String info = desc.getInfo();
if( info != null ) {
appendTextChild(timerNode, EjbTagNames.TIMER_INFO, info);
}
return timerNode;