Mercurial > hg > openmind
view src/main/java/org/mpi/openmind/scripts/DivaImport.java @ 90:4b6c0b368f46
new UpdateMpiwgDigitalizations script.
author | Robert Casties <casties@mpiwg-berlin.mpg.de> |
---|---|
date | Tue, 29 May 2018 21:15:06 +0200 |
parents | f04bd29d284d |
children |
line wrap: on
line source
package org.mpi.openmind.scripts; import java.sql.DriverManager; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import org.apache.log4j.ConsoleAppender; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.hibernate.mapping.Array; import org.mpi.openmind.cache.WrapperService; import org.mpi.openmind.repository.bo.Attribute; import org.mpi.openmind.repository.bo.Entity; import org.mpi.openmind.repository.bo.Node; import org.mpi.openmind.repository.bo.Relation; import org.mpi.openmind.repository.services.ServiceRegistry; import cl.maps.utils.AttKey; public class DivaImport { static{ ConsoleAppender console = new ConsoleAppender(); //create appender //configure the appender String PATTERN = "%d [%p|%c|%C{1}] %m%n"; console.setLayout(new PatternLayout(PATTERN)); console.setThreshold(Level.INFO); console.activateOptions(); //add appender to any Logger (here is root) Logger.getRootLogger().addAppender(console); } public static String DIGITALIZATION = "DIGITALIZATION"; public static String userName = "diva-import"; public static void execute(){ ServiceRegistry services = new ServiceRegistry(); createDataModel(services.getWrapper()); importData(services.getWrapper()); } private static void createDataModel(WrapperService ontology){ try { Entity digi = new Entity(Node.TYPE_TBOX, Node.TYPE_TBOX, false); digi.setOwnValue(DIGITALIZATION); digi = ontology.saveLWDefinition(digi, userName); Attribute attName = new Attribute(Node.TYPE_TBOX, "text", "name"); attName.setSourceId(digi.getId()); attName.setSourceObjectClass(Node.TYPE_TBOX); attName.setSourceModif(digi.getModificationTime()); attName.setSystemStatus(Node.SYS_STATUS_CURRENT_VERSION); ontology.saveDefAttribute(attName, userName); Attribute num_files = new Attribute(Node.TYPE_TBOX, "text", "num_files"); num_files.setSourceId(digi.getId()); num_files.setSourceObjectClass(Node.TYPE_TBOX); num_files.setSourceModif(digi.getModificationTime()); num_files.setSystemStatus(Node.SYS_STATUS_CURRENT_VERSION); ontology.saveDefAttribute(num_files, userName); //DIGI is_digitalization_of CODEX Entity codex = ontology.getDefinition("CODEX"); Relation rel = new Relation(digi, codex, "is_digitalization_of"); ontology.saveDefRelation(rel, userName); //----------- Entity witness = ontology.getDefinition("WITNESS"); Attribute end_page = new Attribute(Node.TYPE_TBOX, "text", "end_page"); end_page.setSourceId(witness.getId()); end_page.setSourceObjectClass(Node.TYPE_TBOX); end_page.setSourceModif(witness.getModificationTime()); end_page.setSystemStatus(Node.SYS_STATUS_CURRENT_VERSION); ontology.saveDefAttribute(end_page, userName); Attribute start_page = new Attribute(Node.TYPE_TBOX, "text", "start_page"); start_page.setSourceId(witness.getId()); start_page.setSourceObjectClass(Node.TYPE_TBOX); start_page.setSourceModif(witness.getModificationTime()); start_page.setSystemStatus(Node.SYS_STATUS_CURRENT_VERSION); ontology.saveDefAttribute(start_page, userName); } catch (Exception e) { e.printStackTrace(); } } private static void importData(WrapperService ontology){ try { Class.forName("org.postgresql.Driver"); Connection conn = null; conn = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/diva","jurzua", "221082"); String sql = "SELECT * FROM imageserve_manuscript"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); int countNoCodex = 0; int countYesCodex = 0; int countIdCodex = 0; List<String> noCodexList = new ArrayList<String>(); List<Entity> list = new ArrayList<Entity>(); while(rs.next()){ String directory = rs.getString("directory"); Long ismi_id = rs.getLong("ismi_id"); Integer numFiles = rs.getInt("num_files"); Boolean hasFolioNums = rs.getBoolean("has_folio_nums"); String folioPgs = rs.getString("folio_pgs"); String ov = directory.replace("/data7/srv/images/", ""); Entity digi = new Entity(Node.TYPE_ABOX, DIGITALIZATION, false); digi.setOwnValue(ov); digi.addAttribute(new Attribute("name", "text", ov)); digi.addAttribute(new Attribute("num_files", "text", numFiles + "")); if(ismi_id != null && ismi_id != 0){ Entity codex = ontology.getEntityByIdWithContent(ismi_id); digi.replaceUniqueSourceRelation(codex, "CODEX", "is_digitalization_of"); countYesCodex++; }else{ List<Entity> list0 = ontology.getEntityByDefAndOW("CODEX", ov, 1); if(list0.size() > 0){ Entity codex = ontology.getEntityByIdWithContent(list0.get(0).getId()); digi.replaceUniqueSourceRelation(codex, "CODEX", "is_digitalization_of"); countIdCodex++; }else{ noCodexList.add(ov); countNoCodex++; } } list.add(digi); } conn.close(); ontology.saveEntityList(list, userName); System.out.println("countNoCodex: " + countNoCodex); System.out.println("countYesCodex: " + countYesCodex); System.out.println("countIdCodex: " + countIdCodex); System.out.println("list.size(): " + list.size()); System.out.println("END"); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args){ execute(); System.exit(0); } }