diff --git a/src/main/java/com/kingsrook/qqq/backend/core/model/actions/query/QueryResult.java b/src/main/java/com/kingsrook/qqq/backend/core/model/actions/query/QueryResult.java index dcb94bdd..2f58b382 100644 --- a/src/main/java/com/kingsrook/qqq/backend/core/model/actions/query/QueryResult.java +++ b/src/main/java/com/kingsrook/qqq/backend/core/model/actions/query/QueryResult.java @@ -33,8 +33,7 @@ import com.kingsrook.qqq.backend.core.model.data.QRecord; *******************************************************************************/ public class QueryResult extends AbstractQResult { - List records; - + private List records; /******************************************************************************* diff --git a/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QBackendMetaData.java b/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QBackendMetaData.java index 365e802d..6e585512 100644 --- a/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QBackendMetaData.java +++ b/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QBackendMetaData.java @@ -85,10 +85,11 @@ public class QBackendMetaData /******************************************************************************* ** *******************************************************************************/ - public QBackendMetaData withName(String name) + @SuppressWarnings("unchecked") + public T withName(String name) { this.name = name; - return (this); + return (T) this; } @@ -137,10 +138,11 @@ public class QBackendMetaData /******************************************************************************* ** *******************************************************************************/ - public QBackendMetaData withBackendType(String backendType) + @SuppressWarnings("unchecked") + public T withBackendType(String backendType) { this.backendType = backendType; - return (this); + return (T) this; } diff --git a/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QInstance.java b/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QInstance.java index cf66634b..39510b15 100644 --- a/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QInstance.java +++ b/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QInstance.java @@ -47,9 +47,9 @@ public class QInstance private QAuthenticationMetaData authentication = null; - private Map tables = new HashMap<>(); + private Map tables = new HashMap<>(); private Map> possibleValueSources = new HashMap<>(); - private Map processes = new HashMap<>(); + private Map processes = new HashMap<>(); // todo - lock down the object (no more changes allowed) after it's been validated? @@ -79,6 +79,7 @@ public class QInstance } + /******************************************************************************* ** *******************************************************************************/ @@ -87,7 +88,7 @@ public class QInstance List rs = new ArrayList<>(); for(QProcessMetaData process : processes.values()) { - if (tableName.equals(process.getTableName())) + if(tableName.equals(process.getTableName())) { rs.add(process); } @@ -96,6 +97,7 @@ public class QInstance } + /******************************************************************************* ** Setter for hasBeenValidated ** @@ -112,7 +114,7 @@ public class QInstance *******************************************************************************/ public void addBackend(QBackendMetaData backend) { - this.backends.put(backend.getName(), backend); + addBackend(backend.getName(), backend); } @@ -122,6 +124,10 @@ public class QInstance *******************************************************************************/ public void addBackend(String name, QBackendMetaData backend) { + if(this.backends.containsKey(name)) + { + throw (new IllegalArgumentException("Attempted to add a second backend with name: " + name)); + } this.backends.put(name, backend); } @@ -142,7 +148,7 @@ public class QInstance *******************************************************************************/ public void addTable(QTableMetaData table) { - this.tables.put(table.getName(), table); + addTable(table.getName(), table); } @@ -152,6 +158,10 @@ public class QInstance *******************************************************************************/ public void addTable(String name, QTableMetaData table) { + if(this.tables.containsKey(name)) + { + throw (new IllegalArgumentException("Attempted to add a second table with name: " + name)); + } this.tables.put(name, table); } @@ -172,7 +182,7 @@ public class QInstance *******************************************************************************/ public void addPossibleValueSource(QPossibleValueSource possibleValueSource) { - this.possibleValueSources.put(possibleValueSource.getName(), possibleValueSource); + this.addPossibleValueSource(possibleValueSource.getName(), possibleValueSource); } @@ -182,6 +192,10 @@ public class QInstance *******************************************************************************/ public void addPossibleValueSource(String name, QPossibleValueSource possibleValueSource) { + if(this.possibleValueSources.containsKey(name)) + { + throw (new IllegalArgumentException("Attempted to add a second possibleValueSource with name: " + name)); + } this.possibleValueSources.put(name, possibleValueSource); } @@ -218,7 +232,21 @@ public class QInstance *******************************************************************************/ public void addProcess(QProcessMetaData process) { - this.processes.put(process.getName(), process); + this.addProcess(process.getName(), process); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public void addProcess(String name, QProcessMetaData process) + { + if(this.processes.containsKey(name)) + { + throw (new IllegalArgumentException("Attempted to add a second process with name: " + name)); + } + this.processes.put(name, process); } diff --git a/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QTableMetaData.java b/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QTableMetaData.java index f88abab4..78c0ff84 100644 --- a/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QTableMetaData.java +++ b/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/QTableMetaData.java @@ -34,6 +34,15 @@ public class QTableMetaData { private String name; private String label; + + // TODO: resolve confusion over: + // Is this name of what backend the table is stored in (yes) + // Or the "name" of the table WITHIN the backend (no) + // although that's how "backendName" is used in QFieldMetaData. + // Idea: + // rename "backendName" here to "backend" + // add "nameInBackend" (or similar) for the table name in the backend + // OR - add a whole "backendDetails" object, with different details per backend-type private String backendName; private String primaryKeyField; diff --git a/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/serialization/DeserializerUtils.java b/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/serialization/DeserializerUtils.java index aa36937b..19dd795c 100644 --- a/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/serialization/DeserializerUtils.java +++ b/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/serialization/DeserializerUtils.java @@ -86,7 +86,6 @@ public class DeserializerUtils try { T output = outputClass.getConstructor().newInstance(); - System.out.println("Reflectively deserializing a: " + outputClass.getName()); Map> setterMap = new HashMap<>(); for(Method method : outputClass.getMethods()) @@ -174,7 +173,6 @@ public class DeserializerUtils while(fieldNamesIterator.hasNext()) { String fieldName = fieldNamesIterator.next(); - System.out.println("Handling field [" + fieldName + "]"); if(!setterMap.containsKey(fieldName)) { diff --git a/src/main/java/com/kingsrook/qqq/backend/core/modules/QBackendModuleDispatcher.java b/src/main/java/com/kingsrook/qqq/backend/core/modules/QBackendModuleDispatcher.java index 10eff096..441e5959 100644 --- a/src/main/java/com/kingsrook/qqq/backend/core/modules/QBackendModuleDispatcher.java +++ b/src/main/java/com/kingsrook/qqq/backend/core/modules/QBackendModuleDispatcher.java @@ -59,7 +59,8 @@ public class QBackendModuleDispatcher // e.g., backend-core shouldn't need to "know" about the modules. "com.kingsrook.qqq.backend.core.modules.mock.MockBackendModule", "com.kingsrook.qqq.backend.module.rdbms.RDBMSBackendModule", - "com.kingsrook.qqq.backend.module.filesystem.FilesystemBackendModule" + "com.kingsrook.qqq.backend.module.filesystem.local.FilesystemBackendModule", + "com.kingsrook.qqq.backend.module.filesystem.s3.S3BackendModule" }; for(String moduleClassName : moduleClassNames)