Posto la classe HTTPLogHandler:
Aggiungo per completezza che Il metodo setFilePath è ereditato dalla classe FileHandler:codice:public class HTTPLogHandler extends FileLoader{ @Override public void parse() { for (Iterator<String> i = loadFile().iterator(); i.hasNext();) { String next = i.next(); String[] splitted = next.split(" ", -1); String ip = splitted[0]; String usr = splitted[2]; Calendar date = calendarize(splitted[3]); String method = removeQuotes(splitted[5]); int sepInd = splitted[6].indexOf("/"); String request = splitted[6].substring(sepInd); String protocol = removeQuotes(splitted[7]); String[] protocolSplit = protocol.split("/"); String protocolName = protocolSplit[0]; String protocolVers = protocolSplit[1]; int responseTime = Integer.parseInt(splitted[8]); int size = Integer.parseInt(splitted[9]); String referer = removeQuotes(splitted[11]); String userAgent = next.substring(next.indexOf("("), next.indexOf(")")+1); HTTPFormat format = new HTTPFormat(ip, usr, date, method, request, protocol, size, size, referer, userAgent); parsed.add(format); } } /** * Conversione da stringa a formato Calendar. * @param s * @return */ public Calendar calendarize(String s){ s = s.replace("[", ""); s = s.replace("]", ""); String[] splitted = s.split(" ", -1); String dateHour = splitted[0]; int sepIndex = dateHour.indexOf(":"); String dateString = dateHour.substring(0, sepIndex); //L'indice del separatore è letto correttamente String hourString = dateHour.substring(sepIndex+1); String date[] = dateString.split("/"); int giorno = Integer.parseInt(date[0]); int mese = monthFormat(date[1]); int anno = Integer.parseInt(date[2]); String hour[] = hourString.split(":"); int hh = Integer.parseInt(hour[0]); int mm = Integer.parseInt(hour[1]); int ss = Integer.parseInt(hour[2]); Calendar c = new GregorianCalendar(anno, mese, giorno, hh, mm, ss); return c; } /** * Conversione String a formato Integer per i mesi. * @param m * @return */ public int monthFormat(String m){ int month = 0; if(m.equals("Gen")){ month = 1; } else if(m.equals("Feb")){ month = 2; } else if(m.equals("Mar")){ month = 3; } else if(m.equals("Apr")){ month = 4; } else if(m.equals("May")){ month = 5; } else if(m.equals("Jun")){ month = 6; } else if(m.equals("Jul")){ month = 7; } else if(m.equals("Aug")){ month = 8; } else if(m.equals("Sep")){ month = 9; } else if(m.equals("Oct")){ month = 10; } else if(m.equals("Nov")){ month = 11; } else if(m.equals("Dec")){ month = 12; } return month; } /** * Rimozione virgolette. * @param s * @return */ public String removeQuotes(String s){ char virg = 34; String virgolette = String.valueOf(virg); s = s.replace(virgolette, ""); return s; } }
Per chiarimenti ovviamente, sono qua!codice:public abstract class FileHandler { List<HTTPFormat> parsed = new LinkedList(); String filePath; public List<HTTPFormat> getParsed() { return parsed; } public void setFilePath(String filePath) { this.filePath = filePath; } }![]()

Rispondi quotando
