@Override
    public Object getValueAt(int row, int column) {
      Object[] values = data.get(row);

      if (column == 0) {
        return values[column].toString();
      }

      if (column >= values.length) {
        return "";
      }
      int attributeType = reader.getAttributeColumn(column - 1).getValueType();

      if (Ontology.ATTRIBUTE_VALUE_TYPE.isA(attributeType, Ontology.DATE_TIME)
          || Ontology.ATTRIBUTE_VALUE_TYPE.isA(attributeType, Ontology.DATE_TIME)
          || Ontology.ATTRIBUTE_VALUE_TYPE.isA(attributeType, Ontology.TIME)) {
        try {
          return Tools.formatDateTime((Date) values[column]);
        } catch (ClassCastException e) {
          // do nothing, just return default value
        }
      }
      // default value
      return values[column].toString();
    }