Author: DartPeng
Date: 2009-07-21 05:33:20 -0400 (Tue, 21 Jul 2009)
New Revision: 16691
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SelectoreSelectionDialog.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataParser.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edireader/EDIReaderUICreator.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/AbstractSmooksFormEditor.java
Log:
JBIDE-4584
Create a new EDI parser
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SelectoreSelectionDialog.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SelectoreSelectionDialog.java 2009-07-21
07:53:25 UTC (rev 16690)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SelectoreSelectionDialog.java 2009-07-21
09:33:20 UTC (rev 16691)
@@ -44,6 +44,7 @@
import org.eclipse.ui.forms.widgets.Hyperlink;
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
import org.jboss.tools.smooks.configuration.editors.csv.CSVDataParser;
+import org.jboss.tools.smooks.configuration.editors.edi.EDIDataParser;
import org.jboss.tools.smooks.configuration.editors.javabean.JavaBeanModel;
import org.jboss.tools.smooks.configuration.editors.javabean.JavaBeanModelFactory;
import org.jboss.tools.smooks.configuration.editors.uitls.JsonInputDataParser;
@@ -254,6 +255,17 @@
String path = SmooksModelUtils.getInputPath(inputType);
if (type != null && path != null) {
path = path.trim();
+ if (SmooksModelUtils.INPUT_TYPE_EDI.equals(type)) {
+ EDIDataParser parser = new EDIDataParser();
+ try {
+ TagList tl = parser.parseEDIFile(path, inputType, smooksResourceListType);
+ if (tl != null) {
+ list.addAll(((TagList) tl).getChildren());
+ }
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
if (SmooksModelUtils.INPUT_TYPE_CSV.equals(type)) {
CSVDataParser parser = new CSVDataParser();
try {
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataParser.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataParser.java 2009-07-21
07:53:25 UTC (rev 16690)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edi/EDIDataParser.java 2009-07-21
09:33:20 UTC (rev 16691)
@@ -10,14 +10,175 @@
******************************************************************************/
package org.jboss.tools.smooks.configuration.editors.edi;
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.dom4j.DocumentException;
+import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.configuration.editors.xml.TagList;
+import org.jboss.tools.smooks.configuration.editors.xml.XMLObjectAnalyzer;
+import org.jboss.tools.smooks.model.edi.EDIReader;
+import org.jboss.tools.smooks.model.graphics.ext.InputType;
+import org.jboss.tools.smooks.model.graphics.ext.ParamType;
+import org.jboss.tools.smooks.model.smooks.AbstractReader;
+import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
+import org.milyn.Smooks;
+import org.milyn.SmooksUtil;
+import org.milyn.cdr.SmooksResourceConfiguration;
+import org.milyn.smooks.edi.SmooksEDIReader;
+import org.milyn.xml.XmlUtil;
+import org.w3c.dom.Document;
+
/**
* @author Dart
- *
+ *
*/
public class EDIDataParser {
public static final String USE_AVAILABEL_READER = "use_availableReader";
-
+
public static final String ENCODING = "encoding";
public static final Object MAPPING_MODEL = "mappingModelFile";
+
+ public TagList parseEDIFile(InputStream stream, InputType inputType,
SmooksResourceListType resourceList)
+ throws IOException, DocumentException {
+
+ List<ParamType> paramList = inputType.getParam();
+ String encoding = null;
+ String mappingModel = null;
+
+ for (Iterator<?> iterator = paramList.iterator(); iterator.hasNext();) {
+ ParamType paramType = (ParamType) iterator.next();
+ if (paramType.getName().equals(USE_AVAILABEL_READER)) {
+ if (paramType.getValue().equalsIgnoreCase("true") && resourceList
!= null) {
+ List<AbstractReader> readers = resourceList.getAbstractReader();
+ int count = 0;
+ int index = -1;
+ for (Iterator<?> iterator2 = readers.iterator(); iterator2.hasNext();) {
+ AbstractReader abstractReader = (AbstractReader) iterator2.next();
+ if (abstractReader instanceof EDIReader) {
+ count++;
+ if (index == -1) {
+ index = readers.indexOf(abstractReader);
+ }
+ }
+ }
+
+ if (count > 1) {
+ // throw new
+ // RuntimeException("The smooks config file should have only one JSON
reader");
+ }
+ if (index != -1) {
+ return parseEDIFile(stream, (EDIReader) readers.get(index));
+ }
+
+ }
+ }
+ if (paramType.getName().equals(ENCODING)) {
+ encoding = paramType.getValue();
+ }
+ if (paramType.getName().equals(MAPPING_MODEL)) {
+ mappingModel = paramType.getValue();
+ }
+ }
+
+ return parseEDIFile(stream, mappingModel, encoding);
+ }
+
+ public TagList parseEDIFile(InputStream ediInputStream, EDIReader reader) throws
IOException, DocumentException {
+ String encoding = reader.getEncoding();
+ String mappingModel = reader.getMappingModel();
+ return parseEDIFile(ediInputStream, mappingModel, encoding);
+ }
+
+ public TagList parseEDIFile(InputStream ediInputStream, String mappingModel, String
ediFileEncoding)
+ throws IOException, DocumentException {
+ Smooks smooks = new Smooks();
+
+ SmooksResourceConfiguration readerConfig = new
SmooksResourceConfiguration("org.xml.sax.driver",
+ SmooksEDIReader.class.getName());
+ File f = new File(mappingModel);
+ String modelPath = mappingModel;
+ if(f.exists()){
+ modelPath = f.toURI().toString();
+ }
+
+ readerConfig.setParameter("mapping-model", modelPath);
+ if (ediFileEncoding == null || ediFileEncoding.trim().length() == 0) {
+ ediFileEncoding = "UTF-8";
+ }
+ readerConfig.setParameter("encoding", ediFileEncoding);
+
+ SmooksUtil.registerResource(readerConfig, smooks);
+
+ // Use a DOM result to capture the message model for the supplied
+ // CSV
+ // message...
+ DOMResult domResult = new DOMResult();
+
+ // Filter the message through Smooks and capture the result as a DOM
+ // in
+ // the domResult instance...
+ // FileInputStream stream
+ smooks.filter(new StreamSource(ediInputStream), domResult);
+
+ // Get the Document object from the domResult. This is the message
+ // model!!!...
+ Document model = (Document) domResult.getNode();
+
+ // So using the model Document, you can construct a tree structure
+ // for
+ // the editor.
+
+ // We'll just print out the model DOM here so you can see it....
+ StringWriter modelWriter = new StringWriter();
+ // System.out.println(modelWriter);
+ XmlUtil.serialize(model, true, modelWriter);
+
+ XMLObjectAnalyzer analyzer = new XMLObjectAnalyzer();
+ ByteArrayInputStream byteinputStream = new
ByteArrayInputStream(modelWriter.toString().getBytes());
+ TagList tagList = analyzer.analyze(byteinputStream, null);
+
+ try {
+ if (byteinputStream != null) {
+ byteinputStream.close();
+ byteinputStream = null;
+ }
+ if (modelWriter != null) {
+ modelWriter.close();
+ modelWriter = null;
+ }
+ if (smooks != null) {
+ smooks.close();
+ smooks = null;
+ }
+ if (ediInputStream != null) {
+ ediInputStream.close();
+ ediInputStream = null;
+ }
+ model = null;
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+
+ return tagList;
+ }
+
+ public TagList parseEDIFile(String path, InputType inputType, SmooksResourceListType
smooksResourceListType)
+ throws InvocationTargetException, FileNotFoundException, IOException,
DocumentException {
+ String filePath = SmooksUIUtils.parseFilePath(path);
+
+ return parseEDIFile(new FileInputStream(filePath), inputType, smooksResourceListType);
+ }
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edireader/EDIReaderUICreator.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edireader/EDIReaderUICreator.java 2009-07-21
07:53:25 UTC (rev 16690)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/edireader/EDIReaderUICreator.java 2009-07-21
09:33:20 UTC (rev 16691)
@@ -19,6 +19,7 @@
import org.jboss.tools.smooks.configuration.editors.PropertyUICreator;
import org.jboss.tools.smooks.configuration.editors.SmooksMultiFormEditor;
import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.edimap.editor.EDIMapFormEditor;
import org.jboss.tools.smooks.editor.ISmooksModelProvider;
import org.jboss.tools.smooks.model.edi.EdiPackage;
@@ -39,15 +40,16 @@
* org.eclipse.emf.edit.provider.IItemPropertyDescriptor, java.lang.Object,
* org.eclipse.emf.ecore.EAttribute)
*/
- public AttributeFieldEditPart createPropertyUI(FormToolkit toolkit, Composite parent,
IItemPropertyDescriptor propertyDescriptor, Object model,
- EAttribute feature, ISmooksModelProvider formEditor, IEditorPart part) {
+ public AttributeFieldEditPart createPropertyUI(FormToolkit toolkit, Composite parent,
+ IItemPropertyDescriptor propertyDescriptor, Object model, EAttribute feature,
+ ISmooksModelProvider formEditor, IEditorPart part) {
if (feature == EdiPackage.eINSTANCE.getEDIReader_Encoding()) {
}
if (feature == EdiPackage.eINSTANCE.getEDIReader_MappingModel()) {
- return SmooksUIUtils.createFileSelectionTextFieldEditor(null, parent, null, toolkit,
propertyDescriptor, model, SmooksUIUtils.VALUE_TYPE_VALUE,
- SmooksMultiFormEditor.EDITOR_ID,null);
+ return SmooksUIUtils.createFileSelectionTextFieldEditor(null, parent, null, toolkit,
propertyDescriptor,
+ model, SmooksUIUtils.VALUE_TYPE_VALUE, EDIMapFormEditor.EDITOR_ID, null);
}
- return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature,
formEditor,part);
+ return super.createPropertyUI(toolkit, parent, propertyDescriptor, model, feature,
formEditor, part);
}
@Override
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/AbstractSmooksFormEditor.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/AbstractSmooksFormEditor.java 2009-07-21
07:53:25 UTC (rev 16690)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/editor/AbstractSmooksFormEditor.java 2009-07-21
09:33:20 UTC (rev 16691)
@@ -78,7 +78,7 @@
public class AbstractSmooksFormEditor extends FormEditor implements
IEditingDomainProvider,
ISmooksModelValidateListener , ISmooksModelProvider{
- public static final String EDITOR_ID =
"org.jboss.tools.smooks.configuration.editors.MultiPageEditor";
+ public static final String EDITOR_ID =
"org.jboss.tools.smooks.edimap.editors.MultiPageEditor";
protected StructuredTextEditor textEditor = null;