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
.TaxonNameBase
;
32 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
33 import eu
.etaxonomy
.cdm
.model
.occurrence
.DeterminationEvent
;
34 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationType
;
35 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
36 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
37 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
38 import eu
.etaxonomy
.cdm
.strategy
.parser
.NonViralNameParserImpl
;
45 public class ViennaActivator
{
46 private static final Logger logger
= Logger
.getLogger(ViennaActivator
.class);
48 static final Source berlinModelSource
= ViennaActivator
.VIENNA();
51 public static Source
VIENNA(){
54 String strServer
= "AsteraceaeViennaAccess";
55 String strDB
= "AsteraceaeViennaAccess";
56 String userName
= "webUser";
57 return makeSource(dbms
, strServer
, strDB
, -1, userName
, null);
60 public boolean invoke(){
61 boolean result
= true;
62 boolean withCdm
= false;
63 berlinModelSource
.setQuery("SELECT * FROM vienna"); // WHERE ID1 <> 1
64 CdmApplicationController app
= null;
69 app
= CdmApplicationController
.NewInstance(CdmDestinations
.localH2());
71 //app = CdmApplicationController.NewInstance(DbSchemaValidation.VALIDATE);
73 } catch (Exception e1
) {
80 ResultSet rs
= berlinModelSource
.getResultSet();
83 String uriPath
= "http://131.130.131.9/database/img/imgBrowser.php?ID=";
84 int id
= rs
.getInt("ID");
85 String strId
= String
.valueOf(id
);
86 String catalogNumber
= rs
.getString("catalogueNumber");
87 String strTaxonName
= rs
.getString("TaxonName");
88 String annotation
= rs
.getString("Annotation");
89 String typeInformation
= rs
.getString("TypeInformation");
90 String typifiedBy
= rs
.getString("TypifiedBy");
91 String family
= rs
.getString("Family");
92 String strActor
= rs
.getString("Actor");
93 String timePeriod
= rs
.getString("TimePeriod");
94 String collectingArea
= rs
.getString("CollectingArea");
95 String locality
= rs
.getString("Locality");
96 String assigned
= rs
.getString("assigned");
97 String history
= rs
.getString("history");
99 if (! family
.equals("Asteraceae")){
100 logger
.warn("Family not Asteracea: ID= " + strId
);
102 Reference sec
= ReferenceFactory
.newDatabase();
103 sec
.setTitleCache("Vienna Asteraceae Images", true);
105 TaxonNameBase
<?
,?
> taxonName
= NonViralNameParserImpl
.NewInstance().parseFullName(strTaxonName
);
107 List
<TaxonNameBase
> names
= app
.getNameService().getNamesByName(strTaxonName
);
108 if (names
.size() == 0){
109 logger
.warn("Name not found: " + strTaxonName
);
111 if (names
.size() > 1){
112 logger
.warn("More then 1 name found: " + strTaxonName
);
114 taxonName
= names
.get(0);
117 Taxon taxon
= Taxon
.NewInstance(taxonName
, sec
);
119 logger
.info("Create new specimen ...");
120 DerivedUnit specimenx
= DerivedUnit
.NewPreservedSpecimenInstance();
121 DerivedUnitFacade specimen
= DerivedUnitFacade
.NewInstance(SpecimenOrObservationType
.PreservedSpecimen
);
123 specimen
.setCatalogNumber(catalogNumber
);
124 specimen
.setStoredUnder(taxonName
); //??
126 //specimen.setCollection(collection);
127 specimen
.addAnnotation(Annotation
.NewDefaultLanguageInstance(annotation
));
128 specimen
.addDetermination(getDetermination(taxon
, strActor
));
129 specimen
.addDerivedUnitMedia(getMedia(uriPath
, strId
));
132 specimen
.addSource(IdentifiableSource
.NewDataImportInstance(strId
));
136 } catch (SQLException e
) {
137 logger
.warn("Error when reading record!!");
144 private Media
getMedia(String uriPath
, String id
){
145 //"http://131.130.131.9/database/img/imgBrowser.php?ID=50599";
146 String uriString
= uriPath
+ id
;
147 if (CdmUtils
.urlExists(uriString
, false)){
148 String suffix
= "jpg";
149 String mimeType
= "image/jpg";
152 uri
= new URI(uriString
);
153 } catch (URISyntaxException e
) {
156 Media media
= ImageFile
.NewMediaInstance(null, null, uri
, mimeType
, suffix
, null, null, null);
159 logger
.warn("URI does not exist: " + uriString
);
164 private DeterminationEvent
getDetermination(Taxon taxon
, String actor
){
165 logger
.info("Create determination event");
166 DeterminationEvent determinationEvent
= DeterminationEvent
.NewInstance();
167 determinationEvent
.setTaxon(taxon
);
168 Person person
= Person
.NewTitledInstance(actor
);
169 determinationEvent
.setActor(person
);
170 return determinationEvent
;
178 public static void main(String
[] args
) {
179 ViennaActivator viennaAct
= new ViennaActivator();
186 * @return true, if connection established
188 private static Source
makeSource(String dbms
, String strServer
, String strDB
, int port
, String userName
, String pwd
){
189 //establish connection
190 pwd
= AccountStore
.readOrStorePassword(dbms
, strServer
, userName
, pwd
);
191 Source source
= new Source(dbms
, strServer
, strDB
);
192 source
.setPort(port
);
193 source
.setUserAndPwd(userName
, pwd
);