From b331d1e6936fc825ee2565f423e7e249dbecb687 Mon Sep 17 00:00:00 2001 From: Bruno Sinou Date: Thu, 14 Nov 2013 20:29:20 +0000 Subject: [PATCH] fix a few post refactoring UI Bugs git-svn-id: https://svn.argeo.org/slc/trunk@6614 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../ItemTemplateTitleComposite.java | 97 ++++++++++--------- .../akb/ui/editors/AbstractAkbNodeEditor.java | 24 ++++- .../akb/ui/editors/AkbItemTemplateEditor.java | 3 +- .../akb/ui/editors/AkbNodeEditorInput.java | 20 ++-- .../ui/editors/JdbcQueryTemplateEditor.java | 2 +- .../ui/editors/SshCommandTemplateEditor.java | 3 +- .../akb/ui/editors/SshFileTemplateEditor.java | 3 +- .../akb/ui/views/AkbTemplatesTreeView.java | 41 ++++++-- .../java/org/argeo/slc/akb/AkbService.java | 23 ++++- .../argeo/slc/akb/core/AkbServiceImpl.java | 39 +++++--- .../main/resources/org/argeo/slc/akb/akb.cnd | 5 +- 11 files changed, 176 insertions(+), 84 deletions(-) diff --git a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/composites/ItemTemplateTitleComposite.java b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/composites/ItemTemplateTitleComposite.java index ae2d235a3..d52b6ed1a 100644 --- a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/composites/ItemTemplateTitleComposite.java +++ b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/composites/ItemTemplateTitleComposite.java @@ -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 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(" Edit Alias "); + openAliasLk.setText("Edit Alias"); 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 params = new HashMap(); + 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 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); } diff --git a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AbstractAkbNodeEditor.java b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AbstractAkbNodeEditor.java index 164dd5cb9..b8840c5cf 100644 --- a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AbstractAkbNodeEditor.java +++ b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AbstractAkbNodeEditor.java @@ -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() { diff --git a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AkbItemTemplateEditor.java b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AkbItemTemplateEditor.java index 03a821691..bab2bb81c 100644 --- a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AkbItemTemplateEditor.java +++ b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AkbItemTemplateEditor.java @@ -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); diff --git a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AkbNodeEditorInput.java b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AkbNodeEditorInput.java index 8e51c1405..5903f1d32 100644 --- a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AkbNodeEditorInput.java +++ b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AkbNodeEditorInput.java @@ -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; } diff --git a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/JdbcQueryTemplateEditor.java b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/JdbcQueryTemplateEditor.java index 078db17ba..2bc5a047c 100644 --- a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/JdbcQueryTemplateEditor.java +++ b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/JdbcQueryTemplateEditor.java @@ -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())); } } diff --git a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/SshCommandTemplateEditor.java b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/SshCommandTemplateEditor.java index a91420c43..8c5baca63 100644 --- a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/SshCommandTemplateEditor.java +++ b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/SshCommandTemplateEditor.java @@ -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); } diff --git a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/SshFileTemplateEditor.java b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/SshFileTemplateEditor.java index 309bedeba..4877b82f4 100644 --- a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/SshFileTemplateEditor.java +++ b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/SshFileTemplateEditor.java @@ -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); } diff --git a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/views/AkbTemplatesTreeView.java b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/views/AkbTemplatesTreeView.java index b1245f124..0930701e7 100644 --- a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/views/AkbTemplatesTreeView.java +++ b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/views/AkbTemplatesTreeView.java @@ -34,6 +34,7 @@ import org.argeo.eclipse.ui.utils.CommandUtils; import org.argeo.jcr.JcrUtils; 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.ui.AkbUiPlugin; import org.argeo.slc.akb.ui.AkbUiUtils; @@ -42,7 +43,7 @@ import org.argeo.slc.akb.ui.commands.OpenAkbNodeEditor; import org.argeo.slc.akb.ui.providers.AkbTreeLabelProvider; import org.argeo.slc.akb.ui.providers.TemplatesTreeContentProvider; import org.argeo.slc.akb.ui.utils.Refreshable; -import org.argeo.slc.akb.ui.views.AkbTemplatesTreeView.ViewDoubleClickListener; +import org.argeo.slc.akb.utils.AkbJcrUtils; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; @@ -70,6 +71,7 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable { /* DEPENDENCY INJECTION */ private Session session; + private AkbService akbService; // This page widgets private TreeViewer envTreeViewer; @@ -235,8 +237,13 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable { .getSelection(); Node selected = (Node) selection.getFirstElement(); + Node currEnv = null; boolean hasSelection = selected != null; + + if (hasSelection) + currEnv = AkbJcrUtils.getCurrentTemplate(selected); + boolean isTemplate = hasSelection ? selected .isNodeType(AkbTypes.AKB_ENV_TEMPLATE) : false; boolean isParentItemsFolder = hasSelection ? selected @@ -247,9 +254,12 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable { // Add Connector Alias Map params = new HashMap(); - if (hasSelection && isTemplate) + if (hasSelection && isTemplate) { params.put(OpenAkbNodeEditor.PARAM_PARENT_NODE_JCR_ID, selected.getIdentifier()); + params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID, + currEnv.getIdentifier()); + } params.put(OpenAkbNodeEditor.PARAM_NODE_TYPE, AkbTypes.AKB_CONNECTOR_ALIAS); @@ -259,19 +269,26 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable { // Item Submenu params = new HashMap(); - if (hasSelection) + if (hasSelection) { params.put(OpenAkbNodeEditor.PARAM_PARENT_NODE_JCR_ID, selected.getIdentifier()); + params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID, + currEnv.getIdentifier()); + } refreshItemsSubmenu(menuManager, window, "menu.itemsSubmenu", "Add Item", isParentItemsFolder || isTemplate, params); // Add Item Folder params = new HashMap(); - if (hasSelection) + if (hasSelection) { params.put(OpenAkbNodeEditor.PARAM_PARENT_NODE_JCR_ID, selected.getIdentifier()); + params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID, + currEnv.getIdentifier()); + } params.put(OpenAkbNodeEditor.PARAM_NODE_TYPE, AkbTypes.AKB_ITEM_FOLDER); + AkbUiUtils.refreshParameterizedCommand(menuManager, window, "cmd.addItemFolder", OpenAkbNodeEditor.ID, "Add item folder", null, isParentItemsFolder || isTemplate, @@ -490,9 +507,16 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable { try { if (obj instanceof Node) { Node node = (Node) obj; - CommandUtils.callCommand(OpenAkbNodeEditor.ID, - OpenAkbNodeEditor.PARAM_NODE_JCR_ID, + Node currEnv = AkbJcrUtils.getCurrentTemplate(node); + + // Add Connector Alias + Map params = new HashMap(); + params.put(OpenAkbNodeEditor.PARAM_NODE_JCR_ID, node.getIdentifier()); + params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID, + currEnv.getIdentifier()); + + CommandUtils.callCommand(OpenAkbNodeEditor.ID, params); } } catch (RepositoryException e) { throw new AkbException("Cannot open " + obj, e); @@ -514,4 +538,9 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable { throw new AkbException("unable to log in for " + ID + " view"); } } + + public void setAkbService(AkbService akbService) { + this.akbService = akbService; + + } } \ No newline at end of file diff --git a/runtime/org.argeo.slc.akb/src/main/java/org/argeo/slc/akb/AkbService.java b/runtime/org.argeo.slc.akb/src/main/java/org/argeo/slc/akb/AkbService.java index 869758175..5c806d159 100644 --- a/runtime/org.argeo.slc.akb/src/main/java/org/argeo/slc/akb/AkbService.java +++ b/runtime/org.argeo.slc.akb/src/main/java/org/argeo/slc/akb/AkbService.java @@ -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 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 bd79ace0f..0bb86c103 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 @@ -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 diff --git a/runtime/org.argeo.slc.akb/src/main/resources/org/argeo/slc/akb/akb.cnd b/runtime/org.argeo.slc.akb/src/main/resources/org/argeo/slc/akb/akb.cnd index a98cde8b6..25c4e726a 100644 --- a/runtime/org.argeo.slc.akb/src/main/resources/org/argeo/slc/akb/akb.cnd +++ b/runtime/org.argeo.slc.akb/src/main/resources/org/argeo/slc/akb/akb.cnd @@ -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) -- 2.39.5