(no commit message)
authorAndreas Müller <a.mueller@bgbm.org>
Sat, 14 Jun 2008 19:21:36 +0000 (19:21 +0000)
committerAndreas Müller <a.mueller@bgbm.org>
Sat, 14 Jun 2008 19:21:36 +0000 (19:21 +0000)
.gitattributes
app-import/src/main/java/eu/etaxonomy/cdm/app/viennaImport/Activator.java [deleted file]
app-import/src/main/java/eu/etaxonomy/cdm/app/viennaImport/ViennaActivator.java [new file with mode: 0644]
app-import/src/main/resources/Asteraceae Specimen Images Vienna.xls
app-import/src/main/resources/AsteraceaeSpecimenImagesVienna.mdb [new file with mode: 0644]

index 8eb5b778b3962d6d809be2576b13fc70c23456e4..ac0534d5f8a95fac413c72c9d20e8b66e4df13e4 100644 (file)
@@ -7,8 +7,9 @@ app-import/src/main/java/eu/etaxonomy/cdm/app/berlinModelImport/BerlinModelImpor
 app-import/src/main/java/eu/etaxonomy/cdm/app/berlinModelImport/BerlinModelSources.java -text
 app-import/src/main/java/eu/etaxonomy/cdm/app/berlinModelImport/CdmDestinations.java -text
 app-import/src/main/java/eu/etaxonomy/cdm/app/berlinModelImport/CichorieaeActivator.java -text
-app-import/src/main/java/eu/etaxonomy/cdm/app/viennaImport/Activator.java -text
+app-import/src/main/java/eu/etaxonomy/cdm/app/viennaImport/ViennaActivator.java -text
 app-import/src/main/resources/Asteraceae[!!-~]Specimen[!!-~]Images[!!-~]Vienna.xls -text
+app-import/src/main/resources/AsteraceaeSpecimenImagesVienna.mdb -text
 app-import/src/main/resources/log4j.properties -text
 cdmlib-commons/LICENSE.TXT -text
 cdmlib-commons/README.TXT -text
diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/app/viennaImport/Activator.java b/app-import/src/main/java/eu/etaxonomy/cdm/app/viennaImport/Activator.java
deleted file mode 100644 (file)
index ef4fdc0..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/**\r
-* Copyright (C) 2007 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\r
-* \r
-* The contents of this file are subject to the Mozilla Public License Version 1.1\r
-* See LICENSE.TXT at the top of this package for the full license terms.\r
-*/\r
-\r
-package eu.etaxonomy.cdm.app.viennaImport;\r
-\r
-import org.apache.log4j.Logger;\r
-\r
-/**\r
- * @author AM\r
- * @created 08.05.2008\r
- * @version 1.0\r
- */\r
-public class Activator {\r
-       private static final Logger logger = Logger.getLogger(Activator.class);\r
-\r
-}\r
diff --git a/app-import/src/main/java/eu/etaxonomy/cdm/app/viennaImport/ViennaActivator.java b/app-import/src/main/java/eu/etaxonomy/cdm/app/viennaImport/ViennaActivator.java
new file mode 100644 (file)
index 0000000..1581cca
--- /dev/null
@@ -0,0 +1,219 @@
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+* \r
+* The contents of this file are subject to the Mozilla Public License Version 1.1\r
+* See LICENSE.TXT at the top of this package for the full license terms.\r
+*/\r
+\r
+package eu.etaxonomy.cdm.app.viennaImport;\r
+\r
+import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
+import java.util.List;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
+import eu.etaxonomy.cdm.app.berlinModelImport.AccountStore;\r
+import eu.etaxonomy.cdm.app.berlinModelImport.BerlinModelSources;\r
+import eu.etaxonomy.cdm.app.berlinModelImport.CdmDestinations;\r
+import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.database.DataSourceNotFoundException;\r
+import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
+import eu.etaxonomy.cdm.io.source.Source;\r
+import eu.etaxonomy.cdm.model.agent.Person;\r
+import eu.etaxonomy.cdm.model.common.Annotation;\r
+import eu.etaxonomy.cdm.model.common.OriginalSource;\r
+import eu.etaxonomy.cdm.model.common.init.TermNotFoundException;\r
+import eu.etaxonomy.cdm.model.media.ImageFile;\r
+import eu.etaxonomy.cdm.model.media.Media;\r
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;\r
+import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;\r
+import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
+import eu.etaxonomy.cdm.model.reference.Database;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
+import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl;\r
+\r
+/**\r
+ * @author AM\r
+ * @created 08.05.2008\r
+ * @version 1.0\r
+ */\r
+public class ViennaActivator {\r
+       private static final Logger logger = Logger.getLogger(ViennaActivator.class);\r
+       \r
+       static final Source berlinModelSource = ViennaActivator.VIENNA();\r
+       \r
+       \r
+       public static Source VIENNA(){\r
+               //      Vienna Asteraceae\r
+               String dbms = "ODBC";\r
+               String strServer = "AsteraceaeViennaAccess";\r
+               String strDB = "AsteraceaeViennaAccess";\r
+               String userName = "webUser";\r
+               return  makeSource(dbms, strServer, strDB, -1, userName, null);\r
+       }\r
+       \r
+       public boolean invoke(){\r
+               boolean result = true;\r
+               boolean withCdm = false;\r
+               berlinModelSource.setQuery("SELECT * FROM vienna"); // WHERE ID1 <> 1\r
+               CdmApplicationController app = null;\r
+               \r
+               \r
+               try {\r
+                       if (withCdm){\r
+                               app = CdmApplicationController.NewInstance(CdmDestinations.cdm_edit_cichorieae());\r
+                       }else{\r
+                               //app = CdmApplicationController.NewInstance(DbSchemaValidation.VALIDATE);\r
+                       }\r
+               } catch (Exception e1) {\r
+                       e1.printStackTrace();\r
+                       result = false;\r
+                       return result;\r
+               }\r
+               \r
+                       \r
+               ResultSet rs = berlinModelSource.getResultSet();\r
+               try {\r
+                       while (rs.next()){\r
+                               String uriPath = "http://131.130.131.9/database/img/imgBrowser.php?ID=";\r
+                               int id = rs.getInt("ID");\r
+                               String strId = String.valueOf(id);\r
+                               String catalogNumber = rs.getString("catalogueNumber");\r
+                               String strTaxonName = rs.getString("TaxonName");\r
+                               String annotation = rs.getString("Annotation");\r
+                               String typeInformation = rs.getString("TypeInformation");\r
+                               String typifiedBy = rs.getString("TypifiedBy");\r
+                               String family = rs.getString("Family");\r
+                               String strActor = rs.getString("Actor");\r
+                               String timePeriod = rs.getString("TimePeriod");\r
+                               String collectingArea = rs.getString("CollectingArea");\r
+                               String locality = rs.getString("Locality");\r
+                               String assigned = rs.getString("assigned");\r
+                               String history = rs.getString("history");\r
+                               \r
+                               if (! family.equals("Asteraceae")){\r
+                                       logger.warn("Family not Asteracea: ID= " + strId);\r
+                               }\r
+                               \r
+                               ReferenceBase sec = Database.NewInstance();\r
+                               sec.setTitleCache("Vienna Asteraceae Images");\r
+                               \r
+                               TaxonNameBase taxonName = (BotanicalName)NonViralNameParserImpl.NewInstance().parseFullName(strTaxonName);\r
+                               if (withCdm){\r
+                                       List<TaxonNameBase> names = app.getNameService().getNamesByName(strTaxonName);\r
+                                       if (names.size() == 0){\r
+                                               logger.warn("Name not found: " + strTaxonName);\r
+                                       }else{\r
+                                               if (names.size() > 1){\r
+                                                       logger.warn("More then 1 name found: " + strTaxonName);\r
+                                               }\r
+                                               taxonName = names.get(0);\r
+                                       }\r
+                               }\r
+                               Taxon taxon = Taxon.NewInstance(taxonName, sec);\r
+                               \r
+                               logger.info("Create new specimen ...");\r
+                               Specimen specimen = Specimen.NewInstance();\r
+                               specimen.setCatalogNumber(catalogNumber);\r
+                               specimen.setStoredUnder(taxonName);   //??\r
+                               //TODO\r
+                               //specimen.setCollection(collection);\r
+                               specimen.addAnnotation(Annotation.NewDefaultLanguageInstance(annotation));\r
+                               specimen.addDetermination(getDetermination(taxon, strActor));\r
+                               specimen.addMedia(getMedia(uriPath, strId));\r
+                               \r
+                               //Original ID\r
+                               specimen.addSource(OriginalSource.NewInstance(strId));\r
+                               \r
+                               \r
+                       }\r
+               } catch (SQLException e) {\r
+                       logger.warn("Error when reading record!!");\r
+                       e.printStackTrace();\r
+                       result = false;\r
+               }\r
+               return result;\r
+       }\r
+       \r
+       private Media getMedia(String uriPath, String id){\r
+               //"http://131.130.131.9/database/img/imgBrowser.php?ID=50599";\r
+               String uri = uriPath + id;\r
+               if (CdmUtils.urlExists(uri, false)){\r
+                       String suffix = "jpg";\r
+                       String mimeType = "image/jpg";\r
+                       Media media = ImageFile.NewMediaInstance(null, null, uri, mimeType, suffix,  null, null, null);\r
+                       return media;\r
+               }else{\r
+                       logger.warn("URI does not exist: " + uri);\r
+                       return null;\r
+               }\r
+       }\r
+       \r
+       private DeterminationEvent getDetermination(Taxon taxon, String actor){\r
+               logger.info("Create determination event");\r
+               DeterminationEvent determinationEvent = DeterminationEvent.NewInstance();\r
+               determinationEvent.setTaxon(taxon);\r
+               Person person = Person.NewTitledInstance(actor);\r
+               determinationEvent.setActor(person);\r
+               return determinationEvent;\r
+       }\r
+       \r
+       \r
+       \r
+       /**\r
+        * @param args\r
+        */\r
+       public static void main(String[] args) {\r
+               ViennaActivator viennaAct = new ViennaActivator();\r
+               viennaAct.invoke();\r
+       }\r
+       \r
+       \r
+       /**\r
+        * Initialises source\r
+        * @return true, if connection established\r
+        */\r
+       private static Source makeSource(String dbms, String strServer, String strDB, int port, String userName, String pwd ){\r
+               //establish connection\r
+               Source source = null;\r
+               AccountStore accounts = new AccountStore();\r
+               boolean doStore = false;\r
+               try {\r
+                       source = new Source(dbms, strServer, strDB);\r
+                       source.setPort(port);\r
+                       \r
+                       if (pwd == null){\r
+                               pwd = accounts.getPassword(dbms, strServer, userName);\r
+                               if(pwd == null){\r
+                                       doStore = true;\r
+                                       pwd = CdmUtils.readInputLine("Please insert password for " + CdmUtils.Nz(userName) + ": ");\r
+                               } else {\r
+                                       logger.info("using stored password for  "+CdmUtils.Nz(userName));\r
+                               }\r
+                       }\r
+                       source.setUserAndPwd(userName, pwd);\r
+                       // on success store userName, pwd in property file\r
+                       if(doStore){\r
+                               accounts.setPassword(dbms, strServer, userName, pwd);\r
+                               //logger.info("password stored in "+accounts.accountsFile);\r
+                       }\r
+               } catch (Exception e) {\r
+                       if(doStore){\r
+                               accounts.removePassword(dbms, strServer, userName);\r
+                               //logger.info("password removed from "+accounts.accountsFile);\r
+                       }\r
+                       logger.error(e);\r
+               }\r
+               // write pwd to account store\r
+               return source;\r
+       }\r
+}\r
index 2b0d0470181f3916fe85c5e94373754a566ce2b4..c4f570e2fd6a0b1e2fb05177059341b49b2a0173 100644 (file)
Binary files a/app-import/src/main/resources/Asteraceae Specimen Images Vienna.xls and b/app-import/src/main/resources/Asteraceae Specimen Images Vienna.xls differ
diff --git a/app-import/src/main/resources/AsteraceaeSpecimenImagesVienna.mdb b/app-import/src/main/resources/AsteraceaeSpecimenImagesVienna.mdb
new file mode 100644 (file)
index 0000000..f68d7c9
Binary files /dev/null and b/app-import/src/main/resources/AsteraceaeSpecimenImagesVienna.mdb differ