fix a few post refactoring UI Bugs
authorBruno Sinou <bsinou@argeo.org>
Thu, 14 Nov 2013 20:29:20 +0000 (20:29 +0000)
committerBruno Sinou <bsinou@argeo.org>
Thu, 14 Nov 2013 20:29:20 +0000 (20:29 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@6614 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/composites/ItemTemplateTitleComposite.java
plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AbstractAkbNodeEditor.java
plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AkbItemTemplateEditor.java
plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AkbNodeEditorInput.java
plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/JdbcQueryTemplateEditor.java
plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/SshCommandTemplateEditor.java
plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/SshFileTemplateEditor.java
plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/views/AkbTemplatesTreeView.java
runtime/org.argeo.slc.akb/src/main/java/org/argeo/slc/akb/AkbService.java
runtime/org.argeo.slc.akb/src/main/java/org/argeo/slc/akb/core/AkbServiceImpl.java
runtime/org.argeo.slc.akb/src/main/resources/org/argeo/slc/akb/akb.cnd

index ae2d235a3d8e8e242b5dda4a19a87bf3ff91a42c..d52b6ed1a76e92c00c5afced4a6ae9a17377eb6b 100644 (file)
@@ -1,11 +1,12 @@
 package org.argeo.slc.akb.ui.composites;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.jcr.Node;
 import javax.jcr.Property;
 import javax.jcr.RepositoryException;
-import javax.jcr.Session;
 
 import org.argeo.eclipse.ui.utils.CommandUtils;
 import org.argeo.jcr.JcrUtils;
@@ -37,7 +38,8 @@ public class ItemTemplateTitleComposite extends Composite {
        // LogFactory.getLog(MixTitleComposite.class);
 
        private final AkbService akbService;
-       private final Node akbNode;
+       private final Node envNode;
+       private final Node itemNode;
        private final FormToolkit toolkit;
        private final IManagedForm form;
        // Don't forget to unregister on dispose
@@ -45,15 +47,26 @@ public class ItemTemplateTitleComposite extends Composite {
 
        // To enable set focus
        private Text titleTxt;
-       private Combo typeCmb;
+       private Combo aliasCmb;
 
        private List<Node> definedAliases;
 
+       /**
+        * 
+        * @param parent
+        * @param style
+        * @param toolkit
+        * @param form
+        * @param envNode
+        * @param itemNode
+        * @param akbService
+        */
        public ItemTemplateTitleComposite(Composite parent, int style,
-                       FormToolkit toolkit, IManagedForm form, Node akbNode,
-                       AkbService akbService) {
+                       FormToolkit toolkit, IManagedForm form, Node envNode,
+                       Node itemNode, AkbService akbService) {
                super(parent, style);
-               this.akbNode = akbNode;
+               this.envNode = envNode;
+               this.itemNode = itemNode;
                this.toolkit = toolkit;
                this.form = form;
                this.akbService = akbService;
@@ -75,23 +88,27 @@ public class ItemTemplateTitleComposite extends Composite {
 
                // Second line: alias management
                toolkit.createLabel(parent, "Alias");
-               typeCmb = new Combo(parent, SWT.READ_ONLY);
-               toolkit.adapt(typeCmb, false, false);
+               aliasCmb = new Combo(parent, SWT.READ_ONLY);
+               toolkit.adapt(aliasCmb, false, false);
                gd = new GridData(SWT.FILL, SWT.TOP, true, false, 3, 1);
-               typeCmb.setLayoutData(gd);
+               aliasCmb.setLayoutData(gd);
 
                final Link openAliasLk = new Link(parent, SWT.NONE);
                toolkit.adapt(openAliasLk, false, false);
-               openAliasLk.setText("<a> Edit Alias </a>");
+               openAliasLk.setText("<a>Edit Alias</a>");
                openAliasLk.addSelectionListener(new SelectionAdapter() {
                        @Override
                        public void widgetSelected(final SelectionEvent event) {
-                               int index = typeCmb.getSelectionIndex();
+                               int index = aliasCmb.getSelectionIndex();
                                if (index != -1) {
                                        Node currAlias = definedAliases.get(index);
                                        String id = AkbJcrUtils.getIdentifierQuietly(currAlias);
-                                       CommandUtils.callCommand(OpenAkbNodeEditor.ID,
-                                                       OpenAkbNodeEditor.PARAM_NODE_JCR_ID, id);
+                                       Map<String, String> params = new HashMap<String, String>();
+                                       params.put(OpenAkbNodeEditor.PARAM_NODE_JCR_ID, id);
+                                       params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID,
+                                                       AkbJcrUtils.getIdentifierQuietly(envNode));
+
+                                       CommandUtils.callCommand(OpenAkbNodeEditor.ID, params);
                                } else
                                        MessageDialog.openError(getShell(), "Error",
                                                        "No selected alias");
@@ -111,29 +128,29 @@ public class ItemTemplateTitleComposite extends Composite {
                        public void refresh() {
                                super.refresh();
                                // update display value
-                               AkbUiUtils.refreshFormTextWidget(titleTxt, akbNode,
+                               AkbUiUtils.refreshFormTextWidget(titleTxt, itemNode,
                                                Property.JCR_TITLE);
-                               AkbUiUtils.refreshFormTextWidget(descTxt, akbNode,
+                               AkbUiUtils.refreshFormTextWidget(descTxt, itemNode,
                                                Property.JCR_DESCRIPTION);
 
                                refreshTypeCmbValues();
-                               typeCmb.select(getCurrAliasIndex());
-                               typeCmb.setEnabled(AkbJcrUtils.isNodeCheckedOutByMe(akbNode));
+                               aliasCmb.select(getCurrAliasIndex());
+                               aliasCmb.setEnabled(AkbJcrUtils.isNodeCheckedOutByMe(itemNode));
                        }
                };
 
                // Listeners
-               AkbUiUtils.addTextModifyListener(titleTxt, akbNode, Property.JCR_TITLE,
-                               part);
-               AkbUiUtils.addTextModifyListener(descTxt, akbNode,
+               AkbUiUtils.addTextModifyListener(titleTxt, itemNode,
+                               Property.JCR_TITLE, part);
+               AkbUiUtils.addTextModifyListener(descTxt, itemNode,
                                Property.JCR_DESCRIPTION, part);
 
-               typeCmb.addModifyListener(new ModifyListener() {
+               aliasCmb.addModifyListener(new ModifyListener() {
                        @Override
                        public void modifyText(ModifyEvent event) {
                                try {
                                        int oldIndex = getCurrAliasIndex();
-                                       int selIndex = typeCmb.getSelectionIndex();
+                                       int selIndex = aliasCmb.getSelectionIndex();
 
                                        // insure something has really been modified
                                        if (selIndex < 0 || oldIndex == selIndex)
@@ -143,7 +160,7 @@ public class ItemTemplateTitleComposite extends Composite {
                                        Node newAlias = definedAliases.get(selIndex);
 
                                        // Only relies on the alias
-                                       akbNode.setProperty(AkbNames.AKB_USED_CONNECTOR, newAlias
+                                       itemNode.setProperty(AkbNames.AKB_USED_CONNECTOR, newAlias
                                                        .getProperty(Property.JCR_TITLE).getString());
                                        part.markDirty();
                                } catch (RepositoryException e) {
@@ -160,11 +177,12 @@ public class ItemTemplateTitleComposite extends Composite {
                List<Node> newAliases;
                try {
                        newAliases = JcrUtils.nodeIteratorToList(akbService
-                                       .getDefinedAliases(AkbJcrUtils.getCurrentTemplate(akbNode),
-                                                       AkbJcrUtils.getAliasTypeForNode(akbNode)));
+                                       .getDefinedAliases(
+                                                       AkbJcrUtils.getCurrentTemplate(itemNode),
+                                                       AkbJcrUtils.getAliasTypeForNode(itemNode)));
                } catch (RepositoryException e) {
                        throw new AkbException("Unable to get defined aliases for node "
-                                       + akbNode, e);
+                                       + itemNode, e);
                }
                boolean hasChanged = false;
                // manually ckeck if something has changed
@@ -187,7 +205,7 @@ public class ItemTemplateTitleComposite extends Composite {
                        int i = 0;
                        for (Node node : definedAliases)
                                names[i++] = AkbJcrUtils.get(node, Property.JCR_TITLE);
-                       typeCmb.setItems(names);
+                       aliasCmb.setItems(names);
                }
        }
 
@@ -198,25 +216,12 @@ public class ItemTemplateTitleComposite extends Composite {
         */
        private int getCurrAliasIndex() {
                try {
-                       String path = null;
-                       int currAliasIndex = -1;
-                       if (akbNode.hasProperty(AkbNames.AKB_USED_CONNECTOR))
-                               path = akbNode.getProperty(AkbNames.AKB_USED_CONNECTOR)
-                                               .getString();
-
-                       Session session = akbNode.getSession();
-                       if (path != null && session.nodeExists(path)) {
-                               for (int i = 0; i < definedAliases.size(); i++) {
-                                       if (path.equals(definedAliases.get(i).getPath())) {
-                                               currAliasIndex = i;
-                                               break;
-                                       }
-                               }
-                               // does not work
-                               // Node chosenAlias = session.getNode(path);
-                               // currAliasIndex = definedAliases.indexOf(chosenAlias);
-                       }
-                       return currAliasIndex;
+                       if (itemNode.hasProperty(AkbNames.AKB_USED_CONNECTOR)) {
+                               String aliasName = itemNode.getProperty(
+                                               AkbNames.AKB_USED_CONNECTOR).getString();
+                               return aliasCmb.indexOf(aliasName);
+                       } else
+                               return -1;
                } catch (RepositoryException re) {
                        throw new AkbException("Unable to retrieve current Alias", re);
                }
index 164dd5cb926e8a747907e50fa807594147b4fe87..b8840c5cf7ff4b5a75e5a3fe144b2ba43af876d0 100644 (file)
@@ -9,6 +9,7 @@ import javax.jcr.Session;
 import org.argeo.jcr.JcrUtils;
 import org.argeo.slc.akb.AkbException;
 import org.argeo.slc.akb.AkbService;
+import org.argeo.slc.akb.AkbTypes;
 import org.argeo.slc.akb.ui.AkbUiUtils;
 import org.argeo.slc.akb.utils.AkbJcrUtils;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -39,6 +40,10 @@ public abstract class AbstractAkbNodeEditor extends FormEditor {
 
        // Business Objects
        private Node akbNode;
+       // a template or an active environment
+       private Node envNode;
+       // shortcut
+       private boolean isTemplate;
 
        // Some constants
        private final static int SHORT_NAME_LENGHT = 10;
@@ -57,6 +62,8 @@ public abstract class AbstractAkbNodeEditor extends FormEditor {
                        session = repository.login();
                        AkbNodeEditorInput anei = (AkbNodeEditorInput) getEditorInput();
                        akbNode = session.getNodeByIdentifier(anei.getIdentifier());
+                       envNode = session.getNodeByIdentifier(anei.getEnvIdentifier());
+                       isTemplate = envNode.isNodeType(AkbTypes.AKB_ENV_TEMPLATE);
                        updatePartNameAndToolTip();
                } catch (RepositoryException e) {
                        throw new AkbException("Unable open editor for akb node", e);
@@ -87,13 +94,18 @@ public abstract class AbstractAkbNodeEditor extends FormEditor {
        }
 
        /* Pages management */
+       @SuppressWarnings("unused")
        @Override
        protected void addPages() {
                try {
-                       addPage(new ConnectorAliasPage(this, "mainPage", "Main"));
+                       if (isTemplate)
+                               addPage(new ConnectorAliasPage(this, "mainPage", "Main"));
                        // Add AKB Type specific pages
                        addOtherPages();
-                       addPage(new HistoryPage(this, "historyPage", "History"));
+                       // Use this when versioning is implemented
+                       // if (isTemplate)
+                       if (false)
+                               addPage(new HistoryPage(this, "historyPage", "History"));
                } catch (PartInitException e) {
                        throw new AkbException("Unable to initialise pages for editor "
                                        + getEditorId(), e);
@@ -150,6 +162,14 @@ public abstract class AbstractAkbNodeEditor extends FormEditor {
                return akbNode;
        }
 
+       protected Node getEnvNode() {
+               return envNode;
+       }
+
+       protected boolean isTemplate() {
+               return isTemplate;
+       }
+
        /* LIFE CYCLE MANAGEMENT */
        @Override
        public void dispose() {
index 03a8216918b885ff2509613c723d303ebd2cdd15..bab2bb81cc0da7399684acaeea38733559dde2b8 100644 (file)
@@ -23,7 +23,8 @@ public abstract class AkbItemTemplateEditor extends AbstractAkbNodeEditor {
                parent.setLayout(AkbUiUtils.gridLayoutNoBorder());
                // First line main info
                ItemTemplateTitleComposite ittCmp = new ItemTemplateTitleComposite(
-                               parent, SWT.NO_FOCUS, getToolkit(), managedForm, getAkbNode(), getAkbService());
+                               parent, SWT.NO_FOCUS, getToolkit(), managedForm, getEnvNode(),
+                               getAkbNode(), getAkbService());
                GridData gd = new GridData(SWT.FILL, SWT.TOP, true, false);
                gd.minimumHeight = 250;
                ittCmp.setLayoutData(gd);
index 8e51c1405e002d9011b179f8f4c4c9e6a8b32dcf..5903f1d32241781ec2ee68c1520a26f7d055376a 100644 (file)
@@ -16,23 +16,27 @@ public class AkbNodeEditorInput implements IEditorInput {
        private final String jcrId;
 
        /**
-        * the Env Jcr ID cannot be null, JcrId can only be null if current node is
-        * an environment (active or template)
+        * @param envJcrId
+        *            can be null when current node is an environment (active or
+        *            template)
+        * @param jcrId
+        *            cannot be null
         */
+
        public AkbNodeEditorInput(String envJcrId, String jcrId) {
                this.envJcrId = envJcrId;
                this.jcrId = jcrId;
        }
 
        public String getIdentifier() {
-               if (jcrId == null)
-                       return envJcrId;
-               else
-                       return jcrId;
+               return jcrId;
        }
 
        public String getEnvIdentifier() {
-               return envJcrId;
+               if (envJcrId == null)
+                       return jcrId;
+               else
+                       return envJcrId;
        }
 
        public boolean exists() {
@@ -73,7 +77,7 @@ public class AkbNodeEditorInput implements IEditorInput {
                        return false;
                AkbNodeEditorInput other = (AkbNodeEditorInput) obj;
                if (!jcrId.equals(other.getIdentifier())
-                               || !envJcrId.equals(other.getEnvIdentifier()))
+                               || !getEnvIdentifier().equals(other.getEnvIdentifier()))
                        return false;
                return true;
        }
index 078db17baed85d3866876084e6d85825a4a24f6e..2bc5a047cbd197161de5812baadadd7ecf77fc86 100644 (file)
@@ -62,7 +62,7 @@ public class JdbcQueryTemplateEditor extends AkbItemTemplateEditor {
        @Override
        protected void addOtherPages() throws PartInitException {
                addPage(new JdbcTestPage(getAkbService(), this, "testPage", "Test",
-                               getAkbNode()));
+                               getEnvNode(), getAkbNode()));
        }
 
 }
index a91420c4389f8d6229b8f400ec062ab72b329224..8c5baca6304eb2c30385bbea5e3aded38d3c708a 100644 (file)
@@ -37,7 +37,8 @@ public class SshCommandTemplateEditor extends AkbItemTemplateEditor {
                outputDisplay
                                .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 
-               String output = getAkbService().executeCommand(getAkbNode());
+               String output = getAkbService().executeCommand(getEnvNode(),
+                               getAkbNode());
                outputDisplay.setText(output);
        }
 
index 309bedeba64a2699f8c666202607e27c3f24f7be..4877b82f478533d572a6db030d1c2e0c99e5904e 100644 (file)
@@ -37,7 +37,8 @@ public class SshFileTemplateEditor extends AkbItemTemplateEditor {
                outputDisplay
                                .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 
-               String output = getAkbService().retrieveFile(getAkbNode());
+               String output = getAkbService()
+                               .retrieveFile(getEnvNode(), getAkbNode());
                outputDisplay.setText(output);
        }
 
index b1245f12443e21f042cc9b53a8405461e1b50cda..0930701e7b9f656516e3a9dd8ca53be5311cbe47 100644 (file)
@@ -34,6 +34,7 @@ import org.argeo.eclipse.ui.utils.CommandUtils;
 import org.argeo.jcr.JcrUtils;\r
 import org.argeo.slc.akb.AkbException;\r
 import org.argeo.slc.akb.AkbNames;\r
+import org.argeo.slc.akb.AkbService;\r
 import org.argeo.slc.akb.AkbTypes;\r
 import org.argeo.slc.akb.ui.AkbUiPlugin;\r
 import org.argeo.slc.akb.ui.AkbUiUtils;\r
@@ -42,7 +43,7 @@ import org.argeo.slc.akb.ui.commands.OpenAkbNodeEditor;
 import org.argeo.slc.akb.ui.providers.AkbTreeLabelProvider;\r
 import org.argeo.slc.akb.ui.providers.TemplatesTreeContentProvider;\r
 import org.argeo.slc.akb.ui.utils.Refreshable;\r
-import org.argeo.slc.akb.ui.views.AkbTemplatesTreeView.ViewDoubleClickListener;\r
+import org.argeo.slc.akb.utils.AkbJcrUtils;\r
 import org.eclipse.jface.action.IContributionItem;\r
 import org.eclipse.jface.action.IMenuListener;\r
 import org.eclipse.jface.action.IMenuManager;\r
@@ -70,6 +71,7 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
 \r
        /* DEPENDENCY INJECTION */\r
        private Session session;\r
+       private AkbService akbService;\r
 \r
        // This page widgets\r
        private TreeViewer envTreeViewer;\r
@@ -235,8 +237,13 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
                                        .getSelection();\r
 \r
                        Node selected = (Node) selection.getFirstElement();\r
+                       Node currEnv = null;\r
 \r
                        boolean hasSelection = selected != null;\r
+\r
+                       if (hasSelection)\r
+                               currEnv = AkbJcrUtils.getCurrentTemplate(selected);\r
+\r
                        boolean isTemplate = hasSelection ? selected\r
                                        .isNodeType(AkbTypes.AKB_ENV_TEMPLATE) : false;\r
                        boolean isParentItemsFolder = hasSelection ? selected\r
@@ -247,9 +254,12 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
 \r
                        // Add Connector Alias\r
                        Map<String, String> params = new HashMap<String, String>();\r
-                       if (hasSelection && isTemplate)\r
+                       if (hasSelection && isTemplate) {\r
                                params.put(OpenAkbNodeEditor.PARAM_PARENT_NODE_JCR_ID,\r
                                                selected.getIdentifier());\r
+                               params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID,\r
+                                               currEnv.getIdentifier());\r
+                       }\r
                        params.put(OpenAkbNodeEditor.PARAM_NODE_TYPE,\r
                                        AkbTypes.AKB_CONNECTOR_ALIAS);\r
 \r
@@ -259,19 +269,26 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
 \r
                        // Item Submenu\r
                        params = new HashMap<String, String>();\r
-                       if (hasSelection)\r
+                       if (hasSelection) {\r
                                params.put(OpenAkbNodeEditor.PARAM_PARENT_NODE_JCR_ID,\r
                                                selected.getIdentifier());\r
+                               params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID,\r
+                                               currEnv.getIdentifier());\r
+                       }\r
                        refreshItemsSubmenu(menuManager, window, "menu.itemsSubmenu",\r
                                        "Add Item", isParentItemsFolder || isTemplate, params);\r
 \r
                        // Add Item Folder\r
                        params = new HashMap<String, String>();\r
-                       if (hasSelection)\r
+                       if (hasSelection) {\r
                                params.put(OpenAkbNodeEditor.PARAM_PARENT_NODE_JCR_ID,\r
                                                selected.getIdentifier());\r
+                               params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID,\r
+                                               currEnv.getIdentifier());\r
+                       }\r
                        params.put(OpenAkbNodeEditor.PARAM_NODE_TYPE,\r
                                        AkbTypes.AKB_ITEM_FOLDER);\r
+\r
                        AkbUiUtils.refreshParameterizedCommand(menuManager, window,\r
                                        "cmd.addItemFolder", OpenAkbNodeEditor.ID,\r
                                        "Add item folder", null, isParentItemsFolder || isTemplate,\r
@@ -490,9 +507,16 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
                        try {\r
                                if (obj instanceof Node) {\r
                                        Node node = (Node) obj;\r
-                                       CommandUtils.callCommand(OpenAkbNodeEditor.ID,\r
-                                                       OpenAkbNodeEditor.PARAM_NODE_JCR_ID,\r
+                                       Node currEnv = AkbJcrUtils.getCurrentTemplate(node);\r
+\r
+                                       // Add Connector Alias\r
+                                       Map<String, String> params = new HashMap<String, String>();\r
+                                       params.put(OpenAkbNodeEditor.PARAM_NODE_JCR_ID,\r
                                                        node.getIdentifier());\r
+                                       params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID,\r
+                                                       currEnv.getIdentifier());\r
+\r
+                                       CommandUtils.callCommand(OpenAkbNodeEditor.ID, params);\r
                                }\r
                        } catch (RepositoryException e) {\r
                                throw new AkbException("Cannot open " + obj, e);\r
@@ -514,4 +538,9 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
                        throw new AkbException("unable to log in for " + ID + " view");\r
                }\r
        }\r
+\r
+       public void setAkbService(AkbService akbService) {\r
+               this.akbService = akbService;\r
+\r
+       }\r
 }
\ No newline at end of file
index 86975817570dc329322ac418a17fc3cef0543798..5c806d1591bcfd823a4ee9ca442f47a2c956fb9e 100644 (file)
@@ -50,10 +50,27 @@ public interface AkbService {
        /**
         * If no active environment is defined, tries to execute query with default
         * connector defined for the template
+        * 
+        * @param activeEnvironment
+        * @param itemNode
+        * @return
         */
-       public PreparedStatement prepareJdbcQuery(Node activeEnvironment, Node node);
+       public PreparedStatement prepareJdbcQuery(Node activeEnvironment,
+                       Node itemNode);
 
-       public String executeCommand(Node activeEnvironment, Node node);
+       /**
+        * 
+        * @param activeEnvironment
+        * @param itemNode
+        * @return
+        */
+       public String executeCommand(Node activeEnvironment, Node itemNode);
 
-       public String retrieveFile(Node activeEnvironment, Node node);
+       /**
+        * 
+        * @param activeEnvironment
+        * @param itemNode
+        * @return
+        */
+       public String retrieveFile(Node activeEnvironment, Node itemNode);
 }
\ No newline at end of file
index bd79ace0f42a893c5f5b13aecbccf2880ae23522..0bb86c103e08c4f3162b97471acb2d1a7cbf21a2 100644 (file)
@@ -35,6 +35,7 @@ import org.argeo.slc.akb.AkbException;
 import org.argeo.slc.akb.AkbNames;
 import org.argeo.slc.akb.AkbService;
 import org.argeo.slc.akb.AkbTypes;
+import org.argeo.slc.akb.utils.AkbJcrUtils;
 import org.argeo.slc.jsch.SimpleUserInfo;
 import org.argeo.util.security.Keyring;
 
@@ -280,16 +281,16 @@ public class AkbServiceImpl implements AkbService, AkbNames {
        public PreparedStatement prepareJdbcQuery(Node activeEnv, Node node) {
                PreparedStatement statement = null;
                try {
-                       
+
                        if (node.isNodeType(AkbTypes.AKB_JDBC_QUERY)) {
-                               String connectorPath = node.getProperty(AKB_USED_CONNECTOR)
+                               String connectorAliasStr = node.getProperty(AKB_USED_CONNECTOR)
                                                .getString();
-                               Node connectorNode = node.getSession().getNode(connectorPath);
-                               
-                               if (activeEnv != null){
-                                       String aliasName = connectorNode.getProperty(Property.JCR_TITLE).getString();
-                                       connectorNode = getConnectorByAlias(activeEnv, aliasName); 
+                               // in case of a template passed env can be null
+                               if (activeEnv == null) {
+                                       activeEnv = AkbJcrUtils.getCurrentTemplate(node);
                                }
+                               Node connectorNode = getConnectorByAlias(activeEnv,
+                                               connectorAliasStr);
 
                                String sqlQuery = node.getProperty(AKB_QUERY_TEXT).getString();
 
@@ -324,12 +325,18 @@ public class AkbServiceImpl implements AkbService, AkbNames {
 
        public String executeCommand(Node activeEnv, Node node) {
                try {
+
+                       String connectorAliasStr = node.getProperty(AKB_USED_CONNECTOR)
+                                       .getString();
+                       // in case of a template passed env can be null
+                       if (activeEnv == null) {
+                               activeEnv = AkbJcrUtils.getCurrentTemplate(node);
+                       }
+                       Node connectorNode = getConnectorByAlias(activeEnv,
+                                       connectorAliasStr);
                        String command = node.getProperty(AkbNames.AKB_COMMAND_TEXT)
                                        .getString();
 
-                       String connectorPath = node.getProperty(AKB_USED_CONNECTOR)
-                                       .getString();
-                       Node connectorNode = node.getSession().getNode(connectorPath);
                        String connectorUrl = connectorNode.getProperty(AKB_CONNECTOR_URL)
                                        .getString();
                        String connectorUser = connectorNode
@@ -379,10 +386,16 @@ public class AkbServiceImpl implements AkbService, AkbNames {
                                        .getString();
                        String command = "cat " + filePath;
 
-                       // TODO do a proper scp
-                       String connectorPath = node.getProperty(AKB_USED_CONNECTOR)
+                       String connectorAliasStr = node.getProperty(AKB_USED_CONNECTOR)
                                        .getString();
-                       Node connectorNode = node.getSession().getNode(connectorPath);
+                       // in case of a template passed env can be null
+                       if (activeEnv == null) {
+                               activeEnv = AkbJcrUtils.getCurrentTemplate(node);
+                       }
+                       Node connectorNode = getConnectorByAlias(activeEnv,
+                                       connectorAliasStr);
+
+                       // TODO do a proper scp
                        String connectorUrl = connectorNode.getProperty(AKB_CONNECTOR_URL)
                                        .getString();
                        String connectorUser = connectorNode
index a98cde8b62af5e410e263fb3817632641c9298a0..25c4e726a1377bf430e97000f6a5a0050e28359f 100644 (file)
@@ -54,8 +54,9 @@ mixin
 //
 // GENERIC ITEM
 //
-[akb:item] > nt:unstructured
-// a path to the corresponding connector
+[akb:item] > nt:unstructured, mix:title
+// the alias name of the corresponding connector
+// Must be unique in a given template environment 
 - akb:usedConnector (STRING)