/*******************************************************************************
* 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.test.csvparser;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import org.eclipse.emf.ecore.resource.Resource;
import org.jboss.tools.smooks.configuration.editors.IXMLStructuredObject;
import org.jboss.tools.smooks.configuration.editors.csv12.CSVDataParser;
import org.jboss.tools.smooks.configuration.editors.utils.SmooksUIUtils;
import org.jboss.tools.smooks.configuration.editors.xml.TagList;
import org.jboss.tools.smooks.model.smooks.SmooksResourceListType;
import org.jboss.tools.smooks.model.smooks.util.SmooksResourceFactoryImpl;
import org.jboss.tools.smooks.test.model11.BaseTestCase;
/**
* @author Dart (dpeng@redhat.com)
*
*/
public class CsvParserTest extends BaseTestCase {
public void testCsvParser() throws IOException, ParserConfigurationException {
Resource smooksResource = new SmooksResourceFactoryImpl().createResource(null);
smooksResource.load(CsvParserTest.class.getResourceAsStream("smooks-config.xml"), null);
SmooksResourceListType resourceList = ((org.jboss.tools.smooks.model.smooks.DocumentRoot) smooksResource
.getContents().get(0)).getSmooksResourceList();
assertNotNull(resourceList);
// SmooksGraphicsExtType extType =
// this.getSmooksGraphExtType(resourceList);
//
// assertNotNull(extType);
// InputType inputType = null;
// List<?> ilist = extType.getInput();
// for (Iterator<?> iterator = ilist.iterator(); iterator.hasNext();) {
// Object object = (Object) iterator.next();
// if (object instanceof InputType) {
// if ("csv".equalsIgnoreCase(((InputType) object).getType())) {
// inputType = (InputType) object;
// break;
// }
// }
// }
// assertNotNull(inputType);
CSVDataParser parser = new CSVDataParser();
TagList tagList = parser.parseCSV(CsvParserTest.class.getResourceAsStream("input-message.csv"), resourceList);
assertNotNull(tagList);
checkTagList1(tagList);
// for (Iterator<?> iterator = ilist.iterator(); iterator.hasNext();) {
// Object object = (Object) iterator.next();
// if (object instanceof InputType) {
// if ("csv".equalsIgnoreCase(((InputType) object).getType()) && object
// != inputType) {
// inputType = (InputType) object;
// break;
// }
// }
// }
// parser = new CSVDataParser();
// tagList = parser
// .parseCSV(CsvParserTest.class.getResourceAsStream("input-message.csv"),
// inputType, resourceList);
// assertNotNull(tagList);
// checkTagList2(tagList);
}
private void checkNode(String nodeName, IXMLStructuredObject tag) {
IXMLStructuredObject node1 = SmooksUIUtils.localXMLNodeWithNodeName(nodeName, tag);
assertNotNull(node1);
String selector = SmooksUIUtils.generateFullPath(node1, "/");
assertEquals("/csv-set/csv-record/" + nodeName, selector);
}
private void checkTagList2(TagList tagList) {
assertEquals(1, tagList.getChildren().size());
IXMLStructuredObject tag = tagList.getChildren().get(0);
assertEquals("csv-set", tag.getNodeName());
IXMLStructuredObject child = tag.getChildren().get(0);
assertEquals("csv-record", child.getNodeName());
checkNode("firstname", tag);
checkNode("lastname", tag);
checkNode("gender", tag);
checkNode("age", tag);
checkNode("country", tag);
}
private void checkTagList1(TagList tagList) {
assertEquals(1, tagList.getChildren().size());
IXMLStructuredObject tag = tagList.getChildren().get(0);
assertEquals("csv-set", tag.getNodeName());
IXMLStructuredObject child = tag.getChildren().get(0);
assertEquals("csv-record", child.getNodeName());
checkNode("firstname", tag);
checkNode("lastname", tag);
checkNode("gender", tag);
checkNode("age", tag);
checkNode("country", tag);
}
}