public Object apply()

in metron-platform/metron-management/src/main/java/org/apache/metron/management/FileSystemFunctions.java [218:279]


    public Object apply(List<Object> args, Context context) throws ParseException {
      Path path = null;
      String[] headers = new String[] {"PERMISSION", "OWNER", "GROUP", "SIZE", "LAST MOD TIME", "NAME"};
      if(args.size() == 0) {
        path = fs.getHomeDirectory();
      }
      else {
        String pathStr = (String) args.get(0);
        if (pathStr == null) {
          return FlipTable.of(headers, new String[][]{});
        }
        else {
          try {
            path = new Path(pathStr);
          }
          catch(IllegalArgumentException iae) {
            LOG.error("Unable to convert {} to a path {}", pathStr, iae.getMessage(), iae);
            return FlipTable.of(headers, new String[][]{});
          }
        }
      }
      try {
        List<String[]> dataList = new ArrayList<>();
        for(FileStatus status : fs.listStatus(path)) {
          dataList.add(new String[] {
            status.getPermission().toString()
           ,status.getOwner()
           ,status.getGroup()
           ,status.getLen() + ""
           ,dateFormat.get().format(new Date(status.getModificationTime()))
           ,status.getPath().getName()
          });
        }
        Collections.sort(dataList, (o1, o2) -> {
            try {
              Date left = dateFormat.get().parse(o1[4]);
              Date right = dateFormat.get().parse(o2[4]);
              int ret = left.compareTo(right);
              //first sort by date, then by name.
              if(ret == 0) {
                return o1[5].compareTo(o2[5]);
              }
              else {
                return ret;
              }
            } catch (java.text.ParseException e) {
              String message = "Unable to parse " + Arrays.toString(o1) + " or " + Arrays.toString(o2) + " : " + e.getMessage();
              LOG.error(message, e);
              throw new IllegalStateException(message, e);
            }
        });
        String[][] data = new String[dataList.size()][headers.length];
        for(int i = 0;i < dataList.size();++i) {
          data[i] = dataList.get(i);
        }
        return FlipTable.of(headers, data);
      } catch (IOException e) {
        String message = "Unable to list" + path + " : " + e.getMessage();
        LOG.error(message, e);
        return FlipTable.of(headers, new String[][]{});
      }
    }