Project

General

Profile

Download (12.4 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2009 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.test.function;
11

    
12
import java.io.IOException;
13
import java.sql.ResultSet;
14
import java.sql.SQLException;
15
import java.util.ArrayList;
16
import java.util.List;
17
import java.util.UUID;
18

    
19
import org.apache.log4j.Level;
20
import org.apache.log4j.Logger;
21
import org.hibernate.Query;
22
import org.hibernate.Session;
23
import org.springframework.transaction.TransactionStatus;
24

    
25
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
26
import eu.etaxonomy.cdm.api.application.CdmApplicationUtils;
27
import eu.etaxonomy.cdm.database.CdmDataSource;
28
import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
29
import eu.etaxonomy.cdm.database.DatabaseTypeEnum;
30
import eu.etaxonomy.cdm.database.DbSchemaValidation;
31
import eu.etaxonomy.cdm.database.ICdmDataSource;
32
import eu.etaxonomy.cdm.model.agent.Person;
33
import eu.etaxonomy.cdm.model.common.init.TermNotFoundException;
34
import eu.etaxonomy.cdm.model.description.Distribution;
35
import eu.etaxonomy.cdm.model.description.PresenceTerm;
36
import eu.etaxonomy.cdm.model.description.TaxonDescription;
37
import eu.etaxonomy.cdm.model.location.NamedArea;
38
import eu.etaxonomy.cdm.model.location.TdwgArea;
39
import eu.etaxonomy.cdm.model.name.BotanicalName;
40
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
41
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
42
import eu.etaxonomy.cdm.model.name.Rank;
43
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
44
import eu.etaxonomy.cdm.model.reference.ReferenceBase;
45
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
46
import eu.etaxonomy.cdm.model.taxon.Taxon;
47

    
48
public class Datasource {
49
	private static final Logger logger = Logger.getLogger(Datasource.class);
50

    
51
	
52
	private void testNewConfigControler(){
53
		List<CdmPersistentDataSource> lsDataSources = CdmPersistentDataSource.getAllDataSources();
54
		System.out.println(lsDataSources);
55
		CdmPersistentDataSource dataSource = lsDataSources.get(0);
56
		DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
57
//		ICdmDataSource dataSource = CdmDataSource.NewInstance(dbType, "192.168.2.10", "cdm_test_andreas", dbType.getDefaultPort() + "", "edit", "", null, null);
58
		CdmPersistentDataSource.save(dataSource.getName(), dataSource);
59
		CdmApplicationController appCtr;
60
		appCtr = CdmApplicationController.NewInstance(dataSource);
61
		appCtr.close();
62
	}
63
	
64
	private void testDatabaseChange(){
65
		CdmApplicationController appCtr;
66
		appCtr = CdmApplicationController.NewInstance();
67
	
68
//		DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
69
//		String server = "192.168.2.10";
70
//		String database = "cdm_test_andreas";
71
//		String user = "edit";
72
//		String pwd = "wp5";
73
//		
74
		DatabaseTypeEnum dbType = DatabaseTypeEnum.SqlServer2005;
75
		String server = "LAPTOPHP";
76
		String database = "cdmTest";
77
		String username = "edit";
78
		String password = "";
79
		
80
		ICdmDataSource dataSource = CdmDataSource.NewInstance(DatabaseTypeEnum.SqlServer2005, "LAPTOPHP", "cdmTest", DatabaseTypeEnum.SqlServer2005.getDefaultPort(), "edit", "");
81
		
82
		appCtr.getDatabaseService().saveDataSource("testSqlServer", dataSource);
83
		try {
84
			appCtr.getDatabaseService().connectToDatabase(dbType, server, database, username, password);
85
		} catch (TermNotFoundException e) {
86
			// TODO Auto-generated catch block
87
			e.printStackTrace();
88
		}
89
		
90
		appCtr.close();
91
	}
92

    
93
	private void testSqlServer(){
94
		DbSchemaValidation validation = DbSchemaValidation.CREATE;
95
		CdmDataSource ds = 
96
			CdmDataSource.NewSqlServer2005Instance("LENOVO-T61", "NielsTest", -1, "Niels", "test", null);
97
			//CdmDataSource.NewH2EmbeddedInstance("cdm", "sa", "");
98
//		ds =
99
//			 CdmPersistentDataSource.NewInstance("localH2");
100
		try {
101
			CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds, validation);
102
			String sql = "SELECT name, id FROM sys.sysobjects WHERE (xtype = 'U')"; //all tables
103
			ResultSet rs = ds.executeQuery(sql);
104
			while (rs.next()){
105
				String tableName = rs.getString("name");
106
				long tableId = rs.getLong("id");
107
				sql = "SELECT name FROM sys.sysobjects WHERE xtype='F' and parent_obj = " +  tableId;//get foreignkeys
108
				ResultSet rsFk = ds.executeQuery(sql);
109
				while (rsFk.next()){
110
					String fk = rsFk.getString("name");
111
					sql = " ALTER TABLE "+tableName+" DROP CONSTRAINT "+fk + "";
112
					ds.executeUpdate(sql);
113
				}
114
				
115
			}
116
			
117
			Person agent = Person.NewInstance();
118
			appCtr.getAgentService().save(agent);
119
			TaxonNameBase tn = BotanicalName.NewInstance(null);
120
			appCtr.getNameService().save(tn);
121
			appCtr.close();
122
		} catch (SQLException e) {
123
			// TODO Auto-generated catch block
124
			e.printStackTrace();
125
		}
126
	}
127

    
128
	private void testSqlServer2005(){
129
		DatabaseTypeEnum databaseTypeEnum = DatabaseTypeEnum.SqlServer2005;
130
		String server = "LAPTOPHP";
131
		String database = "cdmTest";
132
		String username = "edit";
133
		String password = "";
134
		
135
		ICdmDataSource dataSource = CdmDataSource.NewInstance(databaseTypeEnum, server, database, databaseTypeEnum.getDefaultPort(), username, password); 
136
		
137
		CdmPersistentDataSource ds = CdmPersistentDataSource.save("testSqlServer", dataSource);
138

    
139
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds);
140
		Person agent = Person.NewInstance();
141
		appCtr.getAgentService().save(agent);
142
		TaxonNameBase tn = BotanicalName.NewInstance(null);
143
		appCtr.getNameService().save(tn);
144
		appCtr.close();
145
		
146
	}
147
	
148
	private void testPostgreServer(){
149
		DatabaseTypeEnum databaseTypeEnum = DatabaseTypeEnum.PostgreSQL;
150
		String server = "192.168.1.17";
151
		String database = "cdm_test";
152
		String username = "edit";
153
		String password = "";
154
		
155
		ICdmDataSource dataSource = CdmDataSource.NewInstance(databaseTypeEnum, server, database, databaseTypeEnum.getDefaultPort(), username, password); 
156
		
157
		CdmPersistentDataSource ds = CdmPersistentDataSource.save("PostgreTest", dataSource);
158

    
159
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds);
160
		Person agent = Person.NewInstance();
161
		appCtr.getAgentService().save(agent);
162
		TaxonNameBase tn = BotanicalName.NewInstance(null);
163
		appCtr.getNameService().save(tn);
164
		appCtr.close();
165

    
166
	}
167
	
168
	private void testLocalHsql(){
169

    
170
		CdmPersistentDataSource ds = CdmPersistentDataSource.NewLocalHsqlInstance();
171
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds);
172
		try {
173
			List l = appCtr.getNameService().list(null,5, 1,null,null);
174
			System.out.println(l);
175
			//Agent agent = new Agent();
176
			//appCtr.getAgentService().saveAgent(agent);
177
			appCtr.close();
178
		} catch (RuntimeException e) {
179
			logger.error("Runtime Exception");
180
			e.printStackTrace();
181
			appCtr.close();
182
			
183
		}
184
	}
185
	
186
	private void testLocalH2(){
187
		
188
		DbSchemaValidation validation = DbSchemaValidation.CREATE;
189
		ICdmDataSource ds = 
190
			CdmDataSource.NewH2EmbeddedInstance("cdm", "sa", "", null);
191
//			ds =
192
//				 CdmPersistentDataSource.NewInstance("localH2");
193
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds, validation);
194
		
195
		boolean exists = appCtr.getUserService().userExists("admin");
196
		try {
197
			BotanicalName name = BotanicalName.NewInstance(null);
198
			String nameCache = "testName";
199
			name.setNameCache(nameCache);
200
			name.setTitleCache(nameCache, true);
201
			ReferenceFactory refFactory = ReferenceFactory.newInstance();
202
			ReferenceBase ref = refFactory.newGeneric();
203
			ref.setTitleCache("mySec", true);
204
			Taxon taxon = Taxon.NewInstance(name, ref);
205
			TaxonDescription description = TaxonDescription.NewInstance();
206
			taxon.addDescription(description);
207
			NamedArea area1 = TdwgArea.getAreaByTdwgAbbreviation("GER");
208
			Distribution distribution = Distribution.NewInstance(area1, PresenceTerm.PRESENT());
209
			description.addElement(distribution);
210
			
211
			List<Distribution> distrList = new ArrayList<Distribution>();
212
			distrList.add(distribution);
213
			List<NamedArea> areaList = new ArrayList<NamedArea>();
214
			areaList.add(area1);
215
			
216
		//	distribution.getInDescription().get
217
			appCtr.getTaxonService().save(taxon);
218

    
219
			System.out.println(taxon.getDescriptions().size());
220
			
221
			TransactionStatus txStatus = appCtr.startTransaction();
222
			
223
			Session session = appCtr.getSessionFactory().getCurrentSession();
224
			
225
			//String hqlQuery = "from DescriptionBase d join d.elements  as e " 
226
//				String hqlQuery = "from Taxon t join t.descriptions  as d "+
227
//				 " inner join d.elements e on e member of d "
228
//				+
229
//				"";//" where e.area = :namedArea " ; 
230
			String hqlQuery = "Select t from Distribution e join e.inDescription d join d.taxon t join t.name n "+
231
				" WHERE e.area in (:namedArea) AND n.nameCache = :nameCache ";				
232
			Query query = session.createQuery(hqlQuery);
233
			
234
			//query.setEntity("namedArea", area1);
235
			query.setParameter("nameCache", nameCache);
236
			query.setParameterList("namedArea", areaList);
237
			List resultList = query.list();
238
			//List list = appCtr.getCommonService().getHqlResult(hqlQuery);
239
			
240
			for (Object o:resultList){
241
				System.out.println(o);
242
			}
243
			appCtr.commitTransaction(txStatus);
244
			
245
			//System.out.println(l);
246
			//Agent agent = new Agent();
247
			//appCtr.getAgentService().saveAgent(agent);
248
			appCtr.close();
249
		} catch (RuntimeException e) {
250
			logger.error("Runtime Exception");
251
			e.printStackTrace();
252
			appCtr.close();
253
			
254
		}
255
	}
256
		
257
	private boolean testWritableResourceDirectory() throws IOException{
258
		CdmApplicationUtils.getWritableResourceDir();
259
		return true;
260
	}
261

    
262
	private boolean testH2(){
263
//		testLocalH2();
264
//		if (true)return true;
265

    
266
		DbSchemaValidation validation = DbSchemaValidation.CREATE;
267
		ICdmDataSource ds = 
268
			CdmDataSource.NewH2EmbeddedInstance("cdm", "sa", "", null);
269
			//CdmDataSource.NewH2EmbeddedInstance("cdm", "sa", "");
270
//		ds =
271
//			 CdmPersistentDataSource.NewInstance("localH2");
272
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds, validation);
273
		try {
274
			BotanicalName botName1 = BotanicalName.NewInstance(Rank.SPECIES());
275
			BotanicalName botName2 = BotanicalName.NewInstance(Rank.SPECIES());
276
			BotanicalName hybridName = BotanicalName.NewInstance(Rank.SPECIES());
277
			botName1.addRelationshipToName(botName2, NameRelationshipType.ORTHOGRAPHIC_VARIANT(), null);
278
			UUID uuid1 = botName1.getUuid();
279
			UUID uuid2 = botName2.getUuid();
280
			try {
281
				Logger loggerTrace = logger.getLogger("org.hibernate.type");
282
				loggerTrace.setLevel(Level.TRACE);
283
				System.out.println(logger.getName());
284
				
285
				appCtr.getNameService().save(botName1);
286
				ResultSet rs = ds.executeQuery("Select count(*) as n FROM NameRelationship");
287
				rs.next();
288
				int c = rs.getInt("n");
289
				System.out.println("Begin :" + c);
290
				
291
				botName1.removeRelationToTaxonName(botName2);
292
				botName1.setSpecificEpithet("DELETED");
293
				botName2.addHybridParent(hybridName, HybridRelationshipType.FIRST_PARENT(), null);
294
				
295
				TransactionStatus tx = appCtr.startTransaction();
296
				appCtr.getNameService().saveOrUpdate(botName2);
297
				rs = ds.executeQuery("Select count(*) as n FROM NameRelationship");
298
				rs.next();
299
				c = rs.getInt("n");
300
				System.out.println("End: " + c);
301
	
302
				appCtr.commitTransaction(tx);
303
				
304
				appCtr.getNameService().saveOrUpdate(botName1);
305
				
306
				rs = ds.executeQuery("Select count(*) as n FROM NameRelationship");
307
				rs.next();
308
				c = rs.getInt("n");
309
				System.out.println("End: " + c);
310
				
311
			} catch (SQLException e) {
312
				// TODO Auto-generated catch block
313
				e.printStackTrace();
314
			}
315
			
316
			
317
			//Agent agent = new Agent();
318
			//appCtr.getAgentService().saveAgent(agent);
319
			appCtr.close();
320
			return true;
321
		} catch (RuntimeException e) {
322
			logger.error("Runtime Exception");
323
			e.printStackTrace();
324
			appCtr.close();
325
			
326
		}
327
		return false;
328
	}
329
	
330
	private void test(){
331
		System.out.println("Start Datasource");
332
		//testNewConfigControler();
333
    	//testDatabaseChange();
334
		
335
		//testSqlServer();
336
		
337
		//CdmUtils.findLibrary(au.com.bytecode.opencsv.CSVReader.class);
338
		//testPostgreServer();
339
		//testLocalHsql();
340
		//testLocalH2();
341
		//testWritableResourceDirectory();
342
		testH2();
343
		System.out.println("\nEnd Datasource");
344
	}
345
	
346
	/**
347
	 * @param args
348
	 */
349
	public static void  main(String[] args) {
350
		Datasource cc = new Datasource();
351
    	cc.test();
352
	}
353

    
354
}
(1-1/10)