public String getRepeatDaysString() { StringBuilder daysStringBuilder = new StringBuilder(); if (getDays().length == Day.values().length) { daysStringBuilder.append("Every Day"); } else { Arrays.sort( getDays(), new Comparator<Day>() { @Override public int compare(Day lhs, Day rhs) { return lhs.ordinal() - rhs.ordinal(); } }); for (Day d : getDays()) { switch (d) { case TUESDAY: case THURSDAY: // daysStringBuilder.append(d.toString().substring(0, 4)); // break; default: daysStringBuilder.append(d.toString().substring(0, 3)); break; } daysStringBuilder.append(','); } daysStringBuilder.setLength(daysStringBuilder.length() - 1); } return daysStringBuilder.toString(); }
/** * @param data * @param input */ private static void usage( Map<String, Map<String, RoomUsageData>> data, String input, String setBuilding, String setRoom) { Scanner s = new Scanner(input); List<String> buildings = new ArrayList<String>(); List<String> rooms = new ArrayList<String>(); List<Day> days = new ArrayList<Day>(); int start = 0; int end = 24 * 60 - 1; while (s.hasNext()) { String command = s.next(); if (command.equals("-b")) { if (!s.hasNext()) { System.err.println("ERROR: -b requires an argument."); return; } String[] ls = s.next().split(";"); for (String l : ls) buildings.add(l); } else if (command.equals("-r")) { if (!s.hasNext()) { System.err.println("ERROR: -r requires an argument."); return; } String[] ls = s.next().split(";"); for (String l : ls) rooms.add(l); } else if (command.equals("-d")) { if (!s.hasNext()) { System.err.println("ERROR: -d requires an argument."); return; } String[] ls = s.next().split(";"); for (String l : ls) { if (convertStringToDay(l) == null) { System.err.println("ERROR: " + l + " is not a valid day."); return; } days.add(convertStringToDay(l)); } } else if (command.equals("-t")) { if (!s.hasNext()) { System.err.println("ERROR: -t requires two arguments."); return; } String ts = s.next(); if (!s.hasNext()) { System.err.println("ERROR: -t requires two arguments."); return; } String te = s.next(); start = convertCommonTimeToMintues(ts); end = convertCommonTimeToMintues(te); if (start < 0 || end < 0) { System.err.println( "ERROR: improperly formatted time. Time should be [hours]:[mins][am/pm] (e.g. 12:30pm)."); return; } } } if (buildings.isEmpty() && setBuilding.equals("")) { System.err.println("ERROR: No building set or given as an argument."); return; } else if (buildings.size() > 1 && rooms.size() > 0) { System.err.println( "ERROR: More than one building given as an argument and room/s given as argument."); return; } if (start > end) { System.err.println("ERROR: The start time is after the end time."); return; } for (String building : buildings) { if (!data.containsKey(building)) { System.err.println("ERROR: " + building + " is not a building."); return; } } if (buildings.isEmpty()) buildings.add(setBuilding); for (String room : rooms) { if (!data.get(buildings.get(0)).containsKey(room)) { System.err.println("ERROR: " + room + " is not a room in " + buildings.get(0) + "."); return; } } if (buildings.size() == 1 && !setRoom.equals("")) rooms.add(setRoom); if (days.isEmpty()) { for (Day d : Day.values()) days.add(d); } for (String building : buildings) { if (buildings.size() > 1 || rooms.size() <= 0) { rooms.clear(); rooms.addAll(data.get(building).keySet()); } for (String room : rooms) { // if there is just one day we're printing for, we want to print the room on the same line // as the usage info // otherwise we want the room on a seperate line if (days.size() > 1) System.out.println("=================================" + building + " " + room); else System.out.print(building + " " + room + ": "); for (Day d : days) { if (days.size() > 1) System.out.print(d.toString() + ": "); System.out.println(data.get(building).get(room).getUsage(d, start, end)); } } } }