Difference between revisions of "Edit the parser, index new elements"

From Berlin Harvesting and Indexing Toolkit
Jump to: navigation, search
(Add a repeatable or a more complex element or group of elements (ie. it will need a new table in the database))
Line 4: Line 4:
 
=Add an simple element (ie. it can be added to an existing table in the database)=
 
=Add an simple element (ie. it can be added to an existing table in the database)=
 
#Choose where you want to save it
 
#Choose where you want to save it
 
#
 
  
 
=Add a repeatable or a more complex element  or group of elements (ie. it will need a new table in the database)=
 
=Add a repeatable or a more complex element  or group of elements (ie. it will need a new table in the database)=
Line 103: Line 101:
 
}
 
}
 
</pre>
 
</pre>
*Have a look at the class of concept you want to link it to
+
*Save the new Reference and get it ID (ie. referenceid= occurrenceDao.createOrUpdateReference(referenceObj);
#The reference will have to be saved in the DB before the concept it belongs to! (because of the foreign key)
+
--> create the createOrUpdateReference method in org/binhum/harvest/util/jdbc/dao/OccurrenceDao.java (abstract) and org/binhum/harvest/util/jdbc/dao/OccurrenceDaoImpl.java
 +
*Have a look at the class of concept you want to link it to.
 +
*Add this ID to the concept you want to link it to, usually in the Unit.java class (for example:
 +
<pre>
 +
    Preparation prepa = new Preparation();
 +
    prepa.setTripleidstoreid(triplestoreid);
 +
    prepa.setPreparationDate(extractionDate);
 +
    prepa.setPreparationStaff(extractionStaff);
 +
    prepa.setPreparationMaterials(extractionMethod);
 +
    prepa.setPreparationType(preparationType);
 +
    prepa.setReferenceid(referenceid);
 +
    savePreparation(prepa);
 +
</pre>
 +
!! For each concept, reset the referenceID first to 1, or you might have the reference from a previous element attached to the current concept !!
  
  

Revision as of 11:01, 2 February 2016

First of all, we can recommend to use Eclipse (version Luna for example). You will need the Maven extension.
Import the B-HIT project in B-HIT (File/New/Maven Project -> put the location of the directory where you downloaded B-HIT).

Add an simple element (ie. it can be added to an existing table in the database)

  1. Choose where you want to save it

Add a repeatable or a more complex element or group of elements (ie. it will need a new table in the database)

1.Choose where you want to save it Example: add a reference group (ABCD2.06) http://www.bgbm.org/tdwg/codata/schema/ABCD_2.06/HTML/ABCD_2.06.html#complexType_Reference_Link031A69A8 A Reference is made of 3 elements: TitleCitation, CitationDetail and URI. As a Reference can be linked to several ABCD concepts, it might make more sense to link the Reference(s) to the concept than to the whole Unit

A) Create a new table in the database for the references, with an auto-incrementation ID. Put a new empty line (referenceID 1, titleCitation null, citationDetail null, URI null) because you will need a foreign key to make the rest easier. B) Add a new column in the table from the concept that will have a Reference (ie. fk_referenceID), and configure it as a foreign-Key with the default value 1 for all the old records) C) Document the file with the "SQL changes". D) Edit the Java code!

  • Have a look at the src/org/binhum/abcd/Multimedia.java class. The new class could look like this:
// $Id$
/***************************************************************************
  * Copyright 2015 Global Biodiversity Information Facility Secretariat and Botanic Garden and Botanical Museum Berlin-Dahlem
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy of
  * the License at
  * http://www.apache.org/licenses/LICENSE-2.0
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  * License for the specific language governing permissions and limitations under
  * the License.

***************************************************************************/
package org.binhum.abcd;

import java.util.Map;

import org.dom4j.Document;

import com.mysql.jdbc.StringUtils;


public class Reference extends XMLutil {

   private static final long serialVersionUID = 2096267214610763427L;
   private String URI;
   private String title;
   private String detail;
   private String standard; //abcd or abcd21
   
   private Map<String, String> namespaceMap;
   private Document xmlDocument;
   
   Reference(Map<String, String> namespaceMap, String standard) {
       this.namespaceMap=namespaceMap;
       this.standard=standard;
   }
   /**
    * @return the uRI
    */
   public String getURI() {
       return URI;
   }
   /**
    * @param uRI the uRI to set
    */
   public void setURI(String uRI) {
       URI = uRI;
   }
   /**
    * @return the title
    */
   public String getTitle() {
       return title;
   }
   /**
    * @param title the title to set
    */
   public void setTitle(String title) {
       this.title = title;
   }
   /**
    * @return the detail
    */
   public String getDetail() {
       return detail;
   }
   /**
    * @param detail the detail to set
    */
   public void setDetail(String detail) {
       this.detail = detail;
   }
   public Document getXmlDocument() {
       return xmlDocument;
   }
   public void setXmlDocument(Document xmlDocument) {
       this.xmlDocument = xmlDocument;
       detail = getTextValue(xmlDocument, "//"+standard+":Reference/"+standard+":CitationDetail", namespaceMap);
       title=getTextValue(xmlDocument, "//"+standard+":Reference/"+standard+":TitleCitation", namespaceMap);
       URI=getTextValue(xmlDocument, "//"+standard+":Reference/"+standard+":URI", namespaceMap);
   }
}
  • Save the new Reference and get it ID (ie. referenceid= occurrenceDao.createOrUpdateReference(referenceObj);

--> create the createOrUpdateReference method in org/binhum/harvest/util/jdbc/dao/OccurrenceDao.java (abstract) and org/binhum/harvest/util/jdbc/dao/OccurrenceDaoImpl.java

  • Have a look at the class of concept you want to link it to.
  • Add this ID to the concept you want to link it to, usually in the Unit.java class (for example:
    Preparation prepa = new Preparation();
    prepa.setTripleidstoreid(triplestoreid);
    prepa.setPreparationDate(extractionDate);
    prepa.setPreparationStaff(extractionStaff);
    prepa.setPreparationMaterials(extractionMethod);
    prepa.setPreparationType(preparationType);
    prepa.setReferenceid(referenceid);
    savePreparation(prepa);

!! For each concept, reset the referenceID first to 1, or you might have the reference from a previous element attached to the current concept !!


  • delete by updates!

Add a new data standard