Exemplo n.º 1
0
  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();
  }
Exemplo n.º 2
0
  /**
   * @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));
        }
      }
    }
  }