ProvidedObjectDescriptor descriptor = new ProvidedObjectDescriptor(businessCalendarImpl, true);
return descriptor;
}
private Day parseDay(Element daysElement, String dayText, DateFormat hourFormat, BusinessCalendarImpl businessCalendarImpl, Parse parse) {
Day day = new Day();
day.setBusinessCalendar(businessCalendarImpl);
Element dayElement = XmlUtil.element(daysElement, dayText);
if (dayElement!=null) {
List<DayPart> dayParts = new ArrayList<DayPart>();
if (dayElement.hasAttribute("hours")) {
int dayPartIndex = 0;
String hours = dayElement.getAttribute("hours");
for (String part: StringUtil.tokenize(hours, "and")) {
try {
int separatorIndex = part.indexOf('-');
if (separatorIndex==-1) throw new IllegalArgumentException("no dash (-)");
String fromText = part.substring(0, separatorIndex).trim().toLowerCase();
String toText = part.substring(separatorIndex+1).trim().toLowerCase();
Date from = hourFormat.parse(fromText);
Date to = hourFormat.parse(toText);
Calendar calendar = new GregorianCalendar();
calendar.setTime(from);
int fromHour = calendar.get(Calendar.HOUR_OF_DAY);
int fromMinute = calendar.get(Calendar.MINUTE);
calendar.setTime(to);
int toHour = calendar.get(Calendar.HOUR_OF_DAY);
if (toHour==0) {
toHour=24;
}
int toMinute = calendar.get(Calendar.MINUTE);
DayPart dayPart = new DayPart();
dayPart.setDay(day);
dayPart.setIndex(dayPartIndex);
dayPart.setFromHour(fromHour);
dayPart.setFromMinute(fromMinute);
dayPart.setToHour(toHour);
dayPart.setToMinute(toMinute);
dayParts.add(dayPart);
} catch(Exception e) {
parse.addProblem(dayText+" has invalid hours part '"+part+"': "+e.getMessage(), dayElement);
}
dayPartIndex++;
}
} else {
parse.addProblem(dayText+" must have attribute 'hours'", dayElement);
}
DayPart[] dayPartArray = new DayPart[dayParts.size()];
dayPartArray = dayParts.toArray(dayPartArray);
day.setDayParts(dayPartArray);
}
return day;
}