X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.akb%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fakb%2Fcore%2FAkbServiceImpl.java;h=83de7294c8b96b0c8d7cdc49d92dcd87d8460a5b;hb=44b4c78e6a082d51d0410c3995b5edf353d417b9;hp=b28437028384e27ea9877f3b7bc59f92ee4ab2b4;hpb=83ab33f078ffc1e8d8bd8a34743090eff5d3b051;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.akb/src/main/java/org/argeo/slc/akb/core/AkbServiceImpl.java b/runtime/org.argeo.slc.akb/src/main/java/org/argeo/slc/akb/core/AkbServiceImpl.java index b28437028..83de7294c 100644 --- a/runtime/org.argeo.slc.akb/src/main/java/org/argeo/slc/akb/core/AkbServiceImpl.java +++ b/runtime/org.argeo.slc.akb/src/main/java/org/argeo/slc/akb/core/AkbServiceImpl.java @@ -112,20 +112,67 @@ public class AkbServiceImpl implements AkbService, AkbNames { @Override public Node createAkbTemplate(Node parentNode, String name) throws RepositoryException { - String connectorParentName = "Connectors"; - Node newTemplate = parentNode.addNode(name, AkbTypes.AKB_ENV_TEMPLATE); newTemplate.setProperty(Property.JCR_TITLE, name); - Node connectorParent = newTemplate.addNode( - AkbTypes.AKB_CONNECTOR_FOLDER, AkbTypes.AKB_CONNECTOR_FOLDER); - connectorParent.setProperty(Property.JCR_TITLE, connectorParentName); + // Node connectorParent = + newTemplate.addNode(AkbTypes.AKB_CONNECTOR_FOLDER, + AkbTypes.AKB_CONNECTOR_FOLDER); + // connectorParent.setProperty(Property.JCR_TITLE, connectorParentName); return newTemplate; } + // ////////////////////////// + // ENVIRONMENTS + @Override + public Node createActiveEnv(Node template, String name, + boolean copyDefaultConnectors) throws RepositoryException { + + Session session = template.getSession(); + Node parentEnvNode = session.getNode(AKB_ENVIRONMENTS_BASE_PATH); + Node createdEnv = parentEnvNode.addNode(name, AkbTypes.AKB_ENV); + createdEnv.setProperty(AKB_ENV_TEMPLATE_PATH, template.getPath()); + createdEnv.setProperty(Property.JCR_TITLE, name); + + Node connectorParent = createdEnv.addNode( + AkbTypes.AKB_CONNECTOR_FOLDER, AkbTypes.AKB_CONNECTOR_FOLDER); + + NodeIterator ni = template.getNode(AkbTypes.AKB_CONNECTOR_FOLDER) + .getNodes(); + while (ni.hasNext()) { + Node currNode = ni.nextNode(); + if (currNode.isNodeType(AkbTypes.AKB_CONNECTOR_ALIAS)) { + Node newConnector = connectorParent.addNode(currNode.getName(), + AkbTypes.AKB_CONNECTOR); + newConnector.setProperty(AKB_CONNECTOR_ALIAS_PATH, + currNode.getPath()); + if (copyDefaultConnectors + && currNode + .hasNode(AkbNames.AKB_DEFAULT_TEST_CONNECTOR)) { + Node defaultConn = currNode + .getNode(AkbNames.AKB_DEFAULT_TEST_CONNECTOR); + if (defaultConn.hasProperty(AkbNames.AKB_CONNECTOR_URL)) + newConnector + .setProperty( + AkbNames.AKB_CONNECTOR_URL, + defaultConn.getProperty( + AkbNames.AKB_CONNECTOR_URL) + .getString()); + if (defaultConn.hasProperty(AkbNames.AKB_CONNECTOR_USER)) + newConnector.setProperty( + AkbNames.AKB_CONNECTOR_USER, + defaultConn.getProperty( + AkbNames.AKB_CONNECTOR_USER) + .getString()); + } + } + } + return createdEnv; + } + // /////////////////////////////////////// - // / CONNECTORS + // CONNECTORS @Override public Node createConnectorAlias(Node templateNode, String name, @@ -139,7 +186,8 @@ public class AkbServiceImpl implements AkbService, AkbNames { // Node defaultConnector = Node defaultConn = newConnector.addNode( AkbNames.AKB_DEFAULT_TEST_CONNECTOR, connectorType); - defaultConn.setProperty(AkbNames.AKB_CONNECTOR_ALIAS_PATH, newConnector.getPath()); + defaultConn.setProperty(AkbNames.AKB_CONNECTOR_ALIAS_PATH, + newConnector.getPath()); return newConnector; } @@ -294,10 +342,15 @@ public class AkbServiceImpl implements AkbService, AkbNames { String sqlQuery = node.getProperty(AKB_QUERY_TEXT).getString(); - String connectorUrl = connectorNode.getProperty( - AKB_CONNECTOR_URL).getString(); - String connectorUser = connectorNode.getProperty( - AKB_CONNECTOR_USER).getString(); + String connectorUrl = AkbJcrUtils.get(connectorNode, + AKB_CONNECTOR_URL); + String connectorUser = AkbJcrUtils.get(connectorNode, + AKB_CONNECTOR_USER); + + // Sanity check + if (AkbJcrUtils.isEmptyString(connectorUrl) + || AkbJcrUtils.isEmptyString(connectorUser)) + return null; String pwdPath = getPasswordPath(connectorNode); // String pwdPath = connectorNode.getPath() + '/' @@ -337,10 +390,16 @@ public class AkbServiceImpl implements AkbService, AkbNames { String command = node.getProperty(AkbNames.AKB_COMMAND_TEXT) .getString(); - String connectorUrl = connectorNode.getProperty(AKB_CONNECTOR_URL) - .getString(); - String connectorUser = connectorNode - .getProperty(AKB_CONNECTOR_USER).getString(); + String connectorUrl = AkbJcrUtils.get(connectorNode, + AKB_CONNECTOR_URL); + String connectorUser = AkbJcrUtils.get(connectorNode, + AKB_CONNECTOR_USER); + + // Sanity check + if (AkbJcrUtils.isEmptyString(connectorUrl) + || AkbJcrUtils.isEmptyString(connectorUser)) + return null; + String pwdPath = getPasswordPath(connectorNode); char[] pwd = keyring.getAsChars(pwdPath); @@ -396,10 +455,16 @@ public class AkbServiceImpl implements AkbService, AkbNames { connectorAliasStr); // TODO do a proper scp - String connectorUrl = connectorNode.getProperty(AKB_CONNECTOR_URL) - .getString(); - String connectorUser = connectorNode - .getProperty(AKB_CONNECTOR_USER).getString(); + String connectorUrl = AkbJcrUtils.get(connectorNode, + AKB_CONNECTOR_URL); + String connectorUser = AkbJcrUtils.get(connectorNode, + AKB_CONNECTOR_USER); + + // Sanity check + if (AkbJcrUtils.isEmptyString(connectorUrl) + || AkbJcrUtils.isEmptyString(connectorUser)) + return null; + String pwdPath = getPasswordPath(connectorNode); char[] pwd = keyring.getAsChars(pwdPath); @@ -458,10 +523,10 @@ public class AkbServiceImpl implements AkbService, AkbNames { } - // /** Expose injected repository */ - // public Repository getRepository() { - // return repository; - // } + /** Expose injected repository */ + public Repository getRepository() { + return repository; + } /* DEPENDENCY INJECTION */ public void setRepository(Repository repository) {