diff --git a/ccm-cms-dabinimporter/application.xml b/ccm-cms-dabinimporter/application.xml
index 3dc87be05..60bbe5b83 100644
--- a/ccm-cms-dabinimporter/application.xml
+++ b/ccm-cms-dabinimporter/application.xml
@@ -16,6 +16,7 @@
+
diff --git a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/DaBInImporter.java b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/DaBInImporter.java
index eed04f186..952e09d4c 100644
--- a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/DaBInImporter.java
+++ b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/DaBInImporter.java
@@ -46,6 +46,8 @@ import com.arsdigita.cms.contenttypes.SciOrganization;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.contenttypes.WorkingPaper;
import com.arsdigita.domain.DataObjectNotFoundException;
+import com.arsdigita.london.terms.Domain;
+import com.arsdigita.london.terms.Term;
import com.arsdigita.london.util.Transaction;
import com.arsdigita.packaging.Program;
import java.io.File;
@@ -60,6 +62,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Enumeration;
import java.util.GregorianCalendar;
import java.util.HashMap;
@@ -70,6 +73,7 @@ import java.util.StringTokenizer;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.apache.commons.cli.CommandLine;
+import org.apache.commons.codec.binary.Base64;
import org.apache.log4j.Logger;
/**
@@ -84,18 +88,23 @@ public class DaBInImporter extends Program {
private Connection connection = null;
private Folder root;
private Folder authors;
- private Map authorsAlpha;
+ private Map authorsAlpha;
private Folder contacts;
+ private Map contactsAlpha;
private Folder departments;
private Folder members;
- private Map membersAlpha;
+ private Map membersAlpha;
private Folder organization;
private Folder persons;
- private Map personsAlpha;
+ private Map personsAlpha;
private Folder projects;
+ private Map projectsAlpha;
private Folder publications;
+ private Map publicationsAlpha;
private Folder publishers;
+ private Map publishersAlpha;
private Folder files;
+ private Map filesAlpha;
private Map departmentsMap;
private Map personsMap;
private Map projectsMap;
@@ -107,29 +116,39 @@ public class DaBInImporter extends Program {
private ContentBundle orga;
private Address postalAddress;
private Address officeAddress;
+ private Domain termsDomain;
+ private Term publicationsTerm;
+ private Map publicationTerms;
+ private Term workingPapersTerm;
+ private Map workingPaperTerms;
+ private Term currentProjectsTerm;
+ private Term finishedProjectsTerm;
public DaBInImporter() {
this(true);
}
public DaBInImporter(boolean startup) {
- /*super("DaBInImporter",
- "0.1.0",
- "MySQLHost MySQLUser MySQLPassword MySQLDB OrgaTitle OrgaName contentSection",
- startup);*/
super("DaBInImporter",
"0.1.0",
"configFile",
startup);
- authorsAlpha = new HashMap(12);
- membersAlpha = new HashMap(12);
- personsAlpha = new HashMap(12);
+ authorsAlpha = new HashMap(27);
+ membersAlpha = new HashMap(27);
+ personsAlpha = new HashMap(27);
+ contactsAlpha = new HashMap(27);
+ projectsAlpha = new HashMap(27);
+ publicationsAlpha = new HashMap(27);
+ publishersAlpha = new HashMap(27);
+ filesAlpha = new HashMap(27);
departmentsMap = new HashMap();
personsMap = new HashMap();
projectsMap = new HashMap();
publishersMap = new HashMap();
publicationMap = new HashMap();
workingPaperMap = new HashMap();
+ publicationTerms = new HashMap(30);
+ workingPaperTerms = new HashMap(30);
}
@Override
@@ -139,8 +158,6 @@ public class DaBInImporter extends Program {
String mySqlUser;
String mySqlPassword;
String mySqlDb;
- String orgaTitle;
- String orgaName;
System.out.println("");
System.out.println("");
@@ -209,96 +226,433 @@ public class DaBInImporter extends Program {
root = section.getRootFolder();
authors = createFolder(root, "autoren", "Autoren");
- folder = createFolder(authors, "ab", "A - B");
- authorsAlpha.put("ab", folder);
- folder = createFolder(authors, "cd", "C - D");
- authorsAlpha.put("cd", folder);
- folder = createFolder(authors, "ef", "E - F");
- authorsAlpha.put("ef", folder);
- folder = createFolder(authors, "gh", "G - H");
- authorsAlpha.put("gh", folder);
- folder = createFolder(authors, "ij", "I - J");
- authorsAlpha.put("ij", folder);
- folder = createFolder(authors, "kl", "K - L");
- authorsAlpha.put("kl", folder);
- folder = createFolder(authors, "mn", "M - N");
- authorsAlpha.put("mn", folder);
- folder = createFolder(authors, "op", "O - P");
- authorsAlpha.put("op", folder);
- folder = createFolder(authors, "qr", "Q - R");
- authorsAlpha.put("qr", folder);
- folder = createFolder(authors, "st", "S - T");
- authorsAlpha.put("st", folder);
- folder = createFolder(authors, "uv", "U - V");
- authorsAlpha.put("uv", folder);
- folder = createFolder(authors, "wxzy", "W - Z");
- authorsAlpha.put("wxyz", folder);
+ folder = createFolder(authors, "09", "0-9");
+ authorsAlpha.put('0', folder);
+ folder = createFolder(authors, "ab", "A-B");
+ authorsAlpha.put('a', folder);
+ authorsAlpha.put('b', folder);
+ folder = createFolder(authors, "cd", "C-D");
+ authorsAlpha.put('c', folder);
+ authorsAlpha.put('d', folder);
+ folder = createFolder(authors, "ef", "E-F");
+ authorsAlpha.put('e', folder);
+ authorsAlpha.put('f', folder);
+ folder = createFolder(authors, "gh", "G-H");
+ authorsAlpha.put('g', folder);
+ authorsAlpha.put('h', folder);
+ folder = createFolder(authors, "ij", "I-J");
+ authorsAlpha.put('i', folder);
+ authorsAlpha.put('j', folder);
+ folder = createFolder(authors, "kl", "K-L");
+ authorsAlpha.put('k', folder);
+ authorsAlpha.put('l', folder);
+ folder = createFolder(authors, "mn", "M-N");
+ authorsAlpha.put('m', folder);
+ authorsAlpha.put('n', folder);
+ folder = createFolder(authors, "op", "O-P");
+ authorsAlpha.put('o', folder);
+ authorsAlpha.put('p', folder);
+ folder = createFolder(authors, "qr", "Q-R");
+ authorsAlpha.put('q', folder);
+ authorsAlpha.put('r', folder);
+ folder = createFolder(authors, "st", "S-T");
+ authorsAlpha.put('s', folder);
+ authorsAlpha.put('t', folder);
+ folder = createFolder(authors, "uv", "U-V");
+ authorsAlpha.put('u', folder);
+ authorsAlpha.put('v', folder);
+ folder = createFolder(authors, "wxzy", "W-Z");
+ authorsAlpha.put('w', folder);
+ authorsAlpha.put('x', folder);
+ authorsAlpha.put('y', folder);
+ authorsAlpha.put('z', folder);
contacts = createFolder(root, "kontaktdaten", "Kontaktdaten");
+ folder = createFolder(contacts, "09", "0-9");
+ contactsAlpha.put('0', folder);
+ folder = createFolder(contacts, "ab", "A-B");
+ contactsAlpha.put('a', folder);
+ contactsAlpha.put('b', folder);
+ folder = createFolder(contacts, "cd", "C-D");
+ contactsAlpha.put('c', folder);
+ contactsAlpha.put('d', folder);
+ folder = createFolder(contacts, "ef", "E-F");
+ contactsAlpha.put('e', folder);
+ contactsAlpha.put('f', folder);
+ folder = createFolder(contacts, "gh", "G-H");
+ contactsAlpha.put('g', folder);
+ contactsAlpha.put('h', folder);
+ folder = createFolder(contacts, "ij", "I-J");
+ contactsAlpha.put('i', folder);
+ contactsAlpha.put('j', folder);
+ folder = createFolder(contacts, "kl", "K-L");
+ contactsAlpha.put('k', folder);
+ contactsAlpha.put('l', folder);
+ folder = createFolder(contacts, "mn", "M-N");
+ contactsAlpha.put('m', folder);
+ contactsAlpha.put('n', folder);
+ folder = createFolder(contacts, "op", "O-P");
+ contactsAlpha.put('o', folder);
+ contactsAlpha.put('p', folder);
+ folder = createFolder(contacts, "qr", "Q-R");
+ contactsAlpha.put('q', folder);
+ contactsAlpha.put('r', folder);
+ folder = createFolder(contacts, "st", "S-T");
+ contactsAlpha.put('s', folder);
+ contactsAlpha.put('t', folder);
+ folder = createFolder(contacts, "uv", "U-V");
+ contactsAlpha.put('u', folder);
+ contactsAlpha.put('v', folder);
+ folder = createFolder(contacts, "wxzy", "W-Z");
+ contactsAlpha.put('w', folder);
+ contactsAlpha.put('x', folder);
+ contactsAlpha.put('y', folder);
+ contactsAlpha.put('z', folder);
departments = createFolder(root, "abteilungen", "Abteilungen");
members = createFolder(root, "mitglieder", "Mitglieder");
- folder = createFolder(members, "ab", "A - B");
- membersAlpha.put("ab", folder);
- folder = createFolder(members, "cd", "C - D");
- membersAlpha.put("cd", folder);
- folder = createFolder(members, "ef", "E - F");
- membersAlpha.put("ef", folder);
- folder = createFolder(members, "gh", "G - H");
- membersAlpha.put("gh", folder);
- folder = createFolder(members, "ij", "I - J");
- membersAlpha.put("ij", folder);
- folder = createFolder(members, "kl", "K - L");
- membersAlpha.put("kl", folder);
- folder = createFolder(members, "mn", "M - N");
- membersAlpha.put("mn", folder);
- folder = createFolder(members, "op", "O - P");
- membersAlpha.put("op", folder);
- folder = createFolder(members, "qr", "Q - R");
- membersAlpha.put("qr", folder);
- folder = createFolder(members, "st", "S - T");
- membersAlpha.put("st", folder);
- folder = createFolder(members, "uv", "U - V");
- membersAlpha.put("uv", folder);
- folder = createFolder(members, "wxzy", "W - Z");
- membersAlpha.put("wxyz", folder);
+ folder = createFolder(members, "09", "0-9");
+ membersAlpha.put('0', folder);
+ folder = createFolder(members, "ab", "A-B");
+ membersAlpha.put('a', folder);
+ membersAlpha.put('b', folder);
+ folder = createFolder(members, "cd", "C-D");
+ membersAlpha.put('c', folder);
+ membersAlpha.put('d', folder);
+ folder = createFolder(members, "ef", "E-F");
+ membersAlpha.put('e', folder);
+ membersAlpha.put('f', folder);
+ folder = createFolder(members, "gh", "G-H");
+ membersAlpha.put('g', folder);
+ membersAlpha.put('h', folder);
+ folder = createFolder(members, "ij", "I-J");
+ membersAlpha.put('i', folder);
+ membersAlpha.put('j', folder);
+ folder = createFolder(members, "kl", "K-L");
+ membersAlpha.put('k', folder);
+ membersAlpha.put('l', folder);
+ folder = createFolder(members, "mn", "M-N");
+ membersAlpha.put('m', folder);
+ membersAlpha.put('n', folder);
+ folder = createFolder(members, "op", "O-P");
+ membersAlpha.put('o', folder);
+ membersAlpha.put('p', folder);
+ folder = createFolder(members, "qr", "Q-R");
+ membersAlpha.put('q', folder);
+ membersAlpha.put('r', folder);
+ folder = createFolder(members, "st", "S-T");
+ membersAlpha.put('s', folder);
+ membersAlpha.put('t', folder);
+ folder = createFolder(members, "uv", "U-V");
+ membersAlpha.put('u', folder);
+ membersAlpha.put('v', folder);
+ folder = createFolder(members, "wxzy", "W-Z");
+ membersAlpha.put('w', folder);
+ membersAlpha.put('x', folder);
+ membersAlpha.put('y', folder);
+ membersAlpha.put('z', folder);
organization = createFolder(root, "organisationen", "Organisation(en)");
persons = createFolder(root, "personen", "Personen");
- folder = createFolder(persons, "ab", "A - B");
- personsAlpha.put("ab", folder);
- folder = createFolder(persons, "cd", "C - D");
- personsAlpha.put("cd", folder);
- folder = createFolder(persons, "ef", "E - F");
- personsAlpha.put("ef", folder);
- folder = createFolder(persons, "gh", "G - H");
- personsAlpha.put("gh", folder);
- folder = createFolder(persons, "ij", "I - J");
- personsAlpha.put("ij", folder);
- folder = createFolder(persons, "kl", "K - L");
- personsAlpha.put("kl", folder);
- folder = createFolder(persons, "mn", "M - N");
- personsAlpha.put("mn", folder);
- folder = createFolder(persons, "op", "O - P");
- personsAlpha.put("op", folder);
- folder = createFolder(persons, "qr", "Q - R");
- personsAlpha.put("qr", folder);
- folder = createFolder(persons, "st", "S - T");
- personsAlpha.put("st", folder);
- folder = createFolder(persons, "uv", "U - V");
- personsAlpha.put("uv", folder);
- folder = createFolder(persons, "wxzy", "W - Z");
- personsAlpha.put("wxyz", folder);
+ folder = createFolder(persons, "09", "0-9");
+ personsAlpha.put('0', folder);
+ folder = createFolder(persons, "ab", "A-B");
+ personsAlpha.put('a', folder);
+ personsAlpha.put('b', folder);
+ folder = createFolder(persons, "cd", "C-D");
+ personsAlpha.put('c', folder);
+ personsAlpha.put('d', folder);
+ folder = createFolder(persons, "ef", "E-F");
+ personsAlpha.put('e', folder);
+ personsAlpha.put('f', folder);
+ folder = createFolder(persons, "gh", "G-H");
+ personsAlpha.put('g', folder);
+ personsAlpha.put('h', folder);
+ folder = createFolder(persons, "ij", "I-J");
+ personsAlpha.put('i', folder);
+ personsAlpha.put('j', folder);
+ folder = createFolder(persons, "kl", "K-L");
+ personsAlpha.put('k', folder);
+ personsAlpha.put('l', folder);
+ folder = createFolder(persons, "mn", "M-N");
+ personsAlpha.put('m', folder);
+ personsAlpha.put('n', folder);
+ folder = createFolder(persons, "op", "O-P");
+ personsAlpha.put('o', folder);
+ personsAlpha.put('p', folder);
+ folder = createFolder(persons, "qr", "Q-R");
+ personsAlpha.put('q', folder);
+ personsAlpha.put('r', folder);
+ folder = createFolder(persons, "st", "S-T");
+ personsAlpha.put('s', folder);
+ personsAlpha.put('t', folder);
+ folder = createFolder(persons, "uv", "U-V");
+ personsAlpha.put('u', folder);
+ personsAlpha.put('v', folder);
+ folder = createFolder(persons, "wxzy", "W-Z");
+ personsAlpha.put('w', folder);
+ personsAlpha.put('x', folder);
+ personsAlpha.put('y', folder);
+ personsAlpha.put('z', folder);
projects = createFolder(root, "projekte", "Projekte");
+ folder = createFolder(projects, "09", "0-9");
+ projectsAlpha.put('0', folder);
+ folder = createFolder(projects, "a", "A");
+ projectsAlpha.put('a', folder);
+ folder = createFolder(projects, "b", "B");
+ projectsAlpha.put('b', folder);
+ folder = createFolder(projects, "c", "C");
+ projectsAlpha.put('c', folder);
+ folder = createFolder(projects, "d", "D");
+ projectsAlpha.put('d', folder);
+ folder = createFolder(projects, "e", "E");
+ projectsAlpha.put('e', folder);
+ folder = createFolder(projects, "f", "F");
+ projectsAlpha.put('f', folder);
+ folder = createFolder(projects, "g", "G");
+ projectsAlpha.put('g', folder);
+ folder = createFolder(projects, "h", "H");
+ projectsAlpha.put('h', folder);
+ folder = createFolder(projects, "i", "I");
+ projectsAlpha.put('i', folder);
+ folder = createFolder(projects, "j", "J");
+ projectsAlpha.put('j', folder);
+ folder = createFolder(projects, "k", "K");
+ projectsAlpha.put('k', folder);
+ folder = createFolder(projects, "l", "L");
+ projectsAlpha.put('l', folder);
+ folder = createFolder(projects, "m", "M");
+ projectsAlpha.put('m', folder);
+ folder = createFolder(projects, "n", "N");
+ projectsAlpha.put('n', folder);
+ folder = createFolder(projects, "o", "O");
+ projectsAlpha.put('o', folder);
+ folder = createFolder(projects, "p", "P");
+ projectsAlpha.put('p', folder);
+ folder = createFolder(projects, "q", "Q");
+ projectsAlpha.put('q', folder);
+ folder = createFolder(projects, "r", "R");
+ projectsAlpha.put('r', folder);
+ folder = createFolder(projects, "s", "S");
+ projectsAlpha.put('s', folder);
+ folder = createFolder(projects, "t", "T");
+ projectsAlpha.put('t', folder);
+ folder = createFolder(projects, "u", "U");
+ projectsAlpha.put('u', folder);
+ folder = createFolder(projects, "v", "V");
+ projectsAlpha.put('v', folder);
+ folder = createFolder(projects, "w", "W");
+ projectsAlpha.put('w', folder);
+ folder = createFolder(projects, "x", "X");
+ projectsAlpha.put('x', folder);
+ folder = createFolder(projects, "y", "Y");
+ projectsAlpha.put('y', folder);
+ folder = createFolder(projects, "z", "Z");
+ projectsAlpha.put('z', folder);
publishers = createFolder(root, "verlage", "Verlage");
+ folder = createFolder(publishers, "09", "0-9");
+ publishersAlpha.put('0', folder);
+ folder = createFolder(publishers, "a", "A");
+ publishersAlpha.put('a', folder);
+ folder = createFolder(publishers, "b", "B");
+ publishersAlpha.put('b', folder);
+ folder = createFolder(publishers, "c", "C");
+ publishersAlpha.put('c', folder);
+ folder = createFolder(publishers, "d", "D");
+ publishersAlpha.put('d', folder);
+ folder = createFolder(publishers, "e", "E");
+ publishersAlpha.put('e', folder);
+ folder = createFolder(publishers, "f", "F");
+ publishersAlpha.put('f', folder);
+ folder = createFolder(publishers, "g", "G");
+ publishersAlpha.put('g', folder);
+ folder = createFolder(publishers, "h", "H");
+ publishersAlpha.put('h', folder);
+ folder = createFolder(publishers, "i", "I");
+ publishersAlpha.put('i', folder);
+ folder = createFolder(publishers, "j", "J");
+ publishersAlpha.put('j', folder);
+ folder = createFolder(publishers, "k", "K");
+ publishersAlpha.put('k', folder);
+ folder = createFolder(publishers, "l", "L");
+ publishersAlpha.put('l', folder);
+ folder = createFolder(publishers, "m", "M");
+ publishersAlpha.put('m', folder);
+ folder = createFolder(publishers, "n", "N");
+ publishersAlpha.put('n', folder);
+ folder = createFolder(publishers, "o", "O");
+ publishersAlpha.put('o', folder);
+ folder = createFolder(publishers, "p", "P");
+ publishersAlpha.put('p', folder);
+ folder = createFolder(publishers, "q", "Q");
+ publishersAlpha.put('q', folder);
+ folder = createFolder(publishers, "r", "R");
+ publishersAlpha.put('r', folder);
+ folder = createFolder(publishers, "s", "S");
+ publishersAlpha.put('s', folder);
+ folder = createFolder(publishers, "t", "T");
+ publishersAlpha.put('t', folder);
+ folder = createFolder(publishers, "u", "U");
+ publishersAlpha.put('u', folder);
+ folder = createFolder(publishers, "v", "V");
+ publishersAlpha.put('v', folder);
+ folder = createFolder(publishers, "w", "W");
+ publishersAlpha.put('w', folder);
+ folder = createFolder(publishers, "x", "X");
+ publishersAlpha.put('x', folder);
+ folder = createFolder(publishers, "y", "Y");
+ publishersAlpha.put('y', folder);
+ folder = createFolder(publishers, "z", "Z");
+ publishersAlpha.put('z', folder);
publications = createFolder(root, "publikationen", "Publikationen");
+ folder = createFolder(publications, "09", "0-9");
+ publicationsAlpha.put('0', folder);
+ folder = createFolder(publications, "a", "A");
+ publicationsAlpha.put('a', folder);
+ folder = createFolder(publications, "b", "B");
+ publicationsAlpha.put('b', folder);
+ folder = createFolder(publications, "c", "C");
+ publicationsAlpha.put('c', folder);
+ folder = createFolder(publications, "d", "D");
+ publicationsAlpha.put('d', folder);
+ folder = createFolder(publications, "e", "E");
+ publicationsAlpha.put('e', folder);
+ folder = createFolder(publications, "f", "F");
+ publicationsAlpha.put('f', folder);
+ folder = createFolder(publications, "g", "G");
+ publicationsAlpha.put('g', folder);
+ folder = createFolder(publications, "h", "H");
+ publicationsAlpha.put('h', folder);
+ folder = createFolder(publications, "i", "I");
+ publicationsAlpha.put('i', folder);
+ folder = createFolder(publications, "j", "J");
+ publicationsAlpha.put('j', folder);
+ folder = createFolder(publications, "k", "K");
+ publicationsAlpha.put('k', folder);
+ folder = createFolder(publications, "l", "L");
+ publicationsAlpha.put('l', folder);
+ folder = createFolder(publications, "m", "M");
+ publicationsAlpha.put('m', folder);
+ folder = createFolder(publications, "n", "N");
+ publicationsAlpha.put('n', folder);
+ folder = createFolder(publications, "o", "O");
+ publicationsAlpha.put('o', folder);
+ folder = createFolder(publications, "p", "P");
+ publicationsAlpha.put('p', folder);
+ folder = createFolder(publications, "q", "Q");
+ publicationsAlpha.put('q', folder);
+ folder = createFolder(publications, "r", "R");
+ publicationsAlpha.put('r', folder);
+ folder = createFolder(publications, "s", "S");
+ publicationsAlpha.put('s', folder);
+ folder = createFolder(publications, "t", "T");
+ publicationsAlpha.put('t', folder);
+ folder = createFolder(publications, "u", "U");
+ publicationsAlpha.put('u', folder);
+ folder = createFolder(publications, "v", "V");
+ publicationsAlpha.put('v', folder);
+ folder = createFolder(publications, "w", "W");
+ publicationsAlpha.put('w', folder);
+ folder = createFolder(publications, "x", "X");
+ publicationsAlpha.put('x', folder);
+ folder = createFolder(publications, "y", "Y");
+ publicationsAlpha.put('y', folder);
+ folder = createFolder(publications, "z", "Z");
+ publicationsAlpha.put('z', folder);
files = createFolder(root, "dateien", "Dateien");
+ folder = createFolder(files, "09", "0-9");
+ filesAlpha.put('0', folder);
+ folder = createFolder(files, "a", "A");
+ filesAlpha.put('a', folder);
+ folder = createFolder(files, "b", "B");
+ filesAlpha.put('b', folder);
+ folder = createFolder(files, "c", "C");
+ filesAlpha.put('c', folder);
+ folder = createFolder(files, "d", "D");
+ filesAlpha.put('d', folder);
+ folder = createFolder(files, "e", "E");
+ filesAlpha.put('e', folder);
+ folder = createFolder(files, "f", "F");
+ filesAlpha.put('f', folder);
+ folder = createFolder(files, "g", "G");
+ filesAlpha.put('g', folder);
+ folder = createFolder(files, "h", "H");
+ filesAlpha.put('h', folder);
+ folder = createFolder(files, "i", "I");
+ filesAlpha.put('i', folder);
+ folder = createFolder(files, "j", "J");
+ filesAlpha.put('j', folder);
+ folder = createFolder(files, "k", "K");
+ filesAlpha.put('k', folder);
+ folder = createFolder(files, "l", "L");
+ filesAlpha.put('l', folder);
+ folder = createFolder(files, "m", "M");
+ filesAlpha.put('m', folder);
+ folder = createFolder(files, "n", "N");
+ filesAlpha.put('n', folder);
+ folder = createFolder(files, "o", "O");
+ filesAlpha.put('o', folder);
+ folder = createFolder(files, "p", "P");
+ filesAlpha.put('p', folder);
+ folder = createFolder(files, "q", "Q");
+ filesAlpha.put('q', folder);
+ folder = createFolder(files, "r", "R");
+ filesAlpha.put('r', folder);
+ folder = createFolder(files, "s", "S");
+ filesAlpha.put('s', folder);
+ folder = createFolder(files, "t", "T");
+ filesAlpha.put('t', folder);
+ folder = createFolder(files, "u", "U");
+ filesAlpha.put('u', folder);
+ folder = createFolder(files, "v", "V");
+ filesAlpha.put('v', folder);
+ folder = createFolder(files, "w", "W");
+ filesAlpha.put('w', folder);
+ folder = createFolder(files, "x", "X");
+ filesAlpha.put('x', folder);
+ folder = createFolder(files, "y", "Y");
+ filesAlpha.put('y', folder);
+ folder = createFolder(files, "z", "Z");
+ filesAlpha.put('z', folder);
+
+ System.out.println(
+ "\nRetrieving terms/categories and creating them if necsseary...");
+ try {
+ termsDomain = Domain.retrieve(
+ (String) config.get("terms.domain.key"));
+
+ System.out.println("Terms for publications...");
+ String publicationsTermPath = (String) config.get(
+ "terms.publications");
+ publicationsTerm = checkTermPath(publicationsTermPath);
+ publicationTerms = checkYearTerms(publicationsTerm,
+ getPublicationYears());
+
+ System.out.println("Terms for working papers...");
+ String workingPapersTermPath =
+ (String) config.get("terms.workingpapers");
+ workingPapersTerm = checkTermPath(workingPapersTermPath);
+ workingPaperTerms = checkYearTerms(workingPapersTerm,
+ getWorkingPaperYears());
+
+ System.out.println("Term for current projects...");
+ String currentProjectsTermPath = (String) config.get(
+ "terms.projects.current");
+ currentProjectsTerm = checkTermPath(currentProjectsTermPath);
+
+ System.out.println("Term for finished projects...");
+ String finishedProjectsTermPath = (String) config.get(
+ "terms.projects.finished");
+ finishedProjectsTerm = checkTermPath(finishedProjectsTermPath);
+ } catch (Exception ex) {
+ ex.printStackTrace(System.err);
+ }
System.out.print("Creating organization item and "
+ "postal and office address items...");
@@ -847,6 +1201,9 @@ public class DaBInImporter extends Program {
Statement stmt = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
+ Statement stmt2 = connection.createStatement(
+ ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
ResultSet result;
long counter = 1;
@@ -884,18 +1241,20 @@ public class DaBInImporter extends Program {
data.setVisiblity(PublicationVisibility.GLOBAL);
}
- result = stmt.executeQuery(String.format(
+ ResultSet authorResult = stmt2.executeQuery(String.format(
"SELECT Beteiligung, Person_Id "
+ "FROM publikationlink "
+ "WHERE Publikation_Id = %s "
+ "ORDER BY Reihenfolge",
data.getPublicationDaBInId()));
- while (result.next()) {
+ while (authorResult.next()) {
Authorship authorship;
authorship = new Authorship();
- authorship.setPersonDaBInId(result.getString("Person_Id"));
- authorship.setBeteiligung(result.getString("Beteiligung"));
+ authorship.setPersonDaBInId(authorResult.getString(
+ "Person_Id"));
+ authorship.setBeteiligung(authorResult.getString(
+ "Beteiligung"));
data.addAuthor(authorship);
}
@@ -906,10 +1265,10 @@ public class DaBInImporter extends Program {
}
} catch (SQLException ex) {
- System.out.println("FAILED");
+ System.err.println("FAILED");
ex.printStackTrace(System.err);
} catch (Exception ex) {
- System.out.println("FAILED");
+ System.err.println("FAILED");
ex.printStackTrace(System.err);
}
@@ -918,6 +1277,9 @@ public class DaBInImporter extends Program {
Statement stmt = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
+ Statement stmt2 = connection.createStatement(
+ ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
ResultSet result;
long counter = 1;
@@ -954,18 +1316,20 @@ public class DaBInImporter extends Program {
data.setVisiblity(PublicationVisibility.GLOBAL);
}
- result = stmt.executeQuery(String.format(
+ ResultSet authorResult = stmt2.executeQuery(String.format(
"SELECT Beteiligung, Person_Id "
+ "FROM publikationlink "
+ "WHERE Publikation_Id = %s "
+ "ORDER BY Reihenfolge",
data.getPublicationDaBInId()));
- while (result.next()) {
+ while (authorResult.next()) {
Authorship authorship;
authorship = new Authorship();
- authorship.setPersonDaBInId(result.getString("Person_Id"));
- authorship.setBeteiligung(result.getString("Beteiligung"));
+ authorship.setPersonDaBInId(authorResult.getString(
+ "Person_Id"));
+ authorship.setBeteiligung(authorResult.getString(
+ "Beteiligung"));
data.addAuthor(authorship);
}
@@ -987,6 +1351,9 @@ public class DaBInImporter extends Program {
Statement stmt = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
+ Statement stmt2 = connection.createStatement(
+ ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
ResultSet result;
long counter = 1;
@@ -1027,18 +1394,20 @@ public class DaBInImporter extends Program {
}
extractPages(result.getString("Verlag"), data);
- result = stmt.executeQuery(String.format(
+ ResultSet authorResult = stmt2.executeQuery(String.format(
"SELECT Beteiligung, Person_Id "
+ "FROM publikationlink "
+ "WHERE Publikation_Id = %s "
+ "ORDER BY Reihenfolge",
data.getPublicationDaBInId()));
- while (result.next()) {
+ while (authorResult.next()) {
Authorship authorship;
authorship = new Authorship();
- authorship.setPersonDaBInId(result.getString("Person_Id"));
- authorship.setBeteiligung(result.getString("Beteiligung"));
+ authorship.setPersonDaBInId(authorResult.getString(
+ "Person_Id"));
+ authorship.setBeteiligung(authorResult.getString(
+ "Beteiligung"));
data.addAuthor(authorship);
}
@@ -1060,6 +1429,9 @@ public class DaBInImporter extends Program {
Statement stmt = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
+ Statement stmt2 = connection.createStatement(
+ ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
ResultSet result;
long counter = 1;
@@ -1098,18 +1470,20 @@ public class DaBInImporter extends Program {
}
extractPages(result.getString("Verlag"), data);
- result = stmt.executeQuery(String.format(
+ ResultSet authorResult = stmt2.executeQuery(String.format(
"SELECT Beteiligung, Person_Id "
+ "FROM publikationlink "
+ "WHERE Publikation_Id = %s "
+ "ORDER BY Reihenfolge",
data.getPublicationDaBInId()));
- while (result.next()) {
+ while (authorResult.next()) {
Authorship authorship;
authorship = new Authorship();
- authorship.setPersonDaBInId(result.getString("Person_Id"));
- authorship.setBeteiligung(result.getString("Beteiligung"));
+ authorship.setPersonDaBInId(authorResult.getString(
+ "Person_Id"));
+ authorship.setBeteiligung(authorResult.getString(
+ "Beteiligung"));
data.addAuthor(authorship);
}
@@ -1131,6 +1505,10 @@ public class DaBInImporter extends Program {
Statement stmt = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
+ Statement stmt2 = connection.createStatement(
+ ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+
ResultSet result;
long counter = 1;
@@ -1168,18 +1546,20 @@ public class DaBInImporter extends Program {
data.setVisiblity(PublicationVisibility.GLOBAL);
}
- result = stmt.executeQuery(String.format(
+ ResultSet authorResult = stmt2.executeQuery(String.format(
"SELECT Beteiligung, Person_Id "
+ "FROM publikationlink "
+ "WHERE Publikation_Id = %s "
+ "ORDER BY Reihenfolge",
data.getPublicationDaBInId()));
- while (result.next()) {
+ while (authorResult.next()) {
Authorship authorship;
authorship = new Authorship();
- authorship.setPersonDaBInId(result.getString("Person_Id"));
- authorship.setBeteiligung(result.getString("Beteiligung"));
+ authorship.setPersonDaBInId(authorResult.getString(
+ "Person_Id"));
+ authorship.setBeteiligung(authorResult.getString(
+ "Beteiligung"));
data.addAuthor(authorship);
}
@@ -1216,7 +1596,7 @@ public class DaBInImporter extends Program {
WorkingPaperData data = new WorkingPaperData();
result = stmt.executeQuery(String.format(
- "SELECT Name, Jahr, Beschreibung, Datei "
+ "SELECT Name, Jahr, Beschreibung, Abkürzung, Datei "
+ "FROM arbeitspapier "
+ "WHERE Arbeitspapier_Id = %s AND Sprache = 'DE'",
workingPaperIds.get(i)));
@@ -1228,13 +1608,17 @@ public class DaBInImporter extends Program {
data.setTitleDe(result.getString("Name"));
data.setDescDe(result.getString("Beschreibung"));
data.setYear(result.getString("Jahr"));
- if (result.getBlob("Datei") != null) {
- data.setFile(result.getBlob("Datei").getBinaryStream());
+ data.setNumber(result.getString("Abkürzung"));
+ if ((result.getBlob("Datei") != null)
+ && (result.getBlob("Datei").length() > 0)) {
+ data.setFile(result.getBlob("Datei").getBytes(
+ 1,
+ (int) result.getBlob("Datei").length()));
}
}
result = stmt.executeQuery(String.format(
- "SELECT Name, Jahr, Beschreibung "
+ "SELECT Name, Jahr, Beschreibung, Abkürzung "
+ "FROM arbeitspapier "
+ "WHERE Arbeitspapier_Id = %s AND Sprache = 'EN'",
workingPaperIds.get(i)));
@@ -1285,118 +1669,6 @@ public class DaBInImporter extends Program {
System.exit(0);
}
- protected void oldDoRun(CommandLine cmdLine) {
- final String args[];
- String mySqlHost;
- String mySqlUser;
- String mySqlPassword;
- String mySqlDb;
- String orgaTitle;
- String orgaName;
- ContentSection section;
-
- //Connection connection = null;
-
- System.out.println("");
- System.out.println("");
- System.out.println("DaBInImporter starting...");
-
- //Get command line arguments...
- args = cmdLine.getArgs();
-
- if (args.length != 7) {
- logger.error("Invalid number of arguments.");
- //System.err.println();
- help(System.err);
- System.exit(-1);
- }
-
- mySqlHost = args[0];
- mySqlUser = args[1];
- mySqlPassword = args[2];
- mySqlDb = args[3];
- orgaTitle = args[4];
- orgaName = args[5];
-
- section = getContentSection(args[6]);
-
- //Create connection to the DaBIn MySQL database
- System.out.println("Trying to connect to DaBIn MySQL database with these "
- + "parameters:");
- System.out.printf("Host = %s\n", mySqlHost);
- System.out.printf("User = %s\n", mySqlUser);
- //logger.info(String.format("Password = %s", mySqlPassword));
- System.out.printf("Database = %s\n", mySqlDb);
- try {
- connection = DriverManager.getConnection(
- String.format("jdbc:mysql://%s/%s", mySqlHost, mySqlDb),
- mySqlUser,
- mySqlPassword);
- } catch (SQLException ex) {
- System.err.println("Failed to connect to DaBIn MySQL database: ");
- ex.printStackTrace(System.err);
- try {
- if (connection != null) {
- connection.close();
- }
- } catch (SQLException ex1) {
- System.err.println("Failed to close failed connection: ");
- ex1.printStackTrace(System.err);
- }
- System.exit(-1);
- }
-
-
- try {
- Statement stmt = connection.createStatement();
- long num = 1;
-
- ResultSet result =
- stmt.executeQuery(
- "SELECT Person_Id, Name, Vorname, Anrede, Eigenschaft "
- + "FROM person "
- + "WHERE Eigenschaft = 'Aktiv' OR Eigenschaft = 'Ehemalig"
- + "ORDER BY Name, Vorname, Anrede");
-
-
- System.out.println("Creating members...");
- while (result.next()) {
- System.out.printf("%d: %s, %s, %s, %s, %s\n",
- num,
- result.getString("Person_Id"),
- result.getString("Name"),
- result.getString("Vorname"),
- result.getString("Anrede"),
- result.getString("Eigenschaft"));
- num++;
- PersonData memberData = new PersonData();
- memberData.setDabinId(result.getString("Person_Id"));
- memberData.setTitlePre(result.getString("Anrede"));
- memberData.setSurname(result.getString("Name"));
- memberData.setGivenname(result.getString("Vorname"));
- //createMember(memberData, section);
- }
- } catch (SQLException ex) {
- System.err.println("Failed to query 'person' table: ");
- ex.printStackTrace(System.err);
- } catch (Exception ex) {
- System.err.println("Failed to create member: ");
- ex.printStackTrace(System.err);
- }
-
- System.out.println("Closing MySQL connection...");
- try {
- connection.close();
- } catch (SQLException ex) {
- System.err.println("Failed to close MySQL connection: ");
- ex.printStackTrace(System.err);
- System.exit(-1);
- }
-
- System.out.println("DaBIn importer finished successfully.");
- System.exit(0);
- }
-
private void createPerson(final PersonData personData,
final PersonType type) {
StringBuilder personTitleBuilder = new StringBuilder();
@@ -1411,116 +1683,6 @@ public class DaBInImporter extends Program {
System.out.printf(" Creating new person '%s'...",
personTitleBuilder.toString());
- Map folders = null;
- switch (type) {
- case MEMBER:
- folders = membersAlpha;
- break;
- case AUTHOR:
- folders = authorsAlpha;
- break;
- case OTHER:
- folders = personsAlpha;
- break;
- }
-
- final Folder folder;
- char letter;
-
- letter = personData.getSurname().toLowerCase().charAt(0);
- switch (letter) {
- case 'a':
- folder = folders.get("ab");
- break;
- case 'b':
- folder = folders.get("ab");
- break;
- case 'c':
- folder = folders.get("cd");
- break;
- case 'd':
- folder = folders.get("cd");
- break;
- case 'e':
- folder = folders.get("ef");
- break;
- case 'f':
- folder = folders.get("ef");
- break;
- case 'g':
- folder = folders.get("gh");
- break;
- case 'h':
- folder = folders.get("gh");
- break;
- case 'i':
- folder = folders.get("ij");
- break;
- case 'j':
- folder = folders.get("ij");
- break;
- case 'k':
- folder = folders.get("kl");
- break;
- case 'l':
- folder = folders.get("kl");
- break;
- case 'm':
- folder = folders.get("mn");
- break;
- case 'n':
- folder = folders.get("mn");
- break;
- case 'o':
- folder = folders.get("op");
- break;
- case 'p':
- folder = folders.get("op");
- break;
- case 'q':
- folder = folders.get("qr");
- break;
- case 'r':
- folder = folders.get("qr");
- break;
- case 's':
- folder = folders.get("st");
- break;
- case 't':
- folder = folders.get("st");
- break;
- case 'u':
- folder = folders.get("uv");
- break;
- case 'v':
- folder = folders.get("uv");
- break;
- case 'w':
- folder = folders.get("wxyz");
- break;
- case 'x':
- folder = folders.get("wxyz");
- break;
- case 'y':
- folder = folders.get("wxyz");
- break;
- case 'z':
- folder = folders.get("wxyz");
- break;
- case 'ä':
- folder = folders.get("ab");
- break;
- case 'ö':
- folder = folders.get("op");
- break;
- case 'ü':
- folder = folders.get("uv");
- break;
- default:
- folder = members;
- break;
- }
-
Transaction transaction = new Transaction() {
@Override
@@ -1560,7 +1722,23 @@ public class DaBInImporter extends Program {
person = new ContentBundle(personDe);
person.addInstance(personEn);
- folder.addItem(person);
+ //folder.addItem(person);
+ char letter;
+ letter = personData.getSurname().toLowerCase().charAt(0);
+ Map folders = null;
+ switch (type) {
+ case MEMBER:
+ folders = membersAlpha;
+ break;
+ case AUTHOR:
+ folders = authorsAlpha;
+ break;
+ case OTHER:
+ folders = personsAlpha;
+ break;
+ }
+
+ insertIntoAZFolder(person, letter, folders);
StringTokenizer contactData = new StringTokenizer(
personData.getContactData(),
@@ -1662,7 +1840,10 @@ public class DaBInImporter extends Program {
contactEn.save();
ContentBundle contactBundle = new ContentBundle(contactDe);
contactBundle.addInstance(contactEn);
- contacts.addItem(contactBundle);
+ //contacts.addItem(contactBundle);
+ insertIntoAZFolder(contactBundle,
+ personDe.getSurname().charAt(0),
+ contactsAlpha);
personDe.save();
if (homepage != null) {
@@ -1881,7 +2062,7 @@ public class DaBInImporter extends Program {
}
project.setContentSection(section);
project.save();
- projects.addItem(project);
+ //projects.addItem(project);
projectsMap.put(projectData.getDabinId(), project);
System.out.print("\tAssigning project to department... ");
@@ -1946,6 +2127,19 @@ public class DaBInImporter extends Program {
i++;
}
+ insertIntoAZFolder(project, projectsAlpha);
+
+ //Assign to term/category
+ Calendar today = new GregorianCalendar();
+ SciProject sciProject = (SciProject) project.
+ getPrimaryInstance();
+ if ((sciProject.getEnd() != null)
+ && today.getTime().after(sciProject.getEnd())) {
+ finishedProjectsTerm.addObject(project);
+ } else {
+ currentProjectsTerm.addObject(project);
+ }
+
System.out.println("\tOK");
}
};
@@ -1972,7 +2166,7 @@ public class DaBInImporter extends Program {
monographDe = new Monograph();
monographDe.setTitle(publicationData.getName());
- monographDe.setName(publicationData.getName());
+ monographDe.setName(publicationData.getUrl());
extractYearOfPublication(publicationData, monographDe);
publisherData = extractPublisher(publicationData.
getVerlag());
@@ -2008,8 +2202,8 @@ public class DaBInImporter extends Program {
monographEn = new Monograph();
monographEn.setTitle(publicationData.getName());
- monographEn.setName(publicationData.getName());
- extractYearOfPublication(publicationData, monographEn);
+ monographEn.setName(publicationData.getUrl());
+ extractYearOfPublication(publicationData, monographEn);
publisherData = extractPublisher(publicationData.
getVerlag());
if (publishersMap.containsKey(publisherData)) {
@@ -2054,8 +2248,9 @@ public class DaBInImporter extends Program {
collectedVolumeDe = new CollectedVolume();
collectedVolumeDe.setTitle(publicationData.getName());
- collectedVolumeDe.setName(publicationData.getName());
- extractYearOfPublication(publicationData, collectedVolumeDe);
+ collectedVolumeDe.setName(publicationData.getUrl());
+ extractYearOfPublication(publicationData,
+ collectedVolumeDe);
publisherData = extractPublisher(publicationData.
getVerlag());
if (publishersMap.containsKey(publisherData)) {
@@ -2080,8 +2275,9 @@ public class DaBInImporter extends Program {
collectedVolumeEn = new CollectedVolume();
collectedVolumeEn.setTitle(publicationData.getName());
- collectedVolumeEn.setName(publicationData.getName());
- extractYearOfPublication(publicationData, collectedVolumeEn);
+ collectedVolumeEn.setName(publicationData.getUrl());
+ extractYearOfPublication(publicationData,
+ collectedVolumeEn);
publisherData = extractPublisher(publicationData.
getVerlag());
if (publishersMap.containsKey(publisherData)) {
@@ -2113,8 +2309,8 @@ public class DaBInImporter extends Program {
articleDe = new ArticleInCollectedVolume();
articleDe.setTitle(publicationData.getName());
- articleDe.setName(publicationData.getName());
- extractYearOfPublication(publicationData, articleDe);
+ articleDe.setName(publicationData.getUrl());
+ extractYearOfPublication(publicationData, articleDe);
if ((publicationData.getLink() != null)
&& !publicationData.getLink().isEmpty()) {
RelatedLink link = new RelatedLink();
@@ -2142,8 +2338,8 @@ public class DaBInImporter extends Program {
articleEn = new ArticleInCollectedVolume();
articleEn.setTitle(publicationData.getName());
- articleEn.setName(publicationData.getName());
- extractYearOfPublication(publicationData, articleEn);
+ articleEn.setName(publicationData.getUrl());
+ extractYearOfPublication(publicationData, articleEn);
if ((publicationData.getLink() != null)
&& !publicationData.getLink().isEmpty()) {
RelatedLink link = new RelatedLink();
@@ -2180,12 +2376,19 @@ public class DaBInImporter extends Program {
articleDe = new ArticleInJournal();
articleDe.setTitle(publicationData.getName());
- articleDe.setName(publicationData.getName());
+ articleDe.setName(publicationData.getUrl());
extractYearOfPublication(publicationData, articleDe);
if ((publicationData.getLink() != null)
&& !publicationData.getLink().isEmpty()) {
RelatedLink link = new RelatedLink();
- link.setTitle(publicationData.getLink());
+ if (publicationData.getLink().length() < 200) {
+ link.setTitle(publicationData.getLink());
+ } else {
+ System.out.println(
+ "\t***WARNING: Link in publication is too long for title. Truncating.");
+ link.setTitle(publicationData.getLink().
+ substring(0, 200));
+ }
link.setTargetType(Link.EXTERNAL_LINK);
link.setTargetURI(publicationData.getLink());
link.setLinkOwner(articleDe);
@@ -2209,12 +2412,19 @@ public class DaBInImporter extends Program {
articleEn = new ArticleInJournal();
articleEn.setTitle(publicationData.getName());
- articleEn.setName(publicationData.getName());
- extractYearOfPublication(publicationData, articleEn);
+ articleEn.setName(publicationData.getUrl());
+ extractYearOfPublication(publicationData, articleEn);
if ((publicationData.getLink() != null)
&& !publicationData.getLink().isEmpty()) {
RelatedLink link = new RelatedLink();
- link.setTitle(publicationData.getLink());
+ if (publicationData.getLink().length() < 200) {
+ link.setTitle(publicationData.getLink());
+ } else {
+ System.out.println(
+ "\t***WARNING: Link in publication is too long for title. Truncating.");
+ link.setTitle(publicationData.getLink().
+ substring(0, 200));
+ }
link.setTargetType(Link.EXTERNAL_LINK);
link.setTargetURI(publicationData.getLink());
link.setLinkOwner(articleEn);
@@ -2247,8 +2457,8 @@ public class DaBInImporter extends Program {
greyDe = new GreyLiterature();
greyDe.setTitle(publicationData.getName());
- greyDe.setName(publicationData.getName());
- extractYearOfPublication(publicationData, greyDe);
+ greyDe.setName(publicationData.getUrl());
+ extractYearOfPublication(publicationData, greyDe);
if ((publicationData.getLink() != null)
&& !publicationData.getLink().isEmpty()) {
RelatedLink link = new RelatedLink();
@@ -2274,8 +2484,8 @@ public class DaBInImporter extends Program {
greyEn = new GreyLiterature();
greyEn.setTitle(publicationData.getName());
- greyEn.setName(publicationData.getName());
- extractYearOfPublication(publicationData, greyEn);
+ greyEn.setName(publicationData.getUrl());
+ extractYearOfPublication(publicationData, greyEn);
if ((publicationData.getLink() != null)
&& !publicationData.getLink().isEmpty()) {
RelatedLink link = new RelatedLink();
@@ -2332,6 +2542,39 @@ public class DaBInImporter extends Program {
publicationEn.addAuthor(author, true);
}
+ RelatedLink myPublication;
+ myPublication = new RelatedLink();
+ myPublication.setLinkOwner((GenericPerson) personsMap.get(authorship.
+ getPersonDaBInId()).getInstance("de"));
+ myPublication.setTargetType(Link.INTERNAL_LINK);
+ myPublication.setTargetItem(publicationDe);
+ if (publicationDe.getTitle().length() < 200) {
+ myPublication.setTitle(publicationDe.getTitle());
+ } else {
+ System.out.println(
+ "\t***WARNING: Publication title is too long for link title. Trancating.");
+ myPublication.setTitle(publicationDe.getTitle().
+ substring(0, 200));
+ }
+ myPublication.setLinkListName("MyPublications");
+ myPublication.save();
+
+ myPublication = new RelatedLink();
+ myPublication.setLinkOwner((GenericPerson) personsMap.get(authorship.
+ getPersonDaBInId()).getInstance("en"));
+ myPublication.setTargetType(Link.INTERNAL_LINK);
+ myPublication.setTargetItem(publicationEn);
+ if (publicationEn.getTitle().length() < 180) {
+ myPublication.setTitle(publicationEn.getTitle());
+ } else {
+ System.out.println(
+ "\t***WARNING: Publication title is too long for link title. Truncating.");
+ myPublication.setTitle(publicationEn.getTitle().
+ substring(0, 180));
+ }
+ myPublication.setLinkListName("MyPublications");
+ myPublication.save();
+
System.out.println("OK");
}
@@ -2344,7 +2587,7 @@ public class DaBInImporter extends Program {
publication.setDefaultLanguage("de");
}
publication.setContentSection(section);
- publications.addItem(publication);
+ //publications.addItem(publication);
if ((publicationData.getAbteilungId() != null)
&& !publicationData.getAbteilungId().isEmpty()
@@ -2359,14 +2602,32 @@ public class DaBInImporter extends Program {
RelatedLink pubLink;
pubLink = new RelatedLink();
pubLink.setLinkListName("SciDepartmentPublications");
- pubLink.setTitle(((Publication) publication.
- getPrimaryInstance()).getTitle());
+ if (((Publication) publication.getPrimaryInstance()).
+ getTitle().length() < 180) {
+ pubLink.setTitle(((Publication) publication.
+ getPrimaryInstance()).getTitle());
+ } else {
+ System.out.println(
+ "\t***WARNING: Title of publication too long for link title. Truncating.");
+ pubLink.setTitle(((Publication) publication.
+ getPrimaryInstance()).getTitle().
+ substring(0, 180));
+ }
pubLink.setTargetType(Link.INTERNAL_LINK);
pubLink.setTargetItem(publication);
pubLink.setLinkOwner(instances.getContentItem());
pubLink.save();
}
}
+
+ insertIntoAZFolder(publication, publicationsAlpha);
+ Term term = publicationTerms.get(Integer.toString(((Publication) publication.
+ getPrimaryInstance()).
+ getYearOfPublication()));
+ if (term == null) {
+ term = publicationsTerm;
+ }
+ term.addObject(publication);
}
};
@@ -2407,6 +2668,7 @@ public class DaBInImporter extends Program {
} else {
workingPaperDe.setAbstract(workingPaperData.getDescDe());
}
+ workingPaperDe.setNumber(workingPaperData.getNumber());
workingPaperDe.setOrganization(orgaDe);
workingPaperDe.setPlace("Bremen");
extractYearOfPublication(workingPaperData, workingPaperDe);
@@ -2443,9 +2705,10 @@ public class DaBInImporter extends Program {
} else {
workingPaperEn.setAbstract(workingPaperData.getDescEn());
}
+ workingPaperEn.setNumber(workingPaperData.getNumber());
workingPaperEn.setOrganization(orgaEn);
workingPaperEn.setPlace("Bremen");
- extractYearOfPublication(workingPaperData, workingPaperEn);
+ extractYearOfPublication(workingPaperData, workingPaperEn);
workingPaperEn.setLanguage("En");
workingPaperEn.setContentSection(section);
workingPaperEn.save();
@@ -2463,8 +2726,16 @@ public class DaBInImporter extends Program {
}
}
workingPaper.setContentSection(section);
- publications.addItem(workingPaper);
+ //publications.addItem(workingPaper);
workingPaperMap.put(workingPaperData.getDabinId(), workingPaper);
+ insertIntoAZFolder(workingPaper, publicationsAlpha);
+ Term term = workingPaperTerms.get(Integer.toString(((Publication) workingPaper.
+ getPrimaryInstance()).
+ getYearOfPublication()));
+ if (term == null) {
+ term = workingPapersTerm;
+ }
+ term.addObject(workingPaper);
System.out.println("\tOK");
@@ -2474,15 +2745,14 @@ public class DaBInImporter extends Program {
} else {
try {
File tmpFile = File.createTempFile(
- "ccm_workingpaperCompressed", "zip");
+ "ccm_workingpaperCompressed", ".zip");
FileOutputStream tmpFileStream =
new FileOutputStream(tmpFile);
- byte[] buf = new byte[4096];
- int len;
- while ((len = workingPaperData.getFile().read(buf)) > 0) {
- tmpFileStream.write(buf);
- }
+ byte buf[] = new Base64().decode(workingPaperData.
+ getFile());
+ tmpFileStream.write(buf);
+ tmpFileStream.close();
ZipFile zipFile = new ZipFile(tmpFile);
Enumeration extends ZipEntry> entries = zipFile.
@@ -2492,25 +2762,41 @@ public class DaBInImporter extends Program {
nextElement());
File pdf = File.createTempFile("ccm_workingPaper",
- "pdf");
+ ".pdf");
FileOutputStream pdfFileStream = new FileOutputStream(
pdf);
- byte[] buffer = new byte[4096];
- while ((len = unzip.read(buffer)) > 0) {
- pdfFileStream.write(buffer);
+ int b;
+ while ((b = unzip.read()) != -1) {
+ pdfFileStream.write(b);
}
+ unzip.close();
+ pdfFileStream.close();
+
FileStorageItem fsi = new FileStorageItem();
- fsi.setTitle("Datei "
- + ((WorkingPaper) workingPaper.
- getPrimaryInstance()).getTitle());
- fsi.setName("datei_" + ((WorkingPaper) workingPaper.
- getPrimaryInstance()).
+ String title = String.format("Datei %s",
+ ((WorkingPaper) workingPaper.
+ getPrimaryInstance()).
+ getTitle());
+ if (title.length() > 200) {
+ fsi.setTitle(title.substring(0, 199));
+ } else {
+ fsi.setTitle(title);
+ }
+
+ String name = String.format("datei_%s",
+ ((WorkingPaper) workingPaper.
+ getPrimaryInstance()).
getName());
+ if (name.length() > 200) {
+ fsi.setName(name.substring(0, 199));
+ } else {
+ fsi.setName(name);
+ }
FileAsset file = new FileAsset();
file.loadFromFile(workingPaper.getPrimaryInstance().
- getName(), pdf, "application/pdf");
+ getName(), pdf, "application/octet-stream");
file.setContentSection(section);
fsi.setContentSection(section);
@@ -2519,7 +2805,7 @@ public class DaBInImporter extends Program {
bundle.setContentSection(section);
bundle.setDefaultLanguage("de");
- files.addItem(bundle);
+ //files.addItem(bundle);
RelatedLink download = new RelatedLink();
download.setTitle("download");
@@ -2532,10 +2818,14 @@ public class DaBInImporter extends Program {
download.setTargetType(Link.INTERNAL_LINK);
download.setTargetItem(fsi);
download.setLinkOwner(workingPaperEn);
+
+ char letter = workingPaperDe.getName().toLowerCase().
+ charAt(0);
+ insertIntoAZFolder(bundle, letter, filesAlpha);
}
} catch (IOException ex) {
System.out.println(
- "***ERROR: Failed to copy file from DaBIn to CCM: ");
+ "\n***ERROR: Failed to copy file from DaBIn to CCM: ");
ex.printStackTrace(System.out);
}
@@ -2562,6 +2852,23 @@ public class DaBInImporter extends Program {
} else {
workingPaperDe.addAuthor(author, false);
}
+
+
+ RelatedLink myPublication;
+ myPublication = new RelatedLink();
+ myPublication.setLinkOwner((GenericPerson) personsMap.
+ get(authorship.getPersonDaBInId()).getInstance(
+ "de"));
+ myPublication.setTargetType(Link.INTERNAL_LINK);
+ myPublication.setTargetItem(workingPaperDe);
+ if (workingPaperDe.getTitle().length() > 180) {
+ myPublication.setTitle(workingPaperDe.getTitle().
+ substring(0, 180));
+ } else {
+ myPublication.setTitle(workingPaperDe.getTitle());
+ }
+ myPublication.setLinkListName("MyPublications");
+ myPublication.save();
}
if (workingPaperEn != null) {
if ("Herausgeber".equals(authorship.getBeteiligung())) {
@@ -2569,6 +2876,22 @@ public class DaBInImporter extends Program {
} else {
workingPaperEn.addAuthor(author, false);
}
+
+ RelatedLink myPublication;
+ myPublication = new RelatedLink();
+ myPublication.setLinkOwner((GenericPerson) personsMap.
+ get(authorship.getPersonDaBInId()).getInstance(
+ "en"));
+ myPublication.setTargetType(Link.INTERNAL_LINK);
+ myPublication.setTargetItem(workingPaperEn);
+ if (workingPaperEn.getTitle().length() > 180) {
+ myPublication.setTitle(workingPaperDe.getTitle().
+ substring(0, 180));
+ } else {
+ myPublication.setTitle(workingPaperDe.getTitle());
+ }
+ myPublication.setLinkListName("MyPublications");
+ myPublication.save();
}
System.out.println("\tOK");
@@ -2625,7 +2948,8 @@ public class DaBInImporter extends Program {
publisher.addInstance(publisherEn);
publisher.setDefaultLanguage("de");
publisher.setContentSection(section);
- publishers.addItem(publisher);
+ //publishers.addItem(publisher);
+ insertIntoAZFolder(publisher, publishersAlpha);
publishersMap.put(publisherData, publisher);
System.out.println("OK");
}
@@ -2804,10 +3128,26 @@ public class DaBInImporter extends Program {
int pagesFrom;
int pagesTo;
+ System.out.printf("Trying to extract pages from '%s'...\n", data);
+
index = data.lastIndexOf('-');
leftLimit = data.lastIndexOf(' ', index);
rightLimit = data.indexOf(' ', index);
+ if (leftLimit < 0) {
+ System.out.println(
+ "*** WARNING: Malformed pages. Left limit less than 0. Ignoring.");
+
+ }
+ if (rightLimit > data.length()) {
+ System.out.println(
+ "*** WARNING: Malformed pages. Right limit greater than length of string. Ignoring.");
+ }
+ if (rightLimit < 0) {
+ System.out.println(
+ "*** WARNING: Malformed pages. Right limit is smaller than 0. Ignoring.");
+ }
+
try {
tmp = data.substring(leftLimit + 1, index);
pagesFrom = Integer.parseInt(tmp);
@@ -2815,7 +3155,10 @@ public class DaBInImporter extends Program {
tmp = data.substring(index + 1, rightLimit);
pagesTo = Integer.parseInt(tmp);
} catch (NumberFormatException ex) {
- System.out.println("Malformed pages. Ignoring.");
+ System.out.println("*** WARNING: Malformed pages. Ignoring.");
+ return;
+ } catch (StringIndexOutOfBoundsException ex) {
+ System.out.println("*** WARNING: Malformed pages. Ignoring.");
return;
}
@@ -2823,6 +3166,165 @@ public class DaBInImporter extends Program {
publicationData.setPagesTo(pagesTo);
}
+ private void insertIntoAZFolder(final ContentBundle bundle,
+ final Map folders) {
+ Character letter;
+
+ letter = bundle.getPrimaryInstance().getName().toLowerCase().charAt(0);
+
+ insertIntoAZFolder(bundle, letter, folders);
+ }
+
+ private void insertIntoAZFolder(final ContentBundle bundle,
+ final Character letter,
+ final Map folders) {
+ Folder folder;
+
+ folder = folders.get(letter);
+ if (folder == null) {
+ folder = folders.get('0');
+ }
+
+ folder.addItem(bundle);
+ }
+
+ private Term checkTermPath(final String path) {
+ StringTokenizer pathTokenizer = new StringTokenizer(path, "/");
+
+ Term prevTerm = null;
+ Term term = null;
+ while (pathTokenizer.hasMoreTokens()) {
+ String token = pathTokenizer.nextToken();
+ String[] split;
+ String uniqueId;
+ String name;
+
+ split = token.split(":");
+ if (split.length < 2) {
+ System.err.printf(
+ "***ERROR: Malformed path token '%s'. Abborting path check.\n",
+ token);
+ return null;
+ }
+
+ uniqueId = split[0];
+ name = split[1];
+
+ prevTerm = term;
+ try {
+ term = termsDomain.getTerm(uniqueId);
+ } catch (DataObjectNotFoundException ex) {
+ System.out.printf("Term '%s' does not exist. Creating...\n", token);
+ createTerm(uniqueId, name, termsDomain, prevTerm);
+ }
+ }
+
+ return term;
+ }
+
+ private Map checkYearTerms(final Term parent,
+ final List years) {
+ String parentId = parent.getUniqueID();
+ Map yearTerms = new HashMap();
+
+ for (String year : years) {
+ String yearTermId = String.format("%s%s", parentId, year);
+ Term term;
+ try {
+ term = termsDomain.getTerm(yearTermId);
+ } catch (DataObjectNotFoundException ex) {
+ System.out.printf(
+ "Term for year '%s' in term '%s' does not exist. Creating.\n",
+ year,
+ parent.getName());
+ createTerm(yearTermId, year, termsDomain, parent);
+ term = termsDomain.getTerm(yearTermId);
+ }
+
+ yearTerms.put(year, term);
+ }
+
+ return yearTerms;
+ }
+
+ private void createTerm(final String uniqueId,
+ final String name,
+ final Domain domain,
+ final Term parent) {
+ Transaction transaction = new Transaction() {
+
+ @Override
+ protected void doRun() {
+ try {
+ Term term = Term.create(uniqueId, name, false, "", domain);
+ term.save();
+ parent.addNarrowerTerm(term, false, false);
+ //parent.save();
+ } catch (Exception ex) {
+ ex.printStackTrace(System.err);
+ }
+ }
+ };
+
+ transaction.run();
+ }
+
+ private List getPublicationYears() {
+ List years = new ArrayList();
+
+ try {
+ Statement stmt = connection.createStatement(
+ ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+
+ ResultSet result = stmt.executeQuery(
+ "SELECT Jahr FROM publikation GROUP BY Jahr");
+
+ while (result.next()) {
+ String year = result.getString(1);
+ if (year.length() > 4) {
+ years.add(year.substring(0, 4));
+ } else {
+ years.add(year);
+ }
+ }
+ } catch (SQLException ex) {
+ System.err.println("Query for publication years failed.");
+ ex.printStackTrace(System.err);
+ }
+
+ return years;
+ }
+
+ private List getWorkingPaperYears() {
+ List years = new ArrayList();
+
+ try {
+ Statement stmt = connection.createStatement(
+ ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_UPDATABLE);
+
+ ResultSet result = stmt.executeQuery(
+ "SELECT Jahr FROM arbeitspapier GROUP BY Jahr");
+
+ while (result.next()) {
+ while (result.next()) {
+ String year = result.getString(1);
+ if (year.length() > 4) {
+ years.add(year.substring(0, 4));
+ } else {
+ years.add(year);
+ }
+ }
+ }
+ } catch (SQLException ex) {
+ System.err.println("Query for publication years failed.");
+ ex.printStackTrace(System.err);
+ }
+
+ return years;
+ }
+
public static void main(String[] args) {
new DaBInImporter().run(args);
}
diff --git a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PublicationData.java b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PublicationData.java
index dff636602..c464194bd 100644
--- a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PublicationData.java
+++ b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PublicationData.java
@@ -66,7 +66,12 @@ public class PublicationData {
}
public void setLink(String link) {
+ if (link.length() < 200) {
this.link = link;
+ } else {
+ System.out.println("\n***WARNING: Link value too long. Truncating.\n");
+ this.link = link.substring(0, 200);
+ }
}
public String getName() {
@@ -77,6 +82,15 @@ public class PublicationData {
this.name = name;
}
+ public String getUrl() {
+ if (name.length() < 200) {
+ return name;
+ } else {
+ System.out.println("\t***WARNING: Title of publication is too long for URL. Triming to title to a length of 200 characters for URL.");
+ return name.substring(0,200);
+ }
+ }
+
public String getPublicationDaBInId() {
return publicationDaBInId;
}
diff --git a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PublisherData.java b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PublisherData.java
index d096a7a24..31643780b 100644
--- a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PublisherData.java
+++ b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PublisherData.java
@@ -14,7 +14,15 @@ public class PublisherData {
}
public void setName(String name) {
- this.name = name.trim();
+ if (name == null) {
+ this.name = "";
+ } else {
+ if ("null".equals(name.toLowerCase())) {
+ this.name = "";
+ } else {
+ this.name = name.trim();
+ }
+ }
}
public String getPlace() {
@@ -22,7 +30,15 @@ public class PublisherData {
}
public void setPlace(String place) {
- this.place = place.trim();
+ if (place == null) {
+ this.place = "";
+ } else {
+ if ("null".equals(place.toLowerCase())) {
+ this.place = "";
+ } else {
+ this.place = place.trim();
+ }
+ }
}
@Override
@@ -35,11 +51,11 @@ public class PublisherData {
}
final PublisherData other = (PublisherData) obj;
if ((this.name == null) ? (other.name != null)
- : !this.name.equals(other.name)) {
+ : !this.name.equals(other.name)) {
return false;
}
if ((this.place == null) ? (other.place != null)
- : !this.place.equals(other.place)) {
+ : !this.place.equals(other.place)) {
return false;
}
return true;
diff --git a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/WorkingPaperData.java b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/WorkingPaperData.java
index 7ae432d5a..73f9add5e 100644
--- a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/WorkingPaperData.java
+++ b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/WorkingPaperData.java
@@ -16,7 +16,8 @@ public class WorkingPaperData {
private String year;
private String descDe;
private String descEn;
- private InputStream file;
+ private String number;
+ private byte[] file;
private List authors;
public WorkingPaperData() {
@@ -87,11 +88,11 @@ public class WorkingPaperData {
return authors;
}
- public InputStream getFile() {
+ public byte[] getFile() {
return file;
}
- public void setFile(InputStream file) {
+ public void setFile(byte[] file) {
this.file = file;
}
@@ -102,4 +103,12 @@ public class WorkingPaperData {
public void addAuthor(final Authorship author) {
authors.add(author);
}
+
+ public String getNumber() {
+ return number;
+ }
+
+ public void setNumber(String number) {
+ this.number = number;
+ }
}