Esempio n. 1
0
  @Override
  public HashMap<ColumnField, Object> lookupSomeFields(
      String collection,
      String name,
      ColumnField nameField,
      ColumnField valuesMapField,
      ArrayList<ColumnField> valuesMapKeys)
      throws RecordNotFoundException, FailedDBOperationException {

    JSONObject record = lookupEntireRecord(collection, name);
    //    DatabaseConfig.getLogger().log(Level.FINE, "Full record " + record.toString());
    HashMap<ColumnField, Object> hashMap = new HashMap<>();
    hashMap.put(nameField, name);
    if (valuesMapField != null && valuesMapKeys != null) {
      try {
        JSONObject readValuesMap = record.getJSONObject(valuesMapField.getName());
        //        DatabaseConfig.getLogger().log(Level.FINE, "Read valuesMap " +
        // readValuesMap.toString());
        ValuesMap valuesMapOut = new ValuesMap();
        for (int i = 0; i < valuesMapKeys.size(); i++) {
          String userKey = valuesMapKeys.get(i).getName();
          if (JSONDotNotation.containsFieldDotNotation(userKey, readValuesMap) == false) {
            //            DatabaseConfig.getLogger().fine("valuesMap doesn't contain " + userKey);
            continue;
          }
          try {
            switch (valuesMapKeys.get(i).type()) {
              case USER_JSON:
                Object value = JSONDotNotation.getWithDotNotation(userKey, readValuesMap);
                DatabaseConfig.getLogger()
                    .log(Level.FINE, "Object is {0}", new Object[] {value.toString()});
                valuesMapOut.put(userKey, value);
                break;
              case LIST_STRING:
                valuesMapOut.putAsArray(
                    userKey,
                    JSONUtils.JSONArrayToResultValue(
                        new JSONArray(
                            JSONDotNotation.getWithDotNotation(userKey, readValuesMap)
                                .toString())));
                break;
              default:
                DatabaseConfig.getLogger()
                    .log(
                        Level.SEVERE,
                        "ERROR: Error: User keys field {0} is not a known type:{1}",
                        new Object[] {userKey, valuesMapKeys.get(i).type()});
                break;
            }
          } catch (JSONException e) {
            DatabaseConfig.getLogger().log(Level.SEVERE, "Error parsing json: {0}", e.getMessage());
          }
        }
        hashMap.put(valuesMapField, valuesMapOut);
      } catch (JSONException e) {
        DatabaseConfig.getLogger()
            .log(Level.SEVERE, "Problem getting values map: {0}", e.getMessage());
      }
    }
    return hashMap;
  }