Author: tfennelly
Date: 2010-09-09 12:56:11 -0400 (Thu, 09 Sep 2010)
New Revision: 24847
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/freemarker/
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/freemarker/FreeMarkerTemplateBuilder.java
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/META-INF/MANIFEST.MF
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/csv/CSVFreeMarkerTemplateBuilder.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.templating/src/org/jboss/tools/smooks/templating/template/xml/XMLFreeMarkerTemplateBuilder.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/TreeNodeConnection.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/model/InputDataTreeNodeModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateNodeGraphicalModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerXMLNodeGraphicalModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/FreemarkerTemplateContentGraphModelProviderImpl.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-6994
Create DOM NodeModel template
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.templating/META-INF/MANIFEST.MF
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.templating/META-INF/MANIFEST.MF 2010-09-09
16:14:06 UTC (rev 24846)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.templating/META-INF/MANIFEST.MF 2010-09-09
16:56:11 UTC (rev 24847)
@@ -41,6 +41,7 @@
org.jboss.tools.smooks.templating.template,
org.jboss.tools.smooks.templating.template.csv,
org.jboss.tools.smooks.templating.template.exception,
+ org.jboss.tools.smooks.templating.template.freemarker,
org.jboss.tools.smooks.templating.template.util,
org.jboss.tools.smooks.templating.template.xml
Bundle-Activator: org.jboss.tools.smooks.templating.SmooksTemplatingActivator
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-09
16:14:06 UTC (rev 24846)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/TemplateBuilder.java 2010-09-09
16:56:11 UTC (rev 24847)
@@ -435,7 +435,7 @@
}
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$
+ 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$
}
public static void writeListEnd(StringWriter writer) {
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/csv/CSVFreeMarkerTemplateBuilder.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/csv/CSVFreeMarkerTemplateBuilder.java 2010-09-09
16:14:06 UTC (rev 24846)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/csv/CSVFreeMarkerTemplateBuilder.java 2010-09-09
16:56:11 UTC (rev 24847)
@@ -31,6 +31,7 @@
import org.jboss.tools.smooks.templating.template.*;
import org.jboss.tools.smooks.templating.template.exception.TemplateBuilderException;
import
org.jboss.tools.smooks.templating.template.exception.UnmappedCollectionNodeException;
+import org.jboss.tools.smooks.templating.template.freemarker.FreeMarkerTemplateBuilder;
import org.jboss.tools.smooks.templating.template.util.FreeMarkerUtil;
import org.milyn.xml.DomUtils;
@@ -45,7 +46,7 @@
*
* @author <a
href="mailto:tom.fennelly@jboss.com">tom.fennelly@jboss.com</a>
*/
-public class CSVFreeMarkerTemplateBuilder extends TemplateBuilder {
+public class CSVFreeMarkerTemplateBuilder extends FreeMarkerTemplateBuilder {
private char separatorChar;
private char quoteChar;
@@ -196,7 +197,7 @@
template.append('\n');
}
- template.append("<#list " + collectionMapping.getSrcPath() +
" as " + collectionMapping.getCollectionItemName() + ">\n");
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ template.append("<#list " +
FreeMarkerUtil.toPath(collectionMapping.getSrcPath(), isNodeModelSource()) + " as
" + collectionMapping.getCollectionItemName() + ">\n"); //$NON-NLS-1$
//$NON-NLS-2$ //$NON-NLS-3$
int fieldIndex = 0;
for(int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
@@ -209,7 +210,7 @@
if(fieldMapping != null) {
template.append(quoteChar);
-
template.append(FreeMarkerUtil.toFreeMarkerVariable((ValueMapping) fieldMapping));
//$NON-NLS-1$
+
template.append(FreeMarkerUtil.toFreeMarkerVariable((ValueMapping) fieldMapping,
isNodeModelSource())); //$NON-NLS-1$
template.append(quoteChar);
}
Added:
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
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/freemarker/FreeMarkerTemplateBuilder.java 2010-09-09
16:56:11 UTC (rev 24847)
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.templating.template.freemarker;
+
+import org.jboss.tools.smooks.templating.model.ModelBuilder;
+import org.jboss.tools.smooks.templating.model.ModelBuilderException;
+import org.jboss.tools.smooks.templating.template.TemplateBuilder;
+
+/**
+ * Abstract FreeMarker template builder.
+ * @author <a
href="mailto:tom.fennelly@gmail.com">tom.fennelly@gmail.com</a>
+ */
+public abstract class FreeMarkerTemplateBuilder extends TemplateBuilder {
+
+ private boolean nodeModelSource = false;
+
+ public FreeMarkerTemplateBuilder(ModelBuilder modelBuilder) throws ModelBuilderException
{
+ super(modelBuilder);
+ }
+
+ public boolean isNodeModelSource() {
+ return nodeModelSource;
+ }
+
+ public void setNodeModelSource(boolean nodeModelSource) {
+ this.nodeModelSource = nodeModelSource;
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/freemarker/FreeMarkerTemplateBuilder.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
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-09
16:14:06 UTC (rev 24846)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/util/FreeMarkerUtil.java 2010-09-09
16:56:11 UTC (rev 24847)
@@ -71,44 +71,71 @@
return (variable.startsWith("${") &&
variable.endsWith("}")); //$NON-NLS-1$ //$NON-NLS-2$
}
- public static String toFreeMarkerVariable(ValueMapping mapping) {
- StringBuilder builder = new StringBuilder();
- Properties encodeProperties = mapping.getEncodeProperties();
- String rawFormatting;
-
- if(encodeProperties == null) {
- encodeProperties = new Properties();
- }
-
- builder.append("${" + mapping.getSrcPath() + "!?"); //$NON-NLS-1$
//$NON-NLS-2$
-
- rawFormatting = encodeProperties.getProperty(ValueMapping.RAW_FORMATING_KEY);
- if(rawFormatting != null) {
- builder.append(rawFormatting);
- builder.append("}"); //$NON-NLS-1$
+ public static String toFreeMarkerVariable(ValueMapping mapping, boolean
isNodeModelSource) {
+ if(isNodeModelSource) {
+ return "${" + FreeMarkerUtil.toPath(mapping.getSrcPath(), true) +
"}";
} else {
- Class<?> valueType = mapping.getValueType();
- if(valueType != null) {
-
- if(valueType == java.util.Date.class) {
- String format = encodeProperties.getProperty(DateDecoder.FORMAT);
- if(format != null) {
- builder.append("string('" + format + "')}");
//$NON-NLS-1$ //$NON-NLS-2$
+ StringBuilder builder = new StringBuilder();
+ Properties encodeProperties = mapping.getEncodeProperties();
+ String rawFormatting;
+
+ if(encodeProperties == null) {
+ encodeProperties = new Properties();
+ }
+
+ builder.append("${" + mapping.getSrcPath() + "!?"); //$NON-NLS-1$
//$NON-NLS-2$
+
+ rawFormatting = encodeProperties.getProperty(ValueMapping.RAW_FORMATING_KEY);
+ if(rawFormatting != null) {
+ builder.append(rawFormatting);
+ builder.append("}"); //$NON-NLS-1$
+ } else {
+ Class<?> valueType = mapping.getValueType();
+ if(valueType != null) {
+
+ if(valueType == java.util.Date.class) {
+ String format = encodeProperties.getProperty(DateDecoder.FORMAT);
+ if(format != null) {
+ builder.append("string('" + format + "')}");
//$NON-NLS-1$ //$NON-NLS-2$
+ } else {
+ builder.append("string.medium}"); //$NON-NLS-1$
+ }
+ } else if(Number.class.isAssignableFrom(valueType)) {
+ builder.append("c}"); //$NON-NLS-1$
+ } else if(valueType == Double.TYPE || valueType == Float.TYPE || valueType ==
Integer.TYPE || valueType == Long.TYPE || valueType == Short.TYPE) {
+ builder.append("c}"); //$NON-NLS-1$
} else {
- builder.append("string.medium}"); //$NON-NLS-1$
+ builder.append("string}"); //$NON-NLS-1$
}
- } else if(Number.class.isAssignableFrom(valueType)) {
- builder.append("c}"); //$NON-NLS-1$
- } else if(valueType == Double.TYPE || valueType == Float.TYPE || valueType ==
Integer.TYPE || valueType == Long.TYPE || valueType == Short.TYPE) {
- builder.append("c}"); //$NON-NLS-1$
} else {
builder.append("string}"); //$NON-NLS-1$
}
- } else {
- builder.append("string}"); //$NON-NLS-1$
}
+
+ return builder.toString();
}
-
- return builder.toString();
}
+
+ public static String toPath(String srcPath, boolean nodeModelSource) {
+ if(nodeModelSource) {
+ StringBuilder builder = new StringBuilder();
+ String[] tokens = srcPath.split("\\.");
+
+ builder.append(".vars[\"").append(tokens[0]).append("\"]");
+ if(tokens.length > 1) {
+ builder.append("[\"");
+ for(int i = 1; i < tokens.length; i++) {
+ if(i > 1) {
+ builder.append("/");
+ }
+ builder.append(tokens[i]);
+ }
+ builder.append("\"]");
+ }
+
+ return builder.toString();
+ } else {
+ return srcPath;
+ }
+ }
}
\ No newline at end of file
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/xml/XMLFreeMarkerTemplateBuilder.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/xml/XMLFreeMarkerTemplateBuilder.java 2010-09-09
16:14:06 UTC (rev 24846)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/xml/XMLFreeMarkerTemplateBuilder.java 2010-09-09
16:56:11 UTC (rev 24847)
@@ -39,8 +39,8 @@
import org.jboss.tools.smooks.templating.model.ModelBuilder.ElementType;
import org.jboss.tools.smooks.templating.model.xml.XSDModelBuilder;
import org.jboss.tools.smooks.templating.template.*;
-import org.jboss.tools.smooks.templating.template.exception.InvalidMappingException;
import org.jboss.tools.smooks.templating.template.exception.TemplateBuilderException;
+import org.jboss.tools.smooks.templating.template.freemarker.FreeMarkerTemplateBuilder;
import org.jboss.tools.smooks.templating.template.util.FreeMarkerUtil;
import org.milyn.xml.DomUtils;
import org.milyn.xml.XmlUtil;
@@ -54,7 +54,7 @@
*
* @author <a
href="mailto:tom.fennelly@jboss.com">tom.fennelly@jboss.com</a>
*/
-public class XMLFreeMarkerTemplateBuilder extends TemplateBuilder {
+public class XMLFreeMarkerTemplateBuilder extends FreeMarkerTemplateBuilder {
private boolean omitXMLDeclaration = false;
@@ -138,7 +138,7 @@
if(mapping instanceof CollectionMapping) {
collectionMapping = (CollectionMapping) mapping;
TemplateBuilder.writeIndent(indent, templateWriter);
- templateWriter.write("<#list " + collectionMapping.getSrcPath() +
" as " + collectionMapping.getCollectionItemName() + ">\n");
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ templateWriter.write("<#list " +
FreeMarkerUtil.toPath(collectionMapping.getSrcPath(), isNodeModelSource()) + " as
" + collectionMapping.getCollectionItemName() + ">\n"); //$NON-NLS-1$
//$NON-NLS-2$ //$NON-NLS-3$
}
TemplateBuilder.writeIndent(indent, templateWriter);
@@ -175,7 +175,7 @@
Mapping mapping = getMapping(attribute);
if(mapping != null) {
- writeAttribute(attribute.getNodeName(),
FreeMarkerUtil.toFreeMarkerVariable((ValueMapping)mapping), templateWriter);
//$NON-NLS-1$
+ writeAttribute(attribute.getNodeName(),
FreeMarkerUtil.toFreeMarkerVariable((ValueMapping)mapping, isNodeModelSource()),
templateWriter); //$NON-NLS-1$
} else if(ModelBuilder.isRequired(attribute)) {
writeAttribute(attribute.getNodeName(), attribute.getValue(), templateWriter);
}
@@ -216,7 +216,7 @@
if(ModelBuilder.getElementType(element) == ElementType.simple) {
templateWriter.write(">"); //$NON-NLS-1$
if(mapping != null) {
- templateWriter.write(FreeMarkerUtil.toFreeMarkerVariable((ValueMapping)mapping));
+ templateWriter.write(FreeMarkerUtil.toFreeMarkerVariable((ValueMapping)mapping,
isNodeModelSource()));
} else {
templateWriter.write(ModelBuilder.REQUIRED);
}
@@ -342,7 +342,7 @@
}
String[] tokens = description.split(" +?"); //$NON-NLS-1$
- TemplateBuilder.writeListStart(templateRewriteBuffer, tokens[1], tokens[3]);
+ TemplateBuilder.writeListStart(templateRewriteBuffer, FreeMarkerUtil.toPath(tokens[1],
isNodeModelSource()), tokens[3]);
Enumeration<TemplateElement> children = element.children();
while(children != null && children.hasMoreElements()) {
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-09
16:14:06 UTC (rev 24846)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/model/AbstractSmooksGraphicalModel.java 2010-09-09
16:56:11 UTC (rev 24847)
@@ -18,10 +18,14 @@
import java.util.List;
import org.eclipse.swt.graphics.Image;
+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;
import org.jboss.tools.smooks.gef.tree.model.IConnectableNode;
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.model.IValidatableModel;
+import org.w3c.dom.Node;
/**
* @author Dart
@@ -89,6 +93,19 @@
this.parent = parent;
}
+ public AbstractSmooksGraphicalModel getModelRootNode() {
+
+ AbstractSmooksGraphicalModel modelRootParent = parent;
+ while(true) {
+ if(modelRootParent.getParent() == null || modelRootParent.getParent() instanceof
RootModel) {
+ break;
+ }
+ modelRootParent = modelRootParent.getParent();
+ }
+
+ return modelRootParent;
+ }
+
//
// protected AbstractSmooksGraphicalModel createChildModel(Object model,
// ITreeContentProvider contentProvider,
@@ -115,6 +132,16 @@
this.severity = severity;
support.firePropertyChange(PRO_SEVERITY_CHANGED, old, this.severity);
}
+
+ public Node getNode() {
+ if (data instanceof TagObject) {
+ return ((TagObject) data).getReferenceElement();
+ }
+ if (data instanceof TagPropertyObject) {
+ return ((TagPropertyObject) data).getReferenceAttibute();
+ }
+ return null;
+ }
public List<AbstractSmooksGraphicalModel> getChildren() {
if (children == null) {
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeConnection.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeConnection.java 2010-09-09
16:14:06 UTC (rev 24846)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeConnection.java 2010-09-09
16:56:11 UTC (rev 24847)
@@ -10,8 +10,15 @@
import org.eclipse.core.runtime.Assert;
import org.jboss.tools.smooks.configuration.editors.IFieldMarker;
+import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
+import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.graphical.editors.model.IValidatableModel;
+import org.jboss.tools.smooks.templating.template.CollectionMapping;
+import org.milyn.xml.DomUtils;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
/**
* @author DartPeng
@@ -136,7 +143,62 @@
}
this.severity = severity;
support.firePropertyChange(AbstractSmooksGraphicalModel.PRO_SEVERITY_CHANGED, old,
this.severity);
+ }
+
+ public String getTargetConnectionObjectRef() {
+ TreeNodeModel sourceNodeModel = (TreeNodeModel) sourceNode;
+ TreeNodeModel targetNodeModel = (TreeNodeModel) targetNode;
+ Node sourceDOMNode = sourceNodeModel.getNode();
+
+ // This will only work for sources that are modeled hierarchically with TagObjects etc
i.e. not Java
+ if(sourceDOMNode == null) {
+ throw new IllegalStateException("Invalid call to getTargetConnectionObjectRef()
for non AbstractXMLObject connection source."); //$NON-NLS-1$
+ }
+
+ StringBuilder builder = new StringBuilder();
+
+ // We first need to determine whether or not there's a parent Collection
connection
+ // on target side of the mapping...
+ TreeNodeConnection parentConnection = targetNodeModel.getParentCollectionConnection();
+ if(parentConnection != null) {
+ // If there's a parent Collection connection on the target side of the mapping,
+ // we need to locate the other side of that connection on the source model
+ // and then create an objectRef string based on the nodes between the source side of
the parent
+ // connection and the source side of the connection associated with this node
connection.
+ CollectionMapping collectionMapping = (CollectionMapping) parentConnection.getData();
+ Node sourceCollectionDomNode =
((TreeNodeModel)parentConnection.getSourceNode()).getNode();
+
+ // Work back to collection node...
+ Node currentNode = sourceDOMNode;
+ while(currentNode != null && currentNode != sourceCollectionDomNode) {
+ if(currentNode.getNodeType() != Node.ATTRIBUTE_NODE &&
currentNode.getNodeType() != Node.ELEMENT_NODE) {
+ currentNode = currentNode.getParentNode();
+ continue;
+ }
+
+ if(builder.length() > 0) {
+ builder.insert(0, '.');
+ }
+ if(currentNode.getNodeType() == Node.ATTRIBUTE_NODE) {
+ builder.insert(0, "@" + ((Attr)currentNode).getNodeName());
+ } else if(currentNode.getNodeType() == Node.ELEMENT_NODE) {
+ builder.insert(0, DomUtils.getName((Element)currentNode));
+ }
+ currentNode = currentNode.getParentNode();
+ }
+
+ if(currentNode == sourceCollectionDomNode) {
+ builder.insert(0, collectionMapping.getCollectionItemName() + ".");
+ }
+ } else {
+ // No parent connection... just use the connection source path...
+ builder.append(SmooksUIUtils.generateFullPath((IXMLStructuredObject)
sourceNodeModel.getData(), "."));
+ }
+
+ if(builder.length() > 1 && builder.charAt(0) == '.') {
+ builder.deleteCharAt(0);
+ }
+
+ return builder.toString();
}
-
-
}
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-09
16:14:06 UTC (rev 24846)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/gef/tree/model/TreeNodeModel.java 2010-09-09
16:56:11 UTC (rev 24847)
@@ -5,16 +5,25 @@
import java.util.Iterator;
import java.util.List;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
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 {
protected ITreeContentProvider contentProvider;
protected ILabelProvider labelProvider;
+
+ protected List<TreeNodeConnection> connections;
public TreeNodeModel(Object data, ITreeContentProvider contentProvider, ILabelProvider
labelProvider) {
super(data);
@@ -131,7 +140,69 @@
public boolean canLinkWithTarget(Object model) {
return true;
}
+
+ public boolean isValidValueNode() {
+ Object unwrappedData = AdapterFactoryEditingDomain.unwrap(data);
+ if (unwrappedData instanceof TagPropertyObject) {
+ return true;
+ } else if(unwrappedData instanceof TagObject) {
+ TagObject tagObject = (TagObject) unwrappedData;
+ return tagObject.getChildren().isEmpty();
+ }
+
+ return false;
+ }
+
+ public boolean isValidCollectionNode() {
+ Object unwrappedData = AdapterFactoryEditingDomain.unwrap(data);
+
+ if(unwrappedData instanceof TagObject) {
+ TagObject tagObject = (TagObject) unwrappedData;
+ return !tagObject.getChildren().isEmpty();
+ }
+
+ return false;
+ }
+
+ public List<TreeNodeConnection> getConnections() {
+ if(connections == null) {
+ connections = new ArrayList<TreeNodeConnection>();
+ }
+ return connections;
+ }
+
+ public void setConnections(List<TreeNodeConnection> connections) {
+ this.connections = connections;
+ }
+
+ protected TreeNodeConnection getConnection() {
+ if(connections == null || connections.isEmpty()) {
+ return null;
+ } else if(connections.size() > 1) {
+ throw new IllegalStateException("Invalid call to getConnection() for node that
has multiple connections. May be a source node? Use getConnections().");
//$NON-NLS-1$
+ }
+
+ return connections.get(0);
+ }
+
+ protected TreeNodeConnection getParentCollectionConnection() {
+ AbstractSmooksGraphicalModel parentObj = getParent();
+
+ if(parentObj == null || !(parentObj instanceof TreeNodeModel)) {
+ return null;
+ }
+
+ TreeNodeModel parentNode = (TreeNodeModel) parentObj;
+ TreeNodeConnection parentConnection = parentNode.getConnection();
+
+ if(parentConnection != null && parentConnection.getData() instanceof
CollectionMapping) {
+ return parentConnection;
+ }
+
+ return parentNode.getParentCollectionConnection();
+ }
+
public void setText(String text) {
// if (text != null && !text.equals(this.text)) {
// String oldtext = this.text;
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/InputDataTreeNodeModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/InputDataTreeNodeModel.java 2010-09-09
16:14:06 UTC (rev 24846)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/InputDataTreeNodeModel.java 2010-09-09
16:56:11 UTC (rev 24847)
@@ -15,6 +15,7 @@
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
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.gef.tree.model.TreeNodeModel;
@@ -69,16 +70,29 @@
*/
@Override
public boolean canLinkWithTarget(Object model) {
- Object data = ((AbstractSmooksGraphicalModel) model).getData();
- data = AdapterFactoryEditingDomain.unwrap(data);
- if (data instanceof EObject) {
+ TreeNodeModel targetNode = (TreeNodeModel) model;
+
+ if(targetNode == this || targetNode.getModelRootNode() == getModelRootNode()) {
+ return false;
+ }
+
+ Object data = AdapterFactoryEditingDomain.unwrap(targetNode.getData());
+
+ if (data instanceof TagPropertyObject) {
+ // Only OK to link to an attribute from a valid Value node...
+ return isValidValueNode();
+ } else if(data instanceof TagObject) {
+ if(targetNode.isValidValueNode()) {
+ return isValidValueNode();
+ } else if(targetNode.isValidCollectionNode()) {
+ return isValidCollectionNode();
+ }
+ } else if (data instanceof EObject) {
if (SmooksUIUtils.getSelectorFeature((EObject) data) != null) {
return true;
}
}
- if (data instanceof TagPropertyObject) {
- return true;
- }
+
return false;
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateNodeGraphicalModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateNodeGraphicalModel.java 2010-09-09
16:14:06 UTC (rev 24846)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateNodeGraphicalModel.java 2010-09-09
16:56:11 UTC (rev 24847)
@@ -19,6 +19,7 @@
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.jboss.tools.smooks.SmooksModelUtils;
+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;
@@ -26,16 +27,18 @@
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.model.AbstractResourceConfigChildNodeGraphModel;
-import org.jboss.tools.smooks.graphical.editors.model.AbstractResourceConfigGraphModel;
+import org.jboss.tools.smooks.graphical.editors.model.InputDataTreeNodeModel;
import org.jboss.tools.smooks.graphical.editors.model.javamapping.JavaBeanGraphModel;
import org.jboss.tools.smooks.model.freemarker.Freemarker;
import org.jboss.tools.smooks.model.freemarker.Template;
import org.jboss.tools.smooks.model.javabean12.BeanType;
import org.jboss.tools.smooks.model.javabean12.ValueType;
+import org.jboss.tools.smooks.templating.template.CollectionMapping;
import org.jboss.tools.smooks.templating.template.Mapping;
import org.jboss.tools.smooks.templating.template.ValueMapping;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
import org.jboss.tools.smooks.templating.template.exception.InvalidMappingException;
+import org.milyn.xml.DomUtils;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -46,19 +49,22 @@
public class FreemarkerTemplateNodeGraphicalModel extends TreeNodeModel {
protected IEditingDomainProvider domainProvider = null;
- public FreemarkerTemplateNodeGraphicalModel(Object data, ITreeContentProvider
contentProvider,
- ILabelProvider labelProvider, IEditingDomainProvider domainProvider) {
+ public FreemarkerTemplateNodeGraphicalModel(Object data,
+ ITreeContentProvider contentProvider, ILabelProvider labelProvider,
+ IEditingDomainProvider domainProvider) {
super(data, contentProvider, labelProvider);
this.domainProvider = domainProvider;
}
protected TemplateBuilder getTemplateBuilder() {
AbstractSmooksGraphicalModel parent = this;
- while (parent != null && !(parent instanceof FreemarkerTemplateGraphicalModel))
{
+ while (parent != null
+ && !(parent instanceof FreemarkerTemplateGraphicalModel)) {
parent = parent.getParent();
}
if (parent instanceof FreemarkerTemplateGraphicalModel) {
- return ((FreemarkerTemplateGraphicalModel) parent).getTemplateBuilder();
+ return ((FreemarkerTemplateGraphicalModel) parent)
+ .getTemplateBuilder();
}
return null;
}
@@ -84,7 +90,8 @@
TemplateBuilder builder = getTemplateBuilder();
Template template = null;
AbstractSmooksGraphicalModel templateGraph = this;
- while (templateGraph != null && !(templateGraph instanceof
FreemarkerTemplateGraphicalModel)) {
+ while (templateGraph != null
+ && !(templateGraph instanceof FreemarkerTemplateGraphicalModel)) {
templateGraph = templateGraph.getParent();
}
Object data = templateGraph.getData();
@@ -100,7 +107,8 @@
} catch (Exception e) {
e.printStackTrace();
}
- SmooksModelUtils.setCDATAToSmooksType(domainProvider.getEditingDomain(), template,
content);
+ SmooksModelUtils.setCDATAToSmooksType(
+ domainProvider.getEditingDomain(), template, content);
}
}
@@ -112,96 +120,158 @@
* (org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection)
*/
@Override
- public void addTargetConnection(TreeNodeConnection connection,
AbstractSmooksGraphicalModel sourceNode) {
+ public void addTargetConnection(TreeNodeConnection connection,
AbstractSmooksGraphicalModel source) {
+ if(!getConnections().isEmpty()) {
+ return;
+ }
+
TemplateBuilder builder = getTemplateBuilder();
Object obj = this.getData();
- Node node = null;
+ Node targetNode = null;
+ Node sourceNode = source.getNode();
+ TreeNodeModel mappingSourceNode = (TreeNodeModel) source;
+
if (obj instanceof TagObject) {
- node = ((TagObject) obj).getReferenceElement();
- }
+ targetNode = ((TagObject) obj).getReferenceElement();
+ }
if (obj instanceof TagPropertyObject) {
- node = ((TagPropertyObject) obj).getReferenceAttibute();
- }
- if (builder == null || node == null)
+ targetNode = ((TagPropertyObject) obj).getReferenceAttibute();
+ }
+ if (builder == null || targetNode == null) {
return;
+ }
if (connection.getData() != null) {
// ignore
}
+
try {
if (isCollectionConnection(connection)) {
- AbstractSmooksGraphicalModel beanGraph = connection.getSourceNode();
+ CollectionMapping mapping = null;
- Object jobj = (Object) beanGraph.getData();
- jobj = AdapterFactoryEditingDomain.unwrap(jobj);
-
- String collectionName = null;
- List<AbstractSmooksGraphicalModel> javabeanChildren =
beanGraph.getChildrenWithoutDynamic();
- for (Iterator<?> iterator = javabeanChildren.iterator(); iterator.hasNext();)
{
- AbstractSmooksGraphicalModel abstractSmooksGraphicalModel =
(AbstractSmooksGraphicalModel) iterator
- .next();
- Object javabean = abstractSmooksGraphicalModel.getData();
- javabean = AdapterFactoryEditingDomain.unwrap(javabean);
- if (javabean instanceof org.jboss.tools.smooks.model.javabean12.WiringType) {
- collectionName = ((org.jboss.tools.smooks.model.javabean12.WiringType)
javabean).getBeanIdRef();
+ // if it's a directly mapping
+ if (mappingSourceNode instanceof InputDataTreeNodeModel) {
+ if(sourceNode == null) {
+ return;
}
+
+ Object data = mappingSourceNode.getData();
+ String mappingString = connection.getTargetConnectionObjectRef();
+ String collectionItemName = normalizeFreemarkerVariable(DomUtils.getName((Element)
sourceNode));
+ mapping = builder.addCollectionMapping(mappingString, (Element) targetNode,
collectionItemName);
+ } else {
+ AbstractSmooksGraphicalModel beanGraph = connection.getSourceNode();
+
+ Object jobj = (Object) beanGraph.getData();
+ jobj = AdapterFactoryEditingDomain.unwrap(jobj);
+
+ String collectionName = null;
+ List<AbstractSmooksGraphicalModel> javabeanChildren =
beanGraph.getChildrenWithoutDynamic();
+ for (AbstractSmooksGraphicalModel abstractSmooksGraphicalModel : javabeanChildren)
{
+ Object javabean = abstractSmooksGraphicalModel.getData();
+
+ javabean = AdapterFactoryEditingDomain.unwrap(javabean);
+ if (javabean instanceof org.jboss.tools.smooks.model.javabean12.WiringType) {
+ collectionName = ((org.jboss.tools.smooks.model.javabean12.WiringType)
javabean).getBeanIdRef();
+ }
+ }
+ BeanType javabeanModel = (BeanType) jobj;
+ mapping = builder.addCollectionMapping(javabeanModel.getBeanId(), (Element)
targetNode, collectionName);
}
- BeanType javabeanModel = (BeanType) jobj;
- Mapping mapping = builder.addCollectionMapping(javabeanModel.getBeanId(), (Element)
node,
- collectionName);
+
connection.setData(mapping);
}
if (isMappingValueConnection(connection)) {
- AbstractSmooksGraphicalModel mappingSourceNode = connection.getSourceNode();
- JavaBeanGraphModel collectionJavaBean =
getCollectionRootBeanModel(mappingSourceNode);
String mappingString = null;
- if (collectionJavaBean == null) {
- // if there isn't collection bean , get the node's parent as
- // the top level bean
- AbstractSmooksGraphicalModel parentSourceNode = mappingSourceNode;
- while (parentSourceNode != null && !(parentSourceNode instanceof
JavaBeanGraphModel)) {
- parentSourceNode = parentSourceNode.getParent();
+
+ // if it's a directly mapping
+ if (mappingSourceNode instanceof InputDataTreeNodeModel) {
+ Object data = mappingSourceNode.getData();
+ mappingString = connection.getTargetConnectionObjectRef();
+ } else {
+ JavaBeanGraphModel collectionJavaBean =
getCollectionRootBeanModel(mappingSourceNode);
+
+ if (collectionJavaBean == null) {
+ // if there isn't collection bean , get the node's
+ // parent as
+ // the top level bean
+ AbstractSmooksGraphicalModel parentSourceNode = mappingSourceNode;
+
+ while (parentSourceNode != null && !(parentSourceNode instanceof
JavaBeanGraphModel)) {
+ parentSourceNode = parentSourceNode.getParent();
+ }
+
+ collectionJavaBean = (JavaBeanGraphModel) parentSourceNode;
+ mappingString =
FreemarkerCSVContentGenerator.generateFullJavaSourcePathString(mappingSourceNode,
collectionJavaBean);
+ } else {
+ mappingString = FreemarkerCSVContentGenerator
+ .generateJavaSourcePathWithoutRootNode(
+ mappingSourceNode, collectionJavaBean);
}
- collectionJavaBean = (JavaBeanGraphModel) parentSourceNode;
- mappingString =
FreemarkerCSVContentGenerator.generateFullJavaSourcePathString(mappingSourceNode,
- collectionJavaBean);
- } else {
- mappingString =
FreemarkerCSVContentGenerator.generateJavaSourcePathWithoutRootNode(
- mappingSourceNode, collectionJavaBean);
}
-
- ValueMapping mapping = builder.addValueMapping(mappingString, node);
- if(sourceNode instanceof AbstractResourceConfigChildNodeGraphModel) {
- ((AbstractResourceConfigChildNodeGraphModel)sourceNode).addMappingTypeInfo(mapping);
+
+ ValueMapping mapping = builder.addValueMapping(mappingString, targetNode);
+ if (source instanceof AbstractResourceConfigChildNodeGraphModel) {
+ ((AbstractResourceConfigChildNodeGraphModel) source)
+ .addMappingTypeInfo(mapping);
}
-
+
connection.setData(mapping);
}
+
+ getConnections().add(connection);
+ mappingSourceNode.getConnections().add(connection);
+
changeFreemarkerContents();
- super.addTargetConnection(connection, sourceNode);
+ super.addTargetConnection(connection, source);
} catch (InvalidMappingException e) {
e.printStackTrace();
}
}
- protected JavaBeanGraphModel getCollectionRootBeanModel(AbstractSmooksGraphicalModel
sourceNode) {
+ private String normalizeFreemarkerVariable(String variableName) {
+ StringBuilder builder = new StringBuilder();
+ int len = variableName.length();
+
+ for(int i = 0; i < len; i++) {
+ char theChar = variableName.charAt(i);
+
+ if(Character.isLetterOrDigit(theChar)) {
+ builder.append(theChar);
+ } else {
+ builder.append('_');
+ }
+ }
+
+ return builder.toString();
+ }
+
+ protected JavaBeanGraphModel getCollectionRootBeanModel(
+ AbstractSmooksGraphicalModel sourceNode) {
AbstractSmooksGraphicalModel parentNodeBean = sourceNode;
- while (parentNodeBean != null && !(parentNodeBean instanceof
JavaBeanGraphModel)) {
+ while (parentNodeBean != null
+ && !(parentNodeBean instanceof JavaBeanGraphModel)) {
parentNodeBean = parentNodeBean.getParent();
}
- if (parentNodeBean != null && parentNodeBean instanceof JavaBeanGraphModel) {
+ if (parentNodeBean != null
+ && parentNodeBean instanceof JavaBeanGraphModel) {
// get the bean reference links
- List<TreeNodeConnection> connections = parentNodeBean.getTargetConnections();
- for (Iterator<?> iterator = connections.iterator(); iterator.hasNext();) {
- TreeNodeConnection treeNodeConnection = (TreeNodeConnection) iterator.next();
+ List<TreeNodeConnection> connections = parentNodeBean
+ .getTargetConnections();
+ for (Iterator<?> iterator = connections.iterator(); iterator
+ .hasNext();) {
+ TreeNodeConnection treeNodeConnection = (TreeNodeConnection) iterator
+ .next();
// check if the node is "collection bean" node , if is not ,
// check its parent node.
- AbstractSmooksGraphicalModel collectionJavaBean =
treeNodeConnection.getSourceNode();
+ AbstractSmooksGraphicalModel collectionJavaBean = treeNodeConnection
+ .getSourceNode();
collectionJavaBean = collectionJavaBean.getParent();
if (collectionJavaBean instanceof JavaBeanGraphModel) {
Object data = collectionJavaBean.getData();
data = AdapterFactoryEditingDomain.unwrap(data);
if (data != null && data instanceof EObject) {
- if (SmooksUIUtils.isCollectionJavaGraphModel((EObject) data)) {
+ if (SmooksUIUtils
+ .isCollectionJavaGraphModel((EObject) data)) {
return (JavaBeanGraphModel) collectionJavaBean;
// check if it was linked with the "many" template
// node
@@ -239,16 +309,21 @@
}
protected boolean isCollectionConnection(TreeNodeConnection connection) {
- AbstractSmooksGraphicalModel sourceNode = connection.getSourceNode();
- AbstractSmooksGraphicalModel targetNode = connection.getTargetNode();
+ TreeNodeModel sourceNode = (TreeNodeModel) connection.getSourceNode();
+ TreeNodeModel targetNode = (TreeNodeModel) connection.getTargetNode();
Object targetData = targetNode.getData();
Object data = sourceNode.getData();
- if (data instanceof EObject && targetData instanceof IFreemarkerTemplateModel)
{
- if (SmooksUIUtils.isCollectionJavaGraphModel((EObject) data)
- && ((IFreemarkerTemplateModel) targetData).isManyOccurs()) {
- return true;
- }
+
+ if(targetData instanceof IFreemarkerTemplateModel &&
!((IFreemarkerTemplateModel) targetData).isManyOccurs()) {
+ return false;
}
+
+ if (data instanceof EObject &&
SmooksUIUtils.isCollectionJavaGraphModel((EObject) data)) {
+ return true;
+ } else if(sourceNode.isValidCollectionNode() &&
targetNode.isValidCollectionNode()) {
+ return true;
+ }
+
return false;
}
@@ -270,12 +345,15 @@
*/
@Override
public void removeTargetConnection(TreeNodeConnection connection) {
+ ((TreeNodeModel)connection.getSourceNode()).getConnections().remove(connection);
+ getConnections().remove(connection);
+
try {
TemplateBuilder builder = getTemplateBuilder();
Object mapping = connection.getData();
if (builder == null || mapping == null)
return;
- if (mapping instanceof ValueMapping) {
+ if (mapping instanceof Mapping) {
builder.removeMapping((Mapping) mapping);
changeFreemarkerContents();
}
@@ -294,9 +372,10 @@
* org.eclipse.jface.viewers.ILabelProvider)
*/
@Override
- protected TreeNodeModel createChildModel(Object model, ITreeContentProvider
contentProvider,
- ILabelProvider labelProvider) {
- return new FreemarkerTemplateNodeGraphicalModel(model, contentProvider, labelProvider,
this.domainProvider);
+ protected TreeNodeModel createChildModel(Object model,
+ ITreeContentProvider contentProvider, ILabelProvider labelProvider) {
+ return new FreemarkerTemplateNodeGraphicalModel(model, contentProvider,
+ labelProvider, this.domainProvider);
}
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerXMLNodeGraphicalModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerXMLNodeGraphicalModel.java 2010-09-09
16:14:06 UTC (rev 24846)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerXMLNodeGraphicalModel.java 2010-09-09
16:56:11 UTC (rev 24847)
@@ -10,13 +10,10 @@
******************************************************************************/
package org.jboss.tools.smooks.graphical.editors.model.freemarker;
-import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.domain.IEditingDomainProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
import org.jboss.tools.smooks.gef.tree.model.TreeNodeConnection;
-import org.jboss.tools.smooks.model.javabean12.BeanType;
/**
* @author Dart
@@ -35,25 +32,6 @@
*
* @seeorg.jboss.tools.smooks.graphical.editors.model.freemarker.
* FreemarkerTemplateNodeGraphicalModel
- * #isCollectionConnection(org.jboss.tools
- * .smooks.gef.tree.model.TreeNodeConnection)
- */
- @Override
- protected boolean isCollectionConnection(TreeNodeConnection connection) {
- AbstractSmooksGraphicalModel sourceGraph = connection.getSourceNode();
- Object data = sourceGraph.getData();
- data = AdapterFactoryEditingDomain.unwrap(data);
- if (data instanceof BeanType) {
-
- }
- return super.isCollectionConnection(connection);
- }
-
- /*
- * (non-Javadoc)
- *
- * @seeorg.jboss.tools.smooks.graphical.editors.model.freemarker.
- * FreemarkerTemplateNodeGraphicalModel
* #isMappingValueConnection(org.jboss.tools
* .smooks.gef.tree.model.TreeNodeConnection)
*/
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/FreemarkerTemplateContentGraphModelProviderImpl.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/FreemarkerTemplateContentGraphModelProviderImpl.java 2010-09-09
16:14:06 UTC (rev 24846)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/FreemarkerTemplateContentGraphModelProviderImpl.java 2010-09-09
16:56:11 UTC (rev 24847)
@@ -27,6 +27,7 @@
import org.jboss.tools.smooks.configuration.editors.xml.TagObject;
import org.jboss.tools.smooks.editor.ISmooksModelProvider;
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
+import org.jboss.tools.smooks.graphical.editors.TaskTypeManager;
import org.jboss.tools.smooks.graphical.editors.model.freemarker.CSVNodeModel;
import
org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerCSVNodeGraphicalModel;
import
org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerModelAnalyzer;
@@ -42,6 +43,7 @@
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
import org.jboss.tools.smooks.templating.template.csv.CSVFreeMarkerTemplateBuilder;
import org.jboss.tools.smooks.templating.template.exception.TemplateBuilderException;
+import org.jboss.tools.smooks.templating.template.freemarker.FreeMarkerTemplateBuilder;
import org.jboss.tools.smooks.templating.template.xml.XMLFreeMarkerTemplateBuilder;
import org.w3c.dom.Document;
@@ -51,7 +53,7 @@
*/
public class FreemarkerTemplateContentGraphModelProviderImpl implements
IFreemarkerTemplateContentGraphModelProvider {
- private TemplateBuilder templateBuilder = null;
+ private FreeMarkerTemplateBuilder templateBuilder = null;
/*
* (non-Javadoc)
@@ -164,6 +166,12 @@
templateBuilder = new XMLFreeMarkerTemplateBuilder(builder);
}
}
+ String templateProvider = SmooksModelUtils.getParamValue(freemarker.getParam(),
SmooksModelUtils.TEMPLATE_DATA_PROVIDER_PARAM_NAME);
+ if(templateProvider != null) {
+ templateBuilder.setNodeModelSource(templateProvider.trim().equals(TaskTypeManager.TASK_ID_INPUT));
+ } else {
+ templateBuilder.setNodeModelSource(false);
+ }
}
return templateBuilder;
}
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-09
16:14:06 UTC (rev 24846)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/SmooksFreemarkerTemplateGraphicalEditor.java 2010-09-09
16:56:11 UTC (rev 24847)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.smooks.graphical.editors.template;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -22,12 +23,15 @@
import org.jboss.tools.smooks.gef.model.AbstractSmooksGraphicalModel;
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.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.TemplateBuilder;
@@ -214,4 +218,20 @@
public String getID() {
return ID;
}
+
+ /* (non-Javadoc)
+ * @see
org.jboss.tools.smooks.graphical.editors.SmooksGraphicalEditorPart#createInputDataGraphModel()
+ */
+ @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)) {
+ return super.createInputDataGraphModel();
+ } else {
+ return Collections.EMPTY_LIST;
+ }
+ }
}