package server.handler; import java.io.File; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.handler.AbstractHandler; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import database.Query; public class HtmlHandler extends AbstractHandler { //TODO: cookies private static Logger log = LogManager.getLogger( HtmlHandler.class.getName() ); String htmlPath; static int antallAksepterteHTMLKall = 0; public HtmlHandler( String path ) { this.htmlPath = path; } //metode for å klargjøre html til client private String editHTML() throws IOException { Query q = new Query(); Integer[] files_id = q.getAllFileIds(); Document doc = Jsoup.parse( new File( htmlPath ), "utf-8" ); Element images = doc.getElementsByClass( "images" ).first(); for (int i:files_id) { images.appendElement( "li" ).attr( "class", "image" ).attr( "id", Integer.toString(i) ) .appendElement( "img" ).attr( "src", ("img/?img_id=" + i)).attr( "alt", "Request did not succeed" ); } return doc.toString(); } /* File dir = new File("img/"); //String[] list_of_files = dir.list(); List<File> list_of_files = new LinkedList<File>(); // Should use recursive? for(File file:dir.listFiles()) { if(file.isFile()) { list_of_files.add(file); } else if(file.isDirectory()) { for (File subfile:file.listFiles()) { if(subfile.isFile()) list_of_files.add(subfile); } } } // Leser foerste filen i rekka og printer ut metadata try { MetadataExample.read( list_of_files.get(0) ); } catch (ImageReadException e) { // TODO Auto-generated catch block e.printStackTrace(System.out); }*/ @Override public void handle(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException { String uri = baseRequest.getUri().toString(); // Hvis ikke foerste request, send til neste handler. String contentType = request.getContentType(); if ( !uri.equals( "/" ) || contentType != null && !contentType.contains( "text/html" )) { log.debug( "Uri ikke acceptert: " + uri ); return; } log.debug( baseRequest.getUri() ); antallAksepterteHTMLKall++; log.debug("antallAksepterteHTMLKall: " + antallAksepterteHTMLKall); response.setContentType("text/html;charset=utf-8"); response.setStatus(HttpServletResponse.SC_OK); baseRequest.setHandled(true); response.getWriter().println( editHTML() ); log.debug("Forlater " + this.getClass() + " :" + baseRequest.getRequestURI()); } }