package husacct.common.imexport;
import husacct.common.dto.AbstractDTO;
import java.lang.reflect.Field;
import org.apache.log4j.Logger;
import org.jdom2.Element;
public class XmlConversionUtils {
private static Logger logger = Logger.getLogger(XmlConversionUtils.class);
public static Element writeDtoToXml(String elementName, AbstractDTO dto) {
Element dtoElement = new Element(elementName);
Class<?> d = dto.getClass();
try {
String propertyName = "";
String valueString = "";
Field[] fields = d.getDeclaredFields();
for( Field field : fields ){
propertyName = field.getName();
Object value = field.get(dto);
if (value != null) {
valueString = field.get(dto).toString();
}
dtoElement.addContent(new Element(propertyName).setText(valueString));
}
} catch (IllegalAccessException e) {
logger.warn("Could not write to xml for element: " + elementName + " Exception: " + e.getMessage());
//e.printStackTrace();
} catch (IllegalArgumentException e) {
logger.warn("Could not write to xml for element: " + elementName + " Exception: " + e.getMessage());
//e.printStackTrace();
} catch (Exception e) {
logger.warn("Could not write to xml for element: " + elementName + " Exception: " + e.getMessage());
//e.printStackTrace();
}
return dtoElement;
}
public static AbstractDTO writeElementToDto(Element element, AbstractDTO dto) {
Class<?> d = dto.getClass();
try {
String propertyName;
Class<?> propertyType;
String valueString = "";
boolean valueBoolean = false;
int valueInt = 0;
Field[] fields = d.getDeclaredFields();
for( Field field : fields ){
propertyName = field.getName();
if (element.getChildText(propertyName) != null) {
propertyType = field.getType();
if (propertyType == String.class) {
valueString = element.getChildText(propertyName);
field.set(dto, valueString);
} else {
if (propertyType == boolean.class) {
valueBoolean = Boolean.parseBoolean(element.getChildText(propertyName));
field.set(dto, valueBoolean);
} else if (propertyType == int.class) {
valueInt = Integer.parseInt(element.getChildText(propertyName));
field.set(dto, valueInt);
}
}
}
}
} catch (IllegalAccessException e) {
logger.warn("Could not read from xml for class: " + dto.getClass().getName() + " Exception: " + e.getMessage());
//e.printStackTrace();
} catch (IllegalArgumentException e) {
logger.warn("Could not read from xml for class: " + dto.getClass().getName() + " Exception: " + e.getMessage());
//e.printStackTrace();
}
return dto;
}
}