%! private static final String TITLE_DATE_FORMAT = "MMM dd"; %>
<%! private static final SimpleDateFormat titleDateFormatter = new SimpleDateFormat(TITLE_DATE_FORMAT, Locale.US); %>
<%! private static final String MONTH_DATE_FORMAT = "MMMMM"; %>
<%! private static final SimpleDateFormat monthDateFormatter = new SimpleDateFormat(MONTH_DATE_FORMAT, Locale.US); %>
<%! private static final String TIME_FORMAT = "hh:mm a"; %>
<%! private static final SimpleDateFormat timeFormatter = new SimpleDateFormat(TIME_FORMAT, Locale.US); %>
<%@ include file="include_header_static.jsp" %>
<%
final class EntryDetail implements Comparable {
private int sortOrder;
private String detailContent;
public EntryDetail (int sortOrder, String detailContent) {
this.sortOrder = sortOrder;
this.detailContent = detailContent;
}
public int compareTo (Object o) {
EntryDetail compareToEntryDetail = (EntryDetail)o;
if (sortOrder < compareToEntryDetail.getSortOrder()) return -1;
else if (sortOrder == compareToEntryDetail.getSortOrder()) return 0;
return 1;
}
public int getSortOrder() {
return sortOrder;
}
public String getDetailContent() {
return detailContent;
}
public boolean equals (Object o) {
return sortOrder == ((EntryDetail)o).getSortOrder();
}
public int hashCode () {
return sortOrder;
}
}
final class DayEntry implements Comparable {
private int sortOrder;
private String timeString;
private Set detailSet;
public DayEntry (int sortOrder, String timeString) {
this.sortOrder = sortOrder;
this.timeString = timeString;
detailSet = new TreeSet();
}
public int compareTo (Object o) {
DayEntry compareToDayEntry = (DayEntry)o;
if (sortOrder < compareToDayEntry.getSortOrder()) return -1;
else if (sortOrder == compareToDayEntry.getSortOrder()) return 0;
return 1;
}
public int getSortOrder() {
return sortOrder;
}
public String getTime() {
return timeString;
}
public void addDetail (EntryDetail entryDetail) {
detailSet.add(entryDetail);
}
public Set getDetail () {
return detailSet;
}
}
%>
<%
String queryString = request.getQueryString();
Hashtable queryStringHash = HttpUtils.parseQueryString(queryString);
String destinationArg = ((String[])queryStringHash.get("name"))[0];
Document document = getDestinationXML(request, destinationArg);
Element docElem = document.getDocumentElement();
String destinationName = docElem.getAttribute("name");
Date arrivalDate = getArrivalDate(document);
Calendar arrivalCal = Calendar.getInstance();
arrivalCal.setTime(arrivalDate);
arrivalCal.set(Calendar.HOUR_OF_DAY, 00);
Date departureDate = getDepartureDate(document);
Calendar departureCal = Calendar.getInstance();
departureCal.setTime(departureDate);
departureCal.set(Calendar.HOUR_OF_DAY, 23);
String subTitle = titleDateFormatter.format(arrivalDate) + " thru " + titleDateFormatter.format(departureDate);
// weather
Element weatherNode = (Element)docElem.getElementsByTagName("weather").item(0);
String low = weatherNode.getAttribute("low");
String high = weatherNode.getAttribute("high");
// schedule list
Element scheduleNode = (Element)docElem.getElementsByTagName("schedule").item(0);
NodeList dayNodes = scheduleNode.getElementsByTagName("day");
Map dayToEntriesMap = new HashMap();
for (int i = 0; i < dayNodes.getLength(); i++) {
Element dayNode = (Element)dayNodes.item(i);
String day = dayNode.getAttribute("date");
NodeList entryNodes = dayNode.getElementsByTagName("entry");
for (int j = 0; j < entryNodes.getLength(); j++) {
Element entryNode = (Element)entryNodes.item(j);
if (entryNode != null) {
String sortOrder = entryNode.getAttribute("sort");
String timeString = entryNode.getAttribute("time");
Set entries = (Set)dayToEntriesMap.get(day);
if (entries == null) {
entries = new TreeSet();
}
DayEntry dayEntry = new DayEntry(Integer.parseInt(sortOrder), timeString);
NodeList detailNodes = entryNode.getElementsByTagName("detail");
for (int k = 0; k < detailNodes.getLength(); k++) {
Element detailNode = (Element)detailNodes.item(k);
EntryDetail ed = new EntryDetail(Integer.parseInt(detailNode.getAttribute("sort")),
detailNode.getFirstChild().getNodeValue());
dayEntry.addDetail(ed);
}
entries.add(dayEntry);
System.err.println("Adding: " + day);
dayToEntriesMap.put(day, entries);
}
}
}
// activities list
Element activitiesNode = (Element)docElem.getElementsByTagName("activities").item(0);
NodeList activitiesNodes = activitiesNode.getElementsByTagName("activity");
Element diningNode = (Element)docElem.getElementsByTagName("dining").item(0);
NodeList diningNodes = diningNode.getElementsByTagName("detail");
%>
<%@ include file="include_header.jsp" %>
 |
<%= SECTION_SPACER %>
|
|
<%
if (low != null && !low.equals("")) {
%>
<%= SECTION_SPACER %>
- Low: <%= low %> F
- High:<%= high %> F
|
|
<%
}
%>
<%= SECTION_SPACER %>
<%
while (arrivalCal.before(departureCal)) {
%>
<%
System.err.println("Looking for: " + fileDateFormatter.format(arrivalCal.getTime()));
if (dayToEntriesMap.containsKey(fileDateFormatter.format(arrivalCal.getTime()))) {
Set entries = (Set)dayToEntriesMap.get(fileDateFormatter.format(arrivalCal.getTime()));
Iterator iter = entries.iterator();
while (iter.hasNext()) {
DayEntry entry = (DayEntry)iter.next();
Set detailSet = entry.getDetail();
%>
| <%= entry.getTime() %> |
<%
Iterator detailIter = detailSet.iterator();
while (detailIter.hasNext()) {
EntryDetail entryDetail = (EntryDetail)detailIter.next();
%>
| <%= TAB %> |
<%= entryDetail.getDetailContent() %> |
<%
}
}
}
%>
|
|
<%
arrivalCal.add(Calendar.DAY_OF_YEAR, 1);
}
%>
|
<%= SECTION_SPACER %>
<%
for (int i = 0; i < activitiesNodes.getLength(); i++) {
Node activity = activitiesNodes.item(i);
%>
- <%= activity.getFirstChild().getNodeValue() %>
<%
}
%>
|
|
<%= SECTION_SPACER %>
<%
for (int i = 0; i < diningNodes.getLength(); i++) {
Node dining = diningNodes.item(i);
%>
- <%= dining.getFirstChild().getNodeValue() %>
<%
}
%>
|
|
<%@ include file="include_footer.jsp" %>