@Override
  public Schema getSchema() {
    Schema schema = new Schema(ProgramRuleAction.class, SINGULAR, PLURAL);
    schema.setRelativeApiEndpoint(API_ENDPOINT);
    schema.setOrder(1392);

    schema
        .getAuthorities()
        .add(new Authority(AuthorityType.CREATE, Lists.newArrayList("F_PROGRAMRULEACTION_ADD")));
    schema
        .getAuthorities()
        .add(new Authority(AuthorityType.DELETE, Lists.newArrayList("F_PROGRAMRULEACTION_DELETE")));

    return schema;
  }
  @Override
  public String execute() throws Exception {
    List<String> values = Lists.newArrayList();

    for (Schema schema : schemaService.getMetadataSchemas()) {
      values.add(schema.getPlural());
    }

    Collections.sort(values);

    for (String key : values) {
      String[] camelCaseWords = StringUtils.capitalize(key).split("(?=[A-Z])");
      exportClasses.put(key, StringUtils.join(camelCaseWords, " "));
    }

    return SUCCESS;
  }
  @Override
  public Schema getSchema() {
    Schema schema = new Schema(CategoryOptionGroupSet.class, SINGULAR, PLURAL);
    schema.setRelativeApiEndpoint(API_ENDPOINT);
    schema.setShareable(true);
    schema.setOrder(1160);

    schema
        .getAuthorities()
        .add(
            new Authority(
                AuthorityType.CREATE_PUBLIC,
                Lists.newArrayList("F_CATEGORY_OPTION_GROUP_SET_PUBLIC_ADD")));
    schema
        .getAuthorities()
        .add(
            new Authority(
                AuthorityType.CREATE_PRIVATE,
                Lists.newArrayList("F_CATEGORY_OPTION_GROUP_SET_PRIVATE_ADD")));
    schema
        .getAuthorities()
        .add(
            new Authority(
                AuthorityType.DELETE, Lists.newArrayList("F_CATEGORY_OPTION_GROUP_SET_DELETE")));

    return schema;
  }
  @Override
  public Schema getSchema() {
    Schema schema = new Schema(EventReport.class, SINGULAR, PLURAL);
    schema.setApiEndpoint(API_ENDPOINT);
    schema.setShareable(true);
    schema.setOrder(1540);

    schema
        .getAuthorities()
        .add(
            new Authority(
                AuthorityType.CREATE_PUBLIC, Lists.newArrayList("F_EVENTREPORT_PUBLIC_ADD")));
    schema
        .getAuthorities()
        .add(
            new Authority(AuthorityType.EXTERNALIZE, Lists.newArrayList("F_EVENTREPORT_EXTERNAL")));

    return schema;
  }
  @Override
  public Schema getSchema() {
    Schema schema = new Schema(DataElementGroup.class, SINGULAR, PLURAL);
    schema.setRelativeApiEndpoint(API_ENDPOINT);
    schema.setShareable(true);
    schema.setOrder(1210);

    schema
        .getAuthorities()
        .add(
            new Authority(
                AuthorityType.CREATE_PUBLIC, Lists.newArrayList("F_DATAELEMENTGROUP_PUBLIC_ADD")));
    schema
        .getAuthorities()
        .add(
            new Authority(
                AuthorityType.CREATE_PRIVATE,
                Lists.newArrayList("F_DATAELEMENTGROUP_PRIVATE_ADD")));
    schema
        .getAuthorities()
        .add(new Authority(AuthorityType.DELETE, Lists.newArrayList("F_DATAELEMENTGROUP_DELETE")));

    return schema;
  }