Project

General

Profile

Download (16.7 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.api.service.ITaxonNodeService;
28
import eu.etaxonomy.cdm.api.service.ITaxonService;
29
import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
30
import eu.etaxonomy.cdm.common.AccountStore;
31
import eu.etaxonomy.cdm.database.CdmDataSource;
32
import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
33
import eu.etaxonomy.cdm.database.DataSourceNotFoundException;
34
import eu.etaxonomy.cdm.database.DatabaseTypeEnum;
35
import eu.etaxonomy.cdm.database.DbSchemaValidation;
36
import eu.etaxonomy.cdm.database.ICdmDataSource;
37
import eu.etaxonomy.cdm.model.agent.Person;
38
import eu.etaxonomy.cdm.model.common.init.TermNotFoundException;
39
import eu.etaxonomy.cdm.model.description.Distribution;
40
import eu.etaxonomy.cdm.model.description.FeatureNode;
41
import eu.etaxonomy.cdm.model.description.FeatureTree;
42
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
43
import eu.etaxonomy.cdm.model.description.TaxonDescription;
44
import eu.etaxonomy.cdm.model.location.NamedArea;
45
import eu.etaxonomy.cdm.model.name.BotanicalName;
46
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
47
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
48
import eu.etaxonomy.cdm.model.name.Rank;
49
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
50
import eu.etaxonomy.cdm.model.reference.Reference;
51
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
52
import eu.etaxonomy.cdm.model.taxon.Classification;
53
import eu.etaxonomy.cdm.model.taxon.Taxon;
54
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
55

    
56
public class Datasource {
57
	private static final Logger logger = Logger.getLogger(Datasource.class);
58

    
59

    
60
	private void testNewConfigControler(){
61
		List<CdmPersistentDataSource> lsDataSources = CdmPersistentDataSource.getAllDataSources();
62
		DbSchemaValidation schema = DbSchemaValidation.CREATE;
63

    
64
		System.out.println(lsDataSources);
65
		ICdmDataSource dataSource;
66

    
67
		dataSource = lsDataSources.get(1);
68
//		DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
69

    
70
		String server = "localhost";
71
		String database = (schema == DbSchemaValidation.VALIDATE  ? "cdm35" : "cdm36");
72
		database = "test";
73
//		database = "350_editor_test";
74
		String username = "edit";
75
		dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
76

    
77
//		String server = "160.45.63.171";
78
//		String database = "cdm_production_algaterra";
79
//		String username = "edit";
80
//		dataSource = CdmDataSource.NewMySqlInstance(server, database, username, AccountStore.readOrStorePassword(server, database, username, null));
81

    
82

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

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

    
94

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

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

    
109
// 		try {
110
//			CdmUpdater updater = new CdmUpdater();
111
//			if (schema == DbSchemaValidation.VALIDATE){
112
//				updater.updateToCurrentVersion(dataSource, DefaultProgressMonitor.NewInstance());
113
//			}
114
//		} catch (Exception e) {
115
//			e.printStackTrace();
116
//		}
117

    
118
		//CdmPersistentDataSource.save(dataSource.getName(), dataSource);
119
		CdmApplicationController appCtr;
120
		appCtr = CdmApplicationController.NewInstance(dataSource, schema);
121

    
122
		logger.warn("Start adding persons");
123
		for (int i= 1; i<100; i++){
124
		    addPerson(appCtr);
125
		    logger.warn("Added "+ i);
126
		}
127
		int n = appCtr.getAgentService().count(null);
128
		logger.warn("End adding " + n + " persons");
129

    
130
//		appCtr.getCommonService().createFullSampleData();
131

    
132
//		ValidationManager valMan = (ValidationManager)appCtr.getBean("validationManager");
133
//		valMan.registerValidationListeners();
134

    
135
//		State state = State.NewInstance();
136
//		Taxon taxon = Taxon.NewInstance(null, null);
137
//		TaxonDescription desc = TaxonDescription.NewInstance(taxon);
138
////		CategoricalData catData = CategoricalData.NewInstance(state, Feature.HABITAT());
139
//		QuantitativeData quantData = QuantitativeData.NewInstance(Feature.ANATOMY());
140
//		StatisticalMeasurementValue statisticalValue = StatisticalMeasurementValue.NewInstance(StatisticalMeasure.AVERAGE(), 2);
141
//		quantData.addStatisticalValue(statisticalValue);
142
//		desc.addElement(quantData);
143

    
144
//		appCtr.getTermService().saveOrUpdate(state);
145
//
146
//		appCtr.getTaxonService().save(taxon);
147

    
148
		//		insertSomeData(appCtr);
149
//		deleteHighLevelNode(appCtr);   //->problem with Duplicate Key in Classification_TaxonNode
150
		appCtr.close();
151
		System.exit(0);
152
	}
153

    
154

    
155
    private void addPerson(CdmApplicationController appCtr) {
156
        TransactionStatus tx = appCtr.startTransaction();
157
		appCtr.getAgentService().save(Person.NewInstance());
158
		appCtr.commitTransaction(tx);
159
    }
160

    
161

    
162
	private void deleteHighLevelNode(CdmApplicationController appCtr) {
163
		TransactionStatus tx = appCtr.startTransaction();
164
		ITaxonNodeService service = appCtr.getTaxonNodeService();
165
		TaxonNode node = service.find(60554);
166
//		service.delete(node);
167
		ITaxonService taxonService = appCtr.getTaxonService();
168
		Taxon taxon = node.getTaxon();
169
		//try {
170
			taxonService.deleteTaxon(taxon.getUuid(), new TaxonDeletionConfigurator(), node.getClassification().getUuid());
171

    
172
		/*} catch (DataChangeNoRollbackException e) {
173
			e.printStackTrace();
174
		}*/
175
		try {
176
			appCtr.commitTransaction(tx);
177
		} catch (Exception e) {
178
			// TODO Auto-generated catch block
179
			e.printStackTrace();
180
		}
181
		TaxonNode node2 = service.find(60554);
182

    
183

    
184
	}
185

    
186
	private void insertSomeData(CdmApplicationController appCtr) {
187
		Classification cl = Classification.NewInstance("myClass");
188
		TaxonNode node1 = cl.addChildTaxon(Taxon.NewInstance(BotanicalName.NewInstance(null), null), null, null);
189
		appCtr.getClassificationService().save(cl);
190

    
191
		Taxon t2 = Taxon.NewInstance(null, null);
192
		t2.setTitleCache("Taxon2", true);
193
		TaxonNode node2 = node1.addChildTaxon(t2, null, null);
194

    
195
		Taxon t3 = Taxon.NewInstance(null, null);
196
		t3.setTitleCache("Taxon3", true);
197
		TaxonNode node3 = node1.addChildTaxon(t3, 0, null, null);
198

    
199
		appCtr.getTaxonNodeService().saveOrUpdate(node1);
200

    
201
		cl.addChildNode(node3, 0, null, null);
202
		appCtr.getTaxonNodeService().saveOrUpdate(node3);
203
		appCtr.getClassificationService().saveOrUpdate(cl);
204

    
205
		FeatureTree ft1 = FeatureTree.NewInstance();
206
		FeatureNode fn1 = FeatureNode.NewInstance(null);
207
		ft1.getRoot().addChild(fn1);
208
		appCtr.getFeatureNodeService().save(fn1);
209

    
210
		FeatureNode fn2 = FeatureNode.NewInstance(null);
211
		fn1.addChild(fn2);
212

    
213
		FeatureNode fn3 = FeatureNode.NewInstance(null);
214
		fn1.addChild(fn2, 0);
215

    
216
		appCtr.getFeatureNodeService().saveOrUpdate(fn1);
217

    
218
		ft1.getRoot().addChild(fn3, 0);
219
		appCtr.getFeatureNodeService().saveOrUpdate(fn3);
220
		appCtr.getFeatureTreeService().saveOrUpdate(ft1);
221
	}
222

    
223
	private void testDatabaseChange() throws DataSourceNotFoundException{
224
		CdmApplicationController appCtr;
225
		appCtr = CdmApplicationController.NewInstance();
226

    
227
//		DatabaseTypeEnum dbType = DatabaseTypeEnum.MySQL;
228
//		String server = "192.168.2.10";
229
//		String database = "cdm_test_andreas";
230
//		String user = "edit";
231
//		String pwd = "wp5";
232
//
233
		DatabaseTypeEnum dbType = DatabaseTypeEnum.SqlServer2005;
234
		String server = "LAPTOPHP";
235
		String database = "cdmTest";
236
		String username = "edit";
237
		String password = "";
238

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

    
241
		appCtr.getDatabaseService().saveDataSource("testSqlServer", dataSource);
242
		try {
243
			appCtr.getDatabaseService().connectToDatabase(dbType, server, database, username, password);
244
		} catch (TermNotFoundException e) {
245
			// TODO Auto-generated catch block
246
			e.printStackTrace();
247
		}
248

    
249
		appCtr.close();
250
	}
251

    
252
	private void testSqlServer2005(){
253
		DatabaseTypeEnum databaseTypeEnum = DatabaseTypeEnum.SqlServer2005;
254
		String server = "LAPTOPHP";
255
		String database = "cdmTest";
256
		String username = "edit";
257
		String password = "";
258

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

    
261
		CdmPersistentDataSource ds = CdmPersistentDataSource.save("testSqlServer", dataSource);
262

    
263
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds);
264
		Person agent = Person.NewInstance();
265
		appCtr.getAgentService().save(agent);
266
		TaxonNameBase<?,?> tn = BotanicalName.NewInstance(null);
267
		appCtr.getNameService().save(tn);
268
		appCtr.close();
269

    
270
	}
271

    
272
	private void testPostgreServer(){
273
		DatabaseTypeEnum databaseTypeEnum = DatabaseTypeEnum.PostgreSQL;
274
		String server = "192.168.1.17";
275
		String database = "cdm_test";
276
		String username = "edit";
277
		String password = "";
278

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

    
281
		CdmPersistentDataSource ds = CdmPersistentDataSource.save("PostgreTest", dataSource);
282

    
283
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds);
284
		Person agent = Person.NewInstance();
285
		appCtr.getAgentService().save(agent);
286
		TaxonNameBase<?,?> tn = BotanicalName.NewInstance(null);
287
		appCtr.getNameService().save(tn);
288
		appCtr.close();
289

    
290
	}
291

    
292
	private void testLocalHsql() throws DataSourceNotFoundException{
293
		CdmApplicationController appCtr = null;
294
		try {
295
			CdmPersistentDataSource ds = CdmPersistentDataSource.NewLocalHsqlInstance();
296
			appCtr = CdmApplicationController.NewInstance(ds);
297
			List<?> l = appCtr.getNameService().list(null,5, 1,null,null);
298
			System.out.println(l);
299
			//Agent agent = new Agent();
300
			//appCtr.getAgentService().saveAgent(agent);
301
			appCtr.close();
302
		} catch (RuntimeException e) {
303
			logger.error("Runtime Exception");
304
			e.printStackTrace();
305
			if (appCtr != null){
306
			    appCtr.close();
307
			}
308

    
309
		} catch (DataSourceNotFoundException e) {
310
			logger.error("Runtime Exception");
311
			e.printStackTrace();
312
		}
313
	}
314

    
315
	private void testLocalH2(){
316

    
317
		DbSchemaValidation validation = DbSchemaValidation.CREATE;
318
		ICdmDataSource ds =
319
			CdmDataSource.NewH2EmbeddedInstance("cdm", "sa", "", null);
320
//			ds =
321
//				 CdmPersistentDataSource.NewInstance("localH2");
322
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds, validation);
323

    
324
		boolean exists = appCtr.getUserService().userExists("admin");
325
		try {
326
			BotanicalName name = BotanicalName.NewInstance(null);
327
			String nameCache = "testName";
328
			name.setNameCache(nameCache);
329
			name.setTitleCache(nameCache, true);
330
			Reference<?> ref = ReferenceFactory.newGeneric();
331
			ref.setTitleCache("mySec", true);
332
			Taxon taxon = Taxon.NewInstance(name, ref);
333
			TaxonDescription description = TaxonDescription.NewInstance();
334
			taxon.addDescription(description);
335
			NamedArea area1 = appCtr.getTermService().getAreaByTdwgAbbreviation("GER");
336
			Distribution distribution = Distribution.NewInstance(area1, PresenceAbsenceTerm.PRESENT());
337
			description.addElement(distribution);
338

    
339
			List<Distribution> distrList = new ArrayList<Distribution>();
340
			distrList.add(distribution);
341
			List<NamedArea> areaList = new ArrayList<NamedArea>();
342
			areaList.add(area1);
343

    
344
		//	distribution.getInDescription().get
345
			appCtr.getTaxonService().save(taxon);
346

    
347
			System.out.println(taxon.getDescriptions().size());
348

    
349
			TransactionStatus txStatus = appCtr.startTransaction();
350

    
351
			Session session = appCtr.getSessionFactory().getCurrentSession();
352

    
353
			//String hqlQuery = "from DescriptionBase d join d.elements  as e "
354
//				String hqlQuery = "from Taxon t join t.descriptions  as d "+
355
//				 " inner join d.elements e on e member of d "
356
//				+
357
//				"";//" where e.area = :namedArea " ;
358
			String hqlQuery = "Select t from Distribution e join e.inDescription d join d.taxon t join t.name n "+
359
				" WHERE e.area in (:namedArea) AND n.nameCache = :nameCache ";
360
			Query query = session.createQuery(hqlQuery);
361

    
362
			//query.setEntity("namedArea", area1);
363
			query.setParameter("nameCache", nameCache);
364
			query.setParameterList("namedArea", areaList);
365
			List resultList = query.list();
366
			//List list = appCtr.getCommonService().getHqlResult(hqlQuery);
367

    
368
			for (Object o:resultList){
369
				System.out.println(o);
370
			}
371
			appCtr.commitTransaction(txStatus);
372

    
373
			//System.out.println(l);
374
			//Agent agent = new Agent();
375
			//appCtr.getAgentService().saveAgent(agent);
376
			appCtr.close();
377
		} catch (RuntimeException e) {
378
			logger.error("Runtime Exception");
379
			e.printStackTrace();
380
			appCtr.close();
381

    
382
		}
383
	}
384

    
385
	private boolean testWritableResourceDirectory() throws IOException{
386
		CdmApplicationUtils.getWritableResourceDir();
387
		return true;
388
	}
389

    
390
	private boolean testH2(){
391
//		testLocalH2();
392
//		if (true)return true;
393

    
394
		DbSchemaValidation validation = DbSchemaValidation.CREATE;
395
		ICdmDataSource ds =
396
			CdmDataSource.NewH2EmbeddedInstance("cdm", "sa", "", null);
397
			//CdmDataSource.NewH2EmbeddedInstance("cdm", "sa", "");
398
//		ds =
399
//			 CdmPersistentDataSource.NewInstance("localH2");
400
		CdmApplicationController appCtr = CdmApplicationController.NewInstance(ds, validation);
401
		try {
402
			BotanicalName botName1 = BotanicalName.NewInstance(Rank.SPECIES());
403
			BotanicalName botName2 = BotanicalName.NewInstance(Rank.SPECIES());
404
			BotanicalName hybridName = BotanicalName.NewInstance(Rank.SPECIES());
405
			botName1.addRelationshipToName(botName2, NameRelationshipType.ORTHOGRAPHIC_VARIANT(), null);
406
			UUID uuid1 = botName1.getUuid();
407
			UUID uuid2 = botName2.getUuid();
408
			try {
409
				Logger loggerTrace = logger.getLogger("org.hibernate.type");
410
				loggerTrace.setLevel(Level.TRACE);
411
				System.out.println(logger.getName());
412

    
413
				appCtr.getNameService().save(botName1);
414
				ResultSet rs = ds.executeQuery("Select count(*) as n FROM NameRelationship");
415
				rs.next();
416
				int c = rs.getInt("n");
417
				System.out.println("Begin :" + c);
418

    
419
				botName1.removeRelationToTaxonName(botName2);
420
				botName1.setSpecificEpithet("DELETED");
421
				botName2.addHybridParent(hybridName, HybridRelationshipType.FIRST_PARENT(), null);
422

    
423
				TransactionStatus tx = appCtr.startTransaction();
424
				appCtr.getNameService().saveOrUpdate(botName2);
425
				rs = ds.executeQuery("Select count(*) as n FROM NameRelationship");
426
				rs.next();
427
				c = rs.getInt("n");
428
				System.out.println("End: " + c);
429

    
430
				appCtr.commitTransaction(tx);
431

    
432
				appCtr.getNameService().saveOrUpdate(botName1);
433

    
434
				rs = ds.executeQuery("Select count(*) as n FROM NameRelationship");
435
				rs.next();
436
				c = rs.getInt("n");
437
				System.out.println("End: " + c);
438

    
439
			} catch (SQLException e) {
440
				// TODO Auto-generated catch block
441
				e.printStackTrace();
442
			}
443

    
444

    
445
			//Agent agent = new Agent();
446
			//appCtr.getAgentService().saveAgent(agent);
447
			appCtr.close();
448
			return true;
449
		} catch (RuntimeException e) {
450
			logger.error("Runtime Exception");
451
			e.printStackTrace();
452
			appCtr.close();
453

    
454
		}
455
		return false;
456
	}
457

    
458
	private void test(){
459
		System.out.println("Start Datasource");
460
		testNewConfigControler();
461
    	//testDatabaseChange();
462

    
463
		//testSqlServer();
464

    
465
		//CdmUtils.findLibrary(au.com.bytecode.opencsv.CSVReader.class);
466
		//testPostgreServer();
467
		//testLocalHsql();
468
		//testLocalH2();
469
		//testWritableResourceDirectory();
470
//		testH2();
471
		System.out.println("\nEnd Datasource");
472
	}
473

    
474
	/**
475
	 * @param args
476
	 */
477
	public static void  main(String[] args) {
478
		Datasource cc = new Datasource();
479
    	cc.test();
480
	}
481

    
482
}
(2-2/11)