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 java.util.List;
|
||||||
import com.kingsrook.qqq.backend.core.model.actions.AbstractQFieldMapping;
|
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.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.model.metadata.QTableMetaData;
|
||||||
import com.kingsrook.qqq.backend.core.utils.JsonUtils;
|
import com.kingsrook.qqq.backend.core.utils.JsonUtils;
|
||||||
import com.kingsrook.qqq.backend.core.utils.StringUtils;
|
import com.kingsrook.qqq.backend.core.utils.StringUtils;
|
||||||
@ -40,7 +41,7 @@ public class JsonToQRecordAdapter
|
|||||||
if(JsonUtils.looksLikeObject(json))
|
if(JsonUtils.looksLikeObject(json))
|
||||||
{
|
{
|
||||||
JSONObject jsonObject = JsonUtils.toJSONObject(json);
|
JSONObject jsonObject = JsonUtils.toJSONObject(json);
|
||||||
rs.add(buildRecordFromJsonObject(jsonObject));
|
rs.add(buildRecordFromJsonObject(jsonObject, table, mapping));
|
||||||
}
|
}
|
||||||
else if(JsonUtils.looksLikeArray(json))
|
else if(JsonUtils.looksLikeArray(json))
|
||||||
{
|
{
|
||||||
@ -49,7 +50,7 @@ public class JsonToQRecordAdapter
|
|||||||
{
|
{
|
||||||
if(object instanceof JSONObject jsonObject)
|
if(object instanceof JSONObject jsonObject)
|
||||||
{
|
{
|
||||||
rs.add(buildRecordFromJsonObject(jsonObject));
|
rs.add(buildRecordFromJsonObject(jsonObject, table, mapping));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -75,15 +76,20 @@ public class JsonToQRecordAdapter
|
|||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** private method to build one QRecord from one jsonObject
|
** 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();
|
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);
|
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
|
** 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
|
@Override
|
||||||
|
@ -104,14 +104,14 @@ class JsonToQRecordAdapterTest
|
|||||||
JsonToQRecordAdapter jsonToQRecordAdapter = new JsonToQRecordAdapter();
|
JsonToQRecordAdapter jsonToQRecordAdapter = new JsonToQRecordAdapter();
|
||||||
List<QRecord> qRecords = jsonToQRecordAdapter.buildRecordsFromJson("""
|
List<QRecord> qRecords = jsonToQRecordAdapter.buildRecordsFromJson("""
|
||||||
{
|
{
|
||||||
"field1":"value1",
|
"firstName":"Joe",
|
||||||
"field2":"value2"
|
"lastName":"Dimagio"
|
||||||
}
|
}
|
||||||
""", TestUtils.defineTablePerson(), null);
|
""", TestUtils.defineTablePerson(), null);
|
||||||
assertNotNull(qRecords);
|
assertNotNull(qRecords);
|
||||||
assertEquals(1, qRecords.size());
|
assertEquals(1, qRecords.size());
|
||||||
assertEquals("value1", qRecords.get(0).getValue("field1"));
|
assertEquals("Joe", qRecords.get(0).getValue("firstName"));
|
||||||
assertEquals("value2", qRecords.get(0).getValue("field2"));
|
assertEquals("Dimagio", qRecords.get(0).getValue("lastName"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -125,16 +125,16 @@ class JsonToQRecordAdapterTest
|
|||||||
JsonToQRecordAdapter jsonToQRecordAdapter = new JsonToQRecordAdapter();
|
JsonToQRecordAdapter jsonToQRecordAdapter = new JsonToQRecordAdapter();
|
||||||
List<QRecord> qRecords = jsonToQRecordAdapter.buildRecordsFromJson("""
|
List<QRecord> qRecords = jsonToQRecordAdapter.buildRecordsFromJson("""
|
||||||
[
|
[
|
||||||
{ "field1":"value1", "field2":"value2" },
|
{ "firstName":"Tyler", "lastName":"Samples" },
|
||||||
{ "fieldA":"valueA", "fieldB":"valueB" }
|
{ "firstName":"Tim", "lastName":"Chamberlain" }
|
||||||
]
|
]
|
||||||
""", TestUtils.defineTablePerson(), null);
|
""", TestUtils.defineTablePerson(), null);
|
||||||
assertNotNull(qRecords);
|
assertNotNull(qRecords);
|
||||||
assertEquals(2, qRecords.size());
|
assertEquals(2, qRecords.size());
|
||||||
assertEquals("value1", qRecords.get(0).getValue("field1"));
|
assertEquals("Tyler", qRecords.get(0).getValue("firstName"));
|
||||||
assertEquals("value2", qRecords.get(0).getValue("field2"));
|
assertEquals("Samples", qRecords.get(0).getValue("lastName"));
|
||||||
assertEquals("valueA", qRecords.get(1).getValue("fieldA"));
|
assertEquals("Tim", qRecords.get(1).getValue("firstName"));
|
||||||
assertEquals("valueB", qRecords.get(1).getValue("fieldB"));
|
assertEquals("Chamberlain", qRecords.get(1).getValue("lastName"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user