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.BotanicalName;
49
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
50
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
51
import eu.etaxonomy.cdm.model.name.Rank;
52
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
53
import eu.etaxonomy.cdm.model.reference.Reference;
54
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
55
import eu.etaxonomy.cdm.model.taxon.Classification;
56
import eu.etaxonomy.cdm.model.taxon.Taxon;
57
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
58

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

    
62

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

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

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

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

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

    
85

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

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

    
97

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

    
111
//    	dataSource = CdmDataSource.NewH2EmbeddedInstance(database, username, "sa", NomenclaturalCode.ICNAFP);
112

    
113

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

    
119

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

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

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

    
138
		testGroupedTaxa(appCtr);
139

    
140

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

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

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

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

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

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

    
168

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

    
183

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

    
190

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

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

    
212

    
213
	}
214

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
278
		appCtr.close();
279
	}
280

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

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

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

    
292
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds);
293
		Person agent = Person.NewInstance();
294
		appCtr.getAgentService().save(agent);
295
		TaxonNameBase<?,?> tn = BotanicalName.NewInstance(null);
296
		appCtr.getNameService().save(tn);
297
		appCtr.close();
298

    
299
	}
300

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

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

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

    
312
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds);
313
		Person agent = Person.NewInstance();
314
		appCtr.getAgentService().save(agent);
315
		TaxonNameBase<?,?> tn = BotanicalName.NewInstance(null);
316
		appCtr.getNameService().save(tn);
317
		appCtr.close();
318

    
319
	}
320

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

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

    
344
	private void testLocalH2(){
345

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

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

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

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

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

    
378
			TransactionStatus txStatus = appCtr.startTransaction();
379

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

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

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

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

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

    
411
		}
412
	}
413

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

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

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

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

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

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

    
459
				appCtr.commitTransaction(tx);
460

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

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

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

    
473

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

    
483
		}
484
		return false;
485
	}
486

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

    
492
		//testSqlServer();
493

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

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

    
511
}
(2-2/10)