Author: DartPeng
Date: 2008-09-07 23:29:45 -0400 (Sun, 07 Sep 2008)
New Revision: 10130
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/.classpath
trunk/smooks/plugins/org.jboss.tools.smooks.xml/.project
trunk/smooks/plugins/org.jboss.tools.smooks.xml/META-INF/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/META-INF/MANIFEST.MF
trunk/smooks/plugins/org.jboss.tools.smooks.xml/build.properties
trunk/smooks/plugins/org.jboss.tools.smooks.xml/icons/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/icons/obj16/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/icons/obj16/attribute_obj.gif
trunk/smooks/plugins/org.jboss.tools.smooks.xml/icons/obj16/element_obj.gif
trunk/smooks/plugins/org.jboss.tools.smooks.xml/icons/sample.gif
trunk/smooks/plugins/org.jboss.tools.smooks.xml/libs/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/libs/dom4j-1.6.1.jar
trunk/smooks/plugins/org.jboss.tools.smooks.xml/plugin.xml
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/AbstractFileSelectionWizardPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/AbstractStructuredDdataWizard.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/XMLImageConstants.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/XmlActivator.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/AbstractXMLObject.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/DocumentObject.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/TagObject.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/TagPropertyObject.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLObjectAnalyzer.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLStructuredModel.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLStrucutredModelParser.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataContentProvider.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataLabelProvider.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataWizard.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataWizardPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/model/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/model/XSDStructuredModelContentProvider.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/model/XSDStructuredModelLabelProvider.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/ui/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/ui/XSDStructuredDataWizard.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/ui/XSDStructuredDataWizardPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/smooks/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/smooks/xml2java/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/smooks/xml2java/model/
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/smooks/xml2java/model/ModelTest.java
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/smooks/xml2java/model/XMLStructuredModelBuilderTest.java
Log:
first creation
Added: trunk/smooks/plugins/org.jboss.tools.smooks.xml/.classpath
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.xml/.classpath
(rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.xml/.classpath 2008-09-08 03:29:45 UTC
(rev 10130)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="src_test"/>
+ <classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con"
path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="lib" path="libs/dom4j-1.6.1.jar"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.xml/.classpath
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/smooks/plugins/org.jboss.tools.smooks.xml/.project
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.xml/.project (rev
0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.xml/.project 2008-09-08 03:29:45 UTC (rev
10130)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.jboss.tools.smooks.xml</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.xml/.project
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/smooks/plugins/org.jboss.tools.smooks.xml/META-INF/MANIFEST.MF
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.xml/META-INF/MANIFEST.MF
(rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.xml/META-INF/MANIFEST.MF 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Xml StrucutredData Extention Plug-in
+Bundle-SymbolicName: org.jboss.tools.smooks.xml;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: org.jboss.tools.smooks.xml.XmlActivator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.xsd,
+ org.jboss.tools.smooks.model,
+ org.jboss.tools.smooks.model.edit,
+ org.jboss.tools.smooks.ui,
+ org.eclipse.ui.views,
+ org.junit,
+ org.eclipse.core.resources,
+ org.eclipse.ui.ide,
+ org.eclipse.xsd.edit,
+ org.eclipse.emf.edit.ui
+Eclipse-LazyStart: true
+Bundle-ClassPath: libs/dom4j-1.6.1.jar,
+ .
+Export-Package: org.jboss.tools.smooks.xml,
+ org.jboss.tools.smooks.xml.model,
+ org.jboss.tools.smooks.xml.ui,
+ org.jboss.tools.smooks.xml2java.model,
+ org.jboss.tools.smooks.xsd.model,
+ org.jboss.tools.smooks.xsd.ui
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.xml/META-INF/MANIFEST.MF
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/smooks/plugins/org.jboss.tools.smooks.xml/build.properties
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.xml/build.properties
(rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.xml/build.properties 2008-09-08 03:29:45
UTC (rev 10130)
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ libs/dom4j-1.6.1.jar,\
+ icons/
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.xml/build.properties
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/smooks/plugins/org.jboss.tools.smooks.xml/icons/obj16/attribute_obj.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/icons/obj16/attribute_obj.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/smooks/plugins/org.jboss.tools.smooks.xml/icons/obj16/element_obj.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/icons/obj16/element_obj.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/smooks/plugins/org.jboss.tools.smooks.xml/icons/sample.gif
===================================================================
(Binary files differ)
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.xml/icons/sample.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/smooks/plugins/org.jboss.tools.smooks.xml/libs/dom4j-1.6.1.jar
===================================================================
(Binary files differ)
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.xml/libs/dom4j-1.6.1.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/smooks/plugins/org.jboss.tools.smooks.xml/plugin.xml
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.xml/plugin.xml
(rev 0)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.xml/plugin.xml 2008-09-08 03:29:45 UTC
(rev 10130)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.jboss.tools.smooks.ui.viewerInitor">
+ <viewerInitor
+
contentProvider="org.jboss.tools.smooks.xsd.model.XSDStructuredModelContentProvider"
+
creationWizard="org.jboss.tools.smooks.xsd.ui.XSDStructuredDataWizard"
+
labelProvider="org.jboss.tools.smooks.xsd.model.XSDStructuredModelLabelProvider"
+ name="XSD"
+ typeID="org.jboss.tools.smooks.xml.viewerInitor.xsd">
+ </viewerInitor>
+ <viewerInitor
+
contentProvider="org.jboss.tools.smooks.xml.ui.XMLStructuredDataContentProvider"
+
creationWizard="org.jboss.tools.smooks.xml.ui.XMLStructuredDataWizard"
+
labelProvider="org.jboss.tools.smooks.xml.ui.XMLStructuredDataLabelProvider"
+ name="XML"
+ typeID="org.jboss.tools.smooks.xml.viewerInitor.xml">
+ </viewerInitor>
+ </extension>
+
+</plugin>
Property changes on: trunk/smooks/plugins/org.jboss.tools.smooks.xml/plugin.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/AbstractFileSelectionWizardPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/AbstractFileSelectionWizardPage.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/AbstractFileSelectionWizardPage.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,328 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.xml;
+
+import java.util.Collections;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.emf.common.ui.dialogs.WorkspaceResourceDialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.wizard.WizardPage;
+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.events.SelectionListener;
+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.Control;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.jboss.tools.smooks.xsd.model.XSDStructuredModelContentProvider;
+import org.jboss.tools.smooks.xsd.model.XSDStructuredModelLabelProvider;
+
+/**
+ *
+ * @author Dart Peng Date : 2008-8-13
+ */
+public abstract class AbstractFileSelectionWizardPage extends WizardPage
+ implements SelectionListener {
+
+ protected Object returnObject = null;
+ protected Text fileText;
+ protected Composite fileTextComposite;
+ protected CheckboxTableViewer tableViewer = null;
+ protected Button fileSystemBrowseButton;
+ protected boolean reasourceLoaded = false;
+ private Button workspaceBrowseButton;
+
+ public AbstractFileSelectionWizardPage(String pageName, String title,
+ ImageDescriptor titleImage) {
+ super(pageName, title, titleImage);
+ // TODO Auto-generated constructor stub
+ }
+
+ public AbstractFileSelectionWizardPage(String pageName) {
+ super(pageName);
+ // TODO Auto-generated constructor stub
+ }
+
+ public Object getReturnValue() {
+ return returnObject;
+ }
+
+ /*
+ * (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 layout = new GridLayout();
+ layout.numColumns = 1;
+ mainComposite.setLayout(layout);
+
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.grabExcessHorizontalSpace = true;
+ gd.grabExcessVerticalSpace = true;
+ mainComposite.setLayoutData(gd);
+
+ // xmlButton = new Button(mainComposite, SWT.RADIO);
+ // xmlButton.setText("Select a XML file");
+ //
+ // Composite xmlComposite = this
+ // .createXMLFileSelectionComposite(mainComposite);
+ //
+ // Label sp = new Label(mainComposite, SWT.HORIZONTAL | SWT.SEPARATOR);
+ // gd = new GridData(GridData.FILL_HORIZONTAL);
+ // sp.setLayoutData(gd);
+ //
+ // xsdButton = new Button(mainComposite, SWT.RADIO);
+ // xsdButton.setText("Select a XSD file");
+
+ Composite xsdComposite = this
+ .createFileSelectionComposite(mainComposite);
+
+ // init the panel status (XSD file selection composite is disabled)
+ // xsdButton.setSelection(true);
+ //
+ // setCompositeChildrenEnabled(xmlComposite, false);
+
+ // registe the listener for controls
+ hookBrowseButtonSelectionAdapter();
+ hookFileTextModifyListener();
+ hookRadioButtonSelectionAdapter();
+ this.setControl(mainComposite);
+ }
+
+ protected void hookFileTextModifyListener() {
+ final ModifyListener modifyListener = new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ changeWizardPageStatus();
+ }
+ };
+ // xmlFileText.addModifyListener(modifyListener);
+ fileText.addModifyListener(modifyListener);
+ }
+
+ protected void hookRadioButtonSelectionAdapter() {
+ // xsdButton.addSelectionListener(this);
+ }
+
+ protected void hookBrowseButtonSelectionAdapter() {
+ SelectionAdapter browseButtonSelectionAdapter = new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ Text relationT = null;
+ if (e.getSource() == fileSystemBrowseButton) {
+ relationT = fileText;
+ }
+ openFileSelection(relationT);
+ }
+ };
+ SelectionAdapter wbrowseButtonSelectionAdapter = new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ Text relationT = null;
+ if (e.getSource() == workspaceBrowseButton) {
+ relationT = fileText;
+ }
+ openWorkSpaceSelection(relationT);
+ }
+
+ };
+
+ workspaceBrowseButton
+ .addSelectionListener(wbrowseButtonSelectionAdapter);
+ // xmlFileSystemBrowseButton
+ // .addSelectionListener(browseButtonSelectionAdapter);
+ fileSystemBrowseButton
+ .addSelectionListener(browseButtonSelectionAdapter);
+ }
+
+ protected void openWorkSpaceSelection(Text relationT) {
+ IFile[] files = WorkspaceResourceDialog.openFileSelection(getShell(),
+ "", "", false, null, Collections.EMPTY_LIST);
+ // dialog.setInitialSelections(selectedResources);
+ if (files.length > 0) {
+ IFile file = files[0];
+ String s = ResourcesPlugin.getWorkspace().getRoot().getLocation().append(
+ file.getFullPath()).toString();
+ relationT.setText(s);
+ return;
+ }
+ relationT.setText("");
+ }
+
+ protected Composite createFileSelectionComposite(Composite parent) {
+ Composite xsdComposite = new Composite(parent, SWT.NONE);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ xsdComposite.setLayoutData(gd);
+ GridLayout xsdLayout = new GridLayout();
+ xsdLayout.numColumns = 2;
+ xsdLayout.marginWidth = 0;
+ xsdComposite.setLayout(xsdLayout);
+
+ Composite browseButtonComposite = new Composite(xsdComposite, SWT.NONE);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ browseButtonComposite.setLayoutData(gd);
+
+ GridLayout bg = new GridLayout();
+ bg.numColumns = 2;
+ bg.marginHeight = 0;
+ bg.marginWidth = 0;
+ bg.makeColumnsEqualWidth = false;
+ browseButtonComposite.setLayout(bg);
+
+ fileSystemBrowseButton = new Button(browseButtonComposite, SWT.NONE);
+ fileSystemBrowseButton.setText("Browse File System...");
+
+ workspaceBrowseButton = new Button(browseButtonComposite, SWT.NONE);
+ workspaceBrowseButton.setText("Browse workspace file..");
+ gd = new GridData();
+ gd.horizontalAlignment = GridData.END;
+ workspaceBrowseButton.setLayoutData(gd);
+
+ gd = new GridData();
+ gd.grabExcessHorizontalSpace = true;
+ gd.horizontalAlignment = GridData.END;
+ fileSystemBrowseButton.setLayoutData(gd);
+
+ Label nfileLanel = new Label(xsdComposite, SWT.NONE);
+ nfileLanel.setText("XSD File Path :");
+ fileTextComposite = new Composite(xsdComposite, SWT.NONE);
+ 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);
+
+ fileText = new Text(fileTextComposite, SWT.BORDER);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ fileText.setLayoutData(gd);
+ gd.grabExcessHorizontalSpace = true;
+
+ final Button loadXSDButton = new Button(fileTextComposite, SWT.NONE);
+ loadXSDButton.setText("Load");
+ loadXSDButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ super.widgetSelected(e);
+ reasourceLoaded = false;
+ try {
+ returnObject = loadedTheObject(fileText.getText());
+ reasourceLoaded = true;
+ } catch (Throwable e2) {
+ // ignore
+ e2.printStackTrace();
+ }
+ changeWizardPageStatus();
+ }
+
+ });
+
+ // tableViewer = CheckboxTableViewer.newCheckList(xsdComposite,
+ // SWT.FULL_SELECTION | SWT.BORDER);
+ // gd = new GridData(GridData.FILL_BOTH);
+ // gd.heightHint = 200;
+ // gd.horizontalSpan = 2;
+ // tableViewer.getControl().setLayoutData(gd);
+ //
+ // initTableViewer();
+
+ return xsdComposite;
+ }
+
+ abstract protected Object loadedTheObject(String path) throws Exception;
+
+ protected void initTableViewer() {
+ tableViewer.addCheckStateListener(new ICheckStateListener() {
+ boolean flag = true;
+
+ public void checkStateChanged(CheckStateChangedEvent event) {
+ if (flag) {
+ Object checkObject = event.getElement();
+ boolean check = event.getChecked();
+ flag = false;
+ tableViewer.setAllChecked(false);
+ tableViewer.setChecked(checkObject, check);
+ flag = true;
+ changeWizardPageStatus();
+ }
+ }
+ });
+ tableViewer.setContentProvider(new XSDStructuredModelContentProvider());
+ tableViewer.setLabelProvider(new XSDStructuredModelLabelProvider());
+ }
+
+ protected void setCompositeChildrenEnabled(Composite composite,
+ boolean enabled) {
+ Control[] children = composite.getChildren();
+ for (int i = 0; i < children.length; i++) {
+ Control child = children[i];
+ if (child instanceof Text) {
+ child.setEnabled(enabled);
+ }
+ if (child instanceof Button) {
+ child.setEnabled(enabled);
+ }
+ if (child instanceof Composite) {
+ setCompositeChildrenEnabled((Composite) child, enabled);
+ }
+ }
+ }
+
+ protected void openFileSelection(Text relationText) {
+ FileDialog dialog = new FileDialog(this.getShell());
+ String path = dialog.open();
+ if (path != null) {
+ relationText.setText(path);
+ } else {
+ relationText.setText("");
+ }
+ }
+
+ protected void changeWizardPageStatus() {
+ String text = this.fileText.getText();
+ String error = null;
+ if (text == null || "".equals(text))
+ error = "Please Select a file";
+ if (!reasourceLoaded) {
+ error = "Resource must be loaded";
+ }
+ this.setErrorMessage(error);
+ this.setPageComplete(error == null);
+
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ changeWizardPageStatus();
+ }
+
+ public CheckboxTableViewer getTableViewer() {
+ return tableViewer;
+ }
+
+ public void setTableViewer(CheckboxTableViewer tableViewer) {
+ this.tableViewer = tableViewer;
+ }
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/AbstractFileSelectionWizardPage.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/AbstractStructuredDdataWizard.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/AbstractStructuredDdataWizard.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/AbstractStructuredDdataWizard.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,54 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.xml;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorSite;
+import org.jboss.tools.smooks.ui.IStrucutredDataCreationWizard;
+
+/**
+ * @author Dart
+ *
+ */
+public abstract class AbstractStructuredDdataWizard extends Wizard implements
+ IStrucutredDataCreationWizard {
+ AbstractFileSelectionWizardPage page = null;
+ Object xsdElement = null;
+ /**
+ *
+ */
+ public AbstractStructuredDdataWizard() {
+ // TODO Auto-generated constructor stub
+ }
+
+ @Override
+ public void addPages() {
+ if(page == null){
+ page = createAbstractFileSelectionWizardPage();
+ }
+ this.addPage(page);
+ }
+
+ abstract protected AbstractFileSelectionWizardPage
createAbstractFileSelectionWizardPage() ;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.wizard.Wizard#performFinish()
+ */
+ @Override
+ public boolean performFinish() {
+ xsdElement = this.page.getReturnValue();
+ return true;
+ }
+ public Object getTreeViewerInputContents() {
+ return xsdElement;
+ }
+
+ public void init(IEditorSite site, IEditorInput input) {
+
+ }
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/AbstractStructuredDdataWizard.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/XMLImageConstants.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/XMLImageConstants.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/XMLImageConstants.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,14 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.xml;
+
+/**
+ * @author Dart Peng
+ * Date : 2008-8-21
+ */
+public class XMLImageConstants {
+ public static final String IMAGE_XML_ELEMENT = "xml_element";
+
+ public static final String IMAGE_XML_ATTRIBUTE = "xml_attribute";
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/XMLImageConstants.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/XmlActivator.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/XmlActivator.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/XmlActivator.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,68 @@
+package org.jboss.tools.smooks.xml;
+
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class XmlActivator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.jboss.tools.smooks.xml";
+
+ public static final String TYPE_ID_XSD =
"org.jboss.tools.smooks.xml.viewerInitor.xsd";
+
+ public static final String TYPE_ID_XML =
"org.jboss.tools.smooks.xml.viewerInitor.xml";
+
+ // The shared instance
+ private static XmlActivator plugin;
+
+ /**
+ * The constructor
+ */
+ public XmlActivator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ @Override
+ protected void initializeImageRegistry(ImageRegistry reg) {
+ super.initializeImageRegistry(reg);
+ reg.put(XMLImageConstants.IMAGE_XML_ATTRIBUTE,
+ imageDescriptorFromPlugin(PLUGIN_ID,
+ "icons/obj16/attribute_obj.gif"));
+ reg.put(XMLImageConstants.IMAGE_XML_ELEMENT,
+ imageDescriptorFromPlugin(PLUGIN_ID,
+ "icons/obj16/element_obj.gif"));
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static XmlActivator getDefault() {
+ return plugin;
+ }
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/XmlActivator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/AbstractXMLObject.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/AbstractXMLObject.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/AbstractXMLObject.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * 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.xml.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Dart Peng
+ * @Date Jul 25, 2008
+ */
+public class AbstractXMLObject {
+
+ protected AbstractXMLObject parent;
+
+ protected String name;
+
+ protected List<AbstractXMLObject> children = new
ArrayList<AbstractXMLObject>();
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public List<AbstractXMLObject> getChildren() {
+ return children;
+ }
+
+ public void setChildren(List<AbstractXMLObject> children) {
+ this.children = children;
+ }
+
+ /**
+ * @return the parent
+ */
+ public AbstractXMLObject getParent() {
+ return parent;
+ }
+
+ /**
+ * @param parent the parent to set
+ */
+ public void setParent(AbstractXMLObject parent) {
+ this.parent = parent;
+ }
+
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/AbstractXMLObject.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/DocumentObject.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/DocumentObject.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/DocumentObject.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * 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.xml.model;
+
+/**
+ * @author Dart Peng
+ * @Date Jul 26, 2008
+ */
+public class DocumentObject extends AbstractXMLObject {
+ TagObject rootTag;
+
+ public TagObject getRootTag() {
+ return rootTag;
+ }
+
+ public void setRootTag(TagObject rootTag) {
+ this.rootTag = rootTag;
+ if(rootTag != null) rootTag.setParent(this);
+ }
+
+ public String toString(){
+ if(rootTag != null)
+ return "Document : " + getName() + "\n" + getRootTag().toString();
+
+ return "Docuement Object : " +getName();
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.tools.smooks.xml.model.AbstractXMLObject#getParent()
+ */
+ @Override
+ public AbstractXMLObject getParent() {
+ return null;
+ }
+
+
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/DocumentObject.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/TagObject.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/TagObject.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/TagObject.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * 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.xml.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * @author Dart Peng
+ * @Date Jul 25, 2008
+ */
+public class TagObject extends AbstractXMLObject {
+ protected List<TagPropertyObject> properties = new
ArrayList<TagPropertyObject>();
+
+ public List<TagPropertyObject> getProperties() {
+ return properties;
+ }
+
+ public void setProperties(List<TagPropertyObject> properties) {
+ this.properties = properties;
+ }
+
+ public void addProperty(TagPropertyObject pro) {
+ this.getProperties().add(pro);
+ if (pro != null)
+ pro.setParent(this);
+ }
+
+ public void removeProperty(TagPropertyObject pro) {
+ this.getProperties().remove(pro);
+ if (pro != null)
+ pro.setParent(null);
+ }
+
+ public void addChildTag(TagObject tag) {
+ this.getChildren().add(tag);
+ if (tag != null)
+ tag.setParent(this);
+ }
+
+ public void removeChildTag(TagObject tag) {
+ this.getChildren().remove(tag);
+ if (tag != null)
+ tag.setParent(null);
+ }
+
+ public String toString() {
+ StringBuffer buffer = new StringBuffer(getName());
+ buffer.append("\n");
+ for (Iterator iterator = properties.iterator(); iterator.hasNext();) {
+ TagPropertyObject pro = (TagPropertyObject) iterator.next();
+ buffer.append("\t");
+ buffer.append(pro.getName());
+ buffer.append("\n");
+ }
+
+ List l = getChildren();
+ for (Iterator iterator = l.iterator(); iterator.hasNext();) {
+ TagObject tag = (TagObject) iterator.next();
+ buffer.append("\t");
+ buffer.append(tag.toString());
+ buffer.append("\n");
+ }
+ return buffer.toString();
+ }
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/TagObject.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/TagPropertyObject.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/TagPropertyObject.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/TagPropertyObject.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * 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.xml.model;
+
+import java.util.List;
+
+/**
+ * @author Dart Peng
+ * @Date Jul 25, 2008
+ */
+public class TagPropertyObject extends AbstractXMLObject {
+
+ protected String type = "string";
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ @Override
+ public List<AbstractXMLObject> getChildren() {
+ return null;
+ }
+ @Override
+ public void setChildren(List<AbstractXMLObject> children) {
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/TagPropertyObject.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLObjectAnalyzer.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLObjectAnalyzer.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLObjectAnalyzer.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * 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.xml.model;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.List;
+
+import org.dom4j.Attribute;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+/**
+ * @author Dart Peng
+ * @Date Jul 25, 2008
+ */
+public class XMLObjectAnalyzer {
+ public DocumentObject analyze(String xmlFilePath)
+ throws FileNotFoundException, DocumentException {
+ FileInputStream stream = new FileInputStream(xmlFilePath);
+ return this.analyze(stream);
+ }
+
+ public DocumentObject analyze(InputStream stream) throws DocumentException {
+ SAXReader reader = new SAXReader();
+ Document doc = reader.read(stream);
+ Element rootElement = doc.getRootElement();
+ DocumentObject dco = new DocumentObject();
+ dco.setName("Docuement");
+ dco.setRootTag( parseElement(rootElement, null));
+ return dco;
+ }
+
+ protected TagObject getChildTagByName(String name, TagObject tag) {
+ if (tag == null)
+ return null;
+ List list = tag.getChildren();
+ for (Iterator iterator = list.iterator(); iterator.hasNext();) {
+ TagObject tagc = (TagObject) iterator.next();
+ if (tagc.getName().equals(name))
+ return tagc;
+ }
+ return null;
+ }
+
+ protected TagObject parseElement(Element element, TagObject parentTag) {
+ boolean canAdd = false;
+ TagObject tag = getChildTagByName(element.getName(), parentTag);
+ if (tag == null) {
+ tag = new TagObject();
+ canAdd = true;
+ }
+ tag.setName(element.getName());
+ fillProperties(element, tag);
+
+ List list = element.elements();
+ for (Iterator iterator = list.iterator(); iterator.hasNext();) {
+ Element childElement = (Element) iterator.next();
+ TagObject t = parseElement(childElement, tag);
+ if (t != null)
+ tag.addChildTag(t);
+ }
+ if (canAdd)
+ return tag;
+ else
+ return null;
+ }
+
+ protected boolean hasSameNameProperty(String proName, TagObject tag) {
+ List pros = tag.getProperties();
+ for (Iterator iterator = pros.iterator(); iterator.hasNext();) {
+ TagPropertyObject tp = (TagPropertyObject) iterator.next();
+ if (tp.getName().equals(proName))
+ return true;
+ }
+ return false;
+ }
+
+ protected void fillProperties(Element element, TagObject tag) {
+ Iterator it = element.attributeIterator();
+ for (Iterator iterator = it; iterator.hasNext();) {
+ Attribute attr = (Attribute) iterator.next();
+ if (hasSameNameProperty(attr.getName(), tag)) {
+ continue;
+ }
+ TagPropertyObject pro = new TagPropertyObject();
+ pro.setName(attr.getName());
+
+ tag.addProperty(pro);
+ }
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLObjectAnalyzer.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLStructuredModel.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLStructuredModel.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLStructuredModel.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.xml.model;
+
+import org.eclipse.core.runtime.IAdaptable;
+
+/**
+ * @author Dart Peng
+ *
+ * @CreateTime Jul 24, 2008
+ */
+public class XMLStructuredModel implements IAdaptable {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+ */
+ public Object getAdapter(Class arg0) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLStructuredModel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLStrucutredModelParser.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLStrucutredModelParser.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLStrucutredModelParser.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * 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.xml.model;
+
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataModel;
+import org.jboss.tools.smooks.ui.gef.model.StructuredDataContentModel;
+import org.jboss.tools.smooks.ui.gef.model.StructuredDataModel;
+import org.jboss.tools.smooks.ui.modelparser.IStructuredModelParser;
+
+/**
+ *
+ * @author Dart Peng
+ * @Date Jul 25, 2008
+ */
+public class XMLStrucutredModelParser implements IStructuredModelParser {
+
+ public AbstractStructuredDataModel parse(Object customModel) {
+ AbstractStructuredDataModel model = null;
+ // for AbstractXMLObject (come from xml file fragment)
+ if(customModel instanceof DocumentObject){
+ model = new StructuredDataModel();
+ model.setLabelName(((DocumentObject)customModel).getName());
+ }
+
+ if(customModel instanceof TagObject){
+ model = new StructuredDataContentModel();
+ model.setLabelName(((TagObject)customModel).getName());
+ }
+ if(customModel instanceof TagPropertyObject){
+ model = new StructuredDataContentModel();
+ model.setLabelName(((TagPropertyObject)customModel).getName());
+ model.setTypeString(((TagPropertyObject)customModel).getType());
+ }
+
+ // for XSD (come from XML Schema file)
+ if (customModel instanceof XSDSchema) {
+ model = new StructuredDataModel();
+ StructuredDataModel sm = (StructuredDataModel) model;
+ sm.setLabelName("Schema");
+ }
+ if (customModel instanceof XSDElementDeclaration) {
+ model = new StructuredDataContentModel();
+ model.setLabelName(((XSDElementDeclaration) customModel)
+ .getAliasName());
+ model
+ .setTypeString(getElementTypeString((XSDElementDeclaration) customModel));
+ }
+ if (customModel instanceof XSDAttributeDeclaration) {
+ model = new StructuredDataContentModel();
+ model.setLabelName(((XSDAttributeDeclaration) customModel)
+ .getAliasName());
+ model.setTypeString(((XSDAttributeDeclaration) customModel)
+ .getTypeDefinition().getQName());
+ }
+ if (model != null) {
+ model.setReferenceEntityModel(customModel);
+ }
+ return model;
+ }
+
+ protected boolean isSimpleElement(XSDElementDeclaration element) {
+ return this.getSimpleType(element) != null;
+ }
+
+ protected String getElementTypeString(XSDElementDeclaration element) {
+ if (isSimpleElement(element)) {
+ XSDSimpleTypeDefinition simple = getSimpleType(element);
+ return simple.getQName();
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ *
+ * @param element
+ * @return
+ */
+ protected XSDSimpleTypeDefinition getSimpleType(
+ XSDElementDeclaration element) {
+ XSDTypeDefinition type = element.getType();
+ return type.getSimpleType();
+ }
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/model/XMLStrucutredModelParser.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataContentProvider.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataContentProvider.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataContentProvider.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * 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.xml.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.jboss.tools.smooks.xml.model.DocumentObject;
+import org.jboss.tools.smooks.xml.model.TagObject;
+
+/**
+ * @author Dart Peng
+ * @Date Aug 18, 2008
+ */
+public class XMLStructuredDataContentProvider implements ITreeContentProvider {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+ */
+ public Object[] getChildren(Object obj) {
+ // for AbstractXMLObject (come from xml file fragment)
+ if(obj instanceof DocumentObject){
+ return new Object[]{((DocumentObject)obj).getRootTag()};
+ }
+
+ if(obj instanceof TagObject){
+ List c = new ArrayList();
+ List pros = ((TagObject)obj).getProperties();
+ c.addAll(pros);
+ c.addAll(((TagObject)obj).getChildren());
+
+ return c.toArray();
+ }
+ return new Object[] {};
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object )
+ */
+ public Object getParent(Object arg0) {
+ // if(arg0 instanceof)
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.
+ * Object)
+ */
+ public boolean hasChildren(Object obj) {
+
+ // for AbstractXMLObject (come from xml file fragment)
+ if(obj instanceof DocumentObject){
+ return true;
+ }
+ if(obj instanceof TagObject){
+ List pros = ((TagObject)obj).getProperties();
+ List c = (((TagObject)obj).getChildren());
+ return !pros.isEmpty() || !c.isEmpty();
+ }
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java
+ * .lang.Object)
+ */
+ public Object[] getElements(Object arg0) {
+ if (arg0 instanceof List) {
+ return ((List) arg0).toArray();
+ }
+ if(arg0 instanceof DocumentObject){
+ return new Object[]{((DocumentObject)arg0).getRootTag()};
+ }
+ return new Object[] {};
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose() {
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface
+ * .viewers.Viewer, java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
+
+ }
+
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataContentProvider.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataLabelProvider.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataLabelProvider.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataLabelProvider.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * 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.xml.ui;
+
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.jboss.tools.smooks.xml.XMLImageConstants;
+import org.jboss.tools.smooks.xml.XmlActivator;
+import org.jboss.tools.smooks.xml.model.AbstractXMLObject;
+import org.jboss.tools.smooks.xml.model.DocumentObject;
+import org.jboss.tools.smooks.xml.model.TagObject;
+import org.jboss.tools.smooks.xml.model.TagPropertyObject;
+
+/**
+ * @author Dart Peng
+ * @Date Aug 18, 2008
+ */
+public class XMLStructuredDataLabelProvider extends LabelProvider {
+
+ public Image getXmlElementImage() {
+ return XmlActivator.getDefault().getImageRegistry().get(
+ XMLImageConstants.IMAGE_XML_ELEMENT);
+
+ }
+
+ public Image getXmlAttributeImage() {
+ return XmlActivator.getDefault().getImageRegistry().get(
+ XMLImageConstants.IMAGE_XML_ATTRIBUTE);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object)
+ */
+ @Override
+ public Image getImage(Object element) {
+ if (element instanceof TagObject) {
+ return getXmlElementImage();
+ }
+ if (element instanceof TagPropertyObject) {
+ return getXmlAttributeImage();
+ }
+ return super.getImage(element);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
+ */
+ @Override
+ public String getText(Object element) {
+ if (element instanceof DocumentObject) {
+ return "Root";
+ }
+ if (element instanceof AbstractXMLObject) {
+ return ((AbstractXMLObject) element).getName();
+ }
+ return super.getText(element);
+ }
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataLabelProvider.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataWizard.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataWizard.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataWizard.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * 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.xml.ui;
+
+import org.jboss.tools.smooks.xml.AbstractFileSelectionWizardPage;
+import org.jboss.tools.smooks.xml.AbstractStructuredDdataWizard;
+import org.jboss.tools.smooks.xml.XmlActivator;
+
+/**
+ * @author Dart Peng
+ * @Date Aug 18, 2008
+ */
+public class XMLStructuredDataWizard extends AbstractStructuredDdataWizard{
+
+ @Override
+ protected AbstractFileSelectionWizardPage createAbstractFileSelectionWizardPage() {
+ return new XMLStructuredDataWizardPage("XML");
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.tools.smooks.ui.IStrucutredDataCreationWizard#getInputDataTypeID()
+ */
+ public String getInputDataTypeID() {
+ return XmlActivator.TYPE_ID_XML;
+ }
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataWizard.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataWizardPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataWizardPage.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataWizardPage.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,41 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.xml.ui;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.jboss.tools.smooks.xml.AbstractFileSelectionWizardPage;
+import org.jboss.tools.smooks.xml.model.DocumentObject;
+import org.jboss.tools.smooks.xml.model.XMLObjectAnalyzer;
+
+/**
+ * @author Dart Peng Date : 2008-8-16
+ */
+public class XMLStructuredDataWizardPage extends
+ AbstractFileSelectionWizardPage {
+
+ public XMLStructuredDataWizardPage(String pageName, String title,
+ ImageDescriptor titleImage) {
+ super(pageName, title, titleImage);
+ // TODO Auto-generated constructor stub
+ }
+
+ public XMLStructuredDataWizardPage(String pageName) {
+ super(pageName);
+ // TODO Auto-generated constructor stub
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
org.jboss.tools.smooks.xml.ui.AbstractFileSelectionWizardPage#loadedTheObject(java.lang.String)
+ */
+ @Override
+ protected Object loadedTheObject(String path) throws Exception {
+
+ XMLObjectAnalyzer analyzer = new XMLObjectAnalyzer();
+ DocumentObject doc = analyzer.analyze(path);
+
+ return doc;
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xml/ui/XMLStructuredDataWizardPage.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/model/XSDStructuredModelContentProvider.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/model/XSDStructuredModelContentProvider.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/model/XSDStructuredModelContentProvider.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.xsd.model;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.xsd.provider.XSDItemProviderAdapterFactory;
+
+
+/**
+ * @author Dart Peng
+ *
+ * @CreateTime Jul 24, 2008
+ */
+public class XSDStructuredModelContentProvider extends AdapterFactoryContentProvider {
+ public XSDStructuredModelContentProvider() {
+ super(new XSDItemProviderAdapterFactory());
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/model/XSDStructuredModelContentProvider.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/model/XSDStructuredModelLabelProvider.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/model/XSDStructuredModelLabelProvider.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/model/XSDStructuredModelLabelProvider.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * 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.xsd.model;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.xsd.provider.XSDItemProviderAdapterFactory;
+
+/**
+ * @author Dart Peng
+ * @Date Jul 30, 2008
+ */
+public class XSDStructuredModelLabelProvider extends AdapterFactoryLabelProvider {
+
+ public XSDStructuredModelLabelProvider() {
+ super(new XSDItemProviderAdapterFactory());
+ }
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/model/XSDStructuredModelLabelProvider.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/ui/XSDStructuredDataWizard.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/ui/XSDStructuredDataWizard.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/ui/XSDStructuredDataWizard.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * 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.xsd.ui;
+
+import org.jboss.tools.smooks.xml.AbstractFileSelectionWizardPage;
+import org.jboss.tools.smooks.xml.AbstractStructuredDdataWizard;
+import org.jboss.tools.smooks.xml.XmlActivator;
+
+/**
+ * @author Dart Peng
+ * @Date Aug 18, 2008
+ */
+public class XSDStructuredDataWizard extends AbstractStructuredDdataWizard {
+
+ /* (non-Javadoc)
+ * @see
org.jboss.tools.smooks.xml.AbstractStructuredDdataWizard#createAbstractFileSelectionWizardPage()
+ */
+ @Override
+ protected AbstractFileSelectionWizardPage createAbstractFileSelectionWizardPage() {
+ return new XSDStructuredDataWizardPage("XSD");
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.tools.smooks.ui.IStrucutredDataCreationWizard#getInputDataTypeID()
+ */
+ public String getInputDataTypeID() {
+ return XmlActivator.TYPE_ID_XSD;
+ }
+
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/ui/XSDStructuredDataWizard.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/ui/XSDStructuredDataWizardPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/ui/XSDStructuredDataWizardPage.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/ui/XSDStructuredDataWizardPage.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,40 @@
+/**
+ *
+ */
+package org.jboss.tools.smooks.xsd.ui;
+
+import java.util.Collections;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.util.XSDResourceFactoryImpl;
+import org.jboss.tools.smooks.xml.AbstractFileSelectionWizardPage;
+
+/**
+ * @author Dart Peng
+ * Date : 2008-8-16
+ */
+public class XSDStructuredDataWizardPage extends
+ AbstractFileSelectionWizardPage {
+
+// public XSDStructuredDataWizardPage(String pageName, String title,
+// ImageDescriptor titleImage) {
+// super(pageName, title, titleImage);
+// // TODO Auto-generated constructor stub
+// }
+
+ public XSDStructuredDataWizardPage(String pageName) {
+ super(pageName);
+ this.setTitle("XSD File Selection");
+ this.setMessage("Select a *.xsd file to loaded ");
+ }
+ protected Object loadedTheObject(String path) throws Exception {
+ Resource resource = new XSDResourceFactoryImpl().createResource(URI
+ .createFileURI(path));
+ resource.load(Collections.EMPTY_MAP);
+ XSDSchema schema = (XSDSchema) resource.getContents().get(0);
+ return schema;
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src/org/jboss/tools/smooks/xsd/ui/XSDStructuredDataWizardPage.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/smooks/xml2java/model/ModelTest.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/smooks/xml2java/model/ModelTest.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/smooks/xml2java/model/ModelTest.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,47 @@
+package org.jboss.tools.smooks.xml2java.model;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.dom4j.DocumentException;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.util.XSDResourceFactoryImpl;
+import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataModel;
+import org.jboss.tools.smooks.ui.modelparser.ParseEngine;
+import org.jboss.tools.smooks.xml.model.XMLObjectAnalyzer;
+import org.jboss.tools.smooks.xml.model.XMLStrucutredModelParser;
+import org.jboss.tools.smooks.xsd.model.XSDStructuredModelContentProvider;
+
+public class ModelTest extends TestCase {
+ public void testModelTrasform() throws IOException{
+ Resource resource = new XSDResourceFactoryImpl().createResource(URI
+ .createFileURI("/root/Public/smooks_1_0.xsd"));
+ resource.load(Collections.EMPTY_MAP);
+ XSDSchema schema = (XSDSchema) resource.getContents().get(0);
+
+ ParseEngine engine = new ParseEngine();
+ AbstractStructuredDataModel model = engine.parseModel(schema, new
XSDStructuredModelContentProvider(), new XMLStrucutredModelParser());
+ printStructuredDataModel(model);
+ }
+
+ protected void printStructuredDataModel(AbstractStructuredDataModel model){
+ System.out.println(model.getLabelName() + " - " + model.getTypeString());
+ List children = model.getChildren();
+ for (Iterator iterator = children.iterator(); iterator.hasNext();) {
+ AbstractStructuredDataModel child = (AbstractStructuredDataModel) iterator.next();
+ printStructuredDataModel(child);
+ }
+ }
+
+ public void testXMLfragment() throws FileNotFoundException, DocumentException{
+ XMLObjectAnalyzer an = new XMLObjectAnalyzer();
+ System.out.println(an.analyze("/root/Public/test.xml").toString());
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/smooks/xml2java/model/ModelTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/smooks/xml2java/model/XMLStructuredModelBuilderTest.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/smooks/xml2java/model/XMLStructuredModelBuilderTest.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/smooks/xml2java/model/XMLStructuredModelBuilderTest.java 2008-09-08
03:29:45 UTC (rev 10130)
@@ -0,0 +1,723 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.xml2java.model;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDResourceFactoryImpl;
+
+/**
+ * @author Dart Peng
+ *
+ * @CreateTime Jul 24, 2008
+ */
+public class XMLStructuredModelBuilderTest {
+ public static void main(String[] args) throws IOException {
+ Resource resource = new XSDResourceFactoryImpl().createResource(URI
+ .createFileURI("/root/Public/smooks_1_0.xsd"));
+ resource.load(Collections.EMPTY_MAP);
+ XSDSchema schema = (XSDSchema) resource.getContents().get(0);
+ List elements = schema.getElementDeclarations();
+ for (Iterator iterator = elements.iterator(); iterator.hasNext();) {
+ XSDElementDeclaration elementDec = (XSDElementDeclaration) iterator
+ .next();
+ // if (elementDec.isAbstract())
+ // continue;
+ // System.out.println(elementDec.isAbstract());
+ XSDTypeDefinition td = elementDec.getType();
+ XSDSimpleTypeDefinition st = td.getSimpleType();
+ System.out.println("Element Name :" + elementDec.getAliasName());
+ // XSDComplexTypeDefinition ct = td.getComplexType();
+ if (st != null) {
+ System.out.println("\tSimple Type :" + st.toString());
+ }
+ if (td instanceof XSDComplexTypeDefinition) {
+ XSDComplexTypeDefinition ctype = (XSDComplexTypeDefinition) td;
+
+ XSDParticle xsdparticle = td.getComplexType();
+ if (xsdparticle != null) {
+ XSDParticleContent term = xsdparticle.getContent();//.getTerm
+ // ();
+ if (term instanceof XSDModelGroup) {
+ List list = ((XSDModelGroup) term).getParticles();
+ for (Iterator iterator2 = list.iterator(); iterator2
+ .hasNext();) {
+ XSDParticle xp = (XSDParticle) iterator2.next();
+ XSDParticleContent content = xp.getContent();
+ if (content instanceof XSDElementDeclaration) {
+ XSDElementDeclaration child = (XSDElementDeclaration) content;
+ String refStr = "";
+ if (child.isElementDeclarationReference()) {
+ child = child
+ .getResolvedElementDeclaration();
+ refStr = "Reference";
+ }
+ XSDTypeDefinition childType = child
+ .getTypeDefinition();
+
+ System.out.println("\t" + refStr
+ + "Element Name: "
+ + child.getAliasName() + " - "
+ + childType);
+
+ }
+ }
+ }
+ }
+ List attributeContents = ctype.getAttributeContents();
+ for (Iterator iterator2 = attributeContents.iterator(); iterator2
+ .hasNext();) {
+ XSDAttributeUse attributeUse = (XSDAttributeUse) iterator2
+ .next();
+ XSDAttributeDeclaration attribute = attributeUse
+ .getAttributeDeclaration();
+ System.out.println("\tAttributes :"
+ + attribute.getAliasName() + " - "
+ + attribute.getTypeDefinition().getQName());
+ }
+ continue;
+ } else {
+ // XSDSimpleTypeDefinition stype = td.getSimpleType();
+ // System.out.println("Simple Type :" +stype.toString());
+ }
+ System.out.println();
+ }
+ }
+ // private static final String SCHEMA_NAMESPACE =
+ // "http://www.w3.org/2001/XMLSchema";
+ // private static String destDir;
+ //
+ // public static void main(String[] args) throws IOException {
+ // // need to do this in order to have Eclipse's XSD 'resource'
+ // // support work,
+ // Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(
+ // "xsd", new XSDResourceFactoryImpl());
+ //
+ // String filename = args[0];
+ // if (args.length > 1) {
+ // destDir = args[1];
+ // } else {
+ // destDir = ".";
+ // }
+ // XSDSchema mainSchema = loadSchema(filename);
+ // processSchema(mainSchema);
+ // }
+ //
+ // private static XSDSchema loadSchema(String filename) throws IOException {
+ // ResourceSet resourceSet = new ResourceSetImpl();
+ // XSDResourceImpl resource = (XSDResourceImpl) resourceSet
+ // .createResource(URI.createURI("*.xsd"));
+ // resource.setURI(URI.createFileURI(filename));
+ // resource.load(resourceSet.getLoadOptions());
+ // XSDSchema mainSchema = resource.getSchema();
+ // return mainSchema;
+ // }
+ //
+ // private static void processSchema(XSDSchema schema) throws IOException {
+ // processSchemaCreateTypes(schema);
+ // processSchemaCreateUnmarshaler(schema);
+ // }
+ //
+ // private static void processSchemaCreateTypes(XSDSchema schema)
+ // throws IOException {
+ // List types = schema.getTypeDefinitions();
+ // for (Iterator i = types.iterator(); i.hasNext();) {
+ // XSDTypeDefinition typeDef = (XSDTypeDefinition) i.next();
+ // if (typeDef instanceof XSDComplexTypeDefinition) {
+ // processComplexType((XSDComplexTypeDefinition) typeDef);
+ // }
+ // }
+ // }
+ //
+ // /**
+ // * Handle a top-level complex type definition by creating an AS class.
+ // */
+ // private static void processComplexType(XSDComplexTypeDefinition typeDef)
+ // throws IOException {
+ // ASSourceFactory fact = new ASSourceFactory();
+ // CompilationUnit unit = fact.newClass(typeName(typeDef));
+ // ASClassType clazz = (ASClassType) unit.getType();
+ // processComplexTypeBaseType(typeDef, clazz);
+ // processComplexTypeAnnotation(typeDef, clazz);
+ // processAllComplexTypeAttributes(typeDef, clazz);
+ // processAllComplexTypeElements(typeDef, clazz);
+ // fact.write(destDir, unit);
+ // }
+ //
+ // /**
+ // * Super-type handling
+ // */
+ // private static void processComplexTypeBaseType(
+ // XSDComplexTypeDefinition typeDef, ASClassType clazz) {
+ // XSDTypeDefinition baseType = typeDef.getBaseType();
+ // if (!isXSDAnyType(baseType)) {
+ // clazz.setSuperclass(typeName(baseType));
+ // }
+ // }
+ //
+ // /**
+ // * turn attrubutes defined by the complexType into class properties
+ // */
+ // private static void processAllComplexTypeAttributes(
+ // XSDComplexTypeDefinition typeDef, ASClassType clazz) {
+ // List attrs = typeDef.getAttributeContents();
+ // for (Iterator i = attrs.iterator(); i.hasNext();) {
+ // XSDAttributeGroupContent attrContent = (XSDAttributeGroupContent) i
+ // .next();
+ // if (attrContent instanceof XSDAttributeUse) {
+ // processComplexTypeAttribute((XSDAttributeUse) attrContent,
+ // clazz);
+ // }
+ // }
+ // }
+ //
+ // /**
+ // * turn this particular attribute into a property on the given AS class
+ // */
+ // private static void processComplexTypeAttribute(XSDAttributeUse attrUse,
+ // ASClassType clazz) {
+ // XSDAttributeDeclaration attrDecl = attrUse.getAttributeDeclaration();
+ // ASField field = clazz.newField(fieldName(attrDecl), Visibility.PUBLIC,
+ // typeName(attrDecl.getTypeDefinition()));
+ // String doc = findDocumentation(attrDecl.getAnnotation());
+ // if (doc != null) {
+ // field.setDocComment(doc);
+ // }
+ // }
+ //
+ // /**
+ // * create a field name based on the given attribute declaration
+ // */
+ // private static String fieldName(XSDAttributeDeclaration attrDecl) {
+ // // TODO: name sanitization etc.
+ // return attrDecl.getName();
+ // }
+ //
+ // /**
+ // * add any annotation on the given complexType as the documentation
+ // comment
+ // * for the given AS class.
+ // */
+ // private static void processComplexTypeAnnotation(
+ // XSDComplexTypeDefinition typeDef, ASClassType clazz) {
+ // String doc = findDocumentation(typeDef.getAnnotation());
+ // if (doc != null) {
+ // clazz.setDocComment("\n" + doc + "\n");
+ // }
+ // }
+ //
+ // /**
+ // * attempt to extract simple text from the documentation element of the
+ // * given annotation.
+ // */
+ // private static String findDocumentation(XSDAnnotation annotation) {
+ // if (annotation != null) {
+ // List docs = annotation.getUserInformation();
+ // for (Iterator i = docs.iterator(); i.hasNext();) {
+ // // maybe we can do better..?
+ // Element doc = (Element) i.next();
+ // return preProcessComment(doc.getTextContent());
+ // }
+ // }
+ // return null;
+ // }
+ //
+ // /**
+ // * Strip initial whitespace from all lines in the given string, and return
+ // a
+ // * string which starts each line with a single space character, ready to
+ // go
+ // * into a javadoc comment.
+ // */
+ // private static String preProcessComment(String text) {
+ // return text.replaceFirst("\\A\\s*", "
").replaceAll("([\n\r])\\s+",
+ // "$1 ");
+ // }
+ //
+ // /**
+ // * returns the name of the AS type that holds data for the given component
+ // * of the schema
+ // */
+ // private static String typeName(XSDNamedComponent named) {
+ // if (named instanceof XSDSimpleTypeDefinition) {
+ // XSDSimpleTypeDefinition simpleType = (XSDSimpleTypeDefinition) named;
+ // return lookupTypeName(simpleType);
+ // }
+ // if (isXSDAnyType(named)) {
+ // return "XML";
+ // }
+ // String pkgName = toPackageName(named.getTargetNamespace());
+ // return pkgName + "." + named.getName();
+ // }
+ //
+ // private static boolean isXSDAnyType(XSDNamedComponent named) {
+ // return "anyType".equals(named.getName())
+ // && named.getTargetNamespace().equals(SCHEMA_NAMESPACE);
+ // }
+ //
+ // private static String toPackageName(String targetNamespace) {
+ // URI uri = URI.createURI(targetNamespace);
+ // String name = reverseJoin(sanitize(uri.host().split("\\.")),
".");
+ // if (uri.hasPath()) {
+ // String path = uri.path().replaceAll("/+",
"/").replaceFirst("\\A/",
+ // "");
+ // name = name + "." + join(sanitize(path.split("/")),
".");
+ // }
+ // return name;
+ // }
+ //
+ // private static String[] sanitize(String[] strings) {
+ // for (int i = 0; i < strings.length; i++) {
+ // strings[i] = sanitize(strings[i]);
+ // }
+ // return strings;
+ // }
+ //
+ // private static String sanitize(String string) {
+ // StringBuffer result = new StringBuffer();
+ // if (!Character.isJavaIdentifierStart(string.charAt(0))
+ // && Character.isJavaIdentifierPart(string.charAt(0))) {
+ // // e.g. if this fragment starts with a number, prefix
+ // // it with an underscore to create a valid identifier
+ // result.append("_");
+ // }
+ // for (int i = 0; i < string.length(); i++) {
+ // char c = string.charAt(i);
+ // if (Character.isJavaIdentifierPart(c)) {
+ // result.append(c);
+ // } else {
+ // result.append("_");
+ // }
+ // }
+ // return result.toString();
+ // }
+ //
+ // private static String reverseJoin(String[] strings, String delimiter) {
+ // StringBuffer result = new StringBuffer();
+ // for (int i = strings.length - 1; i >= 0; i--) {
+ // result.append(strings[i]);
+ // if (i > 0) {
+ // result.append(delimiter);
+ // }
+ // }
+ // return result.toString();
+ // }
+ //
+ // private static String join(String[] strings, String delimiter) {
+ // StringBuffer result = new StringBuffer();
+ // for (int i = 0; i < strings.length; i++) {
+ // if (i > 0) {
+ // result.append(delimiter);
+ // }
+ // result.append(strings[i]);
+ // }
+ // return result.toString();
+ // }
+ //
+ // /**
+ // * tries to map XML Schema standard types to AS types
+ // */
+ // private static String lookupTypeName(XSDSimpleTypeDefinition simpleType)
+ // {
+ // if (simpleType == null) {
+ // return null;
+ // }
+ // if (simpleType.getTargetNamespace().equals(SCHEMA_NAMESPACE)) {
+ // if (simpleType.getName().equals("string")) {
+ // return "String";
+ // }
+ // if (simpleType.getName().equals("int")) {
+ // return "Number";
+ // }
+ // if (simpleType.getName().equals("float")) {
+ // return "Number";
+ // }
+ // System.err.println("Unhandled type " + simpleType.getURI());
+ // return null;
+ // }
+ // return lookupTypeName(simpleType.getBaseTypeDefinition());
+ // }
+ //
+ // /**
+ // * adds all elements declared by the given complexType as properties to
+ // the
+ // * given AS class
+ // */
+ // private static void processAllComplexTypeElements(
+ // XSDComplexTypeDefinition typeDef, ASClassType clazz) {
+ // XSDComplexTypeContent complexContent = typeDef.getContent();
+ // if (complexContent instanceof XSDParticle) {
+ // XSDParticle particle = (XSDParticle) complexContent;
+ // XSDParticleContent particleContent = particle.getContent();
+ // if (particleContent instanceof XSDModelGroup) {
+ // XSDModelGroup modelGroup = (XSDModelGroup) particleContent;
+ // if (modelGroup.getCompositor().equals(
+ // XSDCompositor.SEQUENCE_LITERAL)) {
+ // processComplexTypeSequence(typeDef, modelGroup, clazz);
+ // }
+ // }
+ // }
+ // }
+ //
+ // /**
+ // * auxiliary function used by processAllComplexTypeElements() to handle
+ // the
+ // * xs:sequence within an xs:complexType
+ // */
+ // private static void processComplexTypeSequence(
+ // XSDComplexTypeDefinition typeDef, XSDModelGroup modelGroup,
+ // ASClassType clazz) {
+ // List particles = modelGroup.getParticles();
+ // for (Iterator i = particles.iterator(); i.hasNext();) {
+ // XSDParticle part = (XSDParticle) i.next();
+ // XSDParticleContent partContent = part.getContent();
+ // if (partContent instanceof XSDElementDeclaration) {
+ // processComplexTypeElementDeclaration(part,
+ // (XSDElementDeclaration) partContent, clazz);
+ // }
+ // }
+ // }
+ //
+ // /**
+ // * handles an xs:element within the xs:sequence of an xs:complexType by
+ // * adding a property to the given AS class.
+ // */
+ // private static void processComplexTypeElementDeclaration(XSDParticle
+ // part,
+ // XSDElementDeclaration decl, ASClassType clazz) {
+ // if (decl.isElementDeclarationReference()) {
+ // decl = decl.getResolvedElementDeclaration();
+ // }
+ // XSDElementDeclaration listElement = getElementIfContainerForList(decl);
+ // String typeName = null;
+ // String doc = findDocumentation(decl.getAnnotation());
+ // if (listElement != null) {
+ // typeName = "Array";
+ // if (doc == null) {
+ // doc = "";
+ // } else {
+ // doc += "\n\n";
+ // }
+ // doc += " Elements of type {@link "
+ // + typeName(listElement.getType()) + "}";
+ // } else if (isMultiplyOccuring(part)) {
+ // typeName = "Array";
+ // if (doc == null) {
+ // doc = "";
+ // } else {
+ // doc += "\n\n";
+ // }
+ // if (decl.getType() != null) {
+ // doc += "Elements of type {@link " + typeName(decl.getType())
+ // + "}\n";
+ // }
+ // doc += "minOccurs " + describeMultiplicity(part.getMinOccurs())
+ // + ", maxOccurs "
+ // + describeMultiplicity(part.getMaxOccurs());
+ // } else if (decl.getType() != null) {
+ // typeName = typeName(decl.getType());
+ // }
+ // if (typeName == null) {
+ // System.err.println("no AS type resulted from: " + decl.getType());
+ // }
+ // ASField field = clazz.newField(fieldName(decl), Visibility.PUBLIC,
+ // typeName);
+ // if (doc != null) {
+ // field.setDocComment(doc);
+ // }
+ // }
+ //
+ // /**
+ // * returns the name of the AS field which should hold values of the given
+ // * element declaration.
+ // */
+ // private static String fieldName(XSDElementDeclaration decl) {
+ // // TODO: sanitise value, etc.
+ // return decl.getName();
+ // }
+ //
+ // /**
+ // * If the given element appears to be implementing a list-container design
+ // * pattern then return the definition of the element repeated in the list
+ // */
+ // private static XSDElementDeclaration getElementIfContainerForList(
+ // XSDElementDeclaration decl) {
+ // XSDTypeDefinition typeDef = decl.getAnonymousTypeDefinition();
+ // if (typeDef == null) {
+ // return null;
+ // }
+ // // look for the definition pattern which allows documents like:
+ // // ...<eggs><egg/><egg/><egg/></eggs>...
+ // // so that we can add a 'eggs' array to the defining class,
+ // // rather than creating a useless 'Eggs' class which just holds
+ // // the array.
+ // // TODO: check for attrs on container,
+ // XSDParticle ctype = typeDef.getComplexType();
+ // XSDParticleContent particleContent = ctype.getContent();
+ // if (particleContent instanceof XSDModelGroup) {
+ // XSDModelGroup modelGroup = (XSDModelGroup) particleContent;
+ // if (modelGroup.getCompositor().equals(
+ // XSDCompositor.SEQUENCE_LITERAL)) {
+ // List particles = modelGroup.getParticles();
+ // if (particles.size() == 1) {
+ // XSDParticle part = (XSDParticle) particles.get(0);
+ // XSDParticleContent partContent = part.getContent();
+ // if (partContent instanceof XSDElementDeclaration) {
+ // if (isMultiplyOccuring(part)) {
+ // return (XSDElementDeclaration) partContent;
+ // }
+ // }
+ // }
+ // }
+ // }
+ //
+ // return null;
+ // }
+ //
+ // /**
+ // * returns true if the given particle's maxOccurs attribute is either
+ // * 'unbounded', or an integer greater than 1.
+ // */
+ // private static boolean isMultiplyOccuring(XSDParticle part) {
+ // int max = part.getMaxOccurs();
+ // return max == -1 || max > 1; // -1 : unbounded
+ // }
+ //
+ // /**
+ // * returns a text string with either the value "unbounded" if the given
+ // * integer is -1, or the decimal representation of the given integer
+ // * otherwise.
+ // */
+ // private static String describeMultiplicity(int occurs) {
+ // if (occurs == -1) {
+ // return "unbounded";
+ // } else {
+ // return String.valueOf(occurs);
+ // }
+ // }
+ //
+ // // ---- marshaling / unmarshaling ----
+ //
+ // private static void processSchemaCreateUnmarshaler(XSDSchema schema)
+ // throws IOException {
+ // ASSourceFactory fact = new ASSourceFactory();
+ // CompilationUnit unit = fact.newClass(toPackageName(schema
+ // .getTargetNamespace())
+ // + ".Unmarshaler");
+ // ASClassType clazz = (ASClassType) unit.getType();
+ // List types = schema.getTypeDefinitions();
+ // for (Iterator i = types.iterator(); i.hasNext();) {
+ // XSDTypeDefinition typeDef = (XSDTypeDefinition) i.next();
+ // if (typeDef instanceof XSDComplexTypeDefinition) {
+ // XSDComplexTypeDefinition ctype = (XSDComplexTypeDefinition) typeDef;
+ // String typeName = typeName(ctype);
+ // ASMethod meth = clazz.newMethod(unmarshalerMethodFor(ctype),
+ // Visibility.PUBLIC, typeName(ctype));
+ // meth.addParam("thisElement", "XML");
+ // meth.addStmt("var _result:" + typeName + " = new " + typeName
+ // + "()");
+ // processComplexTypeBaseTypeUnmarshal(ctype, meth);
+ // processAllComplexTypeAttributesUnmarshal(ctype, meth);
+ // processAllComplexTypeElementsUnmarshal(ctype, meth);
+ // meth.addStmt("return _result");
+ // }
+ // }
+ // fact.write(destDir, unit);
+ // }
+ //
+ // private static void processComplexTypeBaseTypeUnmarshal(
+ // XSDComplexTypeDefinition ctype, ASMethod meth) {
+ // XSDTypeDefinition baseType = ctype.getBaseType();
+ // if (!isXSDAnyType(baseType)) {
+ // // TODO: handle base class initialisation
+ // }
+ // }
+ //
+ // private static void processAllComplexTypeAttributesUnmarshal(
+ // XSDComplexTypeDefinition ctype, ASMethod meth) {
+ // List attrs = ctype.getAttributeContents();
+ // for (Iterator i = attrs.iterator(); i.hasNext();) {
+ // XSDAttributeGroupContent attrContent = (XSDAttributeGroupContent) i
+ // .next();
+ // if (attrContent instanceof XSDAttributeUse) {
+ // processComplexTypeAttributeUnmarshal(
+ // (XSDAttributeUse) attrContent, meth);
+ // }
+ // }
+ // }
+ //
+ // private static void processComplexTypeAttributeUnmarshal(
+ // XSDAttributeUse attrUse, ASMethod meth) {
+ // XSDAttributeDeclaration attrDecl = attrUse.getAttributeDeclaration();
+ // String accessExpr = "thisElement." + attrAccess(attrDecl);
+ // accessExpr = doBasicTypeCoercion(accessExpr, attrDecl.getType());
+ // meth.addStmt("_result." + fieldName(attrDecl) + " = " +
accessExpr);
+ // }
+ //
+ // private static String doBasicTypeCoercion(String expr,
+ // XSDTypeDefinition type) {
+ // if (typeIsA(type, SCHEMA_NAMESPACE, "string")) {
+ // return expr;
+ // }
+ // if (typeIsA(type, SCHEMA_NAMESPACE, "int")
+ // || typeIsA(type, SCHEMA_NAMESPACE, "float")) {
+ // return "Number(" + expr + ")";
+ // }
+ // System.err.println("Unable to produce type convertion expression for "
+ // + type.getURI());
+ // return expr + " /* <-- didn't know how to convert */";
+ // }
+ //
+ // private static boolean typeIsA(XSDTypeDefinition type, String namespace,
+ // String name) {
+ // return (type.getName().equals(name) && type.getTargetNamespace()
+ // .equals(namespace))
+ // || XSDSchemaQueryTools.isTypeDerivedFrom(type, namespace, name);
+ // }
+ //
+ // private static String attrAccess(XSDAttributeDeclaration attrDecl) {
+ // if (isValidIdent(attrDecl.getName())) {
+ // return "@" + attrDecl.getName();
+ // }
+ // return "@[" + ASSourceFactory.str(attrDecl.getName()) + "]";
+ // }
+ //
+ // private static boolean isValidIdent(String name) {
+ // if (!Character.isJavaIdentifierStart(name.charAt(0))) {
+ // return false;
+ // }
+ // for (int i = 1; i < name.length(); i++) {
+ // if (!Character.isJavaIdentifierPart(name.charAt(0))) {
+ // return false;
+ // }
+ // }
+ // return true;
+ // }
+ //
+ // private static void processAllComplexTypeElementsUnmarshal(
+ // XSDComplexTypeDefinition typeDef, ASMethod meth) {
+ // XSDComplexTypeContent complexContent = typeDef.getContent();
+ // if (complexContent instanceof XSDParticle) {
+ // XSDParticle particle = (XSDParticle) complexContent;
+ // XSDParticleContent particleContent = particle.getContent();
+ // if (particleContent instanceof XSDModelGroup) {
+ // XSDModelGroup modelGroup = (XSDModelGroup) particleContent;
+ // if (modelGroup.getCompositor().equals(
+ // XSDCompositor.SEQUENCE_LITERAL)) {
+ // processComplexTypeSequenceUnmarshal(typeDef, modelGroup,
+ // meth);
+ // }
+ // }
+ // }
+ // }
+ //
+ // private static void processComplexTypeSequenceUnmarshal(
+ // XSDComplexTypeDefinition typeDef, XSDModelGroup modelGroup,
+ // ASMethod meth) {
+ // List particles = modelGroup.getParticles();
+ // if (!particles.isEmpty()) {
+ // // meth.addComment(" process child elements,");
+ // meth.addStmt("var _children:XMLList = thisElement.children()");
+ // meth.addStmt("var _seq:int = 0");
+ // }
+ // for (Iterator i = particles.iterator(); i.hasNext();) {
+ // StatementContainer block = meth;
+ // XSDParticle part = (XSDParticle) i.next();
+ // XSDParticleContent partContent = part.getContent();
+ // if (partContent instanceof XSDElementDeclaration) {
+ // XSDElementDeclaration elementDecl = (XSDElementDeclaration) partContent;
+ // if (elementDecl.isElementDeclarationReference()) {
+ // elementDecl = elementDecl.getResolvedElementDeclaration();
+ // }
+ // if (isOptional(part)) {
+ // block = meth.newIf("_children[_seq].name()==new QName("
+ // + ASSourceFactory.str(elementDecl
+ // .getTargetNamespace()) + ", "
+ // + ASSourceFactory.str(elementDecl.getName()));
+ // }
+ // processComplexTypeSequenceElementDeclarationUnmarshal(part,
+ // elementDecl, block);
+ // } else {
+ // meth.addStmt("_seq++");
+ // }
+ // }
+ // }
+ //
+ // private static boolean isOptional(XSDParticle part) {
+ // return part.getMinOccurs() == 0 && part.getMaxOccurs() == 1;
+ // }
+ //
+ // private static void
+ // processComplexTypeSequenceElementDeclarationUnmarshal(
+ // XSDParticle part, XSDElementDeclaration decl,
+ // StatementContainer block) {
+ // String accessExpr = "_children[_seq++]";
+ // XSDTypeDefinition typeDef = decl.getType();
+ // String fieldAccess = "_result." + fieldName(decl);
+ // if (typeDef instanceof XSDSimpleTypeDefinition) {
+ // accessExpr = doBasicTypeCoercion(accessExpr + ".text()", typeDef);
+ // block.addStmt(fieldAccess + " = " + accessExpr);
+ // } else {
+ // XSDElementDeclaration listElement = getElementIfContainerForList(decl);
+ // if (listElement == null) {
+ // String unmarshaled = unmarshaledFrom(typeDef, accessExpr);
+ // if (isMultiplyOccuring(part)) {
+ // block.addStmt(fieldAccess + " = new Array()");
+ // block = block
+ // .newWhile("_seq<_children.length() && _children[_seq].name()==new
QName("
+ // + ASSourceFactory.str(decl
+ // .getTargetNamespace())
+ // + ", "
+ // + ASSourceFactory.str(decl.getName()) + ")");
+ // block.addStmt(fieldAccess + ".push(" + unmarshaled + ")");
+ // } else {
+ // block.addStmt(fieldAccess + " = " + unmarshaled);
+ // }
+ // } else {
+ // block.addStmt(fieldAccess + " = new Array()");
+ // StatementContainer loop = block.newForEachIn("var _child:XML",
+ // accessExpr + ".elements()");
+ // String unmarshaled = unmarshaledFrom(listElement.getType(),
+ // "_child");
+ // loop.addStmt(fieldAccess + ".push(" + unmarshaled + ")");
+ // }
+ // }
+ // }
+ //
+ // private static String unmarshaledFrom(XSDTypeDefinition typeDef, String
+ // expr) {
+ // if (isXSDAnyType(typeDef)) {
+ // // result is just the XML node
+ // return expr;
+ // }
+ // return unmarshalerMethodFor(typeDef) + "(" + expr + ")";
+ // }
+ //
+ // private static String unmarshalerMethodFor(XSDTypeDefinition typeDef) {
+ // return "unmarshal" + typeDef.getName();
+ // }
+ // }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.xml/src_test/org/jboss/tools/smooks/xml2java/model/XMLStructuredModelBuilderTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain