public HashMap<String, Object> getData() {
    HashMap<String, Object> values = new HashMap<String, Object>();
    Set<String> keys = formitemMap.keySet();
    for (String key : keys) {
      FieldDefinitionItem item = formitemMap.get(key);
      FieldDefinition fieldDef = item.getFieldDef();
      Object value = item.getFormItem().getValue();
      if (fieldDef.getFieldType() == FieldDefinition.FT_COMBO
          || fieldDef.getFieldType() == FieldDefinition.FT_SELECTION
          || fieldDef.getFieldType() == FieldDefinition.FT_CHK_GRID
          || fieldDef.getFieldType() == FieldDefinition.FT_MAP_ITEM
          || fieldDef.getFieldType() == FieldDefinition.FT_IMAGE_ITEM
          || fieldDef.getFieldType() == FieldDefinition.FT_CUSTOM) {
        if (value != null) {
          if (!fieldDef.isDisplayValueIgnored())
            value = new String[] {value.toString(), item.getFormItem().getDisplayValue()};
        }
      }

      if (fieldDef.getFieldType() == FieldDefinition.FT_DATE) {
        if (value != null) {
          Date dt = (Date) value;
          value = new String[] {dt.getTime() + "", dt.toString()};
        }
      }
      if (fieldDef.getFieldType() == FieldDefinition.FT_BOOLEAN) {
        if (value != null) {
          Boolean dt = false;
          try {
            if (value instanceof Boolean) dt = (Boolean) value;
            else dt = (Boolean) (Integer.parseInt(value.toString()) == 1);
          } catch (Exception e) {
            // TODO: handle exception
          }
          value = new String[] {(dt.booleanValue() ? 1 : 0) + "", dt.toString()};
        }
      }
      values.put(key, value);
    }
    return values;
  }