2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
10 package eu
.etaxonomy
.cdm
.app
.viennaImport
;
13 import java
.net
.URISyntaxException
;
14 import java
.sql
.ResultSet
;
15 import java
.sql
.SQLException
;
16 import java
.util
.List
;
18 import org
.apache
.log4j
.Logger
;
20 import eu
.etaxonomy
.cdm
.api
.application
.CdmApplicationController
;
21 import eu
.etaxonomy
.cdm
.api
.facade
.DerivedUnitFacade
;
22 import eu
.etaxonomy
.cdm
.app
.common
.CdmDestinations
;
23 import eu
.etaxonomy
.cdm
.common
.AccountStore
;
24 import eu
.etaxonomy
.cdm
.common
.CdmUtils
;
25 import eu
.etaxonomy
.cdm
.io
.common
.Source
;
26 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
27 import eu
.etaxonomy
.cdm
.model
.common
.Annotation
;
28 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableSource
;
29 import eu
.etaxonomy
.cdm
.model
.media
.ImageFile
;
30 import eu
.etaxonomy
.cdm
.model
.media
.Media
;
31 import eu
.etaxonomy
.cdm
.model
.name
.INonViralName
;
32 import eu
.etaxonomy
.cdm
.model
.name
.TaxonName
;
33 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
34 import eu
.etaxonomy
.cdm
.model
.occurrence
.DeterminationEvent
;
35 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationType
;
36 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
37 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
38 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
39 import eu
.etaxonomy
.cdm
.strategy
.parser
.NonViralNameParserImpl
;
46 public class ViennaActivator
{
47 private static final Logger logger
= Logger
.getLogger(ViennaActivator
.class);
49 static final Source berlinModelSource
= ViennaActivator
.VIENNA();
52 public static Source
VIENNA(){
55 String strServer
= "AsteraceaeViennaAccess";
56 String strDB
= "AsteraceaeViennaAccess";
57 String userName
= "webUser";
58 return makeSource(dbms
, strServer
, strDB
, -1, userName
, null);
61 public boolean invoke(){
62 boolean result
= true;
63 boolean withCdm
= false;
64 berlinModelSource
.setQuery("SELECT * FROM vienna"); // WHERE ID1 <> 1
65 CdmApplicationController app
= null;
70 app
= CdmApplicationController
.NewInstance(CdmDestinations
.localH2());
72 //app = CdmApplicationController.NewInstance(DbSchemaValidation.VALIDATE);
74 } catch (Exception e1
) {
81 ResultSet rs
= berlinModelSource
.getResultSet();
84 String uriPath
= "http://131.130.131.9/database/img/imgBrowser.php?ID=";
85 int id
= rs
.getInt("ID");
86 String strId
= String
.valueOf(id
);
87 String catalogNumber
= rs
.getString("catalogueNumber");
88 String strTaxonName
= rs
.getString("TaxonName");
89 String annotation
= rs
.getString("Annotation");
90 String typeInformation
= rs
.getString("TypeInformation");
91 String typifiedBy
= rs
.getString("TypifiedBy");
92 String family
= rs
.getString("Family");
93 String strActor
= rs
.getString("Actor");
94 String timePeriod
= rs
.getString("TimePeriod");
95 String collectingArea
= rs
.getString("CollectingArea");
96 String locality
= rs
.getString("Locality");
97 String assigned
= rs
.getString("assigned");
98 String history
= rs
.getString("history");
100 if (! family
.equals("Asteraceae")){
101 logger
.warn("Family not Asteracea: ID= " + strId
);
103 Reference sec
= ReferenceFactory
.newDatabase();
104 sec
.setTitleCache("Vienna Asteraceae Images", true);
106 INonViralName taxonName
= NonViralNameParserImpl
.NewInstance().parseFullName(strTaxonName
);
108 List
<TaxonName
> names
= app
.getNameService().findByName(null, strTaxonName
, null, null, null, null, null, null).getRecords();
109 if (names
.size() == 0){
110 logger
.warn("Name not found: " + strTaxonName
);
112 if (names
.size() > 1){
113 logger
.warn("More then 1 name found: " + strTaxonName
);
115 taxonName
= names
.get(0);
118 Taxon taxon
= Taxon
.NewInstance(taxonName
, sec
);
120 logger
.info("Create new specimen ...");
121 DerivedUnit specimenx
= DerivedUnit
.NewPreservedSpecimenInstance();
122 DerivedUnitFacade specimen
= DerivedUnitFacade
.NewInstance(SpecimenOrObservationType
.PreservedSpecimen
);
124 specimen
.setCatalogNumber(catalogNumber
);
125 specimen
.setStoredUnder(TaxonName
.castAndDeproxy(taxonName
)); //??
127 //specimen.setCollection(collection);
128 specimen
.addAnnotation(Annotation
.NewDefaultLanguageInstance(annotation
));
129 specimen
.addDetermination(getDetermination(taxon
, strActor
));
130 specimen
.addDerivedUnitMedia(getMedia(uriPath
, strId
));
133 specimen
.addSource(IdentifiableSource
.NewDataImportInstance(strId
));
137 } catch (SQLException e
) {
138 logger
.warn("Error when reading record!!");
145 private Media
getMedia(String uriPath
, String id
){
146 //"http://131.130.131.9/database/img/imgBrowser.php?ID=50599";
147 String uriString
= uriPath
+ id
;
148 if (CdmUtils
.urlExists(uriString
, false)){
149 String suffix
= "jpg";
150 String mimeType
= "image/jpg";
153 uri
= new URI(uriString
);
154 } catch (URISyntaxException e
) {
157 Media media
= ImageFile
.NewMediaInstance(null, null, uri
, mimeType
, suffix
, null, null, null);
160 logger
.warn("URI does not exist: " + uriString
);
165 private DeterminationEvent
getDetermination(Taxon taxon
, String actor
){
166 logger
.info("Create determination event");
167 DeterminationEvent determinationEvent
= DeterminationEvent
.NewInstance();
168 determinationEvent
.setTaxon(taxon
);
169 Person person
= Person
.NewTitledInstance(actor
);
170 determinationEvent
.setActor(person
);
171 return determinationEvent
;
179 public static void main(String
[] args
) {
180 ViennaActivator viennaAct
= new ViennaActivator();
187 * @return true, if connection established
189 private static Source
makeSource(String dbms
, String strServer
, String strDB
, int port
, String userName
, String pwd
){
190 //establish connection
191 pwd
= AccountStore
.readOrStorePassword(dbms
, strServer
, userName
, pwd
);
192 Source source
= new Source(dbms
, strServer
, strDB
);
193 source
.setPort(port
);
194 source
.setUserAndPwd(userName
, pwd
);