Project

General

Profile

Download (18.2 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.Arrays;
17
import java.util.List;
18
import java.util.UUID;
19

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

    
26
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
27
import eu.etaxonomy.cdm.api.application.CdmApplicationUtils;
28
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
29
import eu.etaxonomy.cdm.api.service.ITaxonService;
30
import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
31
import eu.etaxonomy.cdm.api.service.dto.GroupedTaxonDTO;
32
import eu.etaxonomy.cdm.common.AccountStore;
33
import eu.etaxonomy.cdm.database.CdmDataSource;
34
import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
35
import eu.etaxonomy.cdm.database.DataSourceNotFoundException;
36
import eu.etaxonomy.cdm.database.DatabaseTypeEnum;
37
import eu.etaxonomy.cdm.database.DbSchemaValidation;
38
import eu.etaxonomy.cdm.database.ICdmDataSource;
39
import eu.etaxonomy.cdm.model.agent.Person;
40
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
41
import eu.etaxonomy.cdm.model.common.init.TermNotFoundException;
42
import eu.etaxonomy.cdm.model.description.Distribution;
43
import eu.etaxonomy.cdm.model.description.FeatureNode;
44
import eu.etaxonomy.cdm.model.description.FeatureTree;
45
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
46
import eu.etaxonomy.cdm.model.description.TaxonDescription;
47
import eu.etaxonomy.cdm.model.location.NamedArea;
48
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
49
import eu.etaxonomy.cdm.model.name.IBotanicalName;
50
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
51
import eu.etaxonomy.cdm.model.name.Rank;
52
import eu.etaxonomy.cdm.model.name.TaxonName;
53
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
54
import eu.etaxonomy.cdm.model.reference.Reference;
55
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
56
import eu.etaxonomy.cdm.model.taxon.Classification;
57
import eu.etaxonomy.cdm.model.taxon.Taxon;
58
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
59

    
60
public class Datasource {
61
	private static final Logger logger = Logger.getLogger(Datasource.class);
62

    
63

    
64
	private void testNewConfigControler(){
65
		List<CdmPersistentDataSource> lsDataSources = CdmPersistentDataSource.getAllDataSources();
66
		DbSchemaValidation schema = DbSchemaValidation.CREATE;
67

    
68
		System.out.println(lsDataSources);
69
		ICdmDataSource dataSource;
70

    
71
		dataSource = lsDataSources.get(1);
72
//		DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
73

    
74
//		String server = "localhost";
75
//		String database = (schema == DbSchemaValidation.VALIDATE  ? "cdm35" : "cdm36");
76
//		database = "cdm36";
77
////		database = "cdm_production_edaphobase";
78
//		String username = "edit";
79
//		dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
80

    
81
		String server = "160.45.63.171";
82
		String database = "cdm_production_salvador";
83
		String username = "edit";
84
		dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
85

    
86

    
87
//		String server = "test.e-taxonomy.eu";
88
////		String database = "cdm_test";
89
//		String database = "cdm_edit_flora_malesiana";
90
//		String username = "edit";
91
//		dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
92

    
93
//		String server = "localhost";
94
//		String database = "testCDM";
95
//		String username = "postgres";
96
//		dataSource = CdmDataSource.NewInstance(DatabaseTypeEnum.PostgreSQL, server, database, DatabaseTypeEnum.PostgreSQL.getDefaultPort(), username, AccountStore.readOrStorePassword(server, database, username, null));
97

    
98

    
99
//		//SQLServer
100
//		database = "CDMTest";
101
//		int port = 1433;
102
//		username = "pesiexport";
103
////		dataSource = CdmDataSource.NewSqlServer2005Instance(server, database, port, username, AccountStore.readOrStorePassword(server, database, username, null));
104
//
105
//		//H2
106
//        String path = "C:\\Users\\a.mueller\\.cdmLibrary\\writableResources\\h2\\LocalH2";
107
////		String path = "C:\\Users\\pesiimport\\.cdmLibrary\\writableResources\\h2\\LocalH2";
108
////      String path = "C:\\Users\\a.mueller\\eclipse\\svn\\cdmlib-trunk\\cdmlib-remote-webapp\\src\\test\\resources\\h2";
109
//		username = "sa";
110
//    	dataSource = CdmDataSource.NewH2EmbeddedInstance("cdm", username, "", path);
111

    
112
//    	dataSource = CdmDataSource.NewH2EmbeddedInstance(database, username, "sa");
113

    
114

    
115
//       server = "160.45.63.201";
116
//       database = "cdm_integration_cichorieae";
117
//       username = "edit";
118
//       dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
119

    
120

    
121
// 		try {
122
//			CdmUpdater updater = new CdmUpdater();
123
//			if (schema == DbSchemaValidation.VALIDATE){
124
//				updater.updateToCurrentVersion(dataSource, DefaultProgressMonitor.NewInstance());
125
//			}
126
//		} catch (Exception e) {
127
//			e.printStackTrace();
128
//		}
129

    
130
		//CdmPersistentDataSource.save(dataSource.getName(), dataSource);
131
		CdmApplicationController appCtr;
132
		appCtr = CdmApplicationController.NewInstance(dataSource, schema);
133
//		Classification classification = appCtr.getClassificationService().list(null, null, null, null, null).get(0);
134
//		logger.warn(classification.getMicroReference());
135
//        logger.warn(classification.getName());
136

    
137
//		TransactionStatus tx = appCtr.startTransaction();
138

    
139
//		testGroupedTaxa(appCtr);
140

    
141

    
142
//		int n = appCtr.getAgentService().count(null);
143
//		logger.warn("End adding " + n + " persons");
144

    
145
//		appCtr.getCommonService().createFullSampleData();
146

    
147
//		ValidationManager valMan = (ValidationManager)appCtr.getBean("validationManager");
148
//		valMan.registerValidationListeners();
149

    
150
//		State state = State.NewInstance();
151
//		Taxon taxon = Taxon.NewInstance(null, null);
152
//		TaxonDescription desc = TaxonDescription.NewInstance(taxon);
153
////		CategoricalData catData = CategoricalData.NewInstance(state, Feature.HABITAT());
154
//		QuantitativeData quantData = QuantitativeData.NewInstance(Feature.ANATOMY());
155
//		StatisticalMeasurementValue statisticalValue = StatisticalMeasurementValue.NewInstance(StatisticalMeasure.AVERAGE(), 2);
156
//		quantData.addStatisticalValue(statisticalValue);
157
//		desc.addElement(quantData);
158

    
159
//		appCtr.getTermService().saveOrUpdate(state);
160
//
161
//		appCtr.getTaxonService().save(taxon);
162

    
163
		//		insertSomeData(appCtr);
164
//		deleteHighLevelNode(appCtr);   //->problem with Duplicate Key in Classification_TaxonNode
165
		appCtr.close();
166
		System.exit(0);
167
	}
168

    
169

    
170
    /**
171
     * @param appCtr
172
     */
173
    private void testGroupedTaxa(CdmApplicationController appCtr) {
174
        UUID classificationUuid = UUID.fromString("91231ebf-1c7a-47b9-a56c-b45b33137244");
175
		UUID taxonUuid1 = UUID.fromString("3bae1c86-1235-4e2e-be63-c7f8c4410527");
176
		UUID taxonUuid2 = UUID.fromString("235d3872-defe-4b92-bf2f-75a7c91510de");
177
		List<UUID> taxonUuids = Arrays.asList(new UUID[]{taxonUuid1, taxonUuid2});
178
		Rank maxRank = DefinedTermBase.getTermByClassAndUUID(Rank.class, UUID.fromString("af5f2481-3192-403f-ae65-7c957a0f02b6"));
179
		Rank minRank = DefinedTermBase.getTermByClassAndUUID(Rank.class, UUID.fromString("78786e16-2a70-48af-a608-494023b91904"));
180
        List<GroupedTaxonDTO> groupedTaxa = appCtr.getClassificationService().groupTaxaByHigherTaxon(taxonUuids, classificationUuid, minRank, maxRank);
181
        System.out.println(groupedTaxa);
182
    }
183

    
184

    
185
    private void addPerson(CdmApplicationController appCtr) {
186
        TransactionStatus tx = appCtr.startTransaction();
187
		appCtr.getAgentService().save(Person.NewInstance());
188
		appCtr.commitTransaction(tx);
189
    }
190

    
191

    
192
	private void deleteHighLevelNode(CdmApplicationController appCtr) {
193
		TransactionStatus tx = appCtr.startTransaction();
194
		ITaxonNodeService service = appCtr.getTaxonNodeService();
195
		TaxonNode node = service.find(60554);
196
//		service.delete(node);
197
		ITaxonService taxonService = appCtr.getTaxonService();
198
		Taxon taxon = node.getTaxon();
199
		//try {
200
			taxonService.deleteTaxon(taxon.getUuid(), new TaxonDeletionConfigurator(), node.getClassification().getUuid());
201

    
202
		/*} catch (DataChangeNoRollbackException e) {
203
			e.printStackTrace();
204
		}*/
205
		try {
206
			appCtr.commitTransaction(tx);
207
		} catch (Exception e) {
208
			// TODO Auto-generated catch block
209
			e.printStackTrace();
210
		}
211
		TaxonNode node2 = service.find(60554);
212

    
213

    
214
	}
215

    
216
	private void insertSomeData(CdmApplicationController appCtr) {
217
		Classification cl = Classification.NewInstance("myClass");
218
		TaxonNode node1 = cl.addChildTaxon(Taxon.NewInstance(TaxonNameFactory.NewBotanicalInstance(null), null), null, null);
219
		appCtr.getClassificationService().save(cl);
220

    
221
		Taxon t2 = Taxon.NewInstance(null, null);
222
		t2.setTitleCache("Taxon2", true);
223
		TaxonNode node2 = node1.addChildTaxon(t2, null, null);
224

    
225
		Taxon t3 = Taxon.NewInstance(null, null);
226
		t3.setTitleCache("Taxon3", true);
227
		TaxonNode node3 = node1.addChildTaxon(t3, 0, null, null);
228

    
229
		appCtr.getTaxonNodeService().saveOrUpdate(node1);
230

    
231
		cl.addChildNode(node3, 0, null, null);
232
		appCtr.getTaxonNodeService().saveOrUpdate(node3);
233
		appCtr.getClassificationService().saveOrUpdate(cl);
234

    
235
		FeatureTree ft1 = FeatureTree.NewInstance();
236
		FeatureNode fn1 = FeatureNode.NewInstance(null);
237
		ft1.getRoot().addChild(fn1);
238
		appCtr.getFeatureNodeService().save(fn1);
239

    
240
		FeatureNode fn2 = FeatureNode.NewInstance(null);
241
		fn1.addChild(fn2);
242

    
243
		FeatureNode fn3 = FeatureNode.NewInstance(null);
244
		fn1.addChild(fn2, 0);
245

    
246
		appCtr.getFeatureNodeService().saveOrUpdate(fn1);
247

    
248
		ft1.getRoot().addChild(fn3, 0);
249
		appCtr.getFeatureNodeService().saveOrUpdate(fn3);
250
		appCtr.getFeatureTreeService().saveOrUpdate(ft1);
251
	}
252

    
253
	private void testDatabaseChange() throws DataSourceNotFoundException{
254
		CdmApplicationController appCtr;
255
		appCtr = CdmApplicationController.NewInstance();
256

    
257
//		DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
258
//		String server = "192.168.2.10";
259
//		String database = "cdm_test_andreas";
260
//		String user = "edit";
261
//		String pwd = "wp5";
262
//
263
		DatabaseTypeEnum dbType = DatabaseTypeEnum.SqlServer2005;
264
		String server = "LAPTOPHP";
265
		String database = "cdmTest";
266
		String username = "edit";
267
		String password = "";
268

    
269
		ICdmDataSource dataSource = CdmDataSource.NewInstance(DatabaseTypeEnum.SqlServer2005, "LAPTOPHP", "cdmTest", DatabaseTypeEnum.SqlServer2005.getDefaultPort(), "edit", "");
270

    
271
		appCtr.getDatabaseService().saveDataSource("testSqlServer", dataSource);
272
		try {
273
			appCtr.getDatabaseService().connectToDatabase(dbType, server, database, username, password);
274
		} catch (TermNotFoundException e) {
275
			// TODO Auto-generated catch block
276
			e.printStackTrace();
277
		}
278

    
279
		appCtr.close();
280
	}
281

    
282
	private void testSqlServer2005(){
283
		DatabaseTypeEnum databaseTypeEnum = DatabaseTypeEnum.SqlServer2005;
284
		String server = "LAPTOPHP";
285
		String database = "cdmTest";
286
		String username = "edit";
287
		String password = "";
288

    
289
		ICdmDataSource dataSource = CdmDataSource.NewInstance(databaseTypeEnum, server, database, databaseTypeEnum.getDefaultPort(), username, password);
290

    
291
		CdmPersistentDataSource ds = CdmPersistentDataSource.save("testSqlServer", dataSource);
292

    
293
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds);
294
		Person agent = Person.NewInstance();
295
		appCtr.getAgentService().save(agent);
296
		TaxonName tn = TaxonNameFactory.NewBotanicalInstance(null);
297
		appCtr.getNameService().save(tn);
298
		appCtr.close();
299

    
300
	}
301

    
302
	private void testPostgreServer(){
303
		DatabaseTypeEnum databaseTypeEnum = DatabaseTypeEnum.PostgreSQL;
304
		String server = "192.168.1.17";
305
		String database = "cdm_test";
306
		String username = "edit";
307
		String password = "";
308

    
309
		ICdmDataSource dataSource = CdmDataSource.NewInstance(databaseTypeEnum, server, database, databaseTypeEnum.getDefaultPort(), username, password);
310

    
311
		CdmPersistentDataSource ds = CdmPersistentDataSource.save("PostgreTest", dataSource);
312

    
313
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds);
314
		Person agent = Person.NewInstance();
315
		appCtr.getAgentService().save(agent);
316
		TaxonName tn = TaxonNameFactory.NewBotanicalInstance(null);
317
		appCtr.getNameService().save(tn);
318
		appCtr.close();
319

    
320
	}
321

    
322
	private void testLocalHsql(){
323
		CdmApplicationController appCtr = null;
324
		try {
325
			CdmPersistentDataSource ds = CdmPersistentDataSource.NewLocalHsqlInstance();
326
			appCtr = CdmApplicationController.NewInstance(ds);
327
			List<?> l = appCtr.getNameService().list(null,5, 1,null,null);
328
			System.out.println(l);
329
			//Agent agent = new Agent();
330
			//appCtr.getAgentService().saveAgent(agent);
331
			appCtr.close();
332
		} catch (RuntimeException e) {
333
			logger.error("Runtime Exception");
334
			e.printStackTrace();
335
			if (appCtr != null){
336
			    appCtr.close();
337
			}
338

    
339
		} catch (DataSourceNotFoundException e) {
340
			logger.error("Runtime Exception");
341
			e.printStackTrace();
342
		}
343
	}
344

    
345
	private void testLocalH2(){
346

    
347
		DbSchemaValidation validation = DbSchemaValidation.CREATE;
348
		ICdmDataSource ds =
349
			CdmDataSource.NewH2EmbeddedInstance("cdm", "sa", "", null);
350
//			ds =
351
//				 CdmPersistentDataSource.NewInstance("localH2");
352
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds, validation);
353

    
354
		boolean exists = appCtr.getUserService().userExists("admin");
355
		try {
356
			IBotanicalName name = TaxonNameFactory.NewBotanicalInstance(null);
357
			String nameCache = "testName";
358
			name.setNameCache(nameCache);
359
			name.setTitleCache(nameCache, true);
360
			Reference ref = ReferenceFactory.newGeneric();
361
			ref.setTitleCache("mySec", true);
362
			Taxon taxon = Taxon.NewInstance(name, ref);
363
			TaxonDescription description = TaxonDescription.NewInstance();
364
			taxon.addDescription(description);
365
			NamedArea area1 = appCtr.getTermService().getAreaByTdwgAbbreviation("GER");
366
			Distribution distribution = Distribution.NewInstance(area1, PresenceAbsenceTerm.PRESENT());
367
			description.addElement(distribution);
368

    
369
			List<Distribution> distrList = new ArrayList<Distribution>();
370
			distrList.add(distribution);
371
			List<NamedArea> areaList = new ArrayList<NamedArea>();
372
			areaList.add(area1);
373

    
374
		//	distribution.getInDescription().get
375
			appCtr.getTaxonService().save(taxon);
376

    
377
			System.out.println(taxon.getDescriptions().size());
378

    
379
			TransactionStatus txStatus = appCtr.startTransaction();
380

    
381
			Session session = appCtr.getSessionFactory().getCurrentSession();
382

    
383
			//String hqlQuery = "from DescriptionBase d join d.elements  as e "
384
//				String hqlQuery = "from Taxon t join t.descriptions  as d "+
385
//				 " inner join d.elements e on e member of d "
386
//				+
387
//				"";//" where e.area = :namedArea " ;
388
			String hqlQuery = "Select t from Distribution e join e.inDescription d join d.taxon t join t.name n "+
389
				" WHERE e.area in (:namedArea) AND n.nameCache = :nameCache ";
390
			Query query = session.createQuery(hqlQuery);
391

    
392
			//query.setEntity("namedArea", area1);
393
			query.setParameter("nameCache", nameCache);
394
			query.setParameterList("namedArea", areaList);
395
			List resultList = query.list();
396
			//List list = appCtr.getCommonService().getHqlResult(hqlQuery);
397

    
398
			for (Object o:resultList){
399
				System.out.println(o);
400
			}
401
			appCtr.commitTransaction(txStatus);
402

    
403
			//System.out.println(l);
404
			//Agent agent = new Agent();
405
			//appCtr.getAgentService().saveAgent(agent);
406
			appCtr.close();
407
		} catch (RuntimeException e) {
408
			logger.error("Runtime Exception");
409
			e.printStackTrace();
410
			appCtr.close();
411

    
412
		}
413
	}
414

    
415
	private boolean testWritableResourceDirectory() throws IOException{
416
		CdmApplicationUtils.getWritableResourceDir();
417
		return true;
418
	}
419

    
420
	private boolean testH2(){
421
//		testLocalH2();
422
//		if (true)return true;
423

    
424
		DbSchemaValidation validation = DbSchemaValidation.CREATE;
425
		ICdmDataSource ds =
426
			CdmDataSource.NewH2EmbeddedInstance("cdm", "sa", "", null);
427
			//CdmDataSource.NewH2EmbeddedInstance("cdm", "sa", "");
428
//		ds =
429
//			 CdmPersistentDataSource.NewInstance("localH2");
430
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds, validation);
431
		try {
432
		    TaxonName botName1 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
433
			TaxonName botName2 = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
434
			IBotanicalName hybridName = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
435
			botName1.addRelationshipToName(botName2, NameRelationshipType.ORTHOGRAPHIC_VARIANT(), null);
436
			UUID uuid1 = botName1.getUuid();
437
			UUID uuid2 = botName2.getUuid();
438
			try {
439
				Logger loggerTrace = Logger.getLogger("org.hibernate.type");
440
				loggerTrace.setLevel(Level.TRACE);
441
				System.out.println(logger.getName());
442

    
443
				appCtr.getNameService().save(botName1);
444
				ResultSet rs = ds.executeQuery("Select count(*) as n FROM NameRelationship");
445
				rs.next();
446
				int c = rs.getInt("n");
447
				System.out.println("Begin :" + c);
448

    
449
				botName1.removeRelationToTaxonName(botName2);
450
				botName1.setSpecificEpithet("DELETED");
451
				botName2.addHybridParent(hybridName, HybridRelationshipType.FIRST_PARENT(), null);
452

    
453
				TransactionStatus tx = appCtr.startTransaction();
454
				appCtr.getNameService().saveOrUpdate(botName2);
455
				rs = ds.executeQuery("Select count(*) as n FROM NameRelationship");
456
				rs.next();
457
				c = rs.getInt("n");
458
				System.out.println("End: " + c);
459

    
460
				appCtr.commitTransaction(tx);
461

    
462
				appCtr.getNameService().saveOrUpdate(botName1);
463

    
464
				rs = ds.executeQuery("Select count(*) as n FROM NameRelationship");
465
				rs.next();
466
				c = rs.getInt("n");
467
				System.out.println("End: " + c);
468

    
469
			} catch (SQLException e) {
470
				// TODO Auto-generated catch block
471
				e.printStackTrace();
472
			}
473

    
474

    
475
			//Agent agent = new Agent();
476
			//appCtr.getAgentService().saveAgent(agent);
477
			appCtr.close();
478
			return true;
479
		} catch (RuntimeException e) {
480
			logger.error("Runtime Exception");
481
			e.printStackTrace();
482
			appCtr.close();
483

    
484
		}
485
		return false;
486
	}
487

    
488
	private void test(){
489
		System.out.println("Start Datasource");
490
		testNewConfigControler();
491
    	//testDatabaseChange();
492

    
493
		//testSqlServer();
494

    
495
		//CdmUtils.findLibrary(au.com.bytecode.opencsv.CSVReader.class);
496
		//testPostgreServer();
497
		//testLocalHsql();
498
		//testLocalH2();
499
		//testWritableResourceDirectory();
500
//		testH2();
501
		System.out.println("\nEnd Datasource");
502
	}
503

    
504
	/**
505
	 * @param args
506
	 */
507
	public static void  main(String[] args) {
508
		Datasource cc = new Datasource();
509
    	cc.test();
510
	}
511

    
512
}
(2-2/9)