From cab8a4b794704776445872b96ac983f11db85cd1 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Wed, 6 Jul 2022 13:57:48 -0500 Subject: [PATCH 1/2] QQQ-21 updated per updated backend-core - process function -> step renames --- .../sampleapp/SampleMetaDataProvider.java | 73 +++++++++++++++---- .../sampleapp/SampleMetaDataProviderTest.java | 5 +- 2 files changed, 62 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/kingsrook/sampleapp/SampleMetaDataProvider.java b/src/main/java/com/kingsrook/sampleapp/SampleMetaDataProvider.java index 8cee65c3..dd8e3c2f 100644 --- a/src/main/java/com/kingsrook/sampleapp/SampleMetaDataProvider.java +++ b/src/main/java/com/kingsrook/sampleapp/SampleMetaDataProvider.java @@ -24,7 +24,7 @@ package com.kingsrook.sampleapp; import java.util.List; import com.kingsrook.qqq.backend.core.exceptions.QException; -import com.kingsrook.qqq.backend.core.interfaces.mock.MockFunctionBody; +import com.kingsrook.qqq.backend.core.interfaces.mock.MockBackendStep; import com.kingsrook.qqq.backend.core.model.metadata.QAuthenticationMetaData; import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData; import com.kingsrook.qqq.backend.core.model.metadata.QCodeReference; @@ -34,8 +34,9 @@ import com.kingsrook.qqq.backend.core.model.metadata.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.QFieldType; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.QTableMetaData; +import com.kingsrook.qqq.backend.core.model.metadata.processes.QBackendStepMetaData; +import com.kingsrook.qqq.backend.core.model.metadata.processes.QFrontendStepMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QFunctionInputMetaData; -import com.kingsrook.qqq.backend.core.model.metadata.processes.QFunctionMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QFunctionOutputMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QRecordListMetaData; @@ -51,9 +52,10 @@ import com.kingsrook.qqq.backend.module.rdbms.model.metadata.RDBMSBackendMetaDat *******************************************************************************/ public class SampleMetaDataProvider { - public static final String MYSQL_BACKEND_NAME = "mysql"; - public static final String FILESYSTEM_BACKEND_NAME = "filesystem"; - public static final String PROCESS_NAME_GREET = "greet"; + public static final String MYSQL_BACKEND_NAME = "mysql"; + public static final String FILESYSTEM_BACKEND_NAME = "filesystem"; + public static final String PROCESS_NAME_GREET = "greet"; + public static final String PROCESS_NAME_GREET_INTERACTIVE = "greetInteractive"; @@ -64,13 +66,14 @@ public class SampleMetaDataProvider { QInstance qInstance = new QInstance(); - qInstance.setAuthentication(SampleMetaDataProvider.defineAuthentication()); - qInstance.addBackend(SampleMetaDataProvider.defineMysqlBackend()); - qInstance.addBackend(SampleMetaDataProvider.defineFilesystemBackend()); - qInstance.addTable(SampleMetaDataProvider.defineTableCarrier()); - qInstance.addTable(SampleMetaDataProvider.defineTablePerson()); - qInstance.addTable(SampleMetaDataProvider.defineTableCityFile()); - qInstance.addProcess(SampleMetaDataProvider.defineProcessGreetPeople()); + qInstance.setAuthentication(defineAuthentication()); + qInstance.addBackend(defineMysqlBackend()); + qInstance.addBackend(defineFilesystemBackend()); + qInstance.addTable(defineTableCarrier()); + qInstance.addTable(defineTablePerson()); + qInstance.addTable(defineTableCityFile()); + qInstance.addProcess(defineProcessGreetPeople()); + qInstance.addProcess(defineProcessGreetPeopleInteractive()); return (qInstance); } @@ -195,10 +198,10 @@ public class SampleMetaDataProvider .withName(PROCESS_NAME_GREET) .withLabel("Greet People") .withTableName("person") - .addFunction(new QFunctionMetaData() + .addStep(new QBackendStepMetaData() .withName("prepare") .withCode(new QCodeReference() - .withName(MockFunctionBody.class.getName()) + .withName(MockBackendStep.class.getName()) .withCodeType(QCodeType.JAVA) .withCodeUsage(QCodeUsage.FUNCTION)) // todo - needed, or implied in this context? .withInputData(new QFunctionInputMetaData() @@ -216,4 +219,46 @@ public class SampleMetaDataProvider ); } + + + /******************************************************************************* + ** Define an interactive version of the 'greet people' process + *******************************************************************************/ + private static QProcessMetaData defineProcessGreetPeopleInteractive() + { + return new QProcessMetaData() + .withName(PROCESS_NAME_GREET_INTERACTIVE) + .withTableName("person") + + .addStep(new QFrontendStepMetaData() + .withName("setup") + .withFormField(new QFieldMetaData("greetingPrefix", QFieldType.STRING)) + .withFormField(new QFieldMetaData("greetingSuffix", QFieldType.STRING)) + ) + + .addStep(new QBackendStepMetaData() + .withName("doWork") + .withCode(new QCodeReference() + .withName(MockBackendStep.class.getName()) + .withCodeType(QCodeType.JAVA) + .withCodeUsage(QCodeUsage.FUNCTION)) // todo - needed, or implied in this context? + .withInputData(new QFunctionInputMetaData() + .withRecordListMetaData(new QRecordListMetaData().withTableName("person")) + .withFieldList(List.of( + new QFieldMetaData("greetingPrefix", QFieldType.STRING), + new QFieldMetaData("greetingSuffix", QFieldType.STRING) + ))) + .withOutputMetaData(new QFunctionOutputMetaData() + .withRecordListMetaData(new QRecordListMetaData() + .withTableName("person") + .addField(new QFieldMetaData("fullGreeting", QFieldType.STRING)) + ) + .withFieldList(List.of(new QFieldMetaData("outputMessage", QFieldType.STRING)))) + ) + + .addStep(new QFrontendStepMetaData() + .withName("results") + .withFormField(new QFieldMetaData("outputMessage", QFieldType.STRING)) + ); + } } diff --git a/src/test/java/com/kingsrook/sampleapp/SampleMetaDataProviderTest.java b/src/test/java/com/kingsrook/sampleapp/SampleMetaDataProviderTest.java index 097b9764..50317d14 100644 --- a/src/test/java/com/kingsrook/sampleapp/SampleMetaDataProviderTest.java +++ b/src/test/java/com/kingsrook/sampleapp/SampleMetaDataProviderTest.java @@ -27,6 +27,7 @@ import java.io.IOException; import java.util.UUID; import com.kingsrook.qqq.backend.core.actions.QueryAction; import com.kingsrook.qqq.backend.core.actions.RunProcessAction; +import com.kingsrook.qqq.backend.core.interfaces.mock.MockBackendStep; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessRequest; import com.kingsrook.qqq.backend.core.model.actions.processes.RunProcessResult; import com.kingsrook.qqq.backend.core.model.actions.query.QueryRequest; @@ -113,8 +114,8 @@ class SampleMetaDataProviderTest QueryResult queryResult = new QueryAction().execute(queryRequest); request.setRecords(queryResult.getRecords()); - request.addValue("greetingPrefix", "Hello"); - request.addValue("greetingSuffix", "there"); + request.addValue(MockBackendStep.FIELD_GREETING_PREFIX, "Hello"); + request.addValue(MockBackendStep.FIELD_GREETING_SUFFIX, "there"); RunProcessResult result = new RunProcessAction().execute(request); assertNotNull(result); From 67cec981e74b7a672675946fb4692e96f7152fbc Mon Sep 17 00:00:00 2001 From: Tim Chamberlain Date: Thu, 7 Jul 2022 14:51:10 -0500 Subject: [PATCH 2/2] QQQ-21: made required fields required on carrier --- .../com/kingsrook/sampleapp/SampleMetaDataProvider.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/kingsrook/sampleapp/SampleMetaDataProvider.java b/src/main/java/com/kingsrook/sampleapp/SampleMetaDataProvider.java index dd8e3c2f..ee5899cf 100644 --- a/src/main/java/com/kingsrook/sampleapp/SampleMetaDataProvider.java +++ b/src/main/java/com/kingsrook/sampleapp/SampleMetaDataProvider.java @@ -133,13 +133,16 @@ public class SampleMetaDataProvider table.addField(new QFieldMetaData("id", QFieldType.INTEGER)); - table.addField(new QFieldMetaData("name", QFieldType.STRING)); + table.addField(new QFieldMetaData("name", QFieldType.STRING) + .withIsRequired(true)); table.addField(new QFieldMetaData("company_code", QFieldType.STRING) // todo enum .withLabel("Company") + .withIsRequired(true) .withBackendName("comp_code")); - table.addField(new QFieldMetaData("service_level", QFieldType.STRING)); // todo enum + table.addField(new QFieldMetaData("service_level", QFieldType.STRING) + .withIsRequired(true)); // todo enum return (table); }