Author: DartPeng
Date: 2008-11-19 22:27:10 -0500 (Wed, 19 Nov 2008)
New Revision: 11897
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/META-INF/MANIFEST.MF
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/AbstractAnalyzer.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/analyzer/JavaBeanAnalyzer.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanModelFactory.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanConfigWizardPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelCreationDialog.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/NewJavaBeanStrucutredDataWizard.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/messages.properties
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/DateTypeDetailPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/UIUtils.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml2java/analyzer/XML2JavaAnalyzer.java
Log:
JBIDE-3208
1.Modify the Javabean data creation wizard GUI
2.Modify the XML2Java generate/parse analyzer
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/META-INF/MANIFEST.MF
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/META-INF/MANIFEST.MF 2008-11-20
03:24:35 UTC (rev 11896)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/META-INF/MANIFEST.MF 2008-11-20
03:27:10 UTC (rev 11897)
@@ -22,8 +22,8 @@
org.eclipse.emf.edit.ui,
org.eclipse.xsd.edit,
org.jboss.tools.smooks.core,
- org.jboss.tools.common.model.ui,
- org.eclipse.wst.xml.ui;bundle-version="1.0.401"
+ org.eclipse.wst.xml.ui,
+ org.eclipse.wst.sse.ui;bundle-version="1.1.1"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-ClassPath: .,
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/AbstractAnalyzer.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/AbstractAnalyzer.java 2008-11-20
03:24:35 UTC (rev 11896)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/analyzer/AbstractAnalyzer.java 2008-11-20
03:27:10 UTC (rev 11897)
@@ -72,12 +72,14 @@
protected void setSelectorIsUsed(String selector) {
+ if(selector != null) selector = selector.trim();
userdResourceTypeMap.put(selector, new Object());
}
- protected boolean isSelectorIsUsed(String resourceType) {
- return (userdResourceTypeMap.get(resourceType) != null);
+ protected boolean isSelectorIsUsed(String selector) {
+ if(selector != null) selector = selector.trim();
+ return (userdResourceTypeMap.get(selector) != null);
}
protected void addResourceConfigType(SmooksResourceListType resourceList,
@@ -126,6 +128,7 @@
protected ResourceConfigType findResourceConfigTypeWithSelector(
String selector, SmooksResourceListType listType) {
+ if(selector != null) selector = selector.trim();
if (isReferenceSelector(selector)) {
selector = this.getBeanIdWithRawSelectorString(selector);
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/analyzer/JavaBeanAnalyzer.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/analyzer/JavaBeanAnalyzer.java 2008-11-20
03:24:35 UTC (rev 11896)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/analyzer/JavaBeanAnalyzer.java 2008-11-20
03:27:10 UTC (rev 11897)
@@ -125,6 +125,8 @@
}
protected void setSelectorIsUsed(String selector) {
+ if (selector == null)
+ return;
userdResourceTypeMap.put(selector, new Object());
}
@@ -137,6 +139,8 @@
}
protected boolean isSelectorIsUsed(String resourceType) {
+ if (resourceType == null)
+ return false;
return (userdResourceTypeMap.get(resourceType) != null);
}
@@ -494,7 +498,7 @@
sourceName = sourceClazz.getName();
}
String selector = rc.getSelector();
- if(selector != null){
+ if (selector != null) {
selector = selector.trim();
}
if (sourceName.equals(selector)) {
@@ -546,12 +550,12 @@
AnyType binding = (AnyType) iterator.next();
String property = SmooksModelUtils.getAttributeValueFromAnyType(
binding, SmooksModelUtils.ATTRIBUTE_PROPERTY);
- if(property != null){
+ if (property != null) {
property = property.trim();
}
String selector = SmooksModelUtils.getAttributeValueFromAnyType(
binding, SmooksModelUtils.ATTRIBUTE_SELECTOR);
- if(selector != null){
+ if (selector != null) {
selector = selector.trim();
}
JavaBeanModel childTargetModel = findTheChildJavaBeanModel(
@@ -788,45 +792,83 @@
}
}
}
+ List<JavaBeanModel> list = new ArrayList<JavaBeanModel>();
if (current == null) {
- rootClassName = this.getDataSourceClass(graphInfo, TARGET_DATA);
+ // rootClassName = this.getDataSourceClass(graphInfo, TARGET_DATA);
+ // TODO if there isn't any BeanPopulater throws exception
+ // MODIFY by Dart 2008.11.17
+ String classString = getDataSourceClass(graphInfo, TARGET_DATA);
+ if (classString != null && loader != null) {
+ try {
+ String[] classes = classString.split(";");
+ if (classes != null) {
+ for (int i = 0; i < classes.length; i++) {
+ String clazzName = classes[i];
+ list.add(JavaBeanModelFactory
+ .getJavaBeanModelWithLazyLoad(loader
+ .loadClass(clazzName)));
+ }
+ return list;
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ throw new RuntimeException(
+ "Can't load Java bean model form the config file.");
}
// if can't load the source from GraphicalInformation , return NULL
if (current == null && rootClassName == null)
- return null;
- Class rootClass = null;
- if (rootClassName == null) {
+ return list;
+ int startIndex = resourceConfigList.indexOf(current);
+ for (int i = startIndex; i < resourceConfigList.size(); i++) {
+ ResourceConfigType resourceConfig = (ResourceConfigType) resourceConfigList
+ .get(i);
+ ResourceType resourceType = resourceConfig.getResource();
+ String selector = resourceConfig.getSelector();
+ if (selector != null)
+ selector = selector.trim();
+ if (isSelectorIsUsed(selector))
+ continue;
+ if (resourceType == null)
+ continue;
+ String resource = resourceType.getValue();
+ if (resource != null)
+ resource = resource.trim();
+ if (!BEANPOPULATOR.equals(resource)) {
+ continue;
+ }
+ Class rootClass = null;
rootClassName = SmooksModelUtils.getParmaText(
- SmooksModelUtils.BEAN_CLASS, current);
- }
- if (rootClassName != null && loader != null) {
- try {
- rootClass = loader.loadClass(rootClassName);
- } catch (ClassNotFoundException e) {
- // TODO if can't find the class throws exception
- // MODIFY by Dart 2008.11.12
- throw new RuntimeException("Can't find the class : \""
- + rootClassName + "\" to create the JavaBean model");
+ SmooksModelUtils.BEAN_CLASS, resourceConfig);
+ if (rootClassName != null && loader != null) {
+ try {
+ rootClass = loader.loadClass(rootClassName);
+ } catch (ClassNotFoundException e) {
+ // TODO if can't find the class throws exception
+ // MODIFY by Dart 2008.11.12
+ throw new RuntimeException("Can't find the class : \""
+ + rootClassName + "\" to create the JavaBean model");
+ }
}
+ boolean rootIsError = false;
+ JavaBeanModel rootModel = null;
+ if (rootClass != null) {
+ rootModel = JavaBeanModelFactory
+ .getJavaBeanModelWithLazyLoad(rootClass);
+ } else {
+ rootModel = new JavaBeanModel(null, rootClassName);
+ rootIsError = true;
+ }
+ if (resourceConfig != null) {
+ rootModel.setBeanClassString(SmooksModelUtils.getParmaText(
+ SmooksModelUtils.BEAN_CLASS, resourceConfig));
+ setSelectorIsUsed(selector);
+ buildChildrenOfTargetInputModel(listType, rootModel, false,
+ rootIsError, resourceConfig, loader);
+ list.add(rootModel);
+ }
}
- boolean rootIsError = false;
- JavaBeanModel rootModel = null;
- if (rootClass != null) {
- rootModel = JavaBeanModelFactory
- .getJavaBeanModelWithLazyLoad(rootClass);
- } else {
- rootModel = new JavaBeanModel(null, rootClassName);
- rootIsError = true;
- }
- if (current != null) {
- rootModel.setBeanClassString(SmooksModelUtils.getParmaText(
- SmooksModelUtils.BEAN_CLASS, current));
- setSelectorIsUsed(rootClassName);
- buildChildrenOfTargetInputModel(listType, rootModel, false,
- rootIsError, current, loader);
- }
- List<JavaBeanModel> list = new ArrayList<JavaBeanModel>();
- list.add(rootModel);
return list;
}
@@ -848,8 +890,11 @@
String selector = SmooksModelUtils
.getAttributeValueFromAnyType(binding,
SmooksModelUtils.ATTRIBUTE_SELECTOR);
- processBindingPropertyFromTargetModel(listType, property,
- selector, beanModel, classLoader);
+ if (selector != null)
+ selector = selector.trim();
+ if (!isSelectorIsUsed(selector))
+ processBindingPropertyFromTargetModel(listType, property,
+ selector, beanModel, classLoader);
}
}
@@ -870,7 +915,8 @@
parentModel.addProperty(model);
model.setError(Messages.getString("JavaBeanAnalyzer.DontExist"));
//$NON-NLS-1$
}
-
+ if (isSelectorIsUsed(selector))
+ return;
if (isReferenceSelector(selector)) {
selector = selector.substring(2, selector.length() - 1);
ResourceConfigType resourceConfig = findResourceConfigTypeWithSelector(
@@ -880,6 +926,11 @@
"Can't find some ResourceConfig element in the config file.Maybe some
ResourceConfig element miss <param name = \"beanId\">"
+ selector + "</param>");
}
+ String resourceConfigSelector = resourceConfig.getSelector();
+ if (resourceConfigSelector != null) {
+ resourceConfigSelector = resourceConfigSelector.trim();
+ setSelectorIsUsed(resourceConfigSelector);
+ }
String beanClassText = SmooksModelUtils.getParmaText(
SmooksModelUtils.BEAN_CLASS, resourceConfig);
model.setBeanClassString(beanClassText);
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanModelFactory.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanModelFactory.java 2008-11-20
03:24:35 UTC (rev 11896)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/model/JavaBeanModelFactory.java 2008-11-20
03:27:10 UTC (rev 11897)
@@ -22,7 +22,6 @@
*/
public class JavaBeanModelFactory {
-
private static final List PRIMITIVE_CLASSES = new ArrayList();
static{
PRIMITIVE_CLASSES.add(Integer.class);
@@ -34,7 +33,9 @@
PRIMITIVE_CLASSES.add(Character.class);
PRIMITIVE_CLASSES.add(BigInteger.class);
PRIMITIVE_CLASSES.add(BigDecimal.class);
+ PRIMITIVE_CLASSES.add(Boolean.class);
PRIMITIVE_CLASSES.add(Byte.class);
+ PRIMITIVE_CLASSES.add(java.util.Calendar.class);
}
/**
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanConfigWizardPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanConfigWizardPage.java 2008-11-20
03:24:35 UTC (rev 11896)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanConfigWizardPage.java 2008-11-20
03:27:10 UTC (rev 11897)
@@ -10,10 +10,11 @@
******************************************************************************/
package org.jboss.tools.smooks.javabean.ui;
+import java.util.Collections;
+import java.util.List;
+
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.wizard.IWizardNode;
-import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
@@ -41,9 +42,10 @@
private JavaBeanModelLoadComposite javaPropertySelectComposite;
- public JavaBeanModel getJavaBeanModel(){
- if(javaPropertySelectComposite == null) return null;
- return javaPropertySelectComposite.getCheckedJavaBeanModel();
+
+ public List<JavaBeanModel> getJavaBeanModelList() {
+ if(javaPropertySelectComposite == null) return Collections.EMPTY_LIST;
+ return javaPropertySelectComposite.getJavabeanList();
}
public JavaBeanConfigWizardPage(IJavaProject selection) {
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelCreationDialog.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelCreationDialog.java 2008-11-20
03:24:35 UTC (rev 11896)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelCreationDialog.java 2008-11-20
03:27:10 UTC (rev 11897)
@@ -55,9 +55,7 @@
*/
@Override
protected void okPressed() {
- returnModel = jc.getCheckedJavaBeanModel();
super.okPressed();
-// returnModel = jc.getCheckedJavaBeanModel();
}
/*
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java 2008-11-20
03:24:35 UTC (rev 11896)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/JavaBeanModelLoadComposite.java 2008-11-20
03:27:10 UTC (rev 11897)
@@ -11,7 +11,6 @@
package org.jboss.tools.smooks.javabean.ui;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import org.eclipse.jdt.core.IJavaProject;
@@ -22,13 +21,18 @@
import org.eclipse.jdt.ui.IJavaElementSearchConstants;
import org.eclipse.jdt.ui.JavaUI;
import org.eclipse.jface.operation.IRunnableContext;
-import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.Window;
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.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -51,6 +55,7 @@
public class JavaBeanModelLoadComposite extends Composite implements
SelectionListener {
+ private List<JavaBeanModel> javabeanList = new ArrayList<JavaBeanModel>();
protected Text classText;
private Button classBrowseButton;
protected String classFullName;
@@ -61,6 +66,7 @@
protected JavaBeanModel returnJavaBeanModel = null;
protected ProjectClassLoader loader = null;
+ private TableViewer listViewer;
public JavaBeanModelLoadComposite(Composite parent, int style,
IRunnableContext runnableContext, IJavaProject project,
@@ -74,7 +80,9 @@
// this.runnableContext = new
// ProgressMonitorDialog(parent.getShell());
if (this.runnableContext == null)
- throw new
Exception(Messages.getString("JavaBeanModelLoadComposite.InitRunnableContextException"));
//$NON-NLS-1$
+ throw new Exception(
+ Messages
+ .getString("JavaBeanModelLoadComposite.InitRunnableContextException"));
//$NON-NLS-1$
}
if (project != null) {
@@ -91,6 +99,14 @@
this(parent, style, runnableContext, project, true);
}
+ public List<JavaBeanModel> getJavabeanList() {
+ return javabeanList;
+ }
+
+ public void setJavabeanList(List<JavaBeanModel> javabeanList) {
+ this.javabeanList = javabeanList;
+ }
+
protected Control createCompositeContent() {
Composite parent = this;
parent.setLayout(new FillLayout());
@@ -100,86 +116,129 @@
com.setLayout(layout);
Label classLabel = new Label(com, SWT.NULL);
- classLabel.setText(Messages.getString("JavaBeanModelLoadComposite.ClassNameText"));
//$NON-NLS-1$
-
- Composite classTextContainer = new Composite(com, SWT.NONE);
+ classLabel.setText(Messages
+ .getString("JavaBeanModelLoadComposite.ClassNameText")); //$NON-NLS-1$
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.grabExcessHorizontalSpace = true;
- classTextContainer.setLayoutData(gd);
+ gd.horizontalSpan = 2;
+ classLabel.setLayoutData(gd);
+ // Composite classTextContainer = new Composite(com, SWT.NONE);
+ // GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ // gd.grabExcessHorizontalSpace = true;
+ // classTextContainer.setLayoutData(gd);
+ //
+ // GridLayout gl = new GridLayout();
+ // gl.numColumns = 2;
+ // classTextContainer.setLayout(gl);
+ //
+ // {
+ // classText = new Text(classTextContainer, SWT.BORDER);
+ // gd = new GridData(GridData.FILL_HORIZONTAL);
+ // gd.grabExcessHorizontalSpace = true;
+ // classText.setLayoutData(gd);
+ // classText.addModifyListener(new ModifyListener() {
+ // public void modifyText(ModifyEvent arg0) {
+ // classFullName = classText.getText();
+ // }
+ // });
+ //
+ // classBrowseButton = new Button(classTextContainer, SWT.NONE);
+ // classBrowseButton.addSelectionListener(this);
+ // classBrowseButton.setText(Messages.getString("JavaBeanModelLoadComposite.Browse"));
//$NON-NLS-1$
+ // }
- GridLayout gl = new GridLayout();
- gl.numColumns = 2;
- classTextContainer.setLayout(gl);
+ Composite listViewerComposite = new Composite(com, SWT.NONE);
+ GridLayout listLayout = new GridLayout();
+ listLayout.numColumns = 2;
+ listViewerComposite.setLayout(listLayout);
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.horizontalSpan = 2;
+ listViewerComposite.setLayoutData(gd);
- {
- classText = new Text(classTextContainer, SWT.BORDER);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.grabExcessHorizontalSpace = true;
- classText.setLayoutData(gd);
- classText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent arg0) {
- classFullName = classText.getText();
+ listViewer = new TableViewer(listViewerComposite, SWT.BORDER);
+ gd = new GridData(GridData.FILL_BOTH);
+ listViewer.getControl().setLayoutData(gd);
+ listViewer.setContentProvider(new IStructuredContentProvider() {
+
+ public Object[] getElements(Object inputElement) {
+ if (inputElement instanceof List) {
+ return ((List) inputElement).toArray();
}
- });
+ return new Object[] {};
+ }
- classBrowseButton = new Button(classTextContainer, SWT.NONE);
- classBrowseButton.addSelectionListener(this);
- classBrowseButton.setText(Messages.getString("JavaBeanModelLoadComposite.Browse"));
//$NON-NLS-1$
- }
- return com;
- }
+ public void dispose() {
- protected void recordModel() {
- // this.currentRootJavaBeanModel.setProperties(null);
- // this.fillCheckStateModel(this.currentRootJavaBeanModel);
- }
+ }
- protected void fillTheModelWithCheckStatus(JavaBeanModel javaBeanModel,
- CheckboxTreeViewer viewer) {
- ArrayList clist = new ArrayList();
- if (javaBeanModel.propertiesHasBeenLoaded()) {
- List children = javaBeanModel.getProperties();
- for (Iterator iterator = children.iterator(); iterator.hasNext();) {
- JavaBeanModel child = (JavaBeanModel) iterator.next();
- boolean checked = viewer.getChecked(child);
- if (checked) {
- clist.add(child);
- fillTheModelWithCheckStatus(child, viewer);
+ public void inputChanged(Viewer viewer, Object oldInput,
+ Object newInput) {
+
+ }
+
+ });
+ listViewer.setLabelProvider(new LabelProvider() {
+
+ @Override
+ public Image getImage(Object element) {
+ if (element instanceof JavaBeanModel) {
+ return SmooksUIActivator.getDefault().getImageRegistry().get(
+ JavaImageConstants.IMAGE_JAVA_OBJECT);
}
+ return super.getImage(element);
}
- }
- javaBeanModel.setProperties(clist);
- }
- /**
- *
- * @return
- */
- public JavaBeanModel getCheckedJavaBeanModel() {
- return this.fillCheckStateModel(currentRootJavaBeanModel);
+ @Override
+ public String getText(Object element) {
+ if (element instanceof JavaBeanModel) {
+ return ((JavaBeanModel) element).getBeanClassString();
+ }
+ return super.getText(element);
+ }
+
+ });
+ listViewer.setInput(javabeanList);
+
+ Composite buttonArea = new Composite(listViewerComposite, SWT.NONE);
+ gd = new GridData(GridData.FILL_VERTICAL);
+ buttonArea.setLayoutData(gd);
+
+ GridLayout buttonAreaLayout = new GridLayout();
+ buttonArea.setLayout(buttonAreaLayout);
+
+ Button addButton = new Button(buttonArea, SWT.BORDER);
+ addButton.setText("Add");
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ addButton.setLayoutData(gd);
+ addButton.addSelectionListener(this);
+
+ Button removeButton = new Button(buttonArea, SWT.BORDER);
+ removeButton.setText("Remove");
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ removeButton.setLayoutData(gd);
+ removeButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ IStructuredSelection selection = (IStructuredSelection) listViewer
+ .getSelection();
+ if (selection.isEmpty())
+ return;
+ javabeanList.removeAll(selection.toList());
+ listViewer.refresh();
+ }
+
+ });
+ return com;
}
- /**
- *
- * @return
- */
- public JavaBeanModel fillCheckStateModel(JavaBeanModel rootJavaBean) {
- if (rootJavaBean == null) {
- // List list = (List) treeViewer.getInput();
- // if (list != null)
- // rootJavaBean = (JavaBeanModel) list.get(0);
+ public ProjectClassLoader getProjectClassLoader() {
+ if (loader == null) {
try {
- ProjectClassLoader loader = new ProjectClassLoader(javaProject);
- Class clazz = loader.loadClass(classFullName);
- rootJavaBean = JavaBeanModelFactory
- .getJavaBeanModelWithLazyLoad(clazz);
+ loader = new ProjectClassLoader(javaProject);
} catch (Exception e) {
- // ignore
}
}
- // if (rootJavaBean != null)
- // this.fillTheModelWithCheckStatus(rootJavaBean, treeViewer);
- return rootJavaBean;
+ return loader;
}
public void widgetDefaultSelected(SelectionEvent arg0) {
@@ -194,8 +253,10 @@
try {
dialog = JavaUI.createTypeDialog(this.getShell(), runnableContext,
scope, IJavaElementSearchConstants.CONSIDER_CLASSES, false);
- dialog.setMessage(Messages.getString("JavaBeanModelLoadComposite.SourceJavaBean"));
//$NON-NLS-1$
- dialog.setTitle(Messages.getString("JavaBeanModelLoadComposite.SearchJavaType"));
//$NON-NLS-1$
+ dialog.setMessage(Messages
+ .getString("JavaBeanModelLoadComposite.SourceJavaBean")); //$NON-NLS-1$
+ dialog.setTitle(Messages
+ .getString("JavaBeanModelLoadComposite.SearchJavaType")); //$NON-NLS-1$
if (dialog.open() == Window.OK) {
Object[] results = dialog.getResult();
@@ -203,13 +264,27 @@
Object result = results[0];
String packageFullName = JavaModelUtil
.getTypeContainerName((IType) result);
+ String className = null;
if (packageFullName == null
|| packageFullName.length() <= 0) {
- classText.setText(((IType) result).getElementName());
+ className = ((IType) result).getElementName();
} else {
- classText.setText(packageFullName + "." //$NON-NLS-1$
- + ((IType) result).getElementName());
+ className = packageFullName + "." //$NON-NLS-1$
+ + ((IType) result).getElementName();
}
+ if (className != null) {
+ ClassLoader l = this.getProjectClassLoader();
+ if (l != null) {
+ Class clazz = l.loadClass(className);
+ if (clazz != null) {
+ JavaBeanModel model = JavaBeanModelFactory
+ .getJavaBeanModelWithLazyLoad(clazz);
+ javabeanList.add(model);
+ listViewer.refresh();
+ }
+ }
+
+ }
}
}
} catch (Exception e) {
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/NewJavaBeanStrucutredDataWizard.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/NewJavaBeanStrucutredDataWizard.java 2008-11-20
03:24:35 UTC (rev 11896)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/NewJavaBeanStrucutredDataWizard.java 2008-11-20
03:27:10 UTC (rev 11897)
@@ -10,7 +10,7 @@
******************************************************************************/
package org.jboss.tools.smooks.javabean.ui;
-import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import java.util.Properties;
@@ -63,15 +63,14 @@
*/
@Override
public boolean performFinish() {
- result = page.getJavaBeanModel();
+ result = page.getJavaBeanModelList();
return true;
}
public Object getTreeViewerInputContents() {
- if(result == null) return null;
- List<Object> list = new ArrayList<Object>();
- list.add(result);
- return list;
+ if (result == null)
+ return null;
+ return result;
}
public void init(IEditorSite site, IEditorInput input) {
@@ -117,12 +116,16 @@
}
public String getStructuredDataSourcePath() {
- JavaBeanModel model = page.getJavaBeanModel();
- if (model != null) {
- Class clazz = model.getBeanClass();
- if (clazz != null)
- return clazz.getName();
+ List<JavaBeanModel> list = page.getJavaBeanModelList();
+ StringBuffer buffer = new StringBuffer();
+ for (Iterator<JavaBeanModel> iterator = list.iterator(); iterator
+ .hasNext(); buffer.append(";")) {
+ JavaBeanModel javaBeanModel = (JavaBeanModel) iterator.next();
+ Class clazz = javaBeanModel.getBeanClass();
+ if (clazz != null) {
+ buffer.append(clazz.getName());
+ }
}
- return null;
+ return buffer.toString();
}
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/messages.properties
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/messages.properties 2008-11-20
03:24:35 UTC (rev 11896)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/javabean/ui/messages.properties 2008-11-20
03:27:10 UTC (rev 11897)
@@ -2,7 +2,7 @@
JavaBeanConfigWizardPage.JavaBeanSelectionDialogErrorMsg=Please select a Java project.
JavaBeanConfigWizardPage.JavaBeanSelectionDialogTitle=JavaBean Class selection page
JavaBeanModelLoadComposite.Browse=Browse...
-JavaBeanModelLoadComposite.ClassNameText=Class Name:
+JavaBeanModelLoadComposite.ClassNameText=JavaBean Model List \:
JavaBeanModelLoadComposite.InitRunnableContextException=Can't init IRunnableContext
JavaBeanModelLoadComposite.SearchJavaType=Search Java Type
JavaBeanModelLoadComposite.SourceJavaBean=Source Java Bean:
@@ -12,8 +12,8 @@
JavaBeanPropertiesSection.ErrorMessageTitle=Error
JavaBeanPropertiesSection.JavaBeanProperties=JavaBean Properties
JavaBeanPropertiesSection.JavaType=Java Type:
-JavaBeanPropertiesSection.MappingType=Mapping Type :
+JavaBeanPropertiesSection.MappingType=Mapping Type \:
JavaBeanPropertiesSection.SearchJavaType=Search Java Type
-JavaBeanPropertiesSection.TargetInstanceClass=Target instance class name :
+JavaBeanPropertiesSection.TargetInstanceClass=Target instance class name \:
JavaBeanPropertiesSection.TypeDialogErrorMessage=can't open type selection dialog
JavaBeanPropertiesSection.TypePropertyName=type
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/DateTypeDetailPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/DateTypeDetailPage.java 2008-11-20
03:24:35 UTC (rev 11896)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/DateTypeDetailPage.java 2008-11-20
03:27:10 UTC (rev 11897)
@@ -27,6 +27,7 @@
*/
public class DateTypeDetailPage extends AbstractSmooksModelDetailPage {
+ private static final String DECODER = "decoder";
private Text formatText;
private Combo localeLangaugeCombo;
private Combo localeContryCombo;
@@ -134,7 +135,7 @@
this.parentEditor.fireEditorDirty(true);
return;
}
- text = "decorat:"+text;
+ text = DECODER+ ":" + text;
if(this.resourceConfigList != null){
resourceConfigList.setSelector(text);
this.parentEditor.fireEditorDirty(true);
@@ -153,7 +154,7 @@
protected void initSectionUI() {
if(this.resourceConfigList != null){
String formate = SmooksModelUtils.getParmaText("format",
resourceConfigList); //$NON-NLS-1$
- String locallang = SmooksModelUtils.getParmaText("Locale-Language",
resourceConfigList); //$NON-NLS-1$
+ String locallang = SmooksModelUtils.getParmaText("locale-language",
resourceConfigList); //$NON-NLS-1$
String localcontry = SmooksModelUtils.getParmaText("locale-country",
resourceConfigList); //$NON-NLS-1$
if(formate == null) formate = ""; //$NON-NLS-1$
if(locallang == null) locallang = ""; //$NON-NLS-1$
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java 2008-11-20
03:24:35 UTC (rev 11896)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/ui/editors/SmooksGraphicalFormPage.java 2008-11-20
03:27:10 UTC (rev 11897)
@@ -50,6 +50,7 @@
import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
import org.eclipse.gef.ui.parts.SelectionSynchronizer;
import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
@@ -59,6 +60,7 @@
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
@@ -126,6 +128,7 @@
import org.jboss.tools.smooks.ui.IViewerInitor;
import org.jboss.tools.smooks.ui.SmooksUIActivator;
import org.jboss.tools.smooks.ui.StructuredDataCreationWizardDailog;
+import org.jboss.tools.smooks.ui.ViewerInitorStore;
import org.jboss.tools.smooks.ui.gef.editparts.SmooksEditPartFactory;
import org.jboss.tools.smooks.ui.gef.model.AbstractStructuredDataModel;
import org.jboss.tools.smooks.ui.gef.model.GraphRootModel;
@@ -150,6 +153,8 @@
ISelectionChangedListener, ISelectionProvider,
org.eclipse.emf.common.command.CommandStackListener, ISaveListener {
+ private final String[] REQUIRED_SOURCE_SELECT_TYPE = new String[] {
"org.jboss.tools.smooks.xml.viewerInitor.xml" };
+
private List<IAnalyzeListener> analyzeListenerList = new
ArrayList<IAnalyzeListener>();
protected boolean disableMappingGUI = false;
@@ -301,11 +306,16 @@
gridLayout.horizontalSpacing = 0;
form.getBody().setLayout(gridLayout);
Composite rootMainControl = form.getBody();
- form.setText(Messages.getString("SmooksGraphicalFormPage.MappingPageFormTitle"));
//$NON-NLS-1$
- mappingGUISection = this.createPageSectionHeader(rootMainControl,
- Section.TITLE_BAR | Section.DESCRIPTION,
- Messages.getString("SmooksGraphicalFormPage.MappingSectionTitle"),
//$NON-NLS-1$
- Messages.getString("SmooksGraphicalFormPage.MappingSectionDescription"));
//$NON-NLS-1$
+ form.setText(Messages
+ .getString("SmooksGraphicalFormPage.MappingPageFormTitle")); //$NON-NLS-1$
+ mappingGUISection = this
+ .createPageSectionHeader(
+ rootMainControl,
+ Section.TITLE_BAR | Section.DESCRIPTION,
+ Messages
+ .getString("SmooksGraphicalFormPage.MappingSectionTitle"),
//$NON-NLS-1$
+ Messages
+ .getString("SmooksGraphicalFormPage.MappingSectionDescription"));
//$NON-NLS-1$
Composite mainComposite = toolkit.createComposite(mappingGUISection);
mappingGUISection.setClient(mainComposite);
@@ -400,8 +410,11 @@
underToolPanel.setLayout(underLayout);
underToolPanel.setLayoutData(sgd1);
{
- sourceLink = toolkit.createHyperlink(underToolPanel,
- Messages.getString("SmooksGraphicalFormPage.SourceSelectLinkText"),
SWT.NONE); //$NON-NLS-1$
+ sourceLink = toolkit
+ .createHyperlink(
+ underToolPanel,
+ Messages
+ .getString("SmooksGraphicalFormPage.SourceSelectLinkText"),
SWT.NONE); //$NON-NLS-1$
sourceLink.addHyperlinkListener(new DataSelectLinkListener(
sourceViewer));
}
@@ -418,8 +431,11 @@
composite1.setLayout(composite1Layout);
}
{
- targetLink = toolkit.createHyperlink(underToolPanel,
- Messages.getString("SmooksGraphicalFormPage.TargetSelectLinkText"),
SWT.NONE); //$NON-NLS-1$
+ targetLink = toolkit
+ .createHyperlink(
+ underToolPanel,
+ Messages
+ .getString("SmooksGraphicalFormPage.TargetSelectLinkText"),
SWT.NONE); //$NON-NLS-1$
GridData label2LData = new GridData();
label2LData.horizontalAlignment = GridData.END;
targetLink.setLayoutData(label2LData);
@@ -468,7 +484,7 @@
this.getSmooksResource().unload();
this.initTransformViewerModel((IEditorSite) getSite(),
getEditorInput());
- } catch (Throwable e) {
+ } catch (Throwable e) {
throwable = e;
}
if (throwable == null) {
@@ -602,7 +618,8 @@
protected void createSourceGraphModels() {
clearExsitingGraphModels(SourceModel.class);
- if(sourceViewer == null) return;
+ if (sourceViewer == null)
+ return;
Tree tree = sourceViewer.getTree();
TreeItem[] items = tree.getItems();
createGraphModels(items, SourceModel.class);
@@ -658,7 +675,8 @@
protected void createTargetGraphModels() {
clearExsitingGraphModels(TargetModel.class);
- if(targetViewer == null) return;
+ if (targetViewer == null)
+ return;
Tree tree = targetViewer.getTree();
TreeItem[] items = tree.getItems();
createGraphModels(items, TargetModel.class);
@@ -713,9 +731,12 @@
boolean cleanError = MessageDialog
.openQuestion(
getSite().getShell(),
- Messages.getString("SmooksGraphicalFormPage.CleanErrorsDialogTitle"),
//$NON-NLS-1$
- Messages.getString("SmooksGraphicalFormPage.CleanErrorsDialogContents1")
//$NON-NLS-1$
- +
Messages.getString("SmooksGraphicalFormPage.CleanErrorsDialogContents2"));
//$NON-NLS-1$
+ Messages
+ .getString("SmooksGraphicalFormPage.CleanErrorsDialogTitle"),
//$NON-NLS-1$
+ Messages
+ .getString("SmooksGraphicalFormPage.CleanErrorsDialogContents1")
//$NON-NLS-1$
+ + Messages
+ .getString("SmooksGraphicalFormPage.CleanErrorsDialogContents2"));
//$NON-NLS-1$
if (cleanError)
return;
}
@@ -746,9 +767,14 @@
exp = e;
}
if (exp != null) {
- ErrorDialog.openError(getSite().getShell(),
Messages.getString("SmooksGraphicalFormPage.SaveErrorDlgTitle"), //$NON-NLS-1$
- Messages.getString("SmooksGraphicalFormPage.SaveErrorDlgContent"), UIUtils
//$NON-NLS-1$
- .createErrorStatus(exp));
+ ErrorDialog
+ .openError(
+ getSite().getShell(),
+ Messages
+ .getString("SmooksGraphicalFormPage.SaveErrorDlgTitle"),
//$NON-NLS-1$
+ Messages
+ .getString("SmooksGraphicalFormPage.SaveErrorDlgContent"), UIUtils
//$NON-NLS-1$
+ .createErrorStatus(exp));
}
super.doSave(monitor);
commandStackChanged = false;
@@ -859,7 +885,8 @@
*
*/
protected void createConnectionModels() {
- if(rootModel == null) return;
+ if (rootModel == null)
+ return;
List children = this.rootModel.getChildren();
for (Iterator iterator = children.iterator(); iterator.hasNext();) {
TreeItemRelationModel source = (TreeItemRelationModel) iterator
@@ -996,16 +1023,19 @@
if (dialog.open() == org.eclipse.jface.dialogs.Dialog.OK) {
sourceDataTypeID = wizard.getSourceDataTypeID();
targetDataTypeID = wizard.getTargetDataTypeID();
- sourceTreeViewerInputModel = wizard
- .getSourceTreeViewerInputContents();
- targetTreeViewerInputModel = wizard
- .getTargetTreeViewerInputContents();
- this.getSmooksConfigurationFileGenerateContext()
- .setSourceDataTypeID(sourceDataTypeID);
- this.getSmooksConfigurationFileGenerateContext()
- .setTargetDataTypeID(targetDataTypeID);
+ // sourceTreeViewerInputModel = wizard
+ // .getSourceTreeViewerInputContents();
+ // targetTreeViewerInputModel = wizard
+ // .getTargetTreeViewerInputContents();
+ SmooksConfigurationFileGenerateContext context =
getSmooksConfigurationFileGenerateContext();
+ context.setSourceDataTypeID(sourceDataTypeID);
+ context.setTargetDataTypeID(targetDataTypeID);
+ sourceTreeViewerInputModel = selectSourceDataSource(
+ sourceDataTypeID, context);
+ targetTreeViewerInputModel = selectTargetDataSource(
+ targetDataTypeID, context);
graphicalInformationSaver.doSave(new NullProgressMonitor(),
- getSmooksConfigurationFileGenerateContext());
+ context);
}
}
smooksResource = this.getSmooksResource();
@@ -1019,6 +1049,51 @@
}
}
+ private boolean requiredSelectDataSource(String typeID) {
+ for (int i = 0; i < this.REQUIRED_SOURCE_SELECT_TYPE.length; i++) {
+ String s = REQUIRED_SOURCE_SELECT_TYPE[i];
+ if (s.equals(typeID))
+ return true;
+ }
+ return false;
+ }
+
+ private Object selectTargetDataSource(String typeID,
+ SmooksConfigurationFileGenerateContext context) {
+ if (requiredSelectDataSource(typeID)) {
+ IStructuredDataCreationWizard wizard1 = ViewerInitorStore
+ .getInstance().getStructuredDataCreationWizard(
+ typeID);
+ WizardDialog dialog1 = new WizardDialog(getSite().getShell(),
+ wizard1);
+ ((Wizard) wizard1).setWindowTitle("Target Data Selection");
+ if (dialog1.open() == Dialog.OK) {
+ context.getProperties().put("targetDataPath",
+ wizard1.getStructuredDataSourcePath());
+ }
+ return wizard1.getTreeViewerInputContents();
+ }
+ return null;
+ }
+
+ private Object selectSourceDataSource(String typeID,
+ SmooksConfigurationFileGenerateContext context) {
+ if (requiredSelectDataSource(typeID)) {
+ IStructuredDataCreationWizard wizard1 = ViewerInitorStore
+ .getInstance().getStructuredDataCreationWizard(
+ typeID);
+ WizardDialog dialog1 = new WizardDialog(getSite().getShell(),
+ wizard1);
+ ((Wizard) wizard1).setWindowTitle("Source Data Selection");
+ if (dialog1.open() == Dialog.OK) {
+ context.getProperties().put("sourceDataPath",
+ wizard1.getStructuredDataSourcePath());
+ }
+ return wizard1.getTreeViewerInputContents();
+ }
+ return null;
+ }
+
protected void initSmooksContext(GraphInformations graph,
SmooksConfigurationFileGenerateContext context) {
Params params = graph.getParams();
@@ -1134,8 +1209,10 @@
if (!MessageDialog
.openQuestion(
getSite().getShell(),
- Messages.getString("SmooksGraphicalFormPage.ReselectViewerContentDlgTitle"),
//$NON-NLS-1$
- Messages.getString("SmooksGraphicalFormPage.ReselectViewerContentDlgContent")))
{ //$NON-NLS-1$
+ Messages
+ .getString("SmooksGraphicalFormPage.ReselectViewerContentDlgTitle"),
//$NON-NLS-1$
+ Messages
+ .getString("SmooksGraphicalFormPage.ReselectViewerContentDlgContent")))
{ //$NON-NLS-1$
return;
}
}
@@ -1165,13 +1242,23 @@
commandStackChanged = true;
firePropertyChange(PROP_DIRTY);
} catch (Exception e) {
- MessageDialog.openError(getSite().getShell(),
Messages.getString("SmooksGraphicalFormPage.FillViewerErrorTitle"),
//$NON-NLS-1$
- Messages.getString("SmooksGraphicalFormPage.FillViewerErrorContent")
//$NON-NLS-1$
- + e.toString());
+ MessageDialog
+ .openError(
+ getSite().getShell(),
+ Messages
+ .getString("SmooksGraphicalFormPage.FillViewerErrorTitle"),
//$NON-NLS-1$
+ Messages
+ .getString("SmooksGraphicalFormPage.FillViewerErrorContent")
//$NON-NLS-1$
+ + e.toString());
}
} else {
- MessageDialog.openError(getSite().getShell(),
Messages.getString("SmooksGraphicalFormPage.FillViewerErrorTitle"),
//$NON-NLS-1$
- Messages.getString("SmooksGraphicalFormPage.FillViewerErrorContent"));
//$NON-NLS-1$
+ MessageDialog
+ .openError(
+ getSite().getShell(),
+ Messages
+ .getString("SmooksGraphicalFormPage.FillViewerErrorTitle"),
//$NON-NLS-1$
+ Messages
+ .getString("SmooksGraphicalFormPage.FillViewerErrorContent"));
//$NON-NLS-1$
}
}
}
@@ -1333,7 +1420,8 @@
// System.out.println("Block a event fire !!");
return;
}
- rootModel.firePropertyChange(AbstractStructuredDataModel.P_REFRESH_PANEL, null,
+ rootModel.firePropertyChange(
+ AbstractStructuredDataModel.P_REFRESH_PANEL, null,
new Object());
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/UIUtils.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/UIUtils.java 2008-11-20
03:24:35 UTC (rev 11896)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/utils/UIUtils.java 2008-11-20
03:27:10 UTC (rev 11897)
@@ -20,7 +20,6 @@
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jst.jsp.core.internal.modelhandler.TagModelLoader;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Shell;
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml2java/analyzer/XML2JavaAnalyzer.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml2java/analyzer/XML2JavaAnalyzer.java 2008-11-20
03:24:35 UTC (rev 11896)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/xml2java/analyzer/XML2JavaAnalyzer.java 2008-11-20
03:27:10 UTC (rev 11897)
@@ -10,16 +10,9 @@
******************************************************************************/
package org.jboss.tools.smooks.xml2java.analyzer;
-import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
-import javax.swing.text.html.HTMLDocument.HTMLReader.TagAction;
-
-import org.eclipse.emf.ecore.util.ExtendedMetaData;
import org.eclipse.emf.ecore.xml.type.AnyType;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Shell;
@@ -50,6 +43,7 @@
import org.jboss.tools.smooks.xml.model.DocumentObject;
import org.jboss.tools.smooks.xml.model.TagObject;
import org.jboss.tools.smooks.xml.model.TagPropertyObject;
+import org.w3c.dom.ranges.DocumentRange;
/**
* @author Dart Peng
@@ -57,6 +51,8 @@
*/
public class XML2JavaAnalyzer extends AbstractAnalyzer {
+ private static final String SPACE_SPLITER = " ";
+
/*
* (non-Javadoc)
*
@@ -78,28 +74,41 @@
List sourceConnections = dataModel.getModelSourceConnections();
if (sourceConnections.isEmpty())
continue;
+ AbstractXMLObject newParent = (AbstractXMLObject) dataModel
+ .getReferenceEntityModel();
+ String newParentSelector = generateParentSelector(newParent);
processSourceConnections(sourceConnections, context, listType,
- (SourceModel) dataModel);
+ (SourceModel) dataModel, newParentSelector);
}
}
}
+
+ protected String generateParentSelector(AbstractXMLObject xmlObject){
+ String selector = xmlObject.getName();
+ while(xmlObject.getParent() != null && !(xmlObject.getParent() instanceof
DocumentObject)){
+ xmlObject = xmlObject.getParent();
+ selector = xmlObject.getName() + SPACE_SPLITER + selector;
+ }
+ return selector;
+ }
protected void processSourceConnections(List sourceConnections,
SmooksConfigurationFileGenerateContext context,
- SmooksResourceListType listType, SourceModel sourceModel) {
+ SmooksResourceListType listType, SourceModel sourceModel,
+ String parentSelector) {
for (Iterator iterator = sourceConnections.iterator(); iterator
.hasNext();) {
LineConnectionModel connection = (LineConnectionModel) iterator
.next();
processLineConnection(connection, context, listType, sourceModel,
- null);
+ null, parentSelector);
}
}
protected void processLineConnection(LineConnectionModel connection,
SmooksConfigurationFileGenerateContext context,
SmooksResourceListType listType, SourceModel sourceModel,
- String beanID) {
+ String beanID, String parentSelector) {
if (this.connectionIsUsed(connection))
return;
setConnectionUsed(connection);
@@ -116,11 +125,12 @@
context.getGeneratorResourceList().add(resourceConfigType);
// addResourceConfigType(listType, resourceConfigType);
// set the selector string value
- resourceConfigType.setSelector(source.getName());
+ resourceConfigType.setSelector(parentSelector);
// add the properties of connection
List<PropertyModel> propertyList = connection.getProperties();
- for (Iterator<PropertyModel> iterator = propertyList.iterator();
iterator.hasNext();) {
+ for (Iterator<PropertyModel> iterator = propertyList.iterator(); iterator
+ .hasNext();) {
PropertyModel propertyModel = (PropertyModel) iterator.next();
if (propertyModel.getName().equals("selector-namespace")) {
resourceConfigType.setSelectorNamespace(propertyModel
@@ -153,14 +163,15 @@
// add bindings param
ParamType bindingsParam = addParamTypeToResourceConfig(
resourceConfigType, SmooksModelConstants.BINDINGS, null);
- processBindingsParam(bindingsParam, target, source, context, listType);
+ processBindingsParam(bindingsParam, target, source, context, listType,
+ parentSelector);
//
}
protected void processBindingsParam(ParamType bindingsParam,
JavaBeanModel javaBean, AbstractXMLObject source,
SmooksConfigurationFileGenerateContext context,
- SmooksResourceListType listType) {
+ SmooksResourceListType listType, String parentSelector) {
List properties = javaBean.getProperties();
for (Iterator iterator = properties.iterator(); iterator.hasNext();) {
boolean isComplex = true;
@@ -177,12 +188,13 @@
if (child.isPrimitive() || child.getProperties().isEmpty()) {
isComplex = false;
}
-
+ String resourceConfigSelector = parentSelector;
String selector = getSelectorID(child);
if (!isComplex) {
selector = getSelectorIDViaXMLObject(
(AbstractXMLObject) sourceModel
- .getReferenceEntityModel(), source);
+ .getReferenceEntityModel(), source,
+ resourceConfigSelector);
}
AnyType binding = SmooksModelUtils.addBindingTypeToParamType(
bindingsParam, child.getName(), selector, null, null);
@@ -190,8 +202,11 @@
UIUtils.assignConnectionPropertyToBinding(connection, binding,
new String[] { "property", "selector" });
if (isComplex) {
+ AbstractXMLObject newParent = (AbstractXMLObject) sourceModel
+ .getReferenceEntityModel();
+ String newParentSelector = newParent.getName();
processLineConnection(connection, context, listType,
- (SourceModel) sourceModel, selector);
+ (SourceModel) sourceModel, selector, newParentSelector);
} else {
setConnectionUsed(connection);
continue;
@@ -200,18 +215,21 @@
}
protected String getSelectorIDViaXMLObject(AbstractXMLObject sourceModel,
- AbstractXMLObject currentRoot) {
+ AbstractXMLObject currentRoot, String resourceConfigSelector) {
String name = sourceModel.getName();
if (sourceModel instanceof TagPropertyObject) {
name = "@" + name;
}
AbstractXMLObject parent = sourceModel.getParent();
while (parent != null && parent.getName() != null) {
- name = parent.getName() + " " + name;
if (parent == currentRoot)
break;
+ name = parent.getName() + SPACE_SPLITER + name;
parent = parent.getParent();
}
+ if (resourceConfigSelector != null) {
+ name = resourceConfigSelector + SPACE_SPLITER + name;
+ }
return name;
}
@@ -227,14 +245,15 @@
public MappingResourceConfigList analyzeMappingSmooksModel(
SmooksResourceListType listType, Object sourceObject,
Object targetObject) {
+ JavaBeanModel tempBean = null;
if (sourceObject instanceof DocumentObject) {
sourceObject = ((DocumentObject) sourceObject).getRootTag();
}
- if (targetObject instanceof List) {
- targetObject = (JavaBeanModel) ((List) targetObject).get(0);
+ if (targetObject instanceof List && !((List) targetObject).isEmpty()) {
+ tempBean = (JavaBeanModel) ((List) targetObject).get(0);
}
if (!(sourceObject instanceof AbstractXMLObject)
- || !(targetObject instanceof JavaBeanModel)) {
+ || !(tempBean instanceof JavaBeanModel)) {
// TODO if the type of input source/target data is illegal , throw
// exceptions.
// MODIFY by Dart 2008.11.07
@@ -244,7 +263,6 @@
return MappingResourceConfigList.createEmptyList();
}
AbstractXMLObject sourceRoot = (AbstractXMLObject) sourceObject;
- JavaBeanModel sourceTarget = (JavaBeanModel) targetObject;
ResourceConfigType rootResourceConfig = findFirstMappingResourceConfig(listType);
// if can't find the root , return null
@@ -255,27 +273,108 @@
// throw new RuntimeException("Can't parse the config file.");
return null;
}
- String xmlName = rootResourceConfig.getSelector();
- AbstractXMLObject source = findXMLObjectByName(xmlName, sourceRoot);
- if (source == null) {
- // TODO if can't find the root , throw exception
- // MODIFY by Dart 2008.11.07
- throw new RuntimeException(Messages
- .getString("XML2JavaAnalyzer.CantFindRootNodeErrorMessage"));
//$NON-NLS-1$
- // return MappingResourceConfigList.createEmptyList();
+ MappingResourceConfigList rcl = new MappingResourceConfigList();
+ List rlist = listType.getAbstractResourceConfig();
+ int startIndex = rlist.indexOf(rootResourceConfig);
+ for (int i = startIndex; i < rlist.size(); i++) {
+ ResourceConfigType resourceConfig = (ResourceConfigType) rlist
+ .get(i);
+ ResourceType resource = resourceConfig.getResource();
+ if (resource == null)
+ continue;
+ String populator = resource.getValue();
+ if (populator != null)
+ populator = populator.trim();
+ if (!JavaBeanAnalyzer.BEANPOPULATOR.equals(populator))
+ continue;
+ String selector = resourceConfig.getSelector();
+ if (isSelectorIsUsed(selector))
+ continue;
+ AbstractXMLObject source = findChildXMLObjectByName(selector,
+ sourceRoot);
+ if (source == null) {
+ // TODO if can't find the root , throw exception
+ // MODIFY by Dart 2008.11.17
+ throw new RuntimeException(
+ Messages
+ .getString("XML2JavaAnalyzer.CantFindRootNodeErrorMessage") + " :
" + selector); //$NON-NLS-1$
+ // return MappingResourceConfigList.createEmptyList();
+ }
+ JavaBeanModel target = findJavaBeanModel(((List) targetObject),
+ resourceConfig);
+ if (target == null) {
+ // TODO if can't find the root , throw exception
+ // MODIFY by Dart 2008.11.17
+ String clazzName = SmooksModelUtils.getParmaText("beanClass",
+ resourceConfig);
+ if (clazzName != null)
+ throw new RuntimeException("Can't find the Java class"
+ + " : " + clazzName);
+ else
+ throw new RuntimeException("Java class name is NULL ");
+
+ }
+ this.createMappingResourceConfigList(rcl, listType, resourceConfig,
+ source, target);
}
-
- MappingResourceConfigList rcl = new MappingResourceConfigList();
- this.createMappingResourceConfigList(rcl, listType, rootResourceConfig,
- source, sourceTarget);
return rcl;
}
- public static AbstractXMLObject findXMLObjectByName(String selector,
+ protected JavaBeanModel findJavaBeanModel(List javaBeanModelList,
+ ResourceConfigType resourceConfig) {
+ for (Iterator iterator = javaBeanModelList.iterator(); iterator
+ .hasNext();) {
+ JavaBeanModel bean = (JavaBeanModel) iterator.next();
+ Class clazz = bean.getBeanClass();
+ if (clazz != null) {
+ String clazzName = SmooksModelUtils.getParmaText("beanClass",
+ resourceConfig);
+ if (clazzName != null)
+ clazzName = clazzName.trim();
+ if (clazz.getName().equals(clazzName)) {
+ return bean;
+ }
+ }
+ }
+ return null;
+ }
+
+ public static AbstractXMLObject findChildXMLObjectByName(String selector,
AbstractXMLObject root) {
if (selector == null)
return null;
- if (selector.equals(root.getName())) {
+ selector = selector.trim();
+ String[] nameArray = null;
+ if (selector.indexOf(SPACE_SPLITER) != -1) {
+ nameArray = selector.split(SPACE_SPLITER);
+ }
+ if (nameArray != null) {
+ if (nameArray.length > 1) {
+ String firstNodeName = nameArray[0];
+ root = findChildXMLObjectByName(firstNodeName, root);
+ if (root == null)
+ return null;
+ for (int i = 1; i < nameArray.length; i++) {
+ String name = nameArray[i];
+ if (root instanceof TagObject) {
+ List<AbstractXMLObject> childrenTags = root
+ .getChildren();
+ for (Iterator iterator = childrenTags.iterator(); iterator
+ .hasNext();) {
+ AbstractXMLObject abstractXMLObject = (AbstractXMLObject) iterator
+ .next();
+ if (abstractXMLObject.getName().equalsIgnoreCase(
+ name)) {
+ root = abstractXMLObject;
+ break;
+ }
+ }
+ }
+ }
+ return root;
+ }
+ }
+ if (selector.equalsIgnoreCase(root.getName())) {
return root;
}
if (root instanceof TagObject) {
@@ -289,7 +388,7 @@
for (Iterator iterator = tags.iterator(); iterator.hasNext();) {
AbstractXMLObject tagChild = (AbstractXMLObject) iterator
.next();
- AbstractXMLObject result = findXMLObjectByName(selector,
+ AbstractXMLObject result = findChildXMLObjectByName(selector,
tagChild);
if (result != null)
return result;
@@ -307,20 +406,20 @@
MappingModel mapping = new MappingModel(sourceRoot, targetJavaBean);
configList.getMappingModelList().add(mapping);
String namespace = config.getSelectorNamespace();
- if(namespace != null){
+ if (namespace != null) {
PropertyModel np = new PropertyModel();
np.setName("selector-namespace");
np.setValue(namespace);
mapping.getProperties().add(np);
}
-// String targetProfile = config.getTargetProfile();
-// if(targetProfile != null){
-// PropertyModel np = new PropertyModel();
-// np.setName("targetProfile");
-// np.setValue(targetProfile);
-// mapping.getProperties().add(np);
-// }
-
+ // String targetProfile = config.getTargetProfile();
+ // if(targetProfile != null){
+ // PropertyModel np = new PropertyModel();
+ // np.setName("targetProfile");
+ // np.setValue(targetProfile);
+ // mapping.getProperties().add(np);
+ // }
+
configList.addResourceConfig(config);
this.setSelectorIsUsed(config.getSelector());
@@ -350,6 +449,7 @@
SmooksModelUtils.ATTRIBUTE_SELECTOR);
JavaBeanModel childBean = JavaBeanAnalyzer
.findTheChildJavaBeanModel(property, targetJavaBean);
+ // PENGXUE
processXMLSelector(configList, config, sourceRoot,
childBean, list, selectorStr, binding);
}
@@ -367,7 +467,8 @@
String newSelector = resourceConfig1.getSelector();
if (newSelector == null)
return;
- AbstractXMLObject newRoot = findXMLObjectByName(newSelector, root);
+ AbstractXMLObject newRoot = findChildXMLObjectByName(newSelector,
+ root);
if (newRoot == null) {
// TODO If can't find the element , throw exception
// MODIFY by Dart , 2008.11.07
@@ -378,6 +479,7 @@
createMappingResourceConfigList(configList, listType,
resourceConfig1, newRoot, targetBean);
} else {
+
AbstractXMLObject source = findXMLObjectWithSelectorString(
selector, root);
if (source == null) {
@@ -405,11 +507,25 @@
if (selector == null)
return null;
selector = selector.trim();
- String[] names = selector.split(" ");
+ String[] names = selector.split(SPACE_SPLITER);
if (names == null)
return null;
- AbstractXMLObject current = parent;
- for (int i = 0; i < names.length; i++) {
+ int startIndex = 0;
+ String s = null;
+ if (names.length > 1)
+ s = names[0];
+ else
+ s = selector;
+ AbstractXMLObject current = findChildXMLObjectByName(s, parent);
+ if (current == parent) {
+
+ } else {
+ while (!(parent.getParent() instanceof DocumentObject)) {
+ parent = parent.getParent();
+ }
+ current = parent;
+ }
+ for (int i = startIndex; i < names.length; i++) {
String name = names[i].trim();
if (current instanceof TagObject && isXMLAttributeObject(name)) {
List properties = ((TagObject) current).getProperties();
@@ -418,24 +534,23 @@
.hasNext();) {
TagPropertyObject property = (TagPropertyObject) iterator
.next();
- if (name.equals(property.getName())) {
+ if (name.equalsIgnoreCase(property.getName())) {
current = property;
+ break;
}
}
} else {
- List list = parent.getChildren();
+ List list = current.getChildren();
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
AbstractXMLObject child = (AbstractXMLObject) iterator
.next();
- if (name.equals(child.getName())) {
+ if (name.equalsIgnoreCase(child.getName())) {
current = child;
break;
}
}
}
}
- if (current == parent)
- return null;
return current;
}