diff --git a/wizard-server/src/main/java/org/cobbzilla/wizard/model/ModelSetupService.java b/wizard-server/src/main/java/org/cobbzilla/wizard/model/ModelSetupService.java index b484ac5..358bfc8 100644 --- a/wizard-server/src/main/java/org/cobbzilla/wizard/model/ModelSetupService.java +++ b/wizard-server/src/main/java/org/cobbzilla/wizard/model/ModelSetupService.java @@ -6,10 +6,7 @@ import lombok.Getter; import org.cobbzilla.util.collection.ExpirationMap; import org.cobbzilla.wizard.api.CrudOperation; import org.cobbzilla.wizard.client.ApiClientBase; -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.model.entityconfig.*; import org.cobbzilla.wizard.server.config.PgRestServerConfiguration; import java.io.File; @@ -19,10 +16,8 @@ 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.io.FileUtil.toStringOrDie; +import static org.cobbzilla.util.daemon.ZillaRuntime.*; +import static org.cobbzilla.util.io.FileUtil.*; import static org.cobbzilla.util.json.JsonUtil.json; import static org.cobbzilla.util.json.JsonUtil.newArrayNode; import static org.cobbzilla.wizard.util.Unroll.unrollOrInvalid; @@ -34,8 +29,27 @@ public abstract class ModelSetupService { protected abstract String getEntityConfigsEndpoint(); protected abstract void setOwner(Identifiable owner, Identifiable entity); + protected String getClasspathPrefix() { return "models/"; } + + public String getRunName(Identifiable owner) { return getClass().getName() + "_" + owner.getUuid() + "_" + now(); } + private Map setupCache = new ExpirationMap<>(); + public ModelSetupForOwner getSetupObject(Identifiable owner) { + return setupCache.computeIfAbsent(owner.getUuid(), k -> new ModelSetupForOwner(owner)); + } + + public Map> setupModel(ApiClientBase api, Identifiable owner, String manifest) { + try { + final ModelSetupForOwner listener = getSetupObject(owner); + ModelSetup.setupModel(api, getEntityConfigsEndpoint(), getClasspathPrefix(), manifest, listener, getRunName(owner)); + return listener.getStatus(); + + } catch (Exception e) { + return die("setupModel: "+shortError(e)); + } + } + public Map> setupModel(ApiClientBase api, Identifiable owner, File modelFile) { File modelDir; final String ext = extension(modelFile); @@ -83,8 +97,7 @@ public abstract class ModelSetupService { } try { - return setupCache.computeIfAbsent(owner.getUuid(), k -> new ModelSetupForOwner(owner)) - .setup(api, models, resolver); + return getSetupObject(owner).setup(api, models, resolver); } catch (Exception e) { throw invalidEx("err.entity.setupError", shortError(e)); @@ -119,7 +132,7 @@ public abstract class ModelSetupService { LinkedHashMap models, ManifestFileResolver resolver) throws Exception { ModelSetup.setupModel(api, getEntityConfigsEndpoint(), models, - resolver, this, true, getClass().getName()+"_"+ owner.getUuid()+"_"+now()); + resolver, this, true, getRunName(owner)); return status; } }