<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import="java.io.BufferedReader, java.io.FileReader"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.Arrays"%> <%@page import="support.SongComparator"%> <%@page import="java.net.URLEncoder"%> Song Database <% String[][] songs = (String[][])session.getAttribute("songs"); if (songs == null) { BufferedReader in = new BufferedReader(new FileReader(config.getServletContext().getRealPath("songlist.txt"))); String next = null; ArrayList songList = new ArrayList(); while ((next = in.readLine()) != null) { int index = next.indexOf('-'); songList.add(new String[] {next.substring(0, index).trim(), next.substring(index + 1).trim()}); } session.setAttribute("songs", songs = songList.toArray(new String[][] {})); } int sortCol = 0, sortDir = 1; String sortColStr = request.getParameter("sortCol"); String sortDirStr = request.getParameter("sortDir"); if (sortColStr != null) { sortCol = Integer.parseInt(sortColStr); sortDir = Integer.parseInt(sortDirStr); Arrays.sort(songs, new SongComparator(sortCol, sortDir)); } %>

Song Database

<% int numSongsOnPage = 10; int start = 0; String startStr = request.getParameter("start"); if (startStr != null) { start = Integer.parseInt(startStr); } else { String startLetterStr = request.getParameter("startLetter"); if (startLetterStr != null) { while (!songs[start][sortCol].startsWith(startLetterStr)) { start++; } } } int end = Math.min(songs.length, start + numSongsOnPage); for (int i = start; i < end; i++) { %> <%} %>
Title Artist
<%=songs[i][0]%> <%=songs[i][1] %>

<% if (start != 0) { %> << <%}%>                                  <%=((start / numSongsOnPage) + 1) %>                                  <%if (end < songs.length - 1) { %> >> <%} %>
<% for (int i = 'A'; i <= 'Z'; i++) { %> <%=(char)i%>  <%} %>