comparison src/luan/webserver/handlers/DirHandler.java @ 1273:ed6e8bd78c11

sort in DirHandler
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 04 Dec 2018 03:35:38 -0700
parents 312e4cadd508
children
comparison
equal deleted inserted replaced
1272:95f6540b27f9 1273:ed6e8bd78c11
5 import java.io.Writer; 5 import java.io.Writer;
6 import java.io.OutputStreamWriter; 6 import java.io.OutputStreamWriter;
7 import java.io.IOException; 7 import java.io.IOException;
8 import java.text.DateFormat; 8 import java.text.DateFormat;
9 import java.text.SimpleDateFormat; 9 import java.text.SimpleDateFormat;
10 import java.util.Arrays;
11 import java.util.Comparator;
10 import java.util.Date; 12 import java.util.Date;
11 import luan.webserver.Handler; 13 import luan.webserver.Handler;
12 import luan.webserver.Request; 14 import luan.webserver.Request;
13 import luan.webserver.Response; 15 import luan.webserver.Response;
14 import luan.webserver.ResponseOutputStream; 16 import luan.webserver.ResponseOutputStream;
19 21
20 public DirHandler(FileHandler fileHandler) { 22 public DirHandler(FileHandler fileHandler) {
21 this.fileHandler = fileHandler; 23 this.fileHandler = fileHandler;
22 } 24 }
23 25
26 private static final Comparator<File> sorter = new Comparator<File>() {
27 public int compare(File f1, File f2) {
28 return f1.getName().compareTo(f2.getName());
29 }
30 };
31
24 public Response handle(Request request) { 32 public Response handle(Request request) {
25 try { 33 try {
26 File file = fileHandler.file(request); 34 File file = fileHandler.file(request);
27 if( request.path.endsWith("/") && file.isDirectory() ) { 35 if( request.path.endsWith("/") && file.isDirectory() ) {
28 DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz"); 36 DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss zzz");
32 writer.write( "<!doctype html><html>" ); 40 writer.write( "<!doctype html><html>" );
33 writer.write( "<head><style>td{padding: 2px 8px}</style></head>" ); 41 writer.write( "<head><style>td{padding: 2px 8px}</style></head>" );
34 writer.write( "<body>" ); 42 writer.write( "<body>" );
35 writer.write( "<h1>Directory: "+request.path+"</h1>" ); 43 writer.write( "<h1>Directory: "+request.path+"</h1>" );
36 writer.write( "<table border=0>" ); 44 writer.write( "<table border=0>" );
37 for( File child : file.listFiles() ) { 45 File[] a = file.listFiles();
46 Arrays.sort(a,sorter);
47 for( File child : a ) {
38 String name = child.getName(); 48 String name = child.getName();
39 if( child.isDirectory() ) 49 if( child.isDirectory() )
40 name += '/'; 50 name += '/';
41 writer.write( "<tr>" ); 51 writer.write( "<tr>" );
42 writer.write( "<td><a href='"+name+"'>"+name+"</a></td>" ); 52 writer.write( "<td><a href='"+name+"'>"+name+"</a></td>" );