annotate src/main/java/org/mpi/openmind/scripts/DivaImport.java @ 76:f04bd29d284d

renamed replaceSourceRelation() to replaceUniqueSourceRelation() to make intent clearer.
author casties
date Fri, 24 Feb 2017 20:22:23 +0100
parents 615d27dce9b3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
jurzua
parents:
diff changeset
1 package org.mpi.openmind.scripts;
jurzua
parents:
diff changeset
2
jurzua
parents:
diff changeset
3 import java.sql.DriverManager;
jurzua
parents:
diff changeset
4 import java.sql.Connection;
jurzua
parents:
diff changeset
5 import java.sql.ResultSet;
jurzua
parents:
diff changeset
6 import java.sql.SQLException;
jurzua
parents:
diff changeset
7 import java.sql.Statement;
jurzua
parents:
diff changeset
8 import java.util.ArrayList;
jurzua
parents:
diff changeset
9 import java.util.List;
jurzua
parents:
diff changeset
10
jurzua
parents:
diff changeset
11 import org.apache.log4j.ConsoleAppender;
jurzua
parents:
diff changeset
12 import org.apache.log4j.Level;
jurzua
parents:
diff changeset
13 import org.apache.log4j.Logger;
jurzua
parents:
diff changeset
14 import org.apache.log4j.PatternLayout;
jurzua
parents:
diff changeset
15 import org.hibernate.mapping.Array;
jurzua
parents:
diff changeset
16 import org.mpi.openmind.cache.WrapperService;
jurzua
parents:
diff changeset
17 import org.mpi.openmind.repository.bo.Attribute;
jurzua
parents:
diff changeset
18 import org.mpi.openmind.repository.bo.Entity;
jurzua
parents:
diff changeset
19 import org.mpi.openmind.repository.bo.Node;
jurzua
parents:
diff changeset
20 import org.mpi.openmind.repository.bo.Relation;
jurzua
parents:
diff changeset
21 import org.mpi.openmind.repository.services.ServiceRegistry;
jurzua
parents:
diff changeset
22
jurzua
parents:
diff changeset
23 import cl.maps.utils.AttKey;
jurzua
parents:
diff changeset
24
jurzua
parents:
diff changeset
25
jurzua
parents:
diff changeset
26 public class DivaImport {
jurzua
parents:
diff changeset
27
jurzua
parents:
diff changeset
28 static{
jurzua
parents:
diff changeset
29 ConsoleAppender console = new ConsoleAppender(); //create appender
jurzua
parents:
diff changeset
30 //configure the appender
jurzua
parents:
diff changeset
31 String PATTERN = "%d [%p|%c|%C{1}] %m%n";
jurzua
parents:
diff changeset
32 console.setLayout(new PatternLayout(PATTERN));
jurzua
parents:
diff changeset
33 console.setThreshold(Level.INFO);
jurzua
parents:
diff changeset
34 console.activateOptions();
jurzua
parents:
diff changeset
35 //add appender to any Logger (here is root)
jurzua
parents:
diff changeset
36 Logger.getRootLogger().addAppender(console);
jurzua
parents:
diff changeset
37 }
jurzua
parents:
diff changeset
38
jurzua
parents:
diff changeset
39 public static String DIGITALIZATION = "DIGITALIZATION";
jurzua
parents:
diff changeset
40 public static String userName = "diva-import";
jurzua
parents:
diff changeset
41
jurzua
parents:
diff changeset
42 public static void execute(){
jurzua
parents:
diff changeset
43 ServiceRegistry services = new ServiceRegistry();
jurzua
parents:
diff changeset
44 createDataModel(services.getWrapper());
jurzua
parents:
diff changeset
45 importData(services.getWrapper());
jurzua
parents:
diff changeset
46 }
jurzua
parents:
diff changeset
47
jurzua
parents:
diff changeset
48 private static void createDataModel(WrapperService ontology){
jurzua
parents:
diff changeset
49
jurzua
parents:
diff changeset
50 try {
jurzua
parents:
diff changeset
51
jurzua
parents:
diff changeset
52 Entity digi = new Entity(Node.TYPE_TBOX, Node.TYPE_TBOX, false);
jurzua
parents:
diff changeset
53 digi.setOwnValue(DIGITALIZATION);
jurzua
parents:
diff changeset
54
jurzua
parents:
diff changeset
55 digi = ontology.saveLWDefinition(digi, userName);
jurzua
parents:
diff changeset
56
jurzua
parents:
diff changeset
57 Attribute attName = new Attribute(Node.TYPE_TBOX, "text", "name");
jurzua
parents:
diff changeset
58 attName.setSourceId(digi.getId());
jurzua
parents:
diff changeset
59 attName.setSourceObjectClass(Node.TYPE_TBOX);
jurzua
parents:
diff changeset
60 attName.setSourceModif(digi.getModificationTime());
jurzua
parents:
diff changeset
61 attName.setSystemStatus(Node.SYS_STATUS_CURRENT_VERSION);
jurzua
parents:
diff changeset
62
jurzua
parents:
diff changeset
63 ontology.saveDefAttribute(attName, userName);
jurzua
parents:
diff changeset
64
jurzua
parents:
diff changeset
65 Attribute num_files = new Attribute(Node.TYPE_TBOX, "text", "num_files");
jurzua
parents:
diff changeset
66 num_files.setSourceId(digi.getId());
jurzua
parents:
diff changeset
67 num_files.setSourceObjectClass(Node.TYPE_TBOX);
jurzua
parents:
diff changeset
68 num_files.setSourceModif(digi.getModificationTime());
jurzua
parents:
diff changeset
69 num_files.setSystemStatus(Node.SYS_STATUS_CURRENT_VERSION);
jurzua
parents:
diff changeset
70
jurzua
parents:
diff changeset
71 ontology.saveDefAttribute(num_files, userName);
jurzua
parents:
diff changeset
72
jurzua
parents:
diff changeset
73
jurzua
parents:
diff changeset
74 //DIGI is_digitalization_of CODEX
jurzua
parents:
diff changeset
75 Entity codex = ontology.getDefinition("CODEX");
jurzua
parents:
diff changeset
76 Relation rel = new Relation(digi, codex, "is_digitalization_of");
jurzua
parents:
diff changeset
77
jurzua
parents:
diff changeset
78 ontology.saveDefRelation(rel, userName);
jurzua
parents:
diff changeset
79
jurzua
parents:
diff changeset
80 //-----------
jurzua
parents:
diff changeset
81 Entity witness = ontology.getDefinition("WITNESS");
jurzua
parents:
diff changeset
82
jurzua
parents:
diff changeset
83 Attribute end_page = new Attribute(Node.TYPE_TBOX, "text", "end_page");
jurzua
parents:
diff changeset
84 end_page.setSourceId(witness.getId());
jurzua
parents:
diff changeset
85 end_page.setSourceObjectClass(Node.TYPE_TBOX);
jurzua
parents:
diff changeset
86 end_page.setSourceModif(witness.getModificationTime());
jurzua
parents:
diff changeset
87 end_page.setSystemStatus(Node.SYS_STATUS_CURRENT_VERSION);
jurzua
parents:
diff changeset
88
jurzua
parents:
diff changeset
89 ontology.saveDefAttribute(end_page, userName);
jurzua
parents:
diff changeset
90
jurzua
parents:
diff changeset
91 Attribute start_page = new Attribute(Node.TYPE_TBOX, "text", "start_page");
jurzua
parents:
diff changeset
92 start_page.setSourceId(witness.getId());
jurzua
parents:
diff changeset
93 start_page.setSourceObjectClass(Node.TYPE_TBOX);
jurzua
parents:
diff changeset
94 start_page.setSourceModif(witness.getModificationTime());
jurzua
parents:
diff changeset
95 start_page.setSystemStatus(Node.SYS_STATUS_CURRENT_VERSION);
jurzua
parents:
diff changeset
96
jurzua
parents:
diff changeset
97 ontology.saveDefAttribute(start_page, userName);
jurzua
parents:
diff changeset
98
jurzua
parents:
diff changeset
99
jurzua
parents:
diff changeset
100 } catch (Exception e) {
jurzua
parents:
diff changeset
101 e.printStackTrace();
jurzua
parents:
diff changeset
102 }
jurzua
parents:
diff changeset
103
jurzua
parents:
diff changeset
104
jurzua
parents:
diff changeset
105 }
jurzua
parents:
diff changeset
106
jurzua
parents:
diff changeset
107 private static void importData(WrapperService ontology){
jurzua
parents:
diff changeset
108 try {
jurzua
parents:
diff changeset
109
jurzua
parents:
diff changeset
110 Class.forName("org.postgresql.Driver");
jurzua
parents:
diff changeset
111 Connection conn = null;
jurzua
parents:
diff changeset
112 conn = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/diva","jurzua", "221082");
jurzua
parents:
diff changeset
113
jurzua
parents:
diff changeset
114 String sql = "SELECT * FROM imageserve_manuscript";
jurzua
parents:
diff changeset
115
jurzua
parents:
diff changeset
116 Statement stmt = conn.createStatement();
jurzua
parents:
diff changeset
117 ResultSet rs = stmt.executeQuery(sql);
jurzua
parents:
diff changeset
118 int countNoCodex = 0;
jurzua
parents:
diff changeset
119 int countYesCodex = 0;
jurzua
parents:
diff changeset
120 int countIdCodex = 0;
jurzua
parents:
diff changeset
121 List<String> noCodexList = new ArrayList<String>();
jurzua
parents:
diff changeset
122
jurzua
parents:
diff changeset
123 List<Entity> list = new ArrayList<Entity>();
jurzua
parents:
diff changeset
124 while(rs.next()){
jurzua
parents:
diff changeset
125 String directory = rs.getString("directory");
jurzua
parents:
diff changeset
126 Long ismi_id = rs.getLong("ismi_id");
jurzua
parents:
diff changeset
127 Integer numFiles = rs.getInt("num_files");
jurzua
parents:
diff changeset
128 Boolean hasFolioNums = rs.getBoolean("has_folio_nums");
jurzua
parents:
diff changeset
129 String folioPgs = rs.getString("folio_pgs");
jurzua
parents:
diff changeset
130
jurzua
parents:
diff changeset
131 String ov = directory.replace("/data7/srv/images/", "");
jurzua
parents:
diff changeset
132
jurzua
parents:
diff changeset
133 Entity digi = new Entity(Node.TYPE_ABOX, DIGITALIZATION, false);
jurzua
parents:
diff changeset
134 digi.setOwnValue(ov);
jurzua
parents:
diff changeset
135
jurzua
parents:
diff changeset
136 digi.addAttribute(new Attribute("name", "text", ov));
jurzua
parents:
diff changeset
137 digi.addAttribute(new Attribute("num_files", "text", numFiles + ""));
jurzua
parents:
diff changeset
138
jurzua
parents:
diff changeset
139
jurzua
parents:
diff changeset
140 if(ismi_id != null && ismi_id != 0){
jurzua
parents:
diff changeset
141 Entity codex = ontology.getEntityByIdWithContent(ismi_id);
76
f04bd29d284d renamed replaceSourceRelation() to replaceUniqueSourceRelation() to make intent clearer.
casties
parents: 1
diff changeset
142 digi.replaceUniqueSourceRelation(codex, "CODEX", "is_digitalization_of");
1
jurzua
parents:
diff changeset
143 countYesCodex++;
jurzua
parents:
diff changeset
144 }else{
jurzua
parents:
diff changeset
145 List<Entity> list0 = ontology.getEntityByDefAndOW("CODEX", ov, 1);
jurzua
parents:
diff changeset
146 if(list0.size() > 0){
jurzua
parents:
diff changeset
147 Entity codex = ontology.getEntityByIdWithContent(list0.get(0).getId());
76
f04bd29d284d renamed replaceSourceRelation() to replaceUniqueSourceRelation() to make intent clearer.
casties
parents: 1
diff changeset
148 digi.replaceUniqueSourceRelation(codex, "CODEX", "is_digitalization_of");
1
jurzua
parents:
diff changeset
149 countIdCodex++;
jurzua
parents:
diff changeset
150 }else{
jurzua
parents:
diff changeset
151 noCodexList.add(ov);
jurzua
parents:
diff changeset
152 countNoCodex++;
jurzua
parents:
diff changeset
153 }
jurzua
parents:
diff changeset
154 }
jurzua
parents:
diff changeset
155
jurzua
parents:
diff changeset
156 list.add(digi);
jurzua
parents:
diff changeset
157 }
jurzua
parents:
diff changeset
158
jurzua
parents:
diff changeset
159
jurzua
parents:
diff changeset
160 conn.close();
jurzua
parents:
diff changeset
161
jurzua
parents:
diff changeset
162 ontology.saveEntityList(list, userName);
jurzua
parents:
diff changeset
163
jurzua
parents:
diff changeset
164 System.out.println("countNoCodex: " + countNoCodex);
jurzua
parents:
diff changeset
165 System.out.println("countYesCodex: " + countYesCodex);
jurzua
parents:
diff changeset
166 System.out.println("countIdCodex: " + countIdCodex);
jurzua
parents:
diff changeset
167 System.out.println("list.size(): " + list.size());
jurzua
parents:
diff changeset
168 System.out.println("END");
jurzua
parents:
diff changeset
169
jurzua
parents:
diff changeset
170 } catch (Exception e) {
jurzua
parents:
diff changeset
171 e.printStackTrace();
jurzua
parents:
diff changeset
172 }
jurzua
parents:
diff changeset
173 }
jurzua
parents:
diff changeset
174
jurzua
parents:
diff changeset
175
jurzua
parents:
diff changeset
176 public static void main(String[] args){
jurzua
parents:
diff changeset
177 execute();
jurzua
parents:
diff changeset
178 System.exit(0);
jurzua
parents:
diff changeset
179 }
jurzua
parents:
diff changeset
180 }