1 package org.kuali.mobility.util.mapper;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.net.URL;
6 import java.net.URLConnection;
7
8 import org.apache.log4j.Logger;
9 import org.kuali.mobility.util.mapper.entity.DataMapping;
10 import org.kuali.mobility.util.mapper.entity.MappingElement;
11
12 import com.thoughtworks.xstream.XStream;
13
14 public class DataConfig {
15 private static final Logger logger = Logger.getLogger(DataConfig.class);
16
17 public DataMapping loadConfiguation(final String fileName) throws IOException {
18 final XStream xstream = configureXstream();
19 return (DataMapping) xstream.fromXML(getClass().getClassLoader().getResourceAsStream(fileName));
20 }
21
22 public DataMapping loadConfiguation(final URL url, Integer connectionTimeout, Integer readTimeout) throws IOException {
23 final XStream xstream = configureXstream();
24
25 URLConnection con = url.openConnection();
26 con.setConnectTimeout(connectionTimeout);
27 con.setReadTimeout(readTimeout);
28 InputStream in = con.getInputStream();
29
30 return (DataMapping) xstream.fromXML(in);
31 }
32
33 private XStream configureXstream() {
34 final XStream xstream = new XStream();
35 xstream.alias("dataMapping", DataMapping.class);
36 xstream.addImplicitCollection(DataMapping.class, "mappings", "mapping", MappingElement.class);
37 xstream.aliasAttribute(MappingElement.class, "mapTo", "mapTo");
38 xstream.aliasAttribute(MappingElement.class, "mapFrom", "mapFrom");
39 xstream.aliasAttribute(MappingElement.class, "isAttribute", "attribute");
40 xstream.aliasAttribute(MappingElement.class, "list", "list");
41 xstream.aliasAttribute(MappingElement.class, "type", "type");
42 xstream.processAnnotations(DataMapping.class);
43 return xstream;
44 }
45 }