ref #8509 fix ERMS image export to support multiple media
[cdmlib-apps.git] / cdm-pesi / src / main / java / eu / etaxonomy / cdm / app / common / CdmDestinations.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.app.common;
11
12 import java.lang.reflect.InvocationTargetException;
13 import java.lang.reflect.Method;
14
15 import org.apache.log4j.Logger;
16
17 import eu.etaxonomy.cdm.config.AccountStore;
18 import eu.etaxonomy.cdm.database.CdmDataSource;
19 import eu.etaxonomy.cdm.database.DatabaseTypeEnum;
20 import eu.etaxonomy.cdm.database.ICdmDataSource;
21
22 public class CdmDestinations {
23 @SuppressWarnings("unused")
24 private static Logger logger = Logger.getLogger(CdmDestinations.class);
25
26 public static ICdmDataSource cdm_test_local_mysql(){
27 DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
28 String cdmServer = "127.0.0.1";
29 String cdmDB = "cdm_test";
30 String cdmUserName = "root";
31 return makeDestination(dbType, cdmServer, cdmDB, -1, cdmUserName, null);
32 }
33
34 public static ICdmDataSource cdm_test_local_faunaEu_mysql(){
35 DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
36 String cdmServer = "127.0.0.1";
37 String cdmDB = "cdm_faunaeu_2017_03";
38 String cdmUserName = "root";
39 return makeDestination(dbType, cdmServer, cdmDB, -1, cdmUserName, null);
40 }
41
42 public static ICdmDataSource cdm_test_local_pesi_leer(){
43 DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
44 String cdmServer = "127.0.0.1";
45 String cdmDB = "cdm_pesi_test_leer";
46 String cdmUserName = "edit";
47 return makeDestination(dbType, cdmServer, cdmDB, -1, cdmUserName, null);
48 }
49
50 public static ICdmDataSource cdm_test_local_pesi_leer2(){
51 DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
52 String cdmServer = "127.0.0.1";
53 String cdmDB = "cdm_pesi_test_leer2";
54 String cdmUserName = "edit";
55 return makeDestination(dbType, cdmServer, cdmDB, -1, cdmUserName, null);
56 }
57
58 public static ICdmDataSource cdm_test_local_indexFungorum(){
59 DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
60 String cdmServer = "127.0.0.1";
61 String cdmDB = "indexFungorum";
62 String cdmUserName = "root";
63 return makeDestination(dbType, cdmServer, cdmDB, -1, cdmUserName, null);
64 }
65
66 public static ICdmDataSource cdm_test_local_mysql_erms(){
67 DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
68 String cdmServer = "127.0.0.1";
69 String cdmDB = "cdm_pesi_erms";
70 String cdmUserName = "edit";
71 return CdmDestinations.makeDestination(dbType, cdmServer, cdmDB, -1, cdmUserName, null);
72 }
73
74 public static ICdmDataSource cdm_test_local_mysql_erms2(){
75 DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
76 String cdmServer = "127.0.0.1";
77 String cdmDB = "cdm_pesi_erms2";
78 String cdmUserName = "edit";
79 return CdmDestinations.makeDestination(dbType, cdmServer, cdmDB, -1, cdmUserName, null);
80 }
81
82 public static ICdmDataSource cdm_test_local_mysql_test(){
83 DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
84 String cdmServer = "127.0.0.1";
85 String cdmDB = "test";
86 String cdmUserName = "edit";
87 return makeDestination(dbType, cdmServer, cdmDB, -1, cdmUserName, null);
88 }
89
90 public static ICdmDataSource NULL(){
91 return null;
92 }
93
94
95 public static ICdmDataSource localH2(){
96 return CdmDataSource.NewH2EmbeddedInstance("cdm", "sa", "");
97 }
98
99 public static ICdmDataSource localH2EuroMed(){
100 return CdmDataSource.NewH2EmbeddedInstance("euroMed", "sa", "");
101 }
102
103 public static ICdmDataSource localH2Erms(){
104 return CdmDataSource.NewH2EmbeddedInstance("erms", "sa", "");
105 }
106
107 public static ICdmDataSource test_cdm_pesi_euroMed(){
108 DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
109 String cdmServer = "160.45.63.175";
110 String cdmDB = "cdm_pesi_euromed";
111 String cdmUserName = "edit";
112 return makeDestination(dbType, cdmServer, cdmDB, -1, cdmUserName, null);
113 }
114
115 public static ICdmDataSource test_cdm_pesi_fauna_europaea(){
116 DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
117 String cdmServer = "160.45.63.175";
118 String cdmDB = "cdm_pesi_fauna_europaea";
119 String cdmUserName = "edit";
120 return makeDestination(dbType, cdmServer, cdmDB, -1, cdmUserName, null);
121 }
122
123
124 public static ICdmDataSource test_cdm_pesi_erms(){
125 DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
126 String cdmServer = "160.45.63.175";
127 String cdmDB = "cdm_pesi_erms";
128 String cdmUserName = "edit";
129 return makeDestination(dbType, cdmServer, cdmDB, -1, cdmUserName, null);
130 }
131
132
133 /**
134 * initializes source
135 * TODO only supports MySQL and PostgreSQL
136 *
137 * @param dbType
138 * @param cdmServer
139 * @param cdmDB
140 * @param port
141 * @param cdmUserName
142 * @param pwd
143 * @return
144 */
145 public static ICdmDataSource makeDestination(DatabaseTypeEnum dbType, String cdmServer, String cdmDB, int port, String cdmUserName, String pwd ){
146 //establish connection
147 pwd = AccountStore.readOrStorePassword(cdmServer, cdmDB, cdmUserName, pwd);
148 ICdmDataSource destination;
149 if(dbType.equals(DatabaseTypeEnum.MySQL)){
150 destination = CdmDataSource.NewMySqlInstance(cdmServer, cdmDB, port, cdmUserName, pwd);
151 } else if(dbType.equals(DatabaseTypeEnum.PostgreSQL)){
152 destination = CdmDataSource.NewPostgreSQLInstance(cdmServer, cdmDB, port, cdmUserName, pwd);
153 } else {
154 //TODO others
155 throw new RuntimeException("Unsupported DatabaseType");
156 }
157 return destination;
158 }
159
160
161 /**
162 * Accepts a string array and tries to find a method returning an ICdmDataSource with
163 * the name of the given first string in the array
164 *
165 * @param args
166 * @return
167 */
168 public static ICdmDataSource chooseDestination(String[] args) {
169 if(args == null) {
170 return null;
171 }
172
173 if(args.length != 1) {
174 return null;
175 }
176
177 String possibleDestination = args[0];
178
179 Method[] methods = CdmDestinations.class.getMethods();
180
181 for (Method method : methods){
182 if(method.getName().equals(possibleDestination)){
183 try {
184 return (ICdmDataSource) method.invoke(null, null);
185 } catch (IllegalArgumentException e) {
186 e.printStackTrace();
187 } catch (IllegalAccessException e) {
188 e.printStackTrace();
189 } catch (InvocationTargetException e) {
190 e.printStackTrace();
191 }
192 }
193 }
194 return null;
195 }
196 }
197