mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 13:10:44 +00:00
Fixing tests and mappings
This commit is contained in:
@ -6,6 +6,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.AbstractQFieldMapping;
|
||||
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.QFieldMetaData;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.QTableMetaData;
|
||||
import com.kingsrook.qqq.backend.core.utils.JsonUtils;
|
||||
import com.kingsrook.qqq.backend.core.utils.StringUtils;
|
||||
@ -40,7 +41,7 @@ public class JsonToQRecordAdapter
|
||||
if(JsonUtils.looksLikeObject(json))
|
||||
{
|
||||
JSONObject jsonObject = JsonUtils.toJSONObject(json);
|
||||
rs.add(buildRecordFromJsonObject(jsonObject));
|
||||
rs.add(buildRecordFromJsonObject(jsonObject, table, mapping));
|
||||
}
|
||||
else if(JsonUtils.looksLikeArray(json))
|
||||
{
|
||||
@ -49,7 +50,7 @@ public class JsonToQRecordAdapter
|
||||
{
|
||||
if(object instanceof JSONObject jsonObject)
|
||||
{
|
||||
rs.add(buildRecordFromJsonObject(jsonObject));
|
||||
rs.add(buildRecordFromJsonObject(jsonObject, table, mapping));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -75,15 +76,20 @@ public class JsonToQRecordAdapter
|
||||
/*******************************************************************************
|
||||
** private method to build one QRecord from one jsonObject
|
||||
**
|
||||
** todo - meta-data validation, mapping, type handling
|
||||
** todo - meta-data validation, type handling
|
||||
*******************************************************************************/
|
||||
private QRecord buildRecordFromJsonObject(JSONObject jsonObject)
|
||||
private QRecord buildRecordFromJsonObject(JSONObject jsonObject, QTableMetaData table, AbstractQFieldMapping<?> mapping)
|
||||
{
|
||||
QRecord record = new QRecord();
|
||||
|
||||
for(String key : jsonObject.keySet())
|
||||
for(QFieldMetaData field : table.getFields().values())
|
||||
{
|
||||
record.setValue(key, (Serializable) jsonObject.get(key));
|
||||
String fieldSource = mapping == null ? field.getName() : String.valueOf(mapping.getFieldSource(field.getName()));
|
||||
// todo - so if the mapping didn't say how to map this field, does that mean we should use the default name for the field?
|
||||
if(jsonObject.has(fieldSource))
|
||||
{
|
||||
record.setValue(field.getName(), (Serializable) jsonObject.get(fieldSource));
|
||||
}
|
||||
}
|
||||
|
||||
return (record);
|
||||
|
@ -18,7 +18,7 @@ public class QKeyBasedFieldMapping extends AbstractQFieldMapping<String>
|
||||
|
||||
/*******************************************************************************
|
||||
** Get the source field (e.g., name that's in the CSV header or the input json
|
||||
** object) corresponding to a propery qqq table fieldName.
|
||||
** object) corresponding to a proper qqq table fieldName.
|
||||
**
|
||||
*******************************************************************************/
|
||||
@Override
|
||||
|
@ -104,14 +104,14 @@ class JsonToQRecordAdapterTest
|
||||
JsonToQRecordAdapter jsonToQRecordAdapter = new JsonToQRecordAdapter();
|
||||
List<QRecord> qRecords = jsonToQRecordAdapter.buildRecordsFromJson("""
|
||||
{
|
||||
"field1":"value1",
|
||||
"field2":"value2"
|
||||
"firstName":"Joe",
|
||||
"lastName":"Dimagio"
|
||||
}
|
||||
""", TestUtils.defineTablePerson(), null);
|
||||
assertNotNull(qRecords);
|
||||
assertEquals(1, qRecords.size());
|
||||
assertEquals("value1", qRecords.get(0).getValue("field1"));
|
||||
assertEquals("value2", qRecords.get(0).getValue("field2"));
|
||||
assertEquals("Joe", qRecords.get(0).getValue("firstName"));
|
||||
assertEquals("Dimagio", qRecords.get(0).getValue("lastName"));
|
||||
}
|
||||
|
||||
|
||||
@ -125,16 +125,16 @@ class JsonToQRecordAdapterTest
|
||||
JsonToQRecordAdapter jsonToQRecordAdapter = new JsonToQRecordAdapter();
|
||||
List<QRecord> qRecords = jsonToQRecordAdapter.buildRecordsFromJson("""
|
||||
[
|
||||
{ "field1":"value1", "field2":"value2" },
|
||||
{ "fieldA":"valueA", "fieldB":"valueB" }
|
||||
{ "firstName":"Tyler", "lastName":"Samples" },
|
||||
{ "firstName":"Tim", "lastName":"Chamberlain" }
|
||||
]
|
||||
""", TestUtils.defineTablePerson(), null);
|
||||
assertNotNull(qRecords);
|
||||
assertEquals(2, qRecords.size());
|
||||
assertEquals("value1", qRecords.get(0).getValue("field1"));
|
||||
assertEquals("value2", qRecords.get(0).getValue("field2"));
|
||||
assertEquals("valueA", qRecords.get(1).getValue("fieldA"));
|
||||
assertEquals("valueB", qRecords.get(1).getValue("fieldB"));
|
||||
assertEquals("Tyler", qRecords.get(0).getValue("firstName"));
|
||||
assertEquals("Samples", qRecords.get(0).getValue("lastName"));
|
||||
assertEquals("Tim", qRecords.get(1).getValue("firstName"));
|
||||
assertEquals("Chamberlain", qRecords.get(1).getValue("lastName"));
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user