Advertisement
teleias

Logger

May 6th, 2016
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.41 KB | None | 0 0
  1. import java.io.File;
  2. import java.io.IOException;
  3. import java.util.Date;
  4. import java.util.HashMap;
  5. import java.util.regex.Matcher;
  6. import java.util.regex.Pattern;
  7.  
  8. import javax.swing.JFileChooser;
  9.  
  10. import org.apache.pdfbox.contentstream.*;
  11. import org.apache.pdfbox.pdfparser.PDFParser;
  12. import org.apache.pdfbox.pdmodel.PDDocument;
  13. import org.apache.pdfbox.text.PDFTextStripper;
  14.  
  15. public class Logger {
  16.     public static void main(String[] args) throws IOException
  17.     {
  18.         new Logger();
  19.     }
  20.     public Logger() throws IOException
  21.     {
  22.         //org.apache.pdfbox.contentstream.PDFStreamEngine p;
  23.         //PDFStreamEngine pdcs = new PDFStreamEngine();
  24.         //new PDFParser();
  25.         //Create a file chooser
  26.         final JFileChooser fc = new JFileChooser();
  27.         //In response to a button click:
  28.         File pdfFile;
  29.         if(fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
  30.             pdfFile = fc.getSelectedFile();
  31.         else
  32.             return;
  33.        
  34.         PDFTextStripper ts = new PDFTextStripper();
  35.         PDDocument d = PDDocument.load(pdfFile);
  36.         System.out.println("There are "+d.getNumberOfPages()+" pages.");
  37.         Pattern pdate, ptime, pmessage, pname;
  38.         Matcher m;
  39.         pdate   = Pattern.compile(
  40.                 "(?<month>(January)|(February)|(March)|(April)|(May)|(June)|(July)|(August)|(September)|(October)|(November)|(December))"+
  41.                 ".(?<day>\\d+)(\\w+)."+
  42.                 ".(?<year>\\d+)"
  43.                 );
  44.         ptime    = Pattern.compile(
  45.                 "(?<hour>\\d+):(?<minute>\\d+) (?<ampm>am|pm)"
  46.                 );
  47.         pmessage = Pattern.compile(
  48.                 "(?<message>.+)"
  49.                 );
  50.         pname = Pattern.compile(
  51.                 "^(?<name>\\w+)$"
  52.                 );
  53.         String sDate, sTime, sName, sMessage;
  54.         sDate = sTime = sName = sMessage = "";
  55.         String[] arr = ts.getText(d).split("\n");
  56.         d.close();
  57.         boolean timePatternWasLast = false;
  58.         for(String s : arr)
  59.         //String s = "May 1st, 2016  ";
  60.         //while(true)
  61.         {
  62.             s = s.replace('\u00A0', ' ').replaceAll("\\s", " ").trim();
  63.  
  64.             /*
  65.             for(char c : s.toCharArray())
  66.                 System.out.println(c+"\t"+(int)c);
  67.             */
  68.            
  69.             if(timePatternWasLast)
  70.             {
  71.                 if((m = pname.matcher(s)).find())
  72.                 {
  73.                     sName = m.group("name");
  74.                     timePatternWasLast = false;
  75.                     continue;
  76.                 }
  77.             }
  78.            
  79.            
  80.             if((m = pdate.matcher(s)).find())
  81.             {
  82.                 sDate = m.group("month")+" "+m.group("day")+" "+m.group("year");
  83.                 timePatternWasLast = false;
  84.             }
  85.             else if((m = ptime.matcher(s)).find())
  86.             {
  87.                 sTime = m.group("hour")+":"+m.group("minute")+" "+m.group("ampm");
  88.                 timePatternWasLast = true;
  89.             }
  90.             else if((m = pmessage.matcher(s)).find())
  91.             {
  92.                 sMessage = m.group("message");
  93.                 String id;
  94.                 Message mes = new Message(id = getId(sName, sDate+"\t"+sTime, sMessage), sName, sDate+"\t"+sTime, sMessage);
  95.                 System.out.println(mes);
  96.                 map.put(id, mes);
  97.                 timePatternWasLast = false;
  98.             }
  99.         }
  100.     }
  101.     static HashMap<String, Message> map = new HashMap<String, Message>();
  102.     public class Message
  103.     {
  104.         String id;
  105.         String name;
  106.         String date;
  107.         String message;
  108.         public Message(String id_, String name_, String date_, String message_)
  109.         {
  110.             id = id_;
  111.             name = name_;
  112.             date = date_;
  113.             message = message_;
  114.         }
  115.         public String toString()
  116.         {
  117.             return
  118.                     //"id     : ["+id+"]\n"+
  119.                     "name   : ["+name+"]\n"+
  120.                     "date   : ["+date+"]\n"+
  121.                     "message: ["+message+"]\n";
  122.         }
  123.     }
  124.     public static String getId(String n, String d, String m)
  125.     {
  126.         //Unique ID (not guaranteed)
  127.         // NAME : DATE \t TIME : MessageFirstChar MessageLastChar
  128.         return n+":"+d+":"+m;
  129.     }
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement