*/
public void handleRequest() throws SQLException, IOException, BadRequestException {
final Request req = getRequest();
final Response res = getResponse();
final Locale locale = getLocale();
final Properties p = getProperties();
if ( p.get(Constants.WWW_DOWNLOADS_DISABLE).equals(Properties.YES) )
throw new BadRequestException( locale.getString("www.error.downloadsDisabled"), 403 );
final Database db = getDatabase();
final String[] args = req.getPlayParams( false );
final List<Track> tracks = Track.getTracksFromPlayArgs( db, args );
final String fileName = getFileName( tracks );
res.addHeader( "Content-length", Long.toString(getContentLength(tracks)) );
res.addHeader( "Content-type", "application/zip" );
res.addHeader( "Content-Disposition", "inline; filename=\"" + fileName + "\"" );
res.sendHeaders();
ZipOutputStream zip = null;
try {
zip = new ZipOutputStream( res.getOutputStream() );
for ( final Track track : tracks )
addTrackToZip( zip, track );
}