Esempio n. 1
0
  private void get(String[] args) throws Exception {
    String[] ONE_REQUIRED = {OPT_RESOURCEID, OPT_GROUPID, OPT_ALL};

    final DateFormat df = SimpleDateFormat.getInstance();
    OptionParser p = getOptionParser();

    p.accepts(OPT_RESOURCEID, "The id of the resource to query for maintenance")
        .withRequiredArg()
        .ofType(Integer.class);

    p.accepts(OPT_GROUPID, "The id of the group to query for maintenance")
        .withRequiredArg()
        .ofType(Integer.class);

    p.accepts(OPT_ALL, "Get all maintenance schedules");

    OptionSet options = getOptions(p, args);

    int criteria = 0;
    for (String opt : ONE_REQUIRED) {
      if (options.has(opt)) {
        criteria++;
      }
    }

    if (criteria == 0) {
      System.err.println("One of " + Arrays.toString(ONE_REQUIRED) + " is required.");
      System.exit(-1);
    } else if (criteria > 1) {
      System.err.println("Only one of " + Arrays.toString(ONE_REQUIRED) + " may be specified");
      System.exit(-1);
    }

    HQApi api = getApi(options);
    MaintenanceApi maintenanceApi = api.getMaintenanceApi();

    if (options.has(OPT_ALL)) {
      MaintenancesResponse schedules = maintenanceApi.getAll(null);
      checkSuccess(schedules);
      XmlUtil.serialize(schedules, System.out, Boolean.TRUE);
    } else {
      MaintenanceResponse response = null;
      Integer id = null;

      if (options.has(OPT_GROUPID)) {
        id = (Integer) getRequired(options, OPT_GROUPID);
        response = maintenanceApi.get(id);
      } else if (options.has(OPT_RESOURCEID)) {
        id = (Integer) getRequired(options, OPT_RESOURCEID);
        ResourceResponse resourceResponse = api.getResourceApi().getResource(id, false, false);
        checkSuccess(resourceResponse);
        response = maintenanceApi.get(resourceResponse.getResource());
      }
      checkSuccess(response);
      MaintenanceEvent event = response.getMaintenanceEvent();

      if (event != null
          && event.getState() != null
          && event.getStartTime() != 0
          && event.getEndTime() != 0) {

        if (event.getGroupId() > 0) {
          System.out.println("Maintenance schedule for group " + event.getGroupId());
        } else {
          System.out.println("Maintenance schedule for resource " + event.getResourceId());
        }
        System.out.println("State: " + event.getState().value());
        System.out.println("Start Time: " + df.format(event.getStartTime()));
        System.out.println("End Time: " + df.format(event.getEndTime()));
      } else {
        if (options.has(OPT_GROUPID)) {
          System.out.println("No maintenance events found for group " + id);
        } else if (options.has(OPT_RESOURCEID)) {
          System.out.println("No maintenance events found for resource " + id);
        }
      }
    }
  }