Author: tfennelly
Date: 2010-01-17 13:36:40 -0500 (Sun, 17 Jan 2010)
New Revision: 19787
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XMLTemplateCreationWizardPage.java
Removed:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XSDStructuredDataWizardPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/freemarker/FreemarkerXMLTemplateCreationWizardPage.java
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/model/ModelBuilder.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.ui/src/org/jboss/tools/smooks/configuration/editors/xml/AbstractFileSelectionWizardPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/Messages.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XSDStructuredDataWizard.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/messages.properties
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerAttrModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerModelAnalyzer.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateModelLabelProvider.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateXMLModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/IFreemarkerTemplateModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/javamapping/JavaBeanChildGraphModel.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
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/TemplateWizardSelectionPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/freemarker/FreemarkerXMLTemplateCreationWizard.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/freemarker/messages.properties
Log:
https://jira.jboss.org/jira/browse/JBIDE-5245
Create FreeMarker Template builder for generating XML messages (from an XML Sample)
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/model/ModelBuilder.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/model/ModelBuilder.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/model/ModelBuilder.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -195,6 +195,12 @@
return Integer.parseInt(maxOccurs);
}
+
+ public static boolean isCollection(Element element) {
+ int maxOccurs = getMaxOccurs(element);
+
+ return (maxOccurs > 1 || maxOccurs == -1);
+ }
public static void setElementType(Element element, ElementType type) {
element.setAttributeNS(NAMESPACE, "smk:elementType", type.toString());
//$NON-NLS-1$
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-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.templating/src/org/jboss/tools/smooks/templating/template/TemplateBuilder.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -300,8 +300,7 @@
while (nextNode != null) {
if (nextNode.getNodeType() == Node.ELEMENT_NODE) {
- int maxOccurs = ModelBuilder.getMaxOccurs((Element) nextNode);
- if (maxOccurs > 1 || maxOccurs == -1) {
+ if(ModelBuilder.isCollection((Element) nextNode)) {
return (Element) nextNode;
}
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/AbstractFileSelectionWizardPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/AbstractFileSelectionWizardPage.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/AbstractFileSelectionWizardPage.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -436,7 +436,7 @@
String text = this.fileText.getText();
String error = null;
if (text == null || "".equals(text)) //$NON-NLS-1$
- error = "File's name can be null"; //$NON-NLS-1$
+ error = "File name cannot be null"; //$NON-NLS-1$
// File tempFile = new File(text);
// if(!tempFile.exists()){
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/Messages.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/Messages.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/Messages.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -6,12 +6,12 @@
private static final String BUNDLE_NAME =
"org.jboss.tools.smooks.configuration.editors.xml.messages"; //$NON-NLS-1$
public static String XMLStructuredDataWizard_Window_Title;
public static String XSDStructuredDataWizard_WizardTitle;
- public static String XSDStructuredDataWizardPage_Button_Load;
- public static String XSDStructuredDataWizardPage_Error_Must_Click_Load;
- public static String XSDStructuredDataWizardPage_Error_Must_Select_Root;
- public static String XSDStructuredDataWizardPage_Label_Select_Root;
- public static String XSDStructuredDataWizardPage_page_description;
- public static String XSDStructuredDataWizardPage_Page_Title;
+ public static String XMLTemplateCreationWizardPage_Button_Load;
+ public static String XMLTemplateCreationWizardPage_Error_Must_Click_Load;
+ public static String XMLTemplateCreationWizardPage_Error_Must_Select_Root;
+ public static String XMLTemplateCreationWizardPage_Label_Select_Root;
+ public static String XMLTemplateCreationWizardPage_page_description;
+ public static String XMLTemplateCreationWizardPage_Page_Title;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
Copied:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XMLTemplateCreationWizardPage.java
(from rev 19785,
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XSDStructuredDataWizardPage.java)
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XMLTemplateCreationWizardPage.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XMLTemplateCreationWizardPage.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -0,0 +1,361 @@
+/*******************************************************************************
+ * Copyright (c) 2008 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.configuration.editors.xml;
+
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.templating.model.ModelBuilderException;
+import org.jboss.tools.smooks.templating.model.xml.XSDModelBuilder;
+import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
+import org.xml.sax.SAXException;
+
+/**
+ * @author Dart (dpeng(a)redhat.com)
+ *
+ */
+public class XMLTemplateCreationWizardPage extends AbstractFileSelectionWizardPage {
+
+ private Throwable parsingError = null;
+
+ protected Combo createFromDropdown = null;
+
+ protected CheckboxTableViewer tableViewer = null;
+ protected Label tableViewerLabel;
+
+ private boolean fireEvent = true;
+
+ private String rootElementName = null;
+
+ protected Button loadXSDButton;
+
+ private TemplateSourceType templateSourceType = TemplateSourceType.xsd;
+
+ public static enum TemplateSourceType {
+ // Template from XML Schema
+ xsd,
+ // Template from an XML Sample
+ xml
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @seeorg.jboss.tools.smooks.configuration.editors.xml.
+ * AbstractFileSelectionWizardPage#loadedTheObject(java.lang.String)
+ */
+ @Override
+ protected Object loadedTheObject(String path) throws Exception {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public XMLTemplateCreationWizardPage(String pageName) {
+ super(pageName, new String[] { "xsd" }); //$NON-NLS-1$
+ this.setTitle(Messages.XMLTemplateCreationWizardPage_Page_Title);
+ this.setDescription(Messages.XMLTemplateCreationWizardPage_page_description);
+
+ this.templateSourceType = TemplateSourceType.xsd;
+ }
+
+ public TemplateSourceType getTemplateSourceType() {
+ return templateSourceType;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @seeorg.jboss.tools.smooks.configuration.editors.xml.
+ * AbstractFileSelectionWizardPage#changeWizardPageStatus()
+ */
+ @Override
+ protected void changeWizardPageStatus() {
+ super.changeWizardPageStatus();
+ String errorMessage = this.getErrorMessage();
+ if (errorMessage == null && templateSourceType == TemplateSourceType.xsd) {
+
+ if (reasourceLoaded) {
+ if (tableViewer.getCheckedElements() == null ||
tableViewer.getCheckedElements().length == 0) {
+ errorMessage = Messages.XMLTemplateCreationWizardPage_Error_Must_Select_Root;
+ }
+ } else {
+ errorMessage = Messages.XMLTemplateCreationWizardPage_Error_Must_Click_Load;
+ }
+ if(parsingError != null){
+ errorMessage = parsingError.getLocalizedMessage();
+ }
+ setErrorMessage(errorMessage);
+ setPageComplete(errorMessage == null);
+ }
+ }
+
+ /**
+ * @return the rootElementName
+ */
+ public String getRootElementName() {
+ return rootElementName;
+ }
+
+ /**
+ * @param rootElementName
+ * the rootElementName to set
+ */
+ public void setRootElementName(String rootElementName) {
+ this.rootElementName = rootElementName;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @seeorg.jboss.tools.smooks.configuration.editors.xml.
+ * AbstractFileSelectionWizardPage
+ * #createFilePathText(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ protected Text createFilePathText(Composite parent) {
+ fileTextComposite = new Composite(parent, SWT.NONE);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.grabExcessHorizontalSpace = true;
+ fileTextComposite.setLayoutData(gd);
+ GridLayout xsdtgl = new GridLayout();
+ xsdtgl.marginWidth = 0;
+ xsdtgl.marginHeight = 0;
+ xsdtgl.numColumns = 2;
+ fileTextComposite.setLayout(xsdtgl);
+
+ final Text fileText = new Text(fileTextComposite, SWT.BORDER);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ fileText.setLayoutData(gd);
+ fileText.addModifyListener(new ModifyListener() {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.
+ * swt.events.ModifyEvent)
+ */
+ public void modifyText(ModifyEvent e) {
+ reasourceLoaded = false;
+ if (tableViewer != null) {
+ tableViewer.setInput(Collections.emptyList());
+ }
+ }
+
+ });
+ gd.grabExcessHorizontalSpace = true;
+
+ loadXSDButton = new Button(fileTextComposite, SWT.NONE);
+ loadXSDButton.setText(Messages.XMLTemplateCreationWizardPage_Button_Load);
+ loadXSDButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ parsingError = null;
+ reasourceLoaded = false;
+ if (fileText.getText() == null || fileText.getText().length() == 0) {
+ changeWizardPageStatus();
+ return;
+ }
+
+ List<String> list;
+ try {
+ list = loadElement(fileText.getText());
+ if (list == null || list.isEmpty()) {
+ setErrorMessage("Can't get the elements in the XSD file.");
+ } else {
+ tableViewer.setInput(list);
+ reasourceLoaded = true;
+ }
+ } catch (InvocationTargetException e1) {
+ parsingError = e1.getTargetException();
+ while(parsingError instanceof InvocationTargetException){
+ parsingError = ((InvocationTargetException)parsingError).getTargetException();
+ }
+ } catch (IOException e1) {
+ parsingError = e1;
+ } catch (ModelBuilderException e1) {
+ parsingError = e1;
+ }
+ changeWizardPageStatus();
+ }
+
+ });
+ return fileText;
+ }
+
+ private List<String> loadElement(String path) throws InvocationTargetException,
IOException, ModelBuilderException {
+ List<String> elements = new ArrayList<String>();
+ if (path == null)
+ return null;
+ String pp = path.toLowerCase();
+ if (pp.endsWith(".wsdl")) { //$NON-NLS-1$
+ try {
+ List<XSDElementDeclaration> xsdDec = WSDLObjectAnalyzer.loadAllElement(path);
+ for (Iterator<?> iterator = xsdDec.iterator(); iterator.hasNext();) {
+ XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)
iterator.next();
+ elements.add(xsdElementDeclaration.getAliasName());
+ }
+ } catch (ParserConfigurationException e) {
+ throw new InvocationTargetException(e);
+ } catch (SAXException e) {
+ throw new InvocationTargetException(e);
+ }
+ }
+ String file = null;
+ file = SmooksUIUtils.parseFilePath(path);
+ XSDModelBuilder xsdModelBuilder = new XSDModelBuilder(URI.createFileURI(file));
+ Set<String> elementNames = xsdModelBuilder.getRootElementNames();
+ Iterator<String> it = elementNames.iterator();
+ while (it.hasNext()) {
+ String name = it.next();
+ elements.add(name);
+ }
+ return elements;
+ }
+
+ public void createControl(Composite parent) {
+ Composite mainComposite = new Composite(parent, SWT.NONE);
+ GridLayout gl = new GridLayout();
+ mainComposite.setLayout(gl);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ mainComposite.setLayoutData(gd);
+
+ Label fileTypeLabel = new Label(mainComposite, SWT.NONE);
+ fileTypeLabel.setText("Create Template From:");
+
+ createFromDropdown = new Combo(mainComposite, SWT.READ_ONLY | SWT.BORDER);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ initCombo(createFromDropdown);
+ createFromDropdown.setLayoutData(gd);
+ createFromDropdown.select(0);
+
+ createFromDropdown.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ updateTemplateSourceType();
+ }
+ });
+
+ Label separator = new Label(mainComposite, SWT.SEPARATOR | SWT.HORIZONTAL);
+ separator.setLayoutData(gd);
+
+ super.createControl(mainComposite);
+
+ mainComposite = (Composite) getControl();
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ tableViewerLabel = new Label(mainComposite, SWT.NONE);
+ tableViewerLabel.setLayoutData(gd);
+ tableViewerLabel.setText(Messages.XMLTemplateCreationWizardPage_Label_Select_Root);
+ tableViewer = CheckboxTableViewer.newCheckList(mainComposite, SWT.BORDER);
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 250;
+ tableViewer.getControl().setLayoutData(gd);
+
+ tableViewer.setContentProvider(new XSDListContentProvider());
+ tableViewer.setLabelProvider(new XSDListLabelProvider());
+ tableViewer.addCheckStateListener(new ICheckStateListener() {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jface.viewers.ICheckStateListener#checkStateChanged
+ * (org.eclipse.jface.viewers.CheckStateChangedEvent)
+ */
+ public void checkStateChanged(CheckStateChangedEvent event) {
+ if (!fireEvent)
+ return;
+ rootElementName = null;
+ fireEvent = false;
+ tableViewer.setAllChecked(false);
+ if (event.getChecked()) {
+ tableViewer.setChecked(event.getElement(), true);
+ Object checkElement = event.getElement();
+ if (checkElement instanceof String) {
+ rootElementName = (String) checkElement;
+ }
+ }
+ fireEvent = true;
+ changeWizardPageStatus();
+ }
+
+ });
+
+ this.setControl(mainComposite);
+ }
+
+ public Combo getCombo() {
+ return createFromDropdown;
+ }
+
+ protected void updateTemplateSourceType() {
+ switch (createFromDropdown.getSelectionIndex()) {
+ case 0 :
+ templateSourceType = TemplateSourceType.xsd;
+ break;
+ case 1 :
+ templateSourceType = TemplateSourceType.xml;
+ break;
+ default :
+ throw new IllegalStateException("Unexpected XML Template source selection. Code
must be updated to accomodate new source type.");
+ }
+
+ // Table should only be visible for XSD template sources...
+ tableViewer.getTable().setVisible(templateSourceType == TemplateSourceType.xsd);
+ tableViewerLabel.setVisible(templateSourceType == TemplateSourceType.xsd);
+ loadXSDButton.setEnabled(templateSourceType == TemplateSourceType.xsd);
+
+ // Reset the file browse filter...
+ setFileExtensionNames(new String[] {templateSourceType.toString()});
+ }
+
+ private void initCombo(Combo combo2) {
+ combo2.add("XSD");
+ combo2.add("Sample XML");
+ }
+
+ public String getInputType(){
+ if(createFromDropdown.getSelectionIndex() == 0){
+ return SmooksModelUtils.KEY_XML_FILE_TYPE_XSD;
+ }
+ if(createFromDropdown.getSelectionIndex() == 1){
+ return SmooksModelUtils.KEY_XML_FILE_TYPE_XML;
+ }
+ return null;
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XMLTemplateCreationWizardPage.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XSDStructuredDataWizard.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XSDStructuredDataWizard.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XSDStructuredDataWizard.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -33,7 +33,7 @@
@Override
protected AbstractFileSelectionWizardPage createAbstractFileSelectionWizardPage() {
// TODO Auto-generated method stub
- return new XSDStructuredDataWizardPage("XSD"); //$NON-NLS-1$
+ return new XMLTemplateCreationWizardPage("XSD"); //$NON-NLS-1$
}
/* (non-Javadoc)
@@ -48,7 +48,7 @@
*/
public Properties getProperties() {
Properties pro = new Properties();
- pro.setProperty("rootElement",
((XSDStructuredDataWizardPage)page).getRootElementName()); //$NON-NLS-1$
+ pro.setProperty("rootElement",
((XMLTemplateCreationWizardPage)page).getRootElementName()); //$NON-NLS-1$
return pro;
}
Deleted:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XSDStructuredDataWizardPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XSDStructuredDataWizardPage.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/XSDStructuredDataWizardPage.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -1,283 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 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.configuration.editors.xml;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.jface.viewers.CheckStateChangedEvent;
-import org.eclipse.jface.viewers.CheckboxTableViewer;
-import org.eclipse.jface.viewers.ICheckStateListener;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
-import org.jboss.tools.smooks.templating.model.ModelBuilderException;
-import org.jboss.tools.smooks.templating.model.xml.XSDModelBuilder;
-import org.xml.sax.SAXException;
-
-/**
- * @author Dart (dpeng(a)redhat.com)
- *
- */
-public class XSDStructuredDataWizardPage extends AbstractFileSelectionWizardPage {
-
- private Throwable parsingError = null;
-
- protected CheckboxTableViewer tableViewer = null;
-
- private boolean fireEvent = true;
-
- private String rootElementName = null;
-
- protected Button loadXSDButton;
-
- /*
- * (non-Javadoc)
- *
- * @seeorg.jboss.tools.smooks.configuration.editors.xml.
- * AbstractFileSelectionWizardPage#loadedTheObject(java.lang.String)
- */
- @Override
- protected Object loadedTheObject(String path) throws Exception {
- // TODO Auto-generated method stub
- return null;
- }
-
- public XSDStructuredDataWizardPage(String pageName, boolean multiSelect, Object[]
initSelections,
- List<ViewerFilter> filters) {
- super(pageName, multiSelect, initSelections, filters);
- this.setTitle(Messages.XSDStructuredDataWizardPage_Page_Title);
- this.setDescription(Messages.XSDStructuredDataWizardPage_page_description);
- }
-
- public XSDStructuredDataWizardPage(String pageName) {
- super(pageName, new String[] { "xsd", "wsdl" }); //$NON-NLS-1$
//$NON-NLS-2$
- this.setTitle(Messages.XSDStructuredDataWizardPage_Page_Title);
- this.setDescription(Messages.XSDStructuredDataWizardPage_page_description);
- }
-
- /*
- * (non-Javadoc)
- *
- * @seeorg.jboss.tools.smooks.configuration.editors.xml.
- * AbstractFileSelectionWizardPage#changeWizardPageStatus()
- */
- @Override
- protected void changeWizardPageStatus() {
- super.changeWizardPageStatus();
- String errorMessage = this.getErrorMessage();
- if (errorMessage == null) {
-
- if (reasourceLoaded) {
- if (tableViewer.getCheckedElements() == null ||
tableViewer.getCheckedElements().length == 0) {
- errorMessage = Messages.XSDStructuredDataWizardPage_Error_Must_Select_Root;
- }
- } else {
- errorMessage = Messages.XSDStructuredDataWizardPage_Error_Must_Click_Load;
- }
- if(parsingError != null){
- errorMessage = parsingError.getLocalizedMessage();
- }
- setErrorMessage(errorMessage);
- setPageComplete(errorMessage == null);
- }
- }
-
- /**
- * @return the rootElementName
- */
- public String getRootElementName() {
- return rootElementName;
- }
-
- /**
- * @param rootElementName
- * the rootElementName to set
- */
- public void setRootElementName(String rootElementName) {
- this.rootElementName = rootElementName;
- }
-
- /*
- * (non-Javadoc)
- *
- * @seeorg.jboss.tools.smooks.configuration.editors.xml.
- * AbstractFileSelectionWizardPage
- * #createFilePathText(org.eclipse.swt.widgets.Composite)
- */
- @Override
- protected Text createFilePathText(Composite parent) {
- fileTextComposite = new Composite(parent, SWT.NONE);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.grabExcessHorizontalSpace = true;
- fileTextComposite.setLayoutData(gd);
- GridLayout xsdtgl = new GridLayout();
- xsdtgl.marginWidth = 0;
- xsdtgl.marginHeight = 0;
- xsdtgl.numColumns = 2;
- fileTextComposite.setLayout(xsdtgl);
-
- final Text fileText = new Text(fileTextComposite, SWT.BORDER);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- fileText.setLayoutData(gd);
- fileText.addModifyListener(new ModifyListener() {
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.
- * swt.events.ModifyEvent)
- */
- public void modifyText(ModifyEvent e) {
- reasourceLoaded = false;
- if (tableViewer != null) {
- tableViewer.setInput(Collections.emptyList());
- }
- }
-
- });
- gd.grabExcessHorizontalSpace = true;
-
- loadXSDButton = new Button(fileTextComposite, SWT.NONE);
- loadXSDButton.setText(Messages.XSDStructuredDataWizardPage_Button_Load);
- loadXSDButton.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- super.widgetSelected(e);
- parsingError = null;
- reasourceLoaded = false;
- if (fileText.getText() == null || fileText.getText().length() == 0) {
- changeWizardPageStatus();
- return;
- }
-
- List<String> list;
- try {
- list = loadElement(fileText.getText());
- if (list == null || list.isEmpty()) {
- setErrorMessage("Can't get the elements in the XSD file.");
- } else {
- tableViewer.setInput(list);
- reasourceLoaded = true;
- }
- } catch (InvocationTargetException e1) {
- parsingError = e1.getTargetException();
- while(parsingError instanceof InvocationTargetException){
- parsingError = ((InvocationTargetException)parsingError).getTargetException();
- }
- } catch (IOException e1) {
- parsingError = e1;
- } catch (ModelBuilderException e1) {
- parsingError = e1;
- }
- changeWizardPageStatus();
- }
-
- });
- return fileText;
- }
-
- private List<String> loadElement(String path) throws InvocationTargetException,
IOException, ModelBuilderException {
- List<String> elements = new ArrayList<String>();
- if (path == null)
- return null;
- String pp = path.toLowerCase();
- if (pp.endsWith(".wsdl")) { //$NON-NLS-1$
- try {
- List<XSDElementDeclaration> xsdDec = WSDLObjectAnalyzer.loadAllElement(path);
- for (Iterator<?> iterator = xsdDec.iterator(); iterator.hasNext();) {
- XSDElementDeclaration xsdElementDeclaration = (XSDElementDeclaration)
iterator.next();
- elements.add(xsdElementDeclaration.getAliasName());
- }
- } catch (ParserConfigurationException e) {
- throw new InvocationTargetException(e);
- } catch (SAXException e) {
- throw new InvocationTargetException(e);
- }
- }
- String file = null;
- file = SmooksUIUtils.parseFilePath(path);
- XSDModelBuilder xsdModelBuilder = new XSDModelBuilder(URI.createFileURI(file));
- Set<String> elementNames = xsdModelBuilder.getRootElementNames();
- Iterator<String> it = elementNames.iterator();
- while (it.hasNext()) {
- String name = it.next();
- elements.add(name);
- }
- return elements;
- }
-
- public void createControl(Composite parent) {
- super.createControl(parent);
- Composite mainComposite = (Composite) getControl();
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- Label label = new Label(mainComposite, SWT.NONE);
- label.setLayoutData(gd);
- label.setText(Messages.XSDStructuredDataWizardPage_Label_Select_Root);
- tableViewer = CheckboxTableViewer.newCheckList(mainComposite, SWT.BORDER);
- gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 250;
- tableViewer.getControl().setLayoutData(gd);
-
- tableViewer.setContentProvider(new XSDListContentProvider());
- tableViewer.setLabelProvider(new XSDListLabelProvider());
- tableViewer.addCheckStateListener(new ICheckStateListener() {
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.jface.viewers.ICheckStateListener#checkStateChanged
- * (org.eclipse.jface.viewers.CheckStateChangedEvent)
- */
- public void checkStateChanged(CheckStateChangedEvent event) {
- if (!fireEvent)
- return;
- rootElementName = null;
- fireEvent = false;
- tableViewer.setAllChecked(false);
- if (event.getChecked()) {
- tableViewer.setChecked(event.getElement(), true);
- Object checkElement = event.getElement();
- if (checkElement instanceof String) {
- rootElementName = (String) checkElement;
- }
- }
- fireEvent = true;
- changeWizardPageStatus();
- }
-
- });
-
- }
-
-}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/messages.properties
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/messages.properties 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/xml/messages.properties 2010-01-17
18:36:40 UTC (rev 19787)
@@ -1,8 +1,8 @@
XMLStructuredDataWizard_Window_Title=XML File Input Data Wizard
-XSDStructuredDataWizard_WizardTitle=XSD/WSDL Input Data Wizard
-XSDStructuredDataWizardPage_Button_Load=Load
-XSDStructuredDataWizardPage_Error_Must_Click_Load=The elements of XSD file should click
the 'Load' button to load.
-XSDStructuredDataWizardPage_Error_Must_Select_Root=Must select a root element.
-XSDStructuredDataWizardPage_Label_Select_Root=Select root element
-XSDStructuredDataWizardPage_page_description=Select a XSD file to be the input data
-XSDStructuredDataWizardPage_Page_Title=XSD Input Data Selection
+XSDStructuredDataWizard_WizardTitle=Apply XML Template
+XMLTemplateCreationWizardPage_Button_Load=Load
+XMLTemplateCreationWizardPage_Error_Must_Click_Load=Press 'Load' button to load
XSD root element names.
+XMLTemplateCreationWizardPage_Error_Must_Select_Root=Must select a root element.
+XMLTemplateCreationWizardPage_Label_Select_Root=Select root element
+XMLTemplateCreationWizardPage_page_description=Select template generation source
+XMLTemplateCreationWizardPage_Page_Title=Apply XML Template
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerAttrModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerAttrModel.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerAttrModel.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -15,6 +15,7 @@
import org.jboss.tools.smooks.configuration.editors.xml.AbstractXMLObject;
import org.jboss.tools.smooks.configuration.editors.xml.TagPropertyObject;
+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.Attr;
@@ -45,13 +46,7 @@
public boolean isRequired() {
Attr element = this.getReferenceAttibute();
if (element != null) {
- String value = element.getValue();
- if (value != null) {
- value = value.trim();
- }
- if (FreemarkerModelAnalyzer.REQUIRED.equals(value)) {
- return true;
- }
+ return ModelBuilder.isRequired(element);
}
return false;
}
@@ -79,4 +74,7 @@
return false;
}
+ public Node getModelNode() {
+ return getReferenceAttibute();
+ }
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerModelAnalyzer.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerModelAnalyzer.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerModelAnalyzer.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -24,6 +24,7 @@
import org.jboss.tools.smooks.configuration.editors.xml.TagObject;
import org.jboss.tools.smooks.configuration.editors.xml.TagPropertyObject;
import org.jboss.tools.smooks.configuration.editors.xml.XMLUtils;
+import org.jboss.tools.smooks.templating.model.ModelBuilder;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -38,22 +39,6 @@
*/
public class FreemarkerModelAnalyzer {
- public static final String SPECIAL_ELEMENT_UIR =
"http://www.jboss.org/xsd/tools/smooks";
-
- private static final String[] SPECIAL_ELEMENT_NAMES = new String[] {
"compositor" };
-
- public static final String MAXOCCURS = "maxOccurs";
-
- public static final String TYPE = "type";
-
- public static final String HIDDEN = "hidden";
-
- public static final String MINOCCURS = "minOccurs";
-
- public static final String REQUIRED = "#required";
-
- private static final String[] SPECIAL_ATTR_NAMES = new String[] { MAXOCCURS, MINOCCURS,
"elementType", TYPE ,HIDDEN };
-
public TagList analyze(String xmlFilePath, String[] ignoreNodeNames,
Class<? extends AbstractXMLObject> tagObjectClass) throws
ParserConfigurationException, SAXException,
IOException {
@@ -135,7 +120,7 @@
if (element != null) {
Node parentNode = element.getParentNode();
if (parentNode instanceof Element) {
- if (isCompositorElement((Element) parentNode)) {
+ if (ModelBuilder.isCompositor(parentNode)) {
return true;
}
}
@@ -143,32 +128,13 @@
return false;
}
- public static boolean isCompositorElement(Element element) {
- if (element != null) {
- String uri = element.getNamespaceURI();
- String name = element.getLocalName();
- if (name == null) {
- name = element.getNodeName();
- }
- if (SPECIAL_ELEMENT_UIR.equals(uri)) {
- for (int i = 0; i < SPECIAL_ELEMENT_NAMES.length; i++) {
- String sen = SPECIAL_ELEMENT_NAMES[i];
- if(sen.equals(name)){
- return true;
- }
- }
- }
- }
- return false;
- }
-
protected TagObject parseElement(Element element, TagObject parentTag, String[]
ignoreNodeNames,
Class<? extends AbstractXMLObject> tagObjectClass) {
if (isIgnoreNode(element, ignoreNodeNames))
return null;
boolean canAdd = false;
TagObject tag = null;
- if (isCompositorElement(element)) {
+ if (ModelBuilder.isCompositor(element)) {
tag = parentTag;
} else {
tag = getChildTagByName(element.getNodeName(), parentTag, ignoreNodeNames);
@@ -227,15 +193,6 @@
return false;
}
- private boolean isSpecailPropertyName(String attrName) {
- for (int i = 0; i < SPECIAL_ATTR_NAMES.length; i++) {
- String name = SPECIAL_ATTR_NAMES[i];
- if (name.equals(attrName))
- return true;
- }
- return false;
- }
-
protected void fillProperties(Element element, TagObject tag, String[] ignoreNodeNames)
{
NamedNodeMap attrMap = element.getAttributes();
@@ -249,13 +206,12 @@
if (localName == null) {
localName = name;
}
- String value = attr.getValue();
- String uri = attr.getNamespaceURI();
- if (SPECIAL_ELEMENT_UIR.equals(uri)) {
- if (isSpecailPropertyName(localName)) {
- continue;
- }
+
+ if(ModelBuilder.isInReservedNamespace(attr)) {
+ continue;
}
+
+ String value = attr.getValue();
if (isIgnoreNode(localName, ignoreNodeNames))
continue;
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateModelLabelProvider.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateModelLabelProvider.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateModelLabelProvider.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -15,7 +15,9 @@
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
import org.jboss.tools.smooks.configuration.editors.GraphicsConstants;
import org.jboss.tools.smooks.configuration.editors.xml.XMLStructuredDataLabelProvider;
+import org.jboss.tools.smooks.templating.model.ModelBuilder;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
/**
* @author Dart
@@ -37,8 +39,11 @@
if (FreemarkerModelAnalyzer.isChoiceElement(e)) {
return imageRegistry.get(GraphicsConstants.IMAGE_XSL_SORT);
}
+ Node modelNode = ((FreemarkerTemplateXMLModel) element).getModelNode();
if (((FreemarkerTemplateXMLModel) element).isManyOccurs()) {
- return imageRegistry.get(GraphicsConstants.IMAGE_XSL_FOREACH);
+ if(modelNode instanceof Element &&
ModelBuilder.getEnforceCollectionSubMappingRules((Element) modelNode)) {
+ return imageRegistry.get(GraphicsConstants.IMAGE_XSL_FOREACH);
+ }
}
}
return super.getImage(element);
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateXMLModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateXMLModel.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/FreemarkerTemplateXMLModel.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -17,11 +17,10 @@
import org.jboss.tools.smooks.configuration.editors.xml.AbstractXMLObject;
import org.jboss.tools.smooks.configuration.editors.xml.TagObject;
import org.jboss.tools.smooks.configuration.editors.xml.TagPropertyObject;
+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.Attr;
import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
/**
@@ -67,29 +66,7 @@
return false;
}
if (element != null) {
- NamedNodeMap nodeMap = element.getAttributes();
- for (int i = 0; i < nodeMap.getLength(); i++) {
- Attr attr = (Attr) nodeMap.item(i);
- if (attr != null) {
- if (FreemarkerModelAnalyzer.SPECIAL_ELEMENT_UIR.equals(attr.getNamespaceURI())) {
- String name = attr.getLocalName();
- if (name == null) {
- name = attr.getNodeName();
- }
- if (FreemarkerModelAnalyzer.MINOCCURS.equals(name)) {
- String value = attr.getValue();
- try {
- int intValue = Integer.parseInt(value);
- if (intValue > 0) {
- return true;
- }
- } catch (Exception e) {
- return false;
- }
- }
- }
- }
- }
+ return ModelBuilder.isRequired(element);
}
return false;
}
@@ -97,29 +74,7 @@
public boolean isManyOccurs() {
Element refElement = this.getReferenceElement();
if (refElement != null) {
- NamedNodeMap nodeMap = refElement.getAttributes();
- for (int i = 0; i < nodeMap.getLength(); i++) {
- Attr attr = (Attr) nodeMap.item(i);
- if (attr != null) {
- if (FreemarkerModelAnalyzer.SPECIAL_ELEMENT_UIR.equals(attr.getNamespaceURI())) {
- String name = attr.getLocalName();
- if (name == null) {
- name = attr.getNodeName();
- }
- if (FreemarkerModelAnalyzer.MAXOCCURS.equals(name)) {
- String value = attr.getValue();
- try {
- int intValue = Integer.parseInt(value);
- if (intValue == -1 || intValue > 1) {
- return true;
- }
- } catch (Exception e) {
- return false;
- }
- }
- }
- }
- }
+ return ModelBuilder.isCollection(refElement);
}
return false;
}
@@ -192,6 +147,10 @@
// }
// return false;
}
+
+ public Node getModelNode() {
+ return getReferenceElement();
+ }
private FreemarkerTemplateXMLModel localBrotherModel(Node refNode) {
AbstractXMLObject parent = this.getParent();
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/IFreemarkerTemplateModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/IFreemarkerTemplateModel.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/freemarker/IFreemarkerTemplateModel.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -11,6 +11,7 @@
package org.jboss.tools.smooks.graphical.editors.model.freemarker;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
+import org.w3c.dom.Node;
/**
* @author Dart
@@ -19,5 +20,6 @@
public interface IFreemarkerTemplateModel {
public boolean isRequired();
public boolean isManyOccurs();
+ public Node getModelNode();
public boolean isHidden(TemplateBuilder builder);
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/javamapping/JavaBeanChildGraphModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/javamapping/JavaBeanChildGraphModel.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/model/javamapping/JavaBeanChildGraphModel.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -34,7 +34,10 @@
import
org.jboss.tools.smooks.graphical.editors.model.freemarker.IFreemarkerTemplateModel;
import
org.jboss.tools.smooks.graphical.editors.template.SmooksFreemarkerTemplateGraphicalEditor;
import org.jboss.tools.smooks.model.javabean12.ValueType;
+import org.jboss.tools.smooks.templating.model.ModelBuilder;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
/**
* @author Dart
@@ -149,8 +152,14 @@
while (pgm != null && pgm instanceof FreemarkerTemplateNodeGraphicalModel) {
Object pd = ((FreemarkerTemplateNodeGraphicalModel) pgm).getData();
if (pd instanceof IFreemarkerTemplateModel) {
- if (((IFreemarkerTemplateModel) pd).isManyOccurs() &&
pgm.getTargetConnections().isEmpty()) {
- return false;
+ IFreemarkerTemplateModel iFreemarkerTemplateModel = (IFreemarkerTemplateModel) pd;
+ if (iFreemarkerTemplateModel.isManyOccurs() &&
pgm.getTargetConnections().isEmpty()) {
+ Node modelNode = iFreemarkerTemplateModel.getModelNode();
+ if(modelNode instanceof Element) {
+ return !ModelBuilder.getEnforceCollectionSubMappingRules((Element) modelNode);
+ } else {
+ return false;
+ }
}
}
pgm = pgm.getParent();
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-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/FreemarkerTemplateContentGraphModelProviderImpl.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -33,8 +33,10 @@
import
org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerTemplateXMLModel;
import
org.jboss.tools.smooks.graphical.editors.model.freemarker.FreemarkerXMLNodeGraphicalModel;
import org.jboss.tools.smooks.model.freemarker.Freemarker;
+import org.jboss.tools.smooks.templating.model.ModelBuilder;
import org.jboss.tools.smooks.templating.model.ModelBuilderException;
import org.jboss.tools.smooks.templating.model.csv.CSVModelBuilder;
+import org.jboss.tools.smooks.templating.model.xml.XMLSampleModelBuilder;
import org.jboss.tools.smooks.templating.model.xml.XSDModelBuilder;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
import org.jboss.tools.smooks.templating.template.csv.CSVFreeMarkerTemplateBuilder;
@@ -144,16 +146,23 @@
String fileType = SmooksModelUtils.getFreemarkerXMLFileType(freemarker);
String filePath = SmooksModelUtils.getFreemarkerXMLFilePath(freemarker);
String rootName = SmooksModelUtils.getFreemarkerXMLRootName(freemarker);
+ String newFilePath = SmooksUIUtils.parseFilePath(filePath);
+ ModelBuilder builder;
+
if (SmooksModelUtils.KEY_XML_FILE_TYPE_XSD.equals(fileType)) {
- String newFilePath = SmooksUIUtils.parseFilePath(filePath);
- XSDModelBuilder builder = new XSDModelBuilder(URI.createFileURI(newFilePath));
- builder.setRootElementName(rootName);
- try {
- templateBuilder = new XMLFreeMarkerTemplateBuilder(builder, contents);
- } catch (Exception e) {
- templateBuilder = new XMLFreeMarkerTemplateBuilder(builder);
- }
+ builder = new XSDModelBuilder(URI.createFileURI(newFilePath));
+ ((XSDModelBuilder)builder).setRootElementName(rootName);
+ } else if (SmooksModelUtils.KEY_XML_FILE_TYPE_XML.equals(fileType)) {
+ builder = new XMLSampleModelBuilder(URI.createFileURI(newFilePath));
+ } else {
+ throw new IOException("Unable to process XML template type '" +
fileType + "'.");
}
+
+ try {
+ templateBuilder = new XMLFreeMarkerTemplateBuilder(builder, contents);
+ } catch (Exception e) {
+ templateBuilder = new XMLFreeMarkerTemplateBuilder(builder);
+ }
}
}
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-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/editors/template/SmooksFreemarkerTemplateGraphicalEditor.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -29,8 +29,11 @@
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.model.freemarker.Freemarker;
+import org.jboss.tools.smooks.templating.model.ModelBuilder;
import org.jboss.tools.smooks.templating.template.TemplateBuilder;
import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
/**
* @author Dart
@@ -93,18 +96,18 @@
Object data = abstractSmooksGraphicalModel.getData();
if (data instanceof IFreemarkerTemplateModel) {
AbstractSmooksGraphicalModel requiredCollectionLinkParent =
parentIsRequriedCollectionNode(abstractSmooksGraphicalModel);
- if (requiredCollectionLinkParent != null) {
+ if (requiredCollectionLinkParent != null &&
enforceCollectionSubMappingRules(abstractSmooksGraphicalModel)) {
AbstractXMLObject parentNode = (AbstractXMLObject)
requiredCollectionLinkParent.getData();
abstractSmooksGraphicalModel.addMessage("Its parent node '" +
parentNode.getName()
+ "' should be connected first.");
abstractSmooksGraphicalModel.setSeverity(IValidatableModel.ERROR);
}
if (isRequiredNode(abstractSmooksGraphicalModel)) {
- abstractSmooksGraphicalModel.addMessage("This node must be linked with source
node");
+ abstractSmooksGraphicalModel.addMessage("This node must be linked to a Source
data node");
abstractSmooksGraphicalModel.setSeverity(IValidatableModel.ERROR);
}
if (isRequiredCollectionNode(abstractSmooksGraphicalModel)) {
- abstractSmooksGraphicalModel.addMessage("This node must be linked with
collection java node");
+ abstractSmooksGraphicalModel.addMessage("This node must be linked to a Source
Collection node");
abstractSmooksGraphicalModel.setSeverity(IValidatableModel.ERROR);
}
}
@@ -148,13 +151,24 @@
if (data instanceof IFreemarkerTemplateModel) {
if (((IFreemarkerTemplateModel) data).isManyOccurs()) {
if (abstractSmooksGraphicalModel.getTargetConnections().isEmpty()) {
- return true;
+ return enforceCollectionSubMappingRules(abstractSmooksGraphicalModel);
}
}
}
return false;
}
+ public static boolean enforceCollectionSubMappingRules(AbstractSmooksGraphicalModel
abstractSmooksGraphicalModel) {
+ Object data = abstractSmooksGraphicalModel.getData();
+ if (data instanceof IFreemarkerTemplateModel) {
+ Node modelNode = ((IFreemarkerTemplateModel) data).getModelNode();
+ if(modelNode instanceof Element) {
+ return ModelBuilder.getEnforceCollectionSubMappingRules((Element) modelNode);
+ }
+ }
+ return true;
+ }
+
/*
* (non-Javadoc)
*
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/TemplateWizardSelectionPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/TemplateWizardSelectionPage.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/TemplateWizardSelectionPage.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -113,8 +113,8 @@
}
private void initInputTypeCombo(Combo combo) {
- for (Iterator<?> iterator = this.registedWizard.iterator(); iterator.hasNext();)
{
- TemplateMessageTypeWizardNode type = (TemplateMessageTypeWizardNode) iterator.next();
+ for(int i = 0; i < registedWizard.size(); i++) {
+ TemplateMessageTypeWizardNode type = registedWizard.get(i);
combo.add(type.getName());
}
}
@@ -142,18 +142,17 @@
super(pageName);
setDescription("Choose \"Message Type\" ."); //$NON-NLS-1$
setTitle("Message Type Selection"); //$NON-NLS-1$
+
TemplateMessageTypeWizardNode csvTypeNode = new TemplateMessageTypeWizardNode();
csvTypeNode.setName(Messages.TemplateWizardSelectionPage_CSV_Node);
-// node.setDescription("CSV");
csvTypeNode.setWizard(new FreemarkerCSVTemplateCreationWizard());
- registedWizard.add(csvTypeNode);
TemplateMessageTypeWizardNode xmlTypeNode = new TemplateMessageTypeWizardNode();
xmlTypeNode.setName(Messages.TemplateWizardSelectionPage_XML_Node);
-// node.setDescription("CSV");
xmlTypeNode.setWizard(new FreemarkerXMLTemplateCreationWizard());
registedWizard.add(xmlTypeNode);
+ registedWizard.add(csvTypeNode);
}
public void activeSelectionWizard() {
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/freemarker/FreemarkerXMLTemplateCreationWizard.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/freemarker/FreemarkerXMLTemplateCreationWizard.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/freemarker/FreemarkerXMLTemplateCreationWizard.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.smooks.graphical.wizard.freemarker;
+import org.jboss.tools.smooks.configuration.editors.xml.XMLTemplateCreationWizardPage;
import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
/**
@@ -18,7 +19,7 @@
*/
public class FreemarkerXMLTemplateCreationWizard extends AbstractFreemarkerTemplateWizard
{
- private FreemarkerXMLTemplateCreationWizardPage page;
+ private XMLTemplateCreationWizardPage page;
private String filePath;
private String rootElementName;
private String xmlInputFileType;
@@ -36,7 +37,7 @@
@Override
public void addPages() {
if (page == null) {
- page = new FreemarkerXMLTemplateCreationWizardPage("XML"); //$NON-NLS-1$
+ page = new XMLTemplateCreationWizardPage("XML"); //$NON-NLS-1$
}
this.addPage(page);
super.addPages();
Deleted:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/freemarker/FreemarkerXMLTemplateCreationWizardPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/freemarker/FreemarkerXMLTemplateCreationWizardPage.java 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/freemarker/FreemarkerXMLTemplateCreationWizardPage.java 2010-01-17
18:36:40 UTC (rev 19787)
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 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.graphical.wizard.freemarker;
-
-import java.util.List;
-
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.jboss.tools.smooks.configuration.editors.xml.XSDStructuredDataWizardPage;
-import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
-
-/**
- * @author Dart
- *
- */
-public class FreemarkerXMLTemplateCreationWizardPage extends XSDStructuredDataWizardPage
{
-
- private Combo combo = null;
-
- public FreemarkerXMLTemplateCreationWizardPage(String pageName, boolean multiSelect,
Object[] initSelections,
- List<ViewerFilter> filters) {
- super(pageName, multiSelect, initSelections, filters);
- }
-
- public FreemarkerXMLTemplateCreationWizardPage(String pageName) {
- super(pageName);
- this.setTitle("Create XML template model");
- this.setDescription("Create XML template model.");
-// this.fileExtensionNames = new String[]{"xml"};
- }
-
- public String getInputType(){
- if(combo.getSelectionIndex() == 0){
- return SmooksModelUtils.KEY_XML_FILE_TYPE_XSD;
- }
- if(combo.getSelectionIndex() == 1){
- return SmooksModelUtils.KEY_XML_FILE_TYPE_XML;
- }
- return null;
- }
-
- /**
- * @return the combo
- */
- public Combo getCombo() {
- return combo;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets
- * .Composite)
- */
- public void createControl(Composite parent) {
- Composite mainComposite = new Composite(parent, SWT.NONE);
- GridLayout gl = new GridLayout();
- mainComposite.setLayout(gl);
- GridData gd = new GridData(GridData.FILL_BOTH);
- mainComposite.setLayoutData(gd);
-
- Label fileTypeLabel = new Label(mainComposite, SWT.NONE);
- fileTypeLabel.setText("XML Template File Type:");
-
- combo = new Combo(mainComposite, SWT.READ_ONLY | SWT.BORDER);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- initCombo(combo);
- combo.setLayoutData(gd);
- combo.select(0);
-
- combo.addSelectionListener(new SelectionAdapter() {
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
- * .swt.events.SelectionEvent)
- */
- @Override
- public void widgetSelected(SelectionEvent e) {
- updateWizardPage();
- }
- });
-
- Label separator = new Label(mainComposite, SWT.SEPARATOR | SWT.HORIZONTAL);
- separator.setLayoutData(gd);
-
- super.createControl(mainComposite);
-
- this.setControl(mainComposite);
- }
-
- protected void updateWizardPage() {
- int index = combo.getSelectionIndex();
- if(index == 0){
- loadXSDButton.setEnabled(true);
- this.tableViewer.getTable().setEnabled(true);
- }
- if(index == 1){
- loadXSDButton.setEnabled(false);
- this.tableViewer.getTable().setEnabled(false);
- }
- }
-
- private void initCombo(Combo combo2) {
- combo2.add("Load from XSD file");
-// combo2.add("Load from XML Simple File");
- }
-
-}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/freemarker/messages.properties
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/freemarker/messages.properties 2010-01-17
09:06:10 UTC (rev 19786)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/graphical/wizard/freemarker/messages.properties 2010-01-17
18:36:40 UTC (rev 19787)
@@ -5,7 +5,7 @@
#FreemarkerCSVCreationWizardPage_FieldEmptyErrorMessage=Fields can't be null
FreemarkerCSVCreationWizardPage_FieldsGroupText=Fields
FreemarkerCSVCreationWizardPage_QuoteCharLabel=Quote Character \:
-FreemarkerCSVCreationWizardPage_IncludeFieldNamesLabel=Include Field Names \:
+FreemarkerCSVCreationWizardPage_IncludeFieldNamesLabel=Output Field Names \:
FreemarkerCSVCreationWizardPage_QuoteEmptyErrorMessage=Quote can't be null
#FreemarkerCSVCreationWizardPage_RemoveFieldButtonLabel=Remove
FreemarkerCSVCreationWizardPage_SeperatorCharLabel=Separator Character \: