import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; public class Artist extends HttpServlet { private HTMLParser html; private DBUtil db; private PrintWriter out; private String artist; private String content; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { artist = request.getParameter("name"); out = response.getWriter(); html = new HTMLParser(); try { db = new DBUtil(); } catch (Exception e) { html.outputError(e, out); } response.setContentType("text/html"); if(artist == null) { html.setContent(printLinks()); html.parse(out, null, "Listing of all Artists"); } else { artist = artist.replace('_', ' '); html.setContent(getArtistInfo(artist, html)); html.parse(out, null, artist); } db.close(); } private String printLinks() { ResultSet rs = db.execQuery("SELECT name FROM Artist ORDER BY name"); String links = ""; try { while(rs.next()) { String name = rs.getString("name"); String _name = name.replace(' ', '_'); links += ("" + name + "
\n"); } rs.close(); db.closeQuery(); // has to come after rs processing... } catch (SQLException e) { html.outputError(e, out); } links += "

" + "Add a new Artist

\n"; links += "" + "Delete an Artist\n"; return links; } private String getArtistInfo(String artist, HTMLParser html) { String info = "", query; query = "SELECT * FROM Artist WHERE name='" + artist + "'"; ResultSet groupInfo = db.execQuery(query); query = "SELECT * FROM Musician WHERE name IN " + "(SELECT musicianName FROM InGroup WHERE groupName='" + artist + "')"; ResultSet members = db.execQuery(query); query = "SELECT * FROM album WHERE groupName='"+artist+"'" + " ORDER BY year"; ResultSet albums = db.execQuery(query); info += "\n\n\n"; info += html.insertPic(artist.replace(' ', '_'), "band"); info += "\n
\n"; try { // the groupInfo should only have one entry... if(groupInfo.next()) { info += ("

"+groupInfo.getString("name")+"

\n"); info += "

\n"; info += "Genre: " + groupInfo.getString("genre") + "\n

"; info += "Hometown: " + groupInfo.getString("hometown") + "\n"; String homepage = groupInfo.getString("homepage"); info += "

Homepage: "; info += homepage + "\n"; info += "

" + groupInfo.getString("bio") + "\n"; info += "

\n"; } else { return ("Artist: '" + artist + "' not found"); } info += "

Members:

\n"; info += "\n\n"; info += "\n"; info += "\n"; info += "\n\n"; while(members.next()) { info += "\n"; String memberName = members.getString("name"); info += "\n"; info += "\n"; info += "\n"; info += "\n"; } info += "
NameInstrumentHometown
" + memberName + ""+members.getString("instrument")+""+members.getString("hometown")+"
\n"; info += "

Discography

\n"; info += "\n\n"; info += "\n"; info += "\n"; info += "\n\n"; while(albums.next()) { info += "\n"; String albumName = albums.getString("albumName"); info += "\n"; info += "\n"; info += "\n"; String pic = artist.replace(' ', '_') + "-" + albumName.replace(' ', '_'); info += html.insertPic(pic, "album"); info += "\n"; } info += "
AlbumDate ReleasedTracks
"+albumName+""+albums.getDate("year")+""+albums.getInt("numTracks")+"
\n"; } catch (SQLException e) { html.outputError(e, out); } info += "

\n\n"; info += "Update this Artist\n"; info += "Get Tablature for this Artist\n\n"; info += /*"

Back\n*/"\n"; info += "\n\n"; return info; } }