Author: tfennelly
Date: 2010-09-18 03:01:29 -0400 (Sat, 18 Sep 2010)
New Revision: 25007
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.runtime/.classpath
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/Mapping.java
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/TemplateBuilder.java
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/freemarker/FreeMarkerTemplateBuilder.java
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/util/FreeMarkerUtil.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactoryImpl.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/editparts/SmooksGraphUtil.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/InputDataContianerModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateGraphicalModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/SmooksFreemarkerTemplateGraphicalEditor.java
Log:
https://jira.jboss.org/browse/JBIDE-7046
Load DOM NodeModel template
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.runtime/.classpath
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.runtime/.classpath 2010-09-18 05:24:05 UTC
(rev 25006)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.runtime/.classpath 2010-09-18 07:01:29 UTC
(rev 25007)
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry exported="true" kind="lib"
path="libs/xstream-1.2.2.jar"/>
- <classpathentry exported="true" kind="lib"
path="libs/freemarker-2.3.11.jar"/>
+ <classpathentry exported="true" kind="lib"
path="libs/freemarker-2.3.11.jar"
sourcepath="/Users/tfennelly/.m2/repository/org/freemarker/freemarker/2.3.11/freemarker-2.3.11-sources.jar"/>
<classpathentry exported="true" kind="lib"
path="libs/opencsv-1.8.jar"/>
<classpathentry exported="true" kind="lib"
path="libs/jackson-core-lgpl-1.0.1.jar"/>
<classpathentry exported="true" kind="lib"
path="libs/milyn-commons-1.2.1.jar"/>
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/Mapping.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/Mapping.java 2010-09-18
05:24:05 UTC (rev 25006)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/Mapping.java 2010-09-18
07:01:29 UTC (rev 25007)
@@ -73,4 +73,16 @@
hideNodes.add(node);
}
+ public boolean isParentNodeMapping(Mapping mapping) {
+ Node parentNode = mapping.getMappingNode().getParentNode();
+
+ while(parentNode != null) {
+ if(parentNode == getMappingNode()) {
+ return true;
+ }
+ parentNode = parentNode.getParentNode();
+ }
+
+ return false;
+ }
}
\ No newline at end of file
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/TemplateBuilder.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/TemplateBuilder.java 2010-09-18
05:24:05 UTC (rev 25006)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/TemplateBuilder.java 2010-09-18
07:01:29 UTC (rev 25007)
@@ -434,6 +434,57 @@
}
}
+ /**
+ * Resolves the full model source path for the specified mapping.
+ * <p/>
+ * Takes enclosing {@link CollectionMappings} into account.
+ * @param mapping The mapping.
+ * @return The fully resolved path.
+ */
+ public String resolveMappingSrcPath(Mapping mapping) {
+ String[] srcPathTokens = mapping.getSrcPath().split("\\.");
+
+ if(srcPathTokens.length > 1) {
+ CollectionMapping parentCollection = findParentCollection(srcPathTokens[0], mapping);
+ if(parentCollection != null) {
+ StringBuilder pathBuilder = new StringBuilder();
+
+ pathBuilder.append(resolveMappingSrcPath(parentCollection));
+ for(int i = 1; i < srcPathTokens.length; i++) {
+ pathBuilder.append('.');
+ pathBuilder.append(srcPathTokens[i]);
+ }
+
+ return pathBuilder.toString();
+ }
+ }
+
+ // No parent collection, so just pass back the path...
+ return mapping.getSrcPath();
+ }
+
+ public CollectionMapping findParentCollection(String collectionName, Mapping mapping) {
+ CollectionMapping parentCollection = findCollection(collectionName);
+
+ if(parentCollection != null) {
+ if(parentCollection.isParentNodeMapping(mapping)) {
+ return parentCollection;
+ }
+ }
+
+ return null;
+ }
+
+ public CollectionMapping findCollection(String collectionName) {
+ for(Mapping mapping : mappings) {
+ if(mapping instanceof CollectionMapping && ((CollectionMapping)
mapping).getCollectionItemName().equals(collectionName)) {
+ return (CollectionMapping) mapping;
+ }
+ }
+
+ return null;
+ }
+
public static void writeListStart(StringWriter writer, String srcPath, String
collectionItemName) {
writer.write("<smk:list smk:srcPath='" + srcPath + "'
smk:collectionItemName=\"" + collectionItemName + "\"
xmlns:smk=\"" + ModelBuilder.NAMESPACE + "\">"); //$NON-NLS-1$
//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/freemarker/FreeMarkerTemplateBuilder.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/freemarker/FreeMarkerTemplateBuilder.java 2010-09-18
05:24:05 UTC (rev 25006)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/freemarker/FreeMarkerTemplateBuilder.java 2010-09-18
07:01:29 UTC (rev 25007)
@@ -12,7 +12,13 @@
import org.jboss.tools.smooks.templating.model.ModelBuilder;
import org.jboss.tools.smooks.templating.model.ModelBuilderException;
+import org.jboss.tools.smooks.templating.template.CollectionMapping;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
+import org.jboss.tools.smooks.templating.template.ValueMapping;
+import org.jboss.tools.smooks.templating.template.exception.InvalidMappingException;
+import org.jboss.tools.smooks.templating.template.util.FreeMarkerUtil;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
/**
* Abstract FreeMarker template builder.
@@ -33,4 +39,16 @@
public void setNodeModelSource(boolean nodeModelSource) {
this.nodeModelSource = nodeModelSource;
}
+
+ @Override
+ public ValueMapping addValueMapping(String srcPath, Node modelPath) throws
InvalidMappingException {
+ return super.addValueMapping(FreeMarkerUtil.normalizePath(srcPath), modelPath);
+ }
+
+ @Override
+ public CollectionMapping addCollectionMapping(String srcCollectionPath, Element
modelCollectionPath, String collectionItemName) throws InvalidMappingException {
+ return super.addCollectionMapping(FreeMarkerUtil.normalizePath(srcCollectionPath),
modelCollectionPath, collectionItemName);
+ }
+
+
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/util/FreeMarkerUtil.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/util/FreeMarkerUtil.java 2010-09-18
05:24:05 UTC (rev 25006)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/util/FreeMarkerUtil.java 2010-09-18
07:01:29 UTC (rev 25007)
@@ -20,6 +20,8 @@
package org.jboss.tools.smooks.templating.template.util;
import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.jboss.tools.smooks.templating.template.ValueMapping;
import org.jboss.tools.smooks.templating.template.exception.TemplateBuilderException;
@@ -138,4 +140,14 @@
return srcPath;
}
}
+
+ private static Pattern varsPattern =
Pattern.compile(".vars\\[\"(.*)\"\\]\\[\"(.*)\"\\]");
+ public static String normalizePath(String srcPath) {
+ Matcher matcher = varsPattern.matcher(srcPath);
+ if(matcher.matches()) {
+ return matcher.group(1) + "." + matcher.group(2).replace('/',
'.');
+ } else {
+ return srcPath;
+ }
+ }
}
\ No newline at end of file
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java 2010-09-18
05:24:05 UTC (rev 25006)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java 2010-09-18
07:01:29 UTC (rev 25007)
@@ -18,6 +18,7 @@
import java.util.List;
import org.eclipse.swt.graphics.Image;
+import org.jboss.tools.smooks.configuration.editors.xml.TagList;
import org.jboss.tools.smooks.configuration.editors.xml.TagObject;
import org.jboss.tools.smooks.configuration.editors.xml.TagPropertyObject;
import org.jboss.tools.smooks.gef.common.RootModel;
@@ -410,4 +411,97 @@
}
return messages;
}
+
+ public TreeNodeModel getModelNode(String srcPath) {
+ String[] pathTokens = srcPath.split("\\.");
+
+ if(pathTokens.length > 0) {
+ return getModeNode(pathTokens, 0);
+ }
+
+ return null;
+ }
+
+ public TreeNodeModel getModelNode(Node queryNode) {
+ List<AbstractSmooksGraphicalModel> thisNodeChildren = getChildren();
+
+ if(thisNodeChildren != null) {
+ for(AbstractSmooksGraphicalModel childNode : thisNodeChildren) {
+ if(!(childNode instanceof TreeNodeModel)) {
+ continue;
+ }
+
+ Object childData = childNode.getData();
+
+ if(queryNode.getNodeType() == Node.ELEMENT_NODE) {
+ if(childData instanceof TagObject &&
((TagObject)childData).getReferenceElement() == queryNode) {
+ return (TreeNodeModel) childNode;
+ }
+ } else if(queryNode.getNodeType() == Node.ATTRIBUTE_NODE) {
+ if(childData instanceof TagPropertyObject &&
((TagPropertyObject)childData).getReferenceAttibute() == queryNode) {
+ return (TreeNodeModel) childNode;
+ }
+ }
+
+ if(childData instanceof TagObject || childData instanceof TagList) {
+ TreeNodeModel matchedNode = childNode.getModelNode(queryNode);
+ if(matchedNode != null) {
+ return matchedNode;
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ public TreeNodeModel getModeNode(String[] pathTokens, int checkNodeIndex) {
+ String nodeName = pathTokens[checkNodeIndex];
+ boolean isAttribute = (nodeName.charAt(0) == '@');
+
+ if(isAttribute) {
+ nodeName = nodeName.substring(1);
+ }
+
+ List<AbstractSmooksGraphicalModel> thisNodeChildren = getChildren();
+ if(thisNodeChildren != null) {
+ for(AbstractSmooksGraphicalModel childNode : thisNodeChildren) {
+ if(!(childNode instanceof TreeNodeModel)) {
+ continue;
+ }
+
+ Object childData = childNode.getData();
+ boolean isMatch = false;
+
+ if(isAttribute) {
+ if(childData instanceof TagPropertyObject) {
+ TagPropertyObject tagProp = (TagPropertyObject) childData;
+ if(tagProp.getName().equals(nodeName)) {
+ isMatch = true;
+ }
+ }
+ } else {
+ if(childData instanceof TagObject) {
+ TagObject tagObj = (TagObject) childData;
+ if(tagObj.getName().equals(nodeName)) {
+ isMatch = true;
+ }
+
+ }
+ }
+
+ if(isMatch) {
+ if(checkNodeIndex == pathTokens.length - 1) {
+ // This is the node... return it...
+ return (TreeNodeModel) childNode;
+ } else {
+ // Drill into this child node and continue searching...
+ return childNode.getModeNode(pathTokens, checkNodeIndex + 1);
+ }
+ }
+ }
+ }
+
+ return null;
+ }
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeModel.java 2010-09-18
05:24:05 UTC (rev 25006)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeModel.java 2010-09-18
07:01:29 UTC (rev 25007)
@@ -9,13 +9,10 @@
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.swt.graphics.Image;
-import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
-import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
import org.jboss.tools.smooks.configuration.editors.xml.TagObject;
import org.jboss.tools.smooks.configuration.editors.xml.TagPropertyObject;
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.templating.template.CollectionMapping;
-import org.w3c.dom.Node;
public class TreeNodeModel extends AbstractSmooksGraphicalModel {
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactoryImpl.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactoryImpl.java 2010-09-18
05:24:05 UTC (rev 25006)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/ConnectionModelFactoryImpl.java 2010-09-18
07:01:29 UTC (rev 25007)
@@ -95,8 +95,7 @@
if (data != null) {
String beanid = data.toString();
Collection<EObject> beanIdRefModelList =
SmooksUIUtils.getBeanIdRefModelList(rootModel);
- for (Iterator<?> iterator = beanIdRefModelList.iterator(); iterator.hasNext();)
{
- EObject eObject = (EObject) iterator.next();
+ for (EObject eObject : beanIdRefModelList) {
EStructuralFeature idRefFeature = SmooksUIUtils.getBeanIDRefFeature(eObject);
if (idRefFeature == null)
continue;
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java 2010-09-18
05:24:05 UTC (rev 25006)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/SmooksGraphicalEditorPart.java 2010-09-18
07:01:29 UTC (rev 25007)
@@ -791,8 +791,7 @@
createInputDataGraphModel();
SmooksResourceListType listType = ((DocumentRoot) obj).getSmooksResourceList();
List<?> arcList = listType.getAbstractResourceConfig();
- for (Iterator<?> iterator = arcList.iterator(); iterator.hasNext();) {
- Object object = (Object) iterator.next();
+ for (Object object : arcList) {
AbstractSmooksGraphicalModel gmodel = createGraphModel(object);
if (gmodel != null) {
root.addTreeNode(gmodel);
@@ -868,35 +867,22 @@
public Collection<TreeNodeConnection>
createConnection(AbstractSmooksGraphicalModel model) {
ConnectionModelFactory connectionModelFactory = getConnectionModelFactory();
List<TreeNodeConnection> cs = new ArrayList<TreeNodeConnection>();
+ ISmooksModelProvider p = getSmooksModelProvider();
+
if (connectionModelFactory != null) {
if (connectionModelFactory.hasConnection(model)) {
- Collection<TreeNodeConnection> cList =
connectionModelFactory.createConnection(inputDataList,
- getSmooksResourceList(), root, model);
+ Collection<TreeNodeConnection> cList =
connectionModelFactory.createConnection(inputDataList, getSmooksResourceList(), root,
model);
+
if (cList != null) {
cs.addAll(cList);
}
}
- // if (connectionModelFactory.hasBeanIDConnection(model)) {
- // Collection<TreeNodeConnection> c =
- // connectionModelFactory.createBeanIDReferenceConnection(
- // getSmooksResourceList(), root, model);
- // if (c != null) {
- // cs.addAll(c);
- // }
- // }
- // // for xsl template
- //
- // if (connectionModelFactory.hasXSLConnection(model)) {
- // Collection<TreeNodeConnection> c =
- // connectionModelFactory.createXSLConnection(inputDataList, root,
- // model);
- // if (c != null) {
- // cs.addAll(c);
- // }
- // }
}
- if (cs.isEmpty())
+
+ if (cs.isEmpty()) {
return null;
+ }
+
return cs;
}
@@ -960,19 +946,31 @@
}
public void createConnection(List<AbstractSmooksGraphicalModel> children,
List<TreeNodeConnection> connections) {
- for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
- AbstractSmooksGraphicalModel abstractSmooksGraphicalModel =
(AbstractSmooksGraphicalModel) iterator.next();
- if (!(abstractSmooksGraphicalModel instanceof InputDataContianerModel)) {
- if (canCreateConnection(abstractSmooksGraphicalModel)) {
- Collection<TreeNodeConnection> c =
createConnection(abstractSmooksGraphicalModel);
- if (c != null) {
- connections.addAll(c);
+ Object parentTask = taskType.getParent();
+
+ if(parentTask instanceof TaskType) {
+ if(((TaskType) parentTask).getId().equals(TaskTypeManager.TASK_ID_INPUT)) {
+ for (AbstractSmooksGraphicalModel abstractSmooksGraphicalModel : children) {
+ if (abstractSmooksGraphicalModel instanceof InputDataContianerModel) {
+ createConnection(abstractSmooksGraphicalModel);
+ break;
}
+ }
+ } else if(((TaskType)
parentTask).getId().equals(TaskTypeManager.TASK_ID_JAVA_MAPPING)) {
+ for (AbstractSmooksGraphicalModel abstractSmooksGraphicalModel : children) {
+ if (!(abstractSmooksGraphicalModel instanceof InputDataContianerModel)) {
+ if (canCreateConnection(abstractSmooksGraphicalModel)) {
+ Collection<TreeNodeConnection> c =
createConnection(abstractSmooksGraphicalModel);
+ if (c != null) {
+ connections.addAll(c);
+ }
+ }
+ List<AbstractSmooksGraphicalModel> cchildren =
abstractSmooksGraphicalModel.getChildren();
+ createConnection(cchildren, connections);
+ }
}
- List<AbstractSmooksGraphicalModel> cchildren =
abstractSmooksGraphicalModel.getChildren();
- createConnection(cchildren, connections);
}
- }
+ }
}
private boolean canCreateConnection(AbstractSmooksGraphicalModel model) {
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/editparts/SmooksGraphUtil.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/editparts/SmooksGraphUtil.java 2010-09-18
05:24:05 UTC (rev 25006)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/editparts/SmooksGraphUtil.java 2010-09-18
07:01:29 UTC (rev 25007)
@@ -90,12 +90,7 @@
public static AbstractSmooksGraphicalModel findSmooksGraphModel(RootModel root, Object
object) {
if (root != null && object != null) {
- List<?> children = root.getChildren();
- for (Iterator<?> iterator = children.iterator(); iterator.hasNext();) {
- AbstractSmooksGraphicalModel child = (AbstractSmooksGraphicalModel) iterator.next();
-// if (child instanceof InputDataContianerModel) {
-// continue;
-// }
+ for (AbstractSmooksGraphicalModel child : root.getChildren()) {
AbstractSmooksGraphicalModel model = findGraphicalModel(child, object);
if (model != null) {
return model;
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/InputDataContianerModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/InputDataContianerModel.java 2010-09-18
05:24:05 UTC (rev 25006)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/InputDataContianerModel.java 2010-09-18
07:01:29 UTC (rev 25007)
@@ -10,9 +10,12 @@
******************************************************************************/
package org.jboss.tools.smooks.graphical.editors.model;
+import java.util.List;
+
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.jboss.tools.smooks.editor.ISmooksModelProvider;
+import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.gef.tree.model.TreeContainerModel;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
@@ -75,5 +78,39 @@
return false;
}
+ /* (non-Javadoc)
+ * @see
org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel#getChildrenWithoutDynamic()
+ */
+ @Override
+ public List<AbstractSmooksGraphicalModel> getChildrenWithoutDynamic() {
+ // TODO Auto-generated method stub
+ return super.getChildrenWithoutDynamic();
+ }
+ /* (non-Javadoc)
+ * @see org.jboss.tools.smooks.gef.tree.model.TreeNodeModel#getChildren()
+ */
+ @Override
+ public List<AbstractSmooksGraphicalModel> getChildren() {
+ // TODO Auto-generated method stub
+ return super.getChildren();
+ }
+
+ /* (non-Javadoc)
+ * @see
org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel#addChild(org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel)
+ */
+ @Override
+ public void addChild(AbstractSmooksGraphicalModel node) {
+ // TODO Auto-generated method stub
+ super.addChild(node);
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel#addChild(int,
org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel)
+ */
+ @Override
+ public void addChild(int index, AbstractSmooksGraphicalModel node) {
+ // TODO Auto-generated method stub
+ super.addChild(index, node);
+ }
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateGraphicalModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateGraphicalModel.java 2010-09-18
05:24:05 UTC (rev 25006)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateGraphicalModel.java 2010-09-18
07:01:29 UTC (rev 25007)
@@ -34,6 +34,7 @@
import org.jboss.tools.smooks.templating.model.ModelBuilderException;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
import org.jboss.tools.smooks.templating.template.exception.TemplateBuilderException;
+import org.w3c.dom.Node;
/**
* @author Dart
@@ -130,7 +131,8 @@
}
Template template = freemarker.getTemplate();
- if(template.getValue() == null) {
+ String templateData = template.getCDATA();
+ if(templateData == null) {
SmooksModelUtils.setCDATAToSmooksType(domainProvider.getEditingDomain(), template,
"<noMappings/>"); //$NON-NLS-1$
}
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/SmooksFreemarkerTemplateGraphicalEditor.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/SmooksFreemarkerTemplateGraphicalEditor.java 2010-09-18
05:24:05 UTC (rev 25006)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/SmooksFreemarkerTemplateGraphicalEditor.java 2010-09-18
07:01:29 UTC (rev 25007)
@@ -10,6 +10,8 @@
******************************************************************************/
package org.jboss.tools.smooks.graphical.editors.template;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -21,19 +23,22 @@
import org.jboss.tools.smooks.configuration.editors.xml.AbstractXMLObject;
import org.jboss.tools.smooks.editor.ISmooksModelProvider;
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
+import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
+import org.jboss.tools.smooks.gef.tree.model.TreeNodeModel;
import org.jboss.tools.smooks.graphical.editors.ConnectionModelFactory;
import org.jboss.tools.smooks.graphical.editors.GraphicalModelFactory;
-import
org.jboss.tools.smooks.graphical.editors.SmooksGraphicalEditorPaletteRootCreator.SmooksModelCreationFactory;
import org.jboss.tools.smooks.graphical.editors.SmooksGraphicalEditorPart;
import org.jboss.tools.smooks.graphical.editors.TaskTypeManager;
import org.jboss.tools.smooks.graphical.editors.autolayout.IAutoLayout;
import
org.jboss.tools.smooks.graphical.editors.editparts.freemarker.FreemarkerAutoLayout;
import org.jboss.tools.smooks.graphical.editors.model.IValidatableModel;
+import org.jboss.tools.smooks.graphical.editors.model.InputDataContianerModel;
import
org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerTemplateGraphicalModel;
import
org.jboss.tools.smooks.graphical.editors.model.freemarker.IFreemarkerTemplateModel;
import org.jboss.tools.smooks.graphical.editors.process.TaskType;
import org.jboss.tools.smooks.model.freemarker.Freemarker;
import org.jboss.tools.smooks.templating.model.ModelBuilder;
+import org.jboss.tools.smooks.templating.template.Mapping;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -50,9 +55,17 @@
public SmooksFreemarkerTemplateGraphicalEditor(ISmooksModelProvider provider) {
super(provider);
- // TODO Auto-generated constructor stub
+
}
+ private boolean isConnectedDirectlyToInputTask() {
+ Object parentTask = getTaskType().getParent();
+ if(parentTask instanceof TaskType && ((TaskType)
parentTask).getId().equals(TaskTypeManager.TASK_ID_INPUT)) {
+ return true;
+ }
+ return false;
+ }
+
/*
* (non-Javadoc)
*
@@ -64,7 +77,62 @@
FreemarkerTemplateEditFactory factory = new FreemarkerTemplateEditFactory();
return factory;
}
+
+ /* (non-Javadoc)
+ * @see
org.jboss.tools.smooks.graphical.editors.SmooksGraphicalEditorPart#createAllConnection(org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel)
+ */
+ @Override
+ public Collection<TreeNodeConnection>
createConnection(AbstractSmooksGraphicalModel model) {
+ if(isConnectedDirectlyToInputTask()) {
+ return createInputToTemplateConnections(model);
+ } else {
+ return super.createConnection(model);
+ }
+ }
+ private Collection<TreeNodeConnection>
createInputToTemplateConnections(AbstractSmooksGraphicalModel model) {
+ List<AbstractSmooksGraphicalModel> mappingModels = root.getChildren();
+
+ // Should be 2 models in the mappingModels list. First should be the passed in model
(the Input),
+ // while the second should be the FreeMarker (target) model.
+ if(mappingModels.size() == 2) {
+ AbstractSmooksGraphicalModel abstractSmooksGraphicalModel = mappingModels.get(0);
+ if(abstractSmooksGraphicalModel == model && abstractSmooksGraphicalModel
instanceof InputDataContianerModel) {
+ InputDataContianerModel inputModel = (InputDataContianerModel)
abstractSmooksGraphicalModel;
+
+ abstractSmooksGraphicalModel = mappingModels.get(1);
+ if(abstractSmooksGraphicalModel instanceof FreemarkerTemplateGraphicalModel) {
+ FreemarkerTemplateGraphicalModel freemarkerModel =
(FreemarkerTemplateGraphicalModel) abstractSmooksGraphicalModel;
+ TemplateBuilder templateBuilder = freemarkerModel.getTemplateBuilder();
+ List<Mapping> mappings = templateBuilder.getMappings();
+ List<TreeNodeConnection> connections = new
ArrayList<TreeNodeConnection>();
+
+ for(Mapping mapping : mappings) {
+ TreeNodeModel connectionSource =
inputModel.getModelNode(templateBuilder.resolveMappingSrcPath(mapping));
+ TreeNodeModel connectionTarget =
freemarkerModel.getModelNode(mapping.getMappingNode());
+
+ if(connectionSource != null && connectionTarget != null) {
+ TreeNodeConnection connection = new TreeNodeConnection(connectionSource,
connectionTarget);
+
+ connectionSource.getSourceConnections().add(connection);
+ connectionSource.fireConnectionChanged();
+ connectionTarget.getTargetConnections().add(connection);
+ connectionTarget.fireConnectionChanged();
+
+ connection.setData(mapping);
+ connections.add(connection);
+ }
+ }
+
+ return connections;
+ }
+ }
+ }
+
+ // Yes... not "nice" but
+ throw new RuntimeException("");
+ }
+
@Override
public void validateEnd(List<Diagnostic> diagnosticResult) {
cleanValidationMarker();
@@ -224,11 +292,7 @@
*/
@Override
protected List<AbstractSmooksGraphicalModel> createInputDataGraphModel() {
- TaskType task = getTaskType();
- Freemarker taskConfig = (Freemarker) task.getTaskResources().get(0);
- String templateDataProvider = SmooksModelUtils.getParamValue(taskConfig.getParam(),
SmooksModelUtils.TEMPLATE_DATA_PROVIDER_PARAM_NAME);
-
- if(templateDataProvider != null &&
templateDataProvider.trim().equals(TaskTypeManager.TASK_ID_INPUT)) {
+ if(isConnectedDirectlyToInputTask()) {
return super.createInputDataGraphModel();
} else {
return Collections.EMPTY_LIST;