(no commit message)
[cdmlib.git] / cdmlib-io / src / main / java / eu / etaxonomy / cdm / io / common / ImportWrapper.java
1 /**
2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9
10 package eu.etaxonomy.cdm.io.common;
11
12 import java.lang.reflect.InvocationTargetException;
13 import java.lang.reflect.Method;
14 import java.util.ArrayList;
15 import java.util.List;
16 import java.util.UUID;
17
18 import org.apache.log4j.Logger;
19
20 import eu.etaxonomy.cdm.database.ICdmDataSource;
21 import eu.etaxonomy.cdm.io.abcd206.AbcdIO;
22 import eu.etaxonomy.cdm.io.abcd206.SpecimenImportConfigurator;
23 import eu.etaxonomy.cdm.io.tcsxml.TcsXmlImportConfigurator;
24
25 /**
26 * @author a.mueller
27 * @created 12.11.2008
28 * @version 1.0
29 */
30 public class ImportWrapper {
31 private static final Logger logger = Logger.getLogger(ImportWrapper.class);
32
33 private String label;
34
35 private Class importClass = CdmDefaultImport.class;
36
37 private IImportConfigurator configuration;
38
39 public static List<ImportWrapper> list(){
40 logger.debug("Create ImportWrapper list");
41 List<ImportWrapper> result = new ArrayList<ImportWrapper>();
42 //abcd
43 ImportWrapper wrapper = Abcd206WrapperInstance();
44 result.add(wrapper);
45 wrapper = TcsXml101WrapperInstance();
46 result.add(wrapper);
47
48 return result;
49 }
50
51 public static ImportWrapper Abcd206WrapperInstance(){
52 String label = "ABCD 2.06";
53 Class clazz = CdmDefaultImport.class;
54 IImportConfigurator config = SpecimenImportConfigurator.NewInstance(null, null);
55 ImportWrapper wrapper = new ImportWrapper();
56 wrapper.setLabel(label);
57 wrapper.setImportClass(clazz);
58 wrapper.setConfiguration(config);
59 return wrapper;
60 }
61
62
63 public static ImportWrapper TcsXml101WrapperInstance(){
64 String label = "TcsXML 1.1";
65 Class clazz = CdmDefaultImport.class;
66 IImportConfigurator config = TcsXmlImportConfigurator.NewInstance(null, null);
67 ImportWrapper wrapper = new ImportWrapper();
68 wrapper.setLabel(label);
69 wrapper.setImportClass(clazz);
70 wrapper.setConfiguration(config);
71 return wrapper;
72 }
73
74
75 // public static ImportWrapper JaxbWrapperInstance(){
76 // String label = "CDM 1.0 XML";
77 // Class clazz = CdmDefaultImport.class;
78 // IImportConfigurator config = TcsXmlImportConfigurator.NewInstance(null, null);
79 // ImportWrapper wrapper = new ImportWrapper();
80 // wrapper.setLabel(label);
81 // wrapper.setImportClass(clazz);
82 // wrapper.setConfiguration(config);
83 // return wrapper;
84 // }
85
86 /**
87 *
88 * @param source
89 * @param destination
90 * @param secUUID
91 * @return
92 */
93 public boolean invoke(Object source, ICdmDataSource destination, UUID secUUID){
94 try {
95 Method methodInvoke = importClass.getDeclaredMethod("invoke", IImportConfigurator.class);
96 Method methodSetSource = configuration.getClass().getDeclaredMethod("setSource", Object.class);
97 methodSetSource.setAccessible(true);
98
99 this.configuration.setDestination(destination);
100 methodSetSource.invoke(configuration, source);
101
102 if (this.importClass == null){
103 return false;
104 }else{
105 return (Boolean)methodInvoke.invoke(importClass, configuration);
106 }
107 } catch (SecurityException e) {
108 e.printStackTrace();
109 } catch (IllegalArgumentException e) {
110 e.printStackTrace();
111 } catch (NoSuchMethodException e) {
112 e.printStackTrace();
113 } catch (IllegalAccessException e) {
114 e.printStackTrace();
115 } catch (InvocationTargetException e) {
116 e.printStackTrace();
117 }
118 return false;
119 }
120
121 // *************** GETTER / SETTER *******************************************/
122
123 /**
124 * @return the configuration
125 */
126 public IImportConfigurator getConfiguration() {
127 return configuration;
128 }
129
130 /**
131 * @param configuration the configuration to set
132 */
133 public void setConfiguration(IImportConfigurator configuration) {
134 this.configuration = configuration;
135 }
136
137 /**
138 * @return the label
139 */
140 public String getLabel() {
141 return label;
142 }
143
144 /**
145 * @param label the label to set
146 */
147 public void setLabel(String label) {
148 this.label = label;
149 }
150
151 /**
152 * @return the ioClazz
153 */
154 public Class getImportClass() {
155 return importClass;
156 }
157
158 /**
159 * @param ioClazz the ioClazz to set
160 */
161 public void setImportClass(Class importClass) {
162 this.importClass = importClass;
163 }
164
165 }