1 package eu
.etaxonomy
.cdm
.database
;
3 import java
.io
.InputStreamReader
;
4 import java
.sql
.SQLException
;
5 import java
.util
.HashMap
;
8 import javax
.annotation
.PostConstruct
;
9 import javax
.sql
.DataSource
;
11 import org
.apache
.log4j
.Logger
;
12 import org
.dbunit
.database
.DatabaseConfig
;
13 import org
.dbunit
.database
.DatabaseConnection
;
14 import org
.dbunit
.database
.IDatabaseConnection
;
15 import org
.dbunit
.dataset
.IDataSet
;
16 import org
.dbunit
.dataset
.xml
.FlatXmlDataSet
;
17 import org
.dbunit
.operation
.DatabaseOperation
;
18 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
19 import org
.springframework
.core
.io
.Resource
;
20 import org
.springframework
.transaction
.TransactionStatus
;
22 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTermBase
;
23 import eu
.etaxonomy
.cdm
.test
.integration
.HsqldbDataTypeFactory
;
25 public class TestingTermInitializer
extends PersistentTermInitializer
{
26 private static final Logger logger
= Logger
.getLogger(TestingTermInitializer
.class);
28 private DataSource dataSource
;
30 private Resource termsDataSet
;
32 private Resource termsDtd
;
34 private UUID
[] vocabularyUuids
= {
35 UUID
.fromString("45ac7043-7f5e-4f37-92f2-3874aaaef2de"), // Language.class
36 UUID
.fromString("e72cbcb6-58f8-4201-9774-15d0c6abc128"), // Continent.class
37 UUID
.fromString("006b1870-7347-4624-990f-e5ed78484a1a"), // WaterbodyOrCountry.class
38 UUID
.fromString("ef0d1ce1-26e3-4e83-b47b-ca74eed40b1b"), // Rank.class
39 UUID
.fromString("ab177bd7-d3c8-4e58-a388-226fff6ba3c2"), // TypeDesignationStatus.class
40 // UUID.fromString("ab60e738-4d09-4c24-a1b3-9466b01f9f55"), // NameTypeDesignationStatus.class
41 UUID
.fromString("bb28cdca-2f8a-4f11-9c21-517e9ae87f1f"), // NomenclaturalStatusType.class
42 UUID
.fromString("48917fde-d083-4659-b07d-413db843bd50"), // SynonymRelationshipType.class
43 UUID
.fromString("fc4abe52-9c25-4cfa-a682-8615bf4bbf07"), // HybridRelationshipType.class
44 UUID
.fromString("6878cb82-c1a4-4613-b012-7e73b413c8cd"), // NameRelationshipType.class
45 UUID
.fromString("15db0cf7-7afc-4a86-a7d4-221c73b0c9ac"), // TaxonRelationshipType.class
46 UUID
.fromString("19dffff7-e142-429c-a420-5d28e4ebe305"), // MarkerType.class
47 UUID
.fromString("ca04609b-1ba0-4d31-9c2e-aa8eb2f4e62d"), // AnnotationType.class
48 UUID
.fromString("e51d52d6-965b-4f7d-900f-4ba9c6f5dd33"), // NamedAreaType.class
49 UUID
.fromString("49034253-27c8-4219-97e8-f8d987d3d122"), // NamedAreaLevel.class
50 // UUID.fromString("fa032b1a-1ad2-4fb0-a1d9-3016399a80fa"), // NomenclaturalCode.class
51 UUID
.fromString("b187d555-f06f-4d65-9e53-da7c93f8eaa8"), // Feature.class
52 UUID
.fromString("1fb40504-d1d7-44b0-9731-374fbe6cac77"), // NamedArea.class //TDWGArea
53 UUID
.fromString("adbbbe15-c4d3-47b7-80a8-c7d104e53a05"), // PresenceTerm.class
54 UUID
.fromString("5cd438c8-a8a1-4958-842e-169e83e2ceee"), // AbsenceTerm.class
55 UUID
.fromString("9718b7dd-8bc0-4cad-be57-3c54d4d432fe"), // Sex.class
56 UUID
.fromString("398b50bb-348e-4fe0-a7f5-a75afd846d1f"), // DerivationEventType.class
57 UUID
.fromString("a7dc20c9-e6b3-459e-8f05-8d6d8fceb465"), // PreservationMethod.class
58 UUID
.fromString("fe87ea8d-6e0a-4e5d-b0da-0ab8ea67ca77"), // DeterminationModifier.class
59 UUID
.fromString("066cc62e-7213-495e-a020-97a1233bc037"), // StatisticalMeasure.class
60 UUID
.fromString("8627c526-73af-44d9-902c-11c1f11b60b4") //RightsTerm.class
63 public void setTermsDataSet(Resource termsDataSet
) {
64 this.termsDataSet
= termsDataSet
;
67 public void setTermsDtd(Resource termsDtd
) {
68 this.termsDtd
= termsDtd
;
72 public void setDataSource(DataSource dataSource
) {
73 this.dataSource
= dataSource
;
78 public void initialize(){
79 TransactionStatus txStatus
= transactionManager
.getTransaction(txDefinition
);
80 IDatabaseConnection connection
= null;
83 connection
= getConnection();
84 IDataSet dataSet
= new FlatXmlDataSet(new InputStreamReader(termsDataSet
.getInputStream()),new InputStreamReader(termsDtd
.getInputStream()));
85 DatabaseOperation
.CLEAN_INSERT
.execute(connection
, dataSet
);
86 } catch (Exception e
) {
88 for(StackTraceElement ste
: e
.getStackTrace()) {
94 } catch (SQLException sqle
) {
98 transactionManager
.commit(txStatus
);
100 for(int i
= 0; i
< vocabularyUuids
.length
; i
++) {
101 Class
<?
extends DefinedTermBase
> clazz
= classesToInitialize
[i
];
102 UUID vocabularyUuid
= vocabularyUuids
[i
];
103 secondPass(clazz
, vocabularyUuid
,new HashMap
<UUID
,DefinedTermBase
>());
107 protected IDatabaseConnection
getConnection() throws SQLException
{
108 IDatabaseConnection connection
= null;
110 connection
= new DatabaseConnection(dataSource
.getConnection());
112 DatabaseConfig config
= connection
.getConfig();
113 config
.setProperty(DatabaseConfig
.PROPERTY_DATATYPE_FACTORY
,new HsqldbDataTypeFactory());
114 } catch (Exception e
) {