Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Logon implements Comparable<Logon> {
- private String name;
- Date logIn;
- Date logOut;
- long min;
- public Logon(String name, Date logIn, Date logOut) throws InvalidCheckInTimes {
- this.name = name;
- this.logIn = logIn;
- this.logOut = logOut;
- min = (logOut.getTime() - logIn.getTime()) / (1000 * 60);
- }
- public String toString() {
- SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm");
- StringBuilder sb=new StringBuilder();
- sb.append(String.format("%-15s", name));
- sb.append(dateFormat.format(logIn));
- sb.append(" - ");
- dateFormat = new SimpleDateFormat("HH:mm");
- sb.append(dateFormat.format(logOut));
- sb.append(String.format(" (%d)", min));
- return sb.toString();
- }
- @Override
- public int compareTo(Logon o) {
- DateFormat dateFormat = new SimpleDateFormat("HH:mm");
- String logIn1 = dateFormat.format(logIn);
- String logIn2 = dateFormat.format(o.logIn);
- String[] parts = logIn1.split(":");
- int hour1 = Integer.parseInt(parts[0]);
- int minutes1 = Integer.parseInt(parts[1]);
- String[] parts2 = logIn2.split(":");
- int hour2 = Integer.parseInt(parts2[0]);
- int minutes2 = Integer.parseInt(parts2[1]);
- if (hour1 == hour2) {
- return Integer.compare(minutes1, minutes2);
- } else {
- return Integer.compare(hour1, hour2);
- }
- }
- }
- @SuppressWarnings("serial")
- class InvalidCheckInTimes extends Exception {
- public InvalidCheckInTimes(String msg) {
- super(msg);
- }
- }
- class CheckIn {
- ArrayList<Logon> entries;
- public CheckIn() {
- entries = new ArrayList<Logon>();
- }
- @SuppressWarnings({ "deprecation", "resource" })
- public void loadTimes(InputStream inputStream) throws InvalidCheckInTimes, ParseException {
- Scanner input = new Scanner(inputStream);
- String line;
- while (input.hasNextLine()) {
- line = input.nextLine();
- if (line.trim().length() == 0)
- break;
- String[] parts = line.split(" ");
- String name = parts[0];
- Date login = new Date();
- if (parts[1].split("-")[0].contains(".")&&parts[1].split("-")[1].contains(":"))
- login = new SimpleDateFormat("dd.MM.yy-HH:mm").parse(parts[1]);
- if (parts[1].split("-")[0].contains(".") && parts[1].split("-")[1].contains("."))
- login = new SimpleDateFormat("dd.MM.yy-HH.mm").parse(parts[1]);
- if (parts[1].split("-")[0].contains("/") && parts[1].split("-")[1].contains(":"))
- login = new SimpleDateFormat("dd/MM/yy-HH:mm").parse(parts[1]);
- if (parts[1].split("-")[0].contains("/") && parts[1].split("-")[1].contains("."))
- login = new SimpleDateFormat("dd/MM/yy-HH.mm").parse(parts[1]);
- Date logout = new Date();
- if (parts[2].split("-")[0].contains(".") && parts[2].split("-")[1].contains(":"))
- logout = new SimpleDateFormat("dd.MM.yy-HH:mm").parse(parts[2]);
- if (parts[2].split("-")[0].contains(".") && parts[2].split("-")[1].contains("."))
- logout = new SimpleDateFormat("dd.MM.yy-HH.mm").parse(parts[2]);
- if (parts[2].split("-")[0].contains("/") && parts[2].split("-")[1].contains(":"))
- logout = new SimpleDateFormat("dd/MM/yy-HH:mm").parse(parts[2]);
- if (parts[2].split("-")[0].contains("/") && parts[2].split("-")[1].contains("."))
- logout = new SimpleDateFormat("dd/MM/yy-HH.mm").parse(parts[2]);
- Logon e = new Logon(name, login, logout);
- if (e.min < 0 || e.logIn.getDate() != e.logOut.getDate())
- throw new InvalidCheckInTimes(line);
- entries.add(e);
- }
- }
- public void printTimes(OutputStream outputStream) {
- Collections.sort(entries);
- for (Logon logon : entries) {
- System.out.println(logon);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement