Advertisement
DamSi

Untitled

Aug 18th, 2015
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.54 KB | None | 0 0
  1.  
  2. class Logon implements Comparable<Logon> {
  3.     private String name;
  4.     Date logIn;
  5.     Date logOut;
  6.     long min;
  7.  
  8.     public Logon(String name, Date logIn, Date logOut) throws InvalidCheckInTimes {
  9.         this.name = name;
  10.         this.logIn = logIn;
  11.         this.logOut = logOut;
  12.         min = (logOut.getTime() - logIn.getTime()) / (1000 * 60);
  13.  
  14.     }
  15.  
  16.     public String toString() {
  17.         SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm");
  18.         StringBuilder sb=new StringBuilder();
  19.         sb.append(String.format("%-15s", name));
  20.         sb.append(dateFormat.format(logIn));
  21.         sb.append(" - ");
  22.         dateFormat = new SimpleDateFormat("HH:mm");
  23.         sb.append(dateFormat.format(logOut));
  24.         sb.append(String.format(" (%d)", min));
  25.         return sb.toString();
  26.  
  27.     }
  28.  
  29.     @Override
  30.     public int compareTo(Logon o) {
  31.         DateFormat dateFormat = new SimpleDateFormat("HH:mm");
  32.         String logIn1 = dateFormat.format(logIn);
  33.         String logIn2 = dateFormat.format(o.logIn);
  34.  
  35.         String[] parts = logIn1.split(":");
  36.         int hour1 = Integer.parseInt(parts[0]);
  37.         int minutes1 = Integer.parseInt(parts[1]);
  38.  
  39.         String[] parts2 = logIn2.split(":");
  40.         int hour2 = Integer.parseInt(parts2[0]);
  41.         int minutes2 = Integer.parseInt(parts2[1]);
  42.  
  43.         if (hour1 == hour2) {
  44.             return Integer.compare(minutes1, minutes2);
  45.         } else {
  46.             return Integer.compare(hour1, hour2);
  47.         }
  48.  
  49.     }
  50.  
  51. }
  52.  
  53. @SuppressWarnings("serial")
  54. class InvalidCheckInTimes extends Exception {
  55.     public InvalidCheckInTimes(String msg) {
  56.         super(msg);
  57.     }
  58. }
  59.  
  60. class CheckIn {
  61.     ArrayList<Logon> entries;
  62.  
  63.     public CheckIn() {
  64.         entries = new ArrayList<Logon>();
  65.     }
  66.  
  67.     @SuppressWarnings({ "deprecation", "resource" })
  68.     public void loadTimes(InputStream inputStream) throws InvalidCheckInTimes, ParseException {
  69.         Scanner input = new Scanner(inputStream);
  70.         String line;
  71.         while (input.hasNextLine()) {
  72.             line = input.nextLine();
  73.             if (line.trim().length() == 0)
  74.                 break;
  75.             String[] parts = line.split(" ");
  76.             String name = parts[0];
  77.             Date login = new Date();
  78.             if (parts[1].split("-")[0].contains(".")&&parts[1].split("-")[1].contains(":"))
  79.                 login = new SimpleDateFormat("dd.MM.yy-HH:mm").parse(parts[1]);
  80.             if (parts[1].split("-")[0].contains(".") && parts[1].split("-")[1].contains("."))
  81.                 login = new SimpleDateFormat("dd.MM.yy-HH.mm").parse(parts[1]);
  82.             if (parts[1].split("-")[0].contains("/") && parts[1].split("-")[1].contains(":"))
  83.                 login = new SimpleDateFormat("dd/MM/yy-HH:mm").parse(parts[1]);
  84.             if (parts[1].split("-")[0].contains("/") && parts[1].split("-")[1].contains("."))
  85.                 login = new SimpleDateFormat("dd/MM/yy-HH.mm").parse(parts[1]);
  86.             Date logout = new Date();
  87.             if (parts[2].split("-")[0].contains(".") && parts[2].split("-")[1].contains(":"))
  88.                 logout = new SimpleDateFormat("dd.MM.yy-HH:mm").parse(parts[2]);
  89.             if (parts[2].split("-")[0].contains(".") && parts[2].split("-")[1].contains("."))
  90.                 logout = new SimpleDateFormat("dd.MM.yy-HH.mm").parse(parts[2]);
  91.             if (parts[2].split("-")[0].contains("/") && parts[2].split("-")[1].contains(":"))
  92.                 logout = new SimpleDateFormat("dd/MM/yy-HH:mm").parse(parts[2]);
  93.             if (parts[2].split("-")[0].contains("/") && parts[2].split("-")[1].contains("."))
  94.                 logout = new SimpleDateFormat("dd/MM/yy-HH.mm").parse(parts[2]);
  95.             Logon e = new Logon(name, login, logout);
  96.             if (e.min < 0 || e.logIn.getDate() != e.logOut.getDate())
  97.                 throw new InvalidCheckInTimes(line);
  98.             entries.add(e);
  99.  
  100.         }
  101.     }
  102.  
  103.     public void printTimes(OutputStream outputStream) {
  104.         Collections.sort(entries);
  105.         for (Logon logon : entries) {
  106.             System.out.println(logon);
  107.         }
  108.     }
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement