Exemple #1
0
 /** @return */
 private RowType[] getTableData(TableType table, BigInteger[] cids) {
   final RowType[] tableData = new RowType[table.getRow().size()];
   for (int i = 0; i < tableData.length; i++) {
     final RowType row = table.getRow().get(i);
     tableData[i] = new RowType();
     if (row.getOid() != null) {
       tableData[i].setOid(row.getOid());
     }
     for (final BigInteger cid : cids) {
       boolean exists = false;
       for (final CellType cell : row.getCell()) {
         if (cell.getCid().equals(cid)) {
           tableData[i].getCell().add(cell);
           exists = true;
           break;
         }
       }
       if (!exists) {
         final CellType newCell = new CellType();
         newCell.setCid(cid);
         newCell.setValue(ILMLCoreConstants.QM);
         tableData[i].getCell().add(newCell);
       }
     }
   }
   return tableData;
 }
Exemple #2
0
  /**
   * Get the table with color information added
   *
   * @param gid ID of the table layout
   * @return rows with color information added
   */
  public Row[] getTableDataWithColor(String gid, boolean addColor) {
    final BigInteger[] cids = getCids(gid);
    final TableType table = getTable(gid);
    if (table == null) {
      return new Row[0];
    }
    final List<Row> tableData = new ArrayList<Row>();
    for (int i = 0; i < table.getRow().size(); i++) {
      final RowType rowType = table.getRow().get(i);
      final Row row = new Row();
      row.setOid(rowType.getOid());
      if (addColor) {
        row.setColor(lguiItem.getOIDToObject().getColorById(rowType.getOid()));
      }

      final BigInteger jobIdIndex = getColumnIndex(table, ILguiItem.JOB_ID);
      final Cell[] tableDataRow = new Cell[cids.length];
      String jobId = null;
      for (int j = 0; j < cids.length; j++) {
        for (final CellType cell : rowType.getCell()) {
          if (cell.getCid() != null && cell.getCid().equals(cids[j])) {
            tableDataRow[j] = new Cell(cell.getValue(), row);
            break;
          }
        }
        if (tableDataRow[j] == null) {
          tableDataRow[j] = new Cell(ILMLCoreConstants.QM, row);
        }
        if (cids[j].equals(jobIdIndex)) {
          jobId = tableDataRow[j].value;
        }
      }
      row.setCells(tableDataRow);
      if (jobId != null) {
        JobStatusData status = lguiItem.getUserJob(jobId);
        if (status == null) {
          final String queueName = getCellValue(table, rowType, ILguiItem.JOB_QUEUE_NAME);
          final String owner = getCellValue(table, rowType, ILguiItem.JOB_OWNER);
          final String state = getCellValue(table, rowType, ILguiItem.JOB_STATUS);
          final String[][] attrs = {
            {JobStatusData.MONITOR_ID_ATTR, lguiItem.getName()},
            {JobStatusData.QUEUE_NAME_ATTR, queueName},
            {JobStatusData.OWNER_ATTR, owner},
            {JobStatusData.STATE_ATTR, state}
          };
          status = new JobStatusData(jobId, attrs);
        } else if (status.isRemoved()) {
          /*
           * Skip rows that have been marked as "removed"
           */
          continue;
        }
        row.setJobStatusData(status);
      }
      tableData.add(row);
    }
    return tableData.toArray(new Row[tableData.size()]);
  }
Exemple #3
0
  /**
   * Forwards new information for the jobs to the jobstatus instances, which are afterwards saved
   * via Memento within the monitor.core plug-in. This function stores all additional information
   * provided by lml_da in each jobStatusData instance.
   */
  public void forwardRowToJobData() {
    final JobStatusData[] userJobs = lguiItem.getUserJobs();
    final Set<String> userNames = new HashSet<String>();
    for (final JobStatusData jobStatus : userJobs) {
      userNames.add(jobStatus.getString(JobStatusData.OWNER_ATTR));
    }

    // Traverse all tables
    for (final TableType table : getTables()) {
      // Get extended rows with attached jobStatusData
      final Row[] rows =
          getTableDataWithColor(
              table.getId(), false); // Contains extended rows with additional data
      for (int i = 0; i < rows.length; i++) {
        if (rows[i].status == null) { // If there is no jobstatusdata, do not add additional data
          continue;
        }
        if (!userNames.contains(rows[i].status.getString(JobStatusData.OWNER_ATTR))) {
          continue;
        }

        final RowType rawRow = table.getRow().get(i); // The actual row from LML data
        // Iterate over all columns and save their key value pairs
        // into the jobstatus instances
        for (final ColumnType column : table.getColumn()) {
          final String columnName = column.getName();
          final String value = getCellValue(table, rawRow, columnName);
          if (value != null) {
            rows[i].status.putString(columnName, value);
          }
        }
      }
    }
  }
Exemple #4
0
 /**
  * Sorting of the data which should be displayed in a table.
  *
  * @param gid ID of the table
  * @param sortDirectionComparator Should always be the int value of ascending sorting.
  * @param sortIndex
  * @param sortDirection
  */
 public void sort(String gid, int sortDirectionComparator, int sortIndex, int sortDirection) {
   final TableType table = getTable(gid);
   if (table != null && sortIndex != -1) {
     final BigInteger[] cids = getCids(gid);
     if (cids.length > sortIndex) {
       final RowType[] jobTableData = getTableData(table, cids);
       Arrays.sort(
           jobTableData,
           new TableSorter(
               getColumnSortProperty(table, cids, sortIndex),
               sortDirectionComparator,
               sortIndex,
               sortDirection));
       table.getRow().clear();
       for (final RowType element : jobTableData) {
         table.getRow().add(element);
       }
     }
   }
 }