Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2013 Christophe Pollet
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package net.cpollet.jixture.fixtures.transformers;
 
 
 import java.util.List;

Author(s):
Christophe Pollet
 
 	@Qualifier("jixture.mappingConversionServiceFactoryBean")
 
 
 	public Class getFromType() {
 		return XmlFileFixture.class;
 	}
 
 	public ObjectFixture transform(XmlFileFixture fixture) {
 		List<Objectobjects = parse(fixture.getInputStream());
 
 		MappingFixture mappingFixture = new MappingFixture(objects.toArray());
 
 		fixture.populateExtractionResult(objects);
 		mappingFixture.setFilter(fixture.getFilter());
 
 		return mappingFixture;
 	}
 
 	private List<Objectparse(InputStream inputStream) {
 		SAXParser parser = createSaxParser();
 
 		try {
 			parser.parse(inputStreamhandler);
 		}
 		catch (Exception e) {
 			throw ExceptionUtils.wrapInRuntimeException(e);
 		}
 
 		return handler.getObjects();
 	}
 
 	private SAXParser createSaxParser() {
 		SAXParserFactory parserFactor = SAXParserFactory.newInstance();
 		try {
 			return parserFactor.newSAXParser();
 		}
 		catch (Exception e) {
 			throw ExceptionUtils.wrapInRuntimeException(e);
 		}
 	}
 
 	}
 
 	private static class XmlFileToMappingsFixtureTransformerSAXHandler extends DefaultHandler {
		private List<Objectobjects = new LinkedList<Object>();
		public XmlFileToMappingsFixtureTransformerSAXHandler(MappingDefinitionHolder mappingDefinitionHolderConversionService conversionService) {
			this. = conversionService;
			this. = mappingDefinitionHolder;
		}
		public void startElement(String uriString localNameString xmlTableNameAttributes attributesthrows SAXException {
			if ("dataset".equals(xmlTableName)) {
				return;
			}
			for (int i = 0; i < attributes.getLength(); i++) {
				String xmlColumnName = attributes.getQName(i);
				MappingField mappingField = getMappingFieldForTableAndColumn(xmlTableNamexmlColumnName);
				if (mappingField.isEmbedded()) {
					handleEmbeddedAttribute(mappingFieldattributes.getValue(i));
				}
				else {
					handleAttribute(mappingFieldattributes.getValue(i));
				}
			}
		}
		private void handleAttribute(MappingField mappingFieldObject value) {
			Field field = mappingField.getField();
			Object fieldValue = convertValueToFieldType(valuefield);
			setFieldValue(fieldfieldValue);
		}
		private void handleEmbeddedAttribute(MappingField mappingFieldObject value) {
			Field field = mappingField.getField();
			Field embeddedField = mappingField.getEmbeddableField();
			Object fieldValue = convertValueToFieldType(valueembeddedField);
			Object embeddedFieldValue = getEmbeddedFieldValue(field);
			setFieldValue(embeddedFieldValueembeddedFieldfieldValue);
		}
		private Object getEmbeddedFieldValue(Object objectField field) {
			Object value = getFieldValue(objectfield);
			if (null == value) {
				value = createInstanceOfClass(field.getType());
				setFieldValue(objectfieldvalue);
			}
			return value;
		}
			try {
				return type.newInstance();
			}
			catch (Exception e) {
				throw ExceptionUtils.wrapInRuntimeException(e);
			}
		}
		private Class getMappingClassForTable(String tableName) {
		}
		private MappingField getMappingFieldForTableAndColumn(String xmlLowercaseTableNameString xmlLowercaseColumnName) {
			return .getMappingFieldByTableAndColumnNames(xmlLowercaseTableName.toLowerCase(), xmlLowercaseColumnName.toLowerCase());
		}
		private Object convertValueToFieldType(Object valueField field) {
			return .convert(valuefield.getType());
		}
		private void setFieldValue(Object objectField fieldObject fieldValue) {
			field.setAccessible(true);
			try {
				field.set(objectfieldValue);
			}
			catch (Exception e) {
				throw ExceptionUtils.wrapInRuntimeException(e);
			}
			finally {
				field.setAccessible(false);
			}
		}
		private Object getFieldValue(Object objectField field) {
			field.setAccessible(true);
			try {
				return field.get(object);
			}
				throw new RuntimeException(e);
			}
			finally {
				field.setAccessible(false);
			}
		}
		public void endElement(String uriString localNameString qNamethrows SAXException {
			if ("dataset".equals(qName)) {
				return;
			}
			 = null;
		}
		public List<ObjectgetObjects() {
			return ;
		}
	}
New to GrepCode? Check out our FAQ X