From fb35a1d4e1ab1755365db87deef54b77f02cb369 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Sun, 5 Jan 2020 14:08:23 -0500 Subject: [PATCH] migrate client code into common, add ModelSetupService and Unroll utility --- pom.xml | 1 - wizard-client/pom.xml | 35 ----- .../wizard/client/ApiClientBase.java | 0 .../wizard/client/script/ApiInnerScript.java | 0 .../client/script/ApiInnerScriptRunMode.java | 0 .../client/script/ApiMultiScriptDriver.java | 0 .../wizard/client/script/ApiRunner.java | 0 .../client/script/ApiRunnerListener.java | 0 .../client/script/ApiRunnerListenerBase.java | 0 .../script/ApiRunnerListenerStreamLogger.java | 0 .../client/script/ApiRunnerMultiListener.java | 0 .../client/script/ApiRunnerWithEnv.java | 0 .../wizard/client/script/ApiScript.java | 0 .../script/ApiScriptIncludeHandler.java | 0 .../script/ApiScriptIncludeHandlerBase.java | 0 .../client/script/ApiScriptRequest.java | 0 .../client/script/ApiScriptResponse.java | 0 .../client/script/ApiScriptResponseCheck.java | 0 .../client/script/ListenerFunction.java | 0 .../client/script/NamedApiConnectionInfo.java | 0 .../cobbzilla/wizard/client/script/README.md | 0 .../script/SimpleApiRunnerListener.java | 0 .../cobbzilla/wizard/main/MainApiBase.java | 0 .../wizard/main/MainApiOptionsBase.java | 0 .../org/cobbzilla/wizard/main/MainBase.java | 0 .../wizard/main/ModelSetupMainBase.java | 0 .../wizard/main/ModelSetupOptionsBase.java | 0 .../cobbzilla/wizard/main/ScriptMainBase.java | 0 .../wizard/main/ScriptMainOptionsBase.java | 0 .../ManifestClasspathResolver.java | 0 .../entityconfig/ManifestFileResolver.java | 0 .../model/entityconfig/ModelDiffEntry.java | 0 .../model/entityconfig/ModelEntity.java | 0 .../entityconfig/ModelManifestResolver.java | 0 .../model/entityconfig/ModelMigration.java | 0 .../entityconfig/ModelMigrationListener.java | 0 .../wizard/model/entityconfig/ModelSetup.java | 0 .../entityconfig/ModelSetupListener.java | 0 .../entityconfig/ModelSetupListenerBase.java | 0 .../model/entityconfig/ModelVerifyLog.java | 0 .../entityconfig/StandardModelVerifyLog.java | 0 .../model_verify_template.html.hbs | 0 .../cobbzilla/wizard/ModelSetupService.java | 125 ++++++++++++++++++ .../java/org/cobbzilla/wizard/Unroll.java | 16 +++ .../config/PgRestServerConfiguration.java | 6 + 45 files changed, 147 insertions(+), 36 deletions(-) delete mode 100644 wizard-client/pom.xml rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/ApiClientBase.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiInnerScript.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiInnerScriptRunMode.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiMultiScriptDriver.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiRunner.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListener.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListenerBase.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListenerStreamLogger.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerMultiListener.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerWithEnv.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiScript.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptIncludeHandler.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptIncludeHandlerBase.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptRequest.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptResponse.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptResponseCheck.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/ListenerFunction.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/NamedApiConnectionInfo.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/README.md (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/client/script/SimpleApiRunnerListener.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/main/MainApiBase.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/main/MainApiOptionsBase.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/main/MainBase.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/main/ModelSetupMainBase.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/main/ModelSetupOptionsBase.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/main/ScriptMainBase.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/main/ScriptMainOptionsBase.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/model/entityconfig/ManifestClasspathResolver.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/model/entityconfig/ManifestFileResolver.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelDiffEntry.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelEntity.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelManifestResolver.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelMigration.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelMigrationListener.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetup.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetupListener.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetupListenerBase.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelVerifyLog.java (100%) rename {wizard-client => wizard-common}/src/main/java/org/cobbzilla/wizard/model/entityconfig/StandardModelVerifyLog.java (100%) rename {wizard-client => wizard-common}/src/main/resources/org/cobbzilla/wizard/model/entityconfig/model_verify_template.html.hbs (100%) create mode 100644 wizard-server/src/main/java/org/cobbzilla/wizard/ModelSetupService.java create mode 100644 wizard-server/src/main/java/org/cobbzilla/wizard/Unroll.java diff --git a/pom.xml b/pom.xml index 68d69c5..20f0979 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,6 @@ cobbzilla-wizard is available under the Apache License, version 2: http://www.ap wizard-common wizard-server - wizard-client wizard-server-test diff --git a/wizard-client/pom.xml b/wizard-client/pom.xml deleted file mode 100644 index ca103f4..0000000 --- a/wizard-client/pom.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - 4.0.0 - - - org.cobbzilla - cobbzilla-wizard - 1.0.0-SNAPSHOT - - - wizard-client - 1.0.0-SNAPSHOT - - - - - org.cobbzilla - wizard-common - 1.0.0-SNAPSHOT - - - - org.cobbzilla - cobbzilla-utils - 1.0.0-SNAPSHOT - - - - - diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/ApiClientBase.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/ApiClientBase.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/ApiClientBase.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/ApiClientBase.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiInnerScript.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiInnerScript.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiInnerScript.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiInnerScript.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiInnerScriptRunMode.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiInnerScriptRunMode.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiInnerScriptRunMode.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiInnerScriptRunMode.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiMultiScriptDriver.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiMultiScriptDriver.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiMultiScriptDriver.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiMultiScriptDriver.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiRunner.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiRunner.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiRunner.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiRunner.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListener.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListener.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListener.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListener.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListenerBase.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListenerBase.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListenerBase.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListenerBase.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListenerStreamLogger.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListenerStreamLogger.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListenerStreamLogger.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerListenerStreamLogger.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerMultiListener.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerMultiListener.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerMultiListener.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerMultiListener.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerWithEnv.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerWithEnv.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerWithEnv.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiRunnerWithEnv.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiScript.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiScript.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiScript.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiScript.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptIncludeHandler.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptIncludeHandler.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptIncludeHandler.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptIncludeHandler.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptIncludeHandlerBase.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptIncludeHandlerBase.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptIncludeHandlerBase.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptIncludeHandlerBase.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptRequest.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptRequest.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptRequest.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptRequest.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptResponse.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptResponse.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptResponse.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptResponse.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptResponseCheck.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptResponseCheck.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptResponseCheck.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ApiScriptResponseCheck.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ListenerFunction.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ListenerFunction.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/ListenerFunction.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/ListenerFunction.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/NamedApiConnectionInfo.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/NamedApiConnectionInfo.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/NamedApiConnectionInfo.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/NamedApiConnectionInfo.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/README.md b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/README.md similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/README.md rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/README.md diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/client/script/SimpleApiRunnerListener.java b/wizard-common/src/main/java/org/cobbzilla/wizard/client/script/SimpleApiRunnerListener.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/client/script/SimpleApiRunnerListener.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/client/script/SimpleApiRunnerListener.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/main/MainApiBase.java b/wizard-common/src/main/java/org/cobbzilla/wizard/main/MainApiBase.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/main/MainApiBase.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/main/MainApiBase.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/main/MainApiOptionsBase.java b/wizard-common/src/main/java/org/cobbzilla/wizard/main/MainApiOptionsBase.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/main/MainApiOptionsBase.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/main/MainApiOptionsBase.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/main/MainBase.java b/wizard-common/src/main/java/org/cobbzilla/wizard/main/MainBase.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/main/MainBase.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/main/MainBase.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/main/ModelSetupMainBase.java b/wizard-common/src/main/java/org/cobbzilla/wizard/main/ModelSetupMainBase.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/main/ModelSetupMainBase.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/main/ModelSetupMainBase.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/main/ModelSetupOptionsBase.java b/wizard-common/src/main/java/org/cobbzilla/wizard/main/ModelSetupOptionsBase.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/main/ModelSetupOptionsBase.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/main/ModelSetupOptionsBase.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/main/ScriptMainBase.java b/wizard-common/src/main/java/org/cobbzilla/wizard/main/ScriptMainBase.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/main/ScriptMainBase.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/main/ScriptMainBase.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/main/ScriptMainOptionsBase.java b/wizard-common/src/main/java/org/cobbzilla/wizard/main/ScriptMainOptionsBase.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/main/ScriptMainOptionsBase.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/main/ScriptMainOptionsBase.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ManifestClasspathResolver.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ManifestClasspathResolver.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ManifestClasspathResolver.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ManifestClasspathResolver.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ManifestFileResolver.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ManifestFileResolver.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ManifestFileResolver.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ManifestFileResolver.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelDiffEntry.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelDiffEntry.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelDiffEntry.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelDiffEntry.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelEntity.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelEntity.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelEntity.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelEntity.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelManifestResolver.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelManifestResolver.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelManifestResolver.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelManifestResolver.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelMigration.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelMigration.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelMigration.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelMigration.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelMigrationListener.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelMigrationListener.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelMigrationListener.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelMigrationListener.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetup.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetup.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetup.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetup.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetupListener.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetupListener.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetupListener.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetupListener.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetupListenerBase.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetupListenerBase.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetupListenerBase.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelSetupListenerBase.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelVerifyLog.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelVerifyLog.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelVerifyLog.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/ModelVerifyLog.java diff --git a/wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/StandardModelVerifyLog.java b/wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/StandardModelVerifyLog.java similarity index 100% rename from wizard-client/src/main/java/org/cobbzilla/wizard/model/entityconfig/StandardModelVerifyLog.java rename to wizard-common/src/main/java/org/cobbzilla/wizard/model/entityconfig/StandardModelVerifyLog.java diff --git a/wizard-client/src/main/resources/org/cobbzilla/wizard/model/entityconfig/model_verify_template.html.hbs b/wizard-common/src/main/resources/org/cobbzilla/wizard/model/entityconfig/model_verify_template.html.hbs similarity index 100% rename from wizard-client/src/main/resources/org/cobbzilla/wizard/model/entityconfig/model_verify_template.html.hbs rename to wizard-common/src/main/resources/org/cobbzilla/wizard/model/entityconfig/model_verify_template.html.hbs diff --git a/wizard-server/src/main/java/org/cobbzilla/wizard/ModelSetupService.java b/wizard-server/src/main/java/org/cobbzilla/wizard/ModelSetupService.java new file mode 100644 index 0000000..ab0a6e7 --- /dev/null +++ b/wizard-server/src/main/java/org/cobbzilla/wizard/ModelSetupService.java @@ -0,0 +1,125 @@ +package org.cobbzilla.wizard; + +import com.fasterxml.jackson.databind.JsonNode; +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.cobbzilla.util.io.FileUtil; +import org.cobbzilla.wizard.api.CrudOperation; +import org.cobbzilla.wizard.client.ApiClientBase; +import org.cobbzilla.wizard.model.Identifiable; +import org.cobbzilla.wizard.model.entityconfig.EntityConfig; +import org.cobbzilla.wizard.model.entityconfig.ManifestFileResolver; +import org.cobbzilla.wizard.model.entityconfig.ModelSetup; +import org.cobbzilla.wizard.model.entityconfig.ModelSetupListenerBase; +import org.cobbzilla.wizard.server.config.PgRestServerConfiguration; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import static org.cobbzilla.util.daemon.ZillaRuntime.now; +import static org.cobbzilla.util.daemon.ZillaRuntime.shortError; +import static org.cobbzilla.util.io.FileUtil.extension; +import static org.cobbzilla.util.json.JsonUtil.json; +import static org.cobbzilla.util.json.JsonUtil.newArrayNode; +import static org.cobbzilla.wizard.Unroll.unrollOrInvalid; +import static org.cobbzilla.wizard.resources.ResourceUtil.invalidEx; + +public abstract class ModelSetupService { + + protected abstract PgRestServerConfiguration getConfiguration(); + protected abstract String getEntityConfigsEndpoint(); + protected abstract void setOwner(Identifiable owner, Identifiable entity); + + public Map> setupModel(Identifiable owner, File modelFile) { + File modelDir; + final String ext = extension(modelFile); + switch (ext.toLowerCase()) { + case ".zip": case ".gz": case ".tgz": + modelDir = unrollOrInvalid(modelFile, "err.entity.fileZipFormat.invalid"); + break; + case ".json": + modelDir = null; + break; + default: throw invalidEx("err.entity.filenameExtension.invalid"); + } + + final LinkedHashMap models = new LinkedHashMap<>(); + + final ManifestFileResolver resolver; + if (modelDir == null) { + resolver = null; + + // It's a JSON file, determine type + final String filename = modelFile.getName(); + final int dotPos = filename.indexOf('.'); + final int uPos = filename.indexOf('_'); + final String entityClassInFilename = filename.substring(0, Math.min(dotPos == -1 ? filename.length() : dotPos, uPos == -1 ? filename.length() : uPos)); + final Class entityClass = getConfiguration().getEntityClasses().stream() + .filter(c -> c.getSimpleName().equalsIgnoreCase(entityClassInFilename)) + .findFirst().orElse(null); + if (entityClass == null) throw invalidEx("err.entity.classInFilename.invalid"); + + // Does the file contain a single object? if so, wrap in array + final JsonNode node = json(FileUtil.toStringOrDie(modelFile), JsonNode.class); + if (!node.isArray()) { + final JsonNode arrayNode = newArrayNode().add(node); + models.put(entityClass.getName(), json(arrayNode)); + } else { + models.put(entityClass.getName(), json(node)); + } + } else { + resolver = new ManifestFileResolver(modelDir); + final File manifest = new File(modelDir, "manifest.json"); + if (!manifest.exists()) { + throw invalidEx("err.entity.manifest.required"); + } + models.put("manifest", manifest.getName()); + } + + try { + final ApiClientBase api = getConfiguration().newApiClient(); + final ModelSetupForOwner setup = new ModelSetupForOwner(owner); + return setup.setup(api, models, resolver); + + } catch (Exception e) { + throw invalidEx("err.entity.setupError", shortError(e)); + } + } + + @AllArgsConstructor + private class ModelSetupForOwner extends ModelSetupListenerBase { + + private final Identifiable owner; + @Getter private final Map> status = new ConcurrentHashMap<>(); + + @Override public void preCreate(EntityConfig entityConfig, Identifiable entity) { + setOwner(owner, entity); + super.preCreate(entityConfig, entity); + } + + @Override public void postCreate(EntityConfig entityConfig, Identifiable entity, Identifiable created) { + status.computeIfAbsent(CrudOperation.create, k -> new ArrayList<>()).add(created); + } + + @Override public void preUpdate(EntityConfig entityConfig, Identifiable entity) { + setOwner(owner, entity); + super.preUpdate(entityConfig, entity); + } + + @Override public void postUpdate(EntityConfig entityConfig, Identifiable entity, Identifiable updated) { + status.computeIfAbsent(CrudOperation.update, k -> new ArrayList<>()).add(updated); + } + + public Map> setup(ApiClientBase api, + LinkedHashMap models, + ManifestFileResolver resolver) throws Exception { + ModelSetup.setupModel(api, getEntityConfigsEndpoint(), models, + resolver, this, true, getClass().getName()+"_"+ owner.getUuid()+"_"+now()); + return status; + } + } +} diff --git a/wizard-server/src/main/java/org/cobbzilla/wizard/Unroll.java b/wizard-server/src/main/java/org/cobbzilla/wizard/Unroll.java new file mode 100644 index 0000000..f040c82 --- /dev/null +++ b/wizard-server/src/main/java/org/cobbzilla/wizard/Unroll.java @@ -0,0 +1,16 @@ +package org.cobbzilla.wizard; + +import org.cobbzilla.util.io.TempDir; + +import java.io.File; + +import static org.cobbzilla.util.io.Decompressors.unroll; +import static org.cobbzilla.wizard.resources.ResourceUtil.invalidEx; + +public class Unroll { + + public static TempDir unrollOrInvalid (File file, String err) { + try { return unroll(file); } catch (Exception e) { throw invalidEx(err); } + } + +} diff --git a/wizard-server/src/main/java/org/cobbzilla/wizard/server/config/PgRestServerConfiguration.java b/wizard-server/src/main/java/org/cobbzilla/wizard/server/config/PgRestServerConfiguration.java index b775bb7..57d892e 100644 --- a/wizard-server/src/main/java/org/cobbzilla/wizard/server/config/PgRestServerConfiguration.java +++ b/wizard-server/src/main/java/org/cobbzilla/wizard/server/config/PgRestServerConfiguration.java @@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.exec.CommandLine; import org.cobbzilla.util.collection.ArrayUtil; import org.cobbzilla.util.collection.NameAndValue; +import org.cobbzilla.util.http.ApiConnectionInfo; import org.cobbzilla.util.io.FileUtil; import org.cobbzilla.util.jdbc.DbDumpMode; import org.cobbzilla.util.jdbc.ResultSetBean; @@ -15,6 +16,7 @@ import org.cobbzilla.util.jdbc.UncheckedSqlException; import org.cobbzilla.util.string.StringUtil; import org.cobbzilla.util.system.Command; import org.cobbzilla.util.system.CommandResult; +import org.cobbzilla.wizard.client.ApiClientBase; import org.cobbzilla.wizard.model.Identifiable; import org.cobbzilla.wizard.model.entityconfig.EntityReferences; import org.springframework.context.annotation.Bean; @@ -336,4 +338,8 @@ public class PgRestServerConfiguration extends RestServerConfiguration implement .generateConstraintSql(includeIndexes).toArray(new String[0]); } + // warning: default ApiClientBase does not have an auth header set, will not work. + // override in subclass + public ApiClientBase newApiClient() { return new ApiClientBase(new ApiConnectionInfo(getLoopbackApiBase())); } + }