From 23de689b610deb02f9d205eef0c12049fa90b508 Mon Sep 17 00:00:00 2001 From: jensp Date: Sat, 11 Dec 2010 18:26:44 +0000 Subject: [PATCH] - Aktueller Stand DaBInImporter - Allgemeiner Personentyp git-svn-id: https://svn.libreccm.org/ccm/trunk@647 8810af33-2d31-482b-a856-94f89814c4df --- ccm-cms-dabinimporter/application.xml | 1 + .../arsdigita/cms/dabin/DaBInImporter.java | 624 +++++++++++++----- .../{MemberData.java => PersonData.java} | 2 +- .../com/arsdigita/cms/dabin/PersonType.java | 11 + ccm-cms-types-person/application.xml | 24 + .../com/arsdigita/content-types/Person.pdl | 30 + .../ccm-cms-types-person/postgres-create.sql | 3 + .../com/arsdigita/cms/contenttypes/Person.xml | 36 + .../src/ccm-cms-types-person.config | 4 + .../src/ccm-cms-types-person.load | 16 + .../arsdigita/cms/contenttypes/Person.java | 70 ++ .../cms/contenttypes/PersonInitializer.java | 46 ++ .../cms/contenttypes/PersonLoader.java | 36 + .../contenttypes/ui/PersonPropertiesStep.java | 51 ++ .../contenttypes/ui/PersonPropertyForm.java | 80 +++ .../util/PersonGlobalizationUtil.java | 35 + .../util/PersonResourceBundle.java | 35 + .../com/arsdigita/cms/contenttypes/Person.xsl | 35 + 18 files changed, 975 insertions(+), 164 deletions(-) rename ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/{MemberData.java => PersonData.java} (98%) create mode 100644 ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PersonType.java create mode 100644 ccm-cms-types-person/application.xml create mode 100644 ccm-cms-types-person/pdl/com/arsdigita/content-types/Person.pdl create mode 100644 ccm-cms-types-person/sql/ccm-cms-types-person/postgres-create.sql create mode 100644 ccm-cms-types-person/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/Person.xml create mode 100644 ccm-cms-types-person/src/ccm-cms-types-person.config create mode 100644 ccm-cms-types-person/src/ccm-cms-types-person.load create mode 100644 ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/Person.java create mode 100644 ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/PersonInitializer.java create mode 100644 ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/PersonLoader.java create mode 100644 ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/ui/PersonPropertiesStep.java create mode 100644 ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/ui/PersonPropertyForm.java create mode 100644 ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/util/PersonGlobalizationUtil.java create mode 100644 ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/util/PersonResourceBundle.java create mode 100644 ccm-cms-types-person/web/static/content-types/com/arsdigita/cms/contenttypes/Person.xsl diff --git a/ccm-cms-dabinimporter/application.xml b/ccm-cms-dabinimporter/application.xml index 429ad4a12..a90f73342 100644 --- a/ccm-cms-dabinimporter/application.xml +++ b/ccm-cms-dabinimporter/application.xml @@ -11,6 +11,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 8b627436c..2aefdf93a 100644 --- a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/DaBInImporter.java +++ b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/DaBInImporter.java @@ -26,7 +26,9 @@ import com.arsdigita.cms.contentassets.RelatedLink; import com.arsdigita.cms.contenttypes.Address; import com.arsdigita.cms.contenttypes.Contact; import com.arsdigita.cms.contenttypes.GenericContactEntry; +import com.arsdigita.cms.contenttypes.GenericPerson; import com.arsdigita.cms.contenttypes.Link; +import com.arsdigita.cms.contenttypes.Person; import com.arsdigita.cms.contenttypes.SciAuthor; import com.arsdigita.cms.contenttypes.SciDepartment; import com.arsdigita.cms.contenttypes.SciMember; @@ -44,6 +46,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; +import java.util.GregorianCalendar; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -70,11 +73,12 @@ public class DaBInImporter extends Program { private Folder members; private Map membersAlpha; private Folder organization; + private Folder persons; + private Map personsAlpha; private Folder projects; private Folder publications; - private Map authorsMap; private Map departmentsMap; - private Map membersMap; + private Map personsMap; private Map projectsMap; private Map publicationMap; private Map workingPaperMap; @@ -109,9 +113,9 @@ public class DaBInImporter extends Program { startup); authorsAlpha = new HashMap(12); membersAlpha = new HashMap(12); - authorsMap = new HashMap(); + personsAlpha = new HashMap(12); departmentsMap = new HashMap(); - membersMap = new HashMap(); + personsMap = new HashMap(); projectsMap = new HashMap(); publicationMap = new HashMap(); workingPaperMap = new HashMap(); @@ -224,7 +228,7 @@ public class DaBInImporter extends Program { authorsAlpha.put("kl", folder); folder = createFolder(authors, "mn", "M - N"); authorsAlpha.put("mn", folder); - folder = createFolder(authors, "op", "P - P"); + folder = createFolder(authors, "op", "O - P"); authorsAlpha.put("op", folder); folder = createFolder(authors, "qr", "Q - R"); authorsAlpha.put("qr", folder); @@ -254,7 +258,7 @@ public class DaBInImporter extends Program { membersAlpha.put("kl", folder); folder = createFolder(members, "mn", "M - N"); membersAlpha.put("mn", folder); - folder = createFolder(members, "op", "P - P"); + folder = createFolder(members, "op", "O - P"); membersAlpha.put("op", folder); folder = createFolder(members, "qr", "Q - R"); membersAlpha.put("qr", folder); @@ -267,6 +271,32 @@ public class DaBInImporter extends Program { 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); + projects = createFolder(root, "projekte", "Projekte"); publications = createFolder(root, "publikationen", "Publications"); @@ -394,7 +424,8 @@ public class DaBInImporter extends Program { transaction.run(); System.out.println("OK"); - System.out.println("\nImporting members from DaBIn into CCM..."); + System.out.println( + "\nImporting persons (members) from DaBIn into CCM..."); try { Statement stmt = connection.createStatement( @@ -415,9 +446,7 @@ public class DaBInImporter extends Program { stmt.executeQuery( "SELECT person.Person_Id, Anrede, Vorname, Name, Angaben " + "FROM person " - + "JOIN abteilunglink ON person.Person_Id = abteilunglink.Person_Id " + "WHERE Eigenschaft = 'Aktiv' OR Eigenschaft = 'Ehemalig' " - + "GROUP BY person.Person_Id, Vorname, Name " + "ORDER BY Name, Vorname"); result.last(); number = result.getRow(); @@ -425,13 +454,13 @@ public class DaBInImporter extends Program { while (result.next()) { System.out.printf("%4d of %4d:", counter, number); - MemberData data = new MemberData(); + PersonData data = new PersonData(); data.setDabinId(result.getString("person.Person_Id")); data.setTitlePre(result.getString("Anrede")); data.setGivenname(result.getString("Vorname")); data.setSurname(result.getString("Name")); data.setContactData(result.getString("Angaben")); - createMember(data); + createPerson(data, PersonType.MEMBER); counter++; } @@ -443,7 +472,58 @@ public class DaBInImporter extends Program { ex.printStackTrace(System.err); } - System.out.println("Adding associated members to organization..."); + /*System.out.println("Adding associated members to organization..."); + try { + Statement stmt = connection.createStatement( + ResultSet.TYPE_SCROLL_INSENSITIVE, + ResultSet.CONCUR_UPDATABLE); + ResultSet result; + long counter = 1; + long number; + + result = + stmt.executeQuery( + "SELECT abteilunglink.Auftrag, person.Person_Id, person.Eigenschaft, abteilunglink.Auftrag " + + "FROM abteilunglink JOIN person ON abteilunglink.Person_Id = person.Person_Id " + + "WHERE abteilunglink.Abteilung_Id = 11 AND person.Eigenschaft = 'Aktiv'"); + result.last(); + number = result.getRow(); + result.beforeFirst(); + + while (result.next()) { + System.out.printf("\t%d of %d ", counter, number); + if (personsMap.containsKey(result.getString("person.Person_Id"))) { + System.out.printf("%s...", ((GenericPerson) personsMap.get(result. + getString( + "person.Person_Id")). + getPrimaryInstance()).getTitle()); + orgaDe.addPerson((GenericPerson) personsMap.get(result. + getString( + "person.Person_Id")).getInstance("de"), + "member", + "associated"); + orgaEn.addPerson((GenericPerson) personsMap.get(result. + getString( + "person.Person_Id")).getInstance("en"), + "member", + "associated"); + System.out.println("OK"); + } else { + System.out.printf("... No value of DaBIn person ID ' '\n", + result.getString("person.PersonId")); + } + } + } catch (SQLException ex) { + System.out.println("FAILED"); + ex.printStackTrace(System.err); + } catch (Exception ex) { + System.out.println("FAILED"); + ex.printStackTrace(System.err); + } + System.out.println("FINISHED");*/ + + System.out.printf( + "Importing persons (cooperatives) from DaBIn into CCM...\n"); try { Statement stmt = connection.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, @@ -452,33 +532,25 @@ public class DaBInImporter extends Program { long counter = 1; long number; - result = - stmt.executeQuery( - "SELECT abteilunglink.Auftrag, person.Person_Id, person.Eigenschaft, abteilunglink.Auftrag " - + "FROM abteilunglink JOIN person ON abteilunglink.Person_Id = person.Person_Id " - + "WHERE abteilunglink.Abteilung_Id = 11 AND person.Eigenschaft = 'Aktiv'"); + result = stmt.executeQuery( + "SELECT DISTINCT person.Person_Id, Anrede, Vorname, Name, Angaben " + + "FROM person JOIN projektlink on person.Person_Id = projektlink.Person_Id " + + "WHERE Eigenschaft = 'Autor' OR Eigenschaft = 'Sonstiges' " + + "ORDER BY Name, Vorname"); result.last(); number = result.getRow(); result.beforeFirst(); while (result.next()) { - System.out.printf("\t%d of %d ", counter, number); - if (membersMap.containsKey(result.getString("person.Person_Id"))) { - System.out.printf("%s...", membersMap.get(result.getString( - "person.Person_Id")).getTitle()); - orgaDe.addPerson(membersMap.get(result.getString( - "person.Person_Id")), - "member", - "associated"); - orgaEn.addPerson(membersMap.get(result.getString( - "person.Person_Id")), - "member", - "associated"); - System.out.println("OK"); - } else { - System.out.printf("... No value of DaBIn person ID ' '\n", - result.getString("person.PersonId")); - } + System.out.printf("%4d of %4d:", counter, number); + PersonData data = new PersonData(); + data.setDabinId(result.getString("person.Person_Id")); + data.setTitlePre(result.getString("Anrede")); + data.setGivenname(result.getString("Vorname")); + data.setSurname(result.getString("Name")); + data.setContactData(result.getString("Angaben")); + createPerson(data, PersonType.OTHER); + counter++; } } catch (SQLException ex) { System.out.println("FAILED"); @@ -489,6 +561,93 @@ public class DaBInImporter extends Program { } System.out.println("FINSHED"); + System.out.printf("Importing persons (authors) from DaBIn into CCM...\n"); + try { + Statement stmt = connection.createStatement( + ResultSet.TYPE_SCROLL_INSENSITIVE, + ResultSet.CONCUR_UPDATABLE); + ResultSet result; + long counter = 1; + long number; + + result = stmt.executeQuery( + "SELECT DISTINCT person.Person_Id, Anrede, Vorname, Name, Angaben " + + "FROM person " + + "WHERE Eigenschaft = 'Autor' AND NOT EXISTS (SELECT * FROM projektlink where projektlink.Person_Id = person.Person_Id)" + + "ORDER BY Name, Vorname"); + result.last(); + number = result.getRow(); + result.beforeFirst(); + + while (result.next()) { + System.out.printf("%4d of %4d:", counter, number); + PersonData data = new PersonData(); + data.setDabinId(result.getString("person.Person_Id")); + data.setTitlePre(result.getString("Anrede")); + data.setGivenname(result.getString("Vorname")); + data.setSurname(result.getString("Name")); + data.setContactData(result.getString("Angaben")); + createPerson(data, PersonType.AUTHOR); + counter++; + } + + } catch (SQLException ex) { + System.out.println("FAILED"); + ex.printStackTrace(System.err); + } catch (Exception ex) { + System.out.println("FAILED"); + ex.printStackTrace(System.err); + } + + System.out.println("Adding active associated members to organization..."); + try { + Statement stmt = connection.createStatement( + ResultSet.TYPE_SCROLL_INSENSITIVE, + ResultSet.CONCUR_UPDATABLE); + ResultSet result; + long counter = 1; + long number; + + result = + stmt.executeQuery( + "SELECT DISTINCT abteilunglink.Auftrag, person.Person_Id, person.Eigenschaft, abteilunglink.Auftrag " + + "FROM abteilunglink JOIN person ON abteilunglink.Person_Id = person.Person_Id " + + "WHERE abteilunglink.Abteilung_Id = 11 AND person.Eigenschaft = 'Aktiv'"); + result.last(); + number = result.getRow(); + result.beforeFirst(); + + while (result.next()) { + System.out.printf("\t%d of %d ", counter, number); + if (personsMap.containsKey(result.getString("person.Person_Id"))) { + System.out.printf("%s...", ((GenericPerson) personsMap.get(result. + getString( + "person.Person_Id")). + getPrimaryInstance()).getTitle()); + orgaDe.addPerson((GenericPerson) personsMap.get(result. + getString( + "person.Person_Id")).getInstance("de"), + "member", + "associated"); + orgaEn.addPerson((GenericPerson) personsMap.get(result. + getString( + "person.Person_Id")).getInstance("en"), + "member", + "associated"); + System.out.println("OK"); + } else { + System.out.printf("... No value of DaBIn person ID ' '\n", + result.getString("person.PersonId")); + } + } + + } catch (SQLException ex) { + System.out.println("FAILED"); + ex.printStackTrace(System.err); + } catch (Exception ex) { + System.out.println("FAILED"); + ex.printStackTrace(System.err); + } System.out.println("Adding former associated members to organization..."); try { @@ -501,7 +660,7 @@ public class DaBInImporter extends Program { result = stmt.executeQuery( - "SELECT abteilunglink.Auftrag, person.Person_Id, person.Eigenschaft, abteilunglink.Auftrag " + "SELECT DISTINCT abteilunglink.Auftrag, person.Person_Id, person.Eigenschaft, abteilunglink.Auftrag " + "FROM abteilunglink JOIN person ON abteilunglink.Person_Id = person.Person_Id " + "WHERE abteilunglink.Abteilung_Id = 11 AND person.Eigenschaft = 'Ehemalig'"); result.last(); @@ -510,17 +669,21 @@ public class DaBInImporter extends Program { while (result.next()) { System.out.printf("\t%d of %d ", counter, number); - if (membersMap.containsKey(result.getString("person.Person_Id"))) { - System.out.printf("%s...", membersMap.get(result.getString( - "person.Person_Id")).getTitle()); - orgaDe.addPerson(membersMap.get(result.getString( - "person.Person_Id")), + if (personsMap.containsKey(result.getString("person.Person_Id"))) { + System.out.printf("%s...", ((GenericPerson) personsMap.get(result. + getString( + "person.Person_Id")). + getPrimaryInstance()).getTitle()); + orgaDe.addPerson((GenericPerson) personsMap.get(result. + getString( + "person.Person_Id")).getInstance("de"), "member", - "associated"); - orgaEn.addPerson(membersMap.get(result.getString( - "person.Person_Id")), + "associatedFormer"); + orgaEn.addPerson((GenericPerson) personsMap.get(result. + getString( + "person.Person_Id")).getInstance("en"), "member", - "associated"); + "associatedFormer"); System.out.println("OK"); } else { System.out.printf("... No value of DaBIn person ID ' '\n", @@ -626,7 +789,7 @@ public class DaBInImporter extends Program { System.out.printf("%3d of %3d:\n", i + 1, projectsIds.size()); result = stmt.executeQuery(String.format( - "SELECT Name, Beschreibung, Finanzierung, Abteilung_Id " + "SELECT Name, Beschreibung, Finanzierung, Abteilung_Id, Beginn, Ende " + "FROM projekt " + "WHERE Projekt_Id = %s AND Sprache = 'DE'", projectsIds.get(i))); @@ -635,10 +798,18 @@ public class DaBInImporter extends Program { data.setDescDe(result.getString("Beschreibung")); data.setFundingDe(result.getString("Finanzierung")); data.setDepartment(result.getString("Abteilung_Id")); + if (result.getInt("Beginn") != 0) { + data.setBegin(new GregorianCalendar(result.getInt( + "Beginn"), 0, 1, 0, 0)); + } + if (result.getInt("Ende") != 0) { + data.setEnd(new GregorianCalendar(result.getInt("Ende"), + 11, 31, 23, 59)); + } } result = stmt.executeQuery(String.format( - "SELECT Name, Beschreibung, Finanzierung " + "SELECT Name, Beschreibung, Finanzierung, Abteilung_Id, Beginn, Ende " + "FROM projekt " + "WHERE Projekt_Id = %s AND Sprache = 'EN'", projectsIds.get(i))); @@ -646,6 +817,15 @@ public class DaBInImporter extends Program { data.setNameEn(result.getString("Name")); data.setDescEn(result.getString("Beschreibung")); data.setFundingEn(result.getString("Finanzierung")); + data.setDepartment(result.getString("Abteilung_Id")); + if (result.getInt("Beginn") != 0) { + data.setBegin(new GregorianCalendar(result.getInt( + "Beginn"), 0, 1, 0, 0)); + } + if (result.getInt("Ende") != 0) { + data.setEnd(new GregorianCalendar(result.getInt("Ende"), + 11, 31, 23, 59)); + } } result = stmt.executeQuery(String.format( @@ -676,6 +856,22 @@ public class DaBInImporter extends Program { ex.printStackTrace(System.err); } + System.out.println("Importing publications from DaBIn into CCM..."); + System.out.println("Mongraphies..."); + try { + Statement stmt = connection.createStatement( + ResultSet.TYPE_SCROLL_INSENSITIVE, + ResultSet.CONCUR_UPDATABLE); + + + } catch (SQLException ex) { + System.out.println("FAILED"); + ex.printStackTrace(System.err); + } catch (Exception ex) { + System.out.println("FAILED"); + ex.printStackTrace(System.err); + } + System.out.println("Closing MySQL connection..."); try { connection.close(); @@ -774,7 +970,7 @@ public class DaBInImporter extends Program { result.getString("Anrede"), result.getString("Eigenschaft")); num++; - MemberData memberData = new MemberData(); + PersonData memberData = new PersonData(); memberData.setDabinId(result.getString("Person_Id")); memberData.setTitlePre(result.getString("Anrede")); memberData.setSurname(result.getString("Name")); @@ -802,112 +998,124 @@ public class DaBInImporter extends Program { System.exit(0); } - private void createMember(final MemberData memberData) { - - StringBuilder memberTitleBuilder = new StringBuilder(); - if ((memberData.getTitlePre() != null) - && (memberData.getTitlePre().length() > 0)) { - memberTitleBuilder.append(memberData.getTitlePre()); - memberTitleBuilder.append(' '); + private void createPerson(final PersonData personData, + final PersonType type) { + StringBuilder personTitleBuilder = new StringBuilder(); + if ((personData.getTitlePre() != null) + && (personData.getTitlePre().length() > 0)) { + personTitleBuilder.append(personData.getTitlePre()); + personTitleBuilder.append(' '); + } + personTitleBuilder.append(personData.getGivenname()); + personTitleBuilder.append(' '); + personTitleBuilder.append(personData.getSurname()); + 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; } - memberTitleBuilder.append(memberData.getGivenname()); - memberTitleBuilder.append(' '); - memberTitleBuilder.append(memberData.getSurname()); - System.out.printf(" Creating new member '%s'...", - memberTitleBuilder.toString()); final Folder folder; char letter; - letter = memberData.getSurname().toLowerCase().charAt(0); - + letter = personData.getSurname().toLowerCase().charAt(0); switch (letter) { case 'a': - folder = membersAlpha.get("ab"); + folder = folders.get("ab"); break; case 'b': - folder = membersAlpha.get("ab"); + folder = folders.get("ab"); break; case 'c': - folder = membersAlpha.get("cd"); + folder = folders.get("cd"); break; case 'd': - folder = membersAlpha.get("cd"); + folder = folders.get("cd"); break; case 'e': - folder = membersAlpha.get("ef"); + folder = folders.get("ef"); break; case 'f': - folder = membersAlpha.get("ef"); + folder = folders.get("ef"); break; case 'g': - folder = membersAlpha.get("gh"); + folder = folders.get("gh"); break; case 'h': - folder = membersAlpha.get("gh"); + folder = folders.get("gh"); break; case 'i': - folder = membersAlpha.get("ij"); + folder = folders.get("ij"); break; case 'j': - folder = membersAlpha.get("ij"); + folder = folders.get("ij"); break; case 'k': - folder = membersAlpha.get("kl"); + folder = folders.get("kl"); break; case 'l': - folder = membersAlpha.get("kl"); + folder = folders.get("kl"); break; case 'm': - folder = membersAlpha.get("mn"); + folder = folders.get("mn"); break; case 'n': - folder = membersAlpha.get("mn"); + folder = folders.get("mn"); break; case 'o': - folder = membersAlpha.get("op"); + folder = folders.get("op"); break; case 'p': - folder = membersAlpha.get("op"); + folder = folders.get("op"); break; case 'q': - folder = membersAlpha.get("qr"); + folder = folders.get("qr"); break; case 'r': - folder = membersAlpha.get("qr"); + folder = folders.get("qr"); break; case 's': - folder = membersAlpha.get("st"); + folder = folders.get("st"); break; case 't': - folder = membersAlpha.get("st"); + folder = folders.get("st"); break; case 'u': - folder = membersAlpha.get("uv"); + folder = folders.get("uv"); break; case 'v': - folder = membersAlpha.get("uv"); + folder = folders.get("uv"); break; case 'w': - folder = membersAlpha.get("wxyz"); + folder = folders.get("wxyz"); break; case 'x': - folder = membersAlpha.get("wxyz"); + folder = folders.get("wxyz"); break; case 'y': - folder = membersAlpha.get("wxyz"); + folder = folders.get("wxyz"); break; case 'z': - folder = membersAlpha.get("wxyz"); + folder = folders.get("wxyz"); break; case 'ä': - folder = membersAlpha.get("ab"); + folder = folders.get("ab"); break; case 'ö': - folder = membersAlpha.get("op"); + folder = folders.get("op"); break; case 'ü': - folder = membersAlpha.get("uv"); + folder = folders.get("uv"); break; default: folder = members; @@ -918,32 +1126,62 @@ public class DaBInImporter extends Program { @Override public void doRun() { - SciMember member; + GenericPerson personDe = null; + GenericPerson personEn = null; - member = new SciMember(); - member.setSurname(memberData.getSurname()); - member.setGivenName(memberData.getGivenname()); - member.setTitlePre(memberData.getTitlePre()); + switch (type) { + case MEMBER: + personDe = new SciMember(); + personEn = new SciMember(); + break; + case AUTHOR: + personDe = new SciAuthor(); + personEn = new SciAuthor(); + break; + case OTHER: + personDe = new Person(); + personEn = new Person(); + break; + } + personDe.setSurname(personData.getSurname()); + personDe.setGivenName(personData.getGivenname()); + personDe.setTitlePre(personData.getTitlePre()); - member.save(); - member.setLanguage("de"); + personDe.save(); + personDe.setLanguage("de"); - ContentBundle bundle; - bundle = new ContentBundle(member); + personEn.setSurname(personData.getSurname()); + personEn.setGivenName(personData.getGivenname()); + personEn.setTitlePre(personData.getTitlePre()); - folder.addItem(bundle); + personEn.save(); + personEn.setLanguage("en"); + + ContentBundle person; + person = new ContentBundle(personDe); + person.addInstance(personEn); + + folder.addItem(person); StringTokenizer contactData = new StringTokenizer( - memberData.getContactData(), + personData.getContactData(), "\n"); - Contact contact = new Contact(); + Contact contactDe = new Contact(); + Contact contactEn = new Contact(); //System.out.printf("\nmember.name = %s\n", member.getName()); //System.out.printf("\nmember.title = %s\n", member.getTitle()); - contact.setLanguage("de"); - contact.setName(String.format("kontakt-%s", member.getName())); - contact.setTitle(String.format("Kontakt %s", - member.getTitle())); - contact.setPerson(member, "commonContact"); + contactDe.setLanguage("de"); + contactDe.setName( + String.format("kontakt-%s", personDe.getName())); + contactDe.setTitle(String.format("Kontakt %s", + personDe.getTitle())); + contactDe.setPerson(personDe, "commonContact"); + contactEn.setLanguage("en"); + contactEn.setName( + String.format("kontakt-%s", personEn.getName())); + contactEn.setTitle(String.format("Kontakt %s", + personEn.getTitle())); + contactEn.setPerson(personDe, "commonContact"); String homepage = null; while (contactData.hasMoreTokens()) { String token; @@ -960,59 +1198,96 @@ public class DaBInImporter extends Program { value = token.substring(token.indexOf('=') + 1).trim(); if ("Raum_1".equals(key)) { - contact.addContactEntry( - new GenericContactEntry(contact, + contactDe.addContactEntry( + new GenericContactEntry(contactDe, + "office", + value, + "")); + contactEn.addContactEntry( + new GenericContactEntry(contactEn, "office", value, "")); } else if ("Tel_1".equals(key) && value.startsWith("Fax: ")) { - contact.addContactEntry(new GenericContactEntry( - contact, + contactDe.addContactEntry(new GenericContactEntry( + contactDe, + "fax", + value.substring(6), + "")); + contactEn.addContactEntry(new GenericContactEntry( + contactEn, "fax", value.substring(6), "")); } else if ("Tel_1".equals(key)) { - contact.addContactEntry( - new GenericContactEntry(contact, + contactDe.addContactEntry( + new GenericContactEntry(contactDe, + "phoneOffice", + value, + "")); + contactEn.addContactEntry( + new GenericContactEntry(contactEn, "phoneOffice", value, "")); } else if ("eMail_1".equals(key)) { - contact.addContactEntry( - new GenericContactEntry(contact, + contactDe.addContactEntry( + new GenericContactEntry(contactDe, + "email", + value, + "")); + contactEn.addContactEntry( + new GenericContactEntry(contactEn, "email", value, "")); } else if ("WWW_1".equals(key)) { - contact.addContactEntry( - new GenericContactEntry(contact, + contactDe.addContactEntry( + new GenericContactEntry(contactDe, + "homepage", + value, + "")); + contactEn.addContactEntry( + new GenericContactEntry(contactEn, "homepage", value, "")); homepage = value; + homepage = value; } - contact.setContentSection(section); - contact.save(); - ContentBundle contactBundle = new ContentBundle(contact); + contactDe.setContentSection(section); + contactDe.save(); + contactEn.setContentSection(section); + contactEn.save(); + ContentBundle contactBundle = new ContentBundle(contactDe); + contactBundle.addInstance(contactEn); contacts.addItem(contactBundle); - member.save(); + personDe.save(); if (homepage != null) { - RelatedLink homepageLink; - homepageLink = new RelatedLink(); - homepageLink.setTitle("Persönliche Homepage"); - homepageLink.setTargetType(Link.EXTERNAL_LINK); - homepageLink.setTargetURI(homepage); - homepageLink.setLinkListName(""); - homepageLink.setLinkOwner(member); - homepageLink.save(); + RelatedLink homepageLinkDe; + homepageLinkDe = new RelatedLink(); + homepageLinkDe.setTitle("Persönliche Homepage"); + homepageLinkDe.setTargetType(Link.EXTERNAL_LINK); + homepageLinkDe.setTargetURI(homepage); + homepageLinkDe.setLinkListName(""); + homepageLinkDe.setLinkOwner(personDe); + homepageLinkDe.save(); + + RelatedLink homepageLinkEn; + homepageLinkEn = new RelatedLink(); + homepageLinkEn.setTitle("Personal homepage"); + homepageLinkEn.setTargetType(Link.EXTERNAL_LINK); + homepageLinkEn.setTargetURI(homepage); + homepageLinkEn.setLinkListName(""); + homepageLinkEn.setLinkOwner(personDe); + homepageLinkEn.save(); } } - - membersMap.put(memberData.getDabinId(), member); + personsMap.put(personData.getDabinId(), person); } }; transaction.run(); @@ -1068,22 +1343,24 @@ public class DaBInImporter extends Program { //departmentEn.save(); //department.save(); - System.out.println("Assigning members..."); + System.out.println("\tAssigning members..."); int i = 1; for (MembershipData membership : departmentData.getMembers()) { - System.out.printf("\t\t%d of %d...", i, departmentData. - getMembers().size()); - SciMember member = membersMap.get(membership. - getPersonDaBInId()); - String status; - String role; - - if (member == null) { - System.out.printf( - "No member for DaBIn person ID '%s' found. Skiping.\n", membership. - getPersonDaBInId()); + System.out.printf("\t\t%d of %d: (DaBIn member id: %s)...", + i, + departmentData.getMembers().size(), + membership.getPersonDaBInId()); + if (!personsMap.containsKey( + membership.getPersonDaBInId())) { + System.out.printf("No person for DaBIn id '%s'. " + + "Skiping.\n", + membership.getPersonDaBInId()); continue; } + SciMember member = (SciMember) personsMap.get(membership. + getPersonDaBInId()).getPrimaryInstance(); + String status; + String role; if ("Aktiv".equals(membership.getEigenschaft())) { status = "active"; @@ -1112,7 +1389,7 @@ public class DaBInImporter extends Program { i++; } - System.out.println("OK"); + System.out.println("\tOK"); orgaDe.addDepartment(departmentDe); orgaEn.addDepartment(departmentEn); @@ -1151,12 +1428,18 @@ public class DaBInImporter extends Program { projectDe.setName(projectNameDe); projectDe.setProjectDescription(projectData.getDescDe()); projectDe.setFunding(projectData.getFundingDe()); + if (projectData.getBegin() != null) { + projectDe.setBegin(projectData.getBegin().getTime()); + } + if (projectData.getEnd() != null) { + projectDe.setEnd(projectData.getEnd().getTime()); + } projectDe.setLanguage("de"); projectDe.setContentSection(section); projectDe.save(); System.out.println("OK"); } else { - System.out.println("No english version. Skiping."); + System.out.println("No german version. Skiping."); } System.out.printf("\ten: %s...", projectData.getNameEn()); @@ -1175,6 +1458,12 @@ public class DaBInImporter extends Program { projectEn.setName(projectNameEn); projectEn.setProjectDescription(projectData.getDescEn()); projectEn.setFunding(projectData.getFundingEn()); + if (projectData.getBegin() != null) { + projectEn.setBegin(projectData.getBegin().getTime()); + } + if (projectData.getEnd() != null) { + projectEn.setEnd(projectData.getEnd().getTime()); + } projectEn.setLanguage("en"); projectEn.setContentSection(section); projectEn.save(); @@ -1196,13 +1485,16 @@ public class DaBInImporter extends Program { projects.addItem(project); projectsMap.put(projectData.getDabinId(), project); - System.out.print("Assigning project to department... "); + System.out.print("\tAssigning project to department... "); ContentBundle department = departmentsMap.get(projectData. getDepartment()); if (department == null) { - System.out.printf( - "No department found for DaBIn id '%s'. Assinging project to organization..."); - orgaDe.addProject(projectDe); + System.out.printf("No department found for DaBIn id '%s'. " + + "Assinging project to organization...", + projectData.getDabinId()); + if (orgaDe != null) { + orgaDe.addProject(projectDe); + } if (projectEn != null) { orgaEn.addProject(projectEn); } @@ -1212,28 +1504,32 @@ public class DaBInImporter extends Program { SciDepartment departmentEn = (SciDepartment) department. getInstance("en"); - departmentDe.addProject(projectDe); + if (projectDe != null) { + departmentDe.addProject(projectDe); + } if (projectEn != null) { departmentEn.addProject(projectEn); } } System.out.println("OK"); - System.out.println("Assigning members..."); + System.out.println("\tAssigning members..."); int i = 1; for (MembershipData membership : projectData.getMembers()) { - System.out.printf("\t\t%d of %d...", i, projectData. - getMembers().size()); - SciMember member = membersMap.get(membership. - getPersonDaBInId()); - String role; - - if (member == null) { - System.out.printf( - "No member for DaBIn person ID '%s' found. Skiping.\n", - membership.getPersonDaBInId()); + System.out.printf("\t\t%d of %d (dabin member id: %s)...", + i, + projectData.getMembers().size(), + membership.getPersonDaBInId()); + if (!personsMap.containsKey( + membership.getPersonDaBInId())) { + System.out.printf("No person for DaBIn id '%s'. " + + "Skiping.\n", + membership.getPersonDaBInId()); continue; } + GenericPerson member = (GenericPerson) personsMap.get(membership. + getPersonDaBInId()).getPrimaryInstance(); + String role; if ("Projektleitung".equals(membership.getAuftrag())) { role = "head"; @@ -1241,7 +1537,9 @@ public class DaBInImporter extends Program { role = "member"; } - projectDe.addPerson(member, role, "active"); + if (projectDe != null) { + projectDe.addPerson(member, role, "active"); + } if (projectEn != null) { projectEn.addPerson(member, role, "active"); } @@ -1249,7 +1547,7 @@ public class DaBInImporter extends Program { i++; } - System.out.println("OK"); + System.out.println("\tOK"); } }; diff --git a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/MemberData.java b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PersonData.java similarity index 98% rename from ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/MemberData.java rename to ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PersonData.java index d70bbfb7e..304f28cfb 100644 --- a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/MemberData.java +++ b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PersonData.java @@ -8,7 +8,7 @@ package com.arsdigita.cms.dabin; * * @author jensp */ -public class MemberData { +public class PersonData { private String dabinId; private String titlePre; diff --git a/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PersonType.java b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PersonType.java new file mode 100644 index 000000000..c7d801b2b --- /dev/null +++ b/ccm-cms-dabinimporter/src/com/arsdigita/cms/dabin/PersonType.java @@ -0,0 +1,11 @@ +package com.arsdigita.cms.dabin; + +/** + * + * @author jensp + */ +public enum PersonType { + + MEMBER, AUTHOR, OTHER + +} diff --git a/ccm-cms-types-person/application.xml b/ccm-cms-types-person/application.xml new file mode 100644 index 000000000..a71a56e3a --- /dev/null +++ b/ccm-cms-types-person/application.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + Person type for OpenCCM + + + diff --git a/ccm-cms-types-person/pdl/com/arsdigita/content-types/Person.pdl b/ccm-cms-types-person/pdl/com/arsdigita/content-types/Person.pdl new file mode 100644 index 000000000..a975fad47 --- /dev/null +++ b/ccm-cms-types-person/pdl/com/arsdigita/content-types/Person.pdl @@ -0,0 +1,30 @@ +// +// Copyright (C) 2009 Jens Pelzetter, for the Center of Social Politics of the University of Bremen +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public License +// as published by the Free Software Foundation; either version 2.1 of +// the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// + +model com.arsdigita.cms.contenttypes; + +import com.arsdigita.cms.ContentPage; + +object type Person extends GenericPerson { + +// GenericContact contact [0..1] = join ct_persons.contact_id +// to cms_contacts.contact_id; + + reference key (ct_persons.person_id); +} diff --git a/ccm-cms-types-person/sql/ccm-cms-types-person/postgres-create.sql b/ccm-cms-types-person/sql/ccm-cms-types-person/postgres-create.sql new file mode 100644 index 000000000..a733590e2 --- /dev/null +++ b/ccm-cms-types-person/sql/ccm-cms-types-person/postgres-create.sql @@ -0,0 +1,3 @@ +begin; +\i ddl/postgres/create.sql +end; \ No newline at end of file diff --git a/ccm-cms-types-person/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/Person.xml b/ccm-cms-types-person/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/Person.xml new file mode 100644 index 000000000..c34a2a470 --- /dev/null +++ b/ccm-cms-types-person/src/WEB-INF/content-types/com/arsdigita/cms/contenttypes/Person.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + diff --git a/ccm-cms-types-person/src/ccm-cms-types-person.config b/ccm-cms-types-person/src/ccm-cms-types-person.config new file mode 100644 index 000000000..2cf5a931f --- /dev/null +++ b/ccm-cms-types-person/src/ccm-cms-types-person.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ccm-cms-types-person/src/ccm-cms-types-person.load b/ccm-cms-types-person/src/ccm-cms-types-person.load new file mode 100644 index 000000000..23e2bfa60 --- /dev/null +++ b/ccm-cms-types-person/src/ccm-cms-types-person.load @@ -0,0 +1,16 @@ + + + +
+
+ + + +
+ + + + + + + \ No newline at end of file diff --git a/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/Person.java b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/Person.java new file mode 100644 index 000000000..206cefe66 --- /dev/null +++ b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/Person.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2010 Jens Pelzetter, + * for the Center of Social Policy Research of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes; + +import com.arsdigita.cms.ContentType; +import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.persistence.DataObject; +import com.arsdigita.persistence.OID; +import com.arsdigita.util.Assert; +import java.math.BigDecimal; + +/** + * Basic Person Contenttype for OpenCCM. + * + * @author Jens Pelzetter + */ +public class Person extends GenericPerson { + + /** Data object type for this domain object */ + public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.cms.contenttypes.Person"; + + /** + * Default constructor. This creates a new (empty) Person. + **/ + public Person() { + this(BASE_DATA_OBJECT_TYPE); + } + + public Person(BigDecimal id) throws DataObjectNotFoundException { + this(new OID(BASE_DATA_OBJECT_TYPE, id)); + } + + public Person(OID id) throws DataObjectNotFoundException { + super(id); + } + + public Person(DataObject obj) { + super(obj); + } + + public Person(String type) { + super(type); + } + + /* @Override + public void beforeSave() { + super.beforeSave(); + + Assert.exists(getContentType(), ContentType.class); + }*/ + + /* accessors *****************************************************/ +} diff --git a/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/PersonInitializer.java b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/PersonInitializer.java new file mode 100644 index 000000000..6d154a264 --- /dev/null +++ b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/PersonInitializer.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2010 Jens Pelzetter, + * for the Center of Social Policy Resarch of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes; + +import com.arsdigita.cms.contenttypes.ContentTypeInitializer; +import com.arsdigita.domain.DomainObject; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.domain.DomainObjectInstantiator; +import com.arsdigita.persistence.DataObject; +import com.arsdigita.runtime.DomainInitEvent; +import org.apache.log4j.Logger; + +/** + * + * @author Jens Pelzetter + */ +public class PersonInitializer extends ContentTypeInitializer { + + private static final Logger s_log = Logger.getLogger(PersonInitializer.class); + + public PersonInitializer() { + super("ccm-cms-types-person.pdl.mf", Person.BASE_DATA_OBJECT_TYPE); + } + + @Override + public String[] getStylesheets() { + return new String[]{"/static/content-types/com/arsdigita/cms/contenttypes/Person.xsl"}; + } +} diff --git a/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/PersonLoader.java b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/PersonLoader.java new file mode 100644 index 000000000..ac9e4187a --- /dev/null +++ b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/PersonLoader.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2010 Jens Pelzetter, + * for the Center of Social Policy Research of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +package com.arsdigita.cms.contenttypes; + +/** + * + * @author Jens Pelzetter + */ +public class PersonLoader extends AbstractContentTypeLoader { + + private static final String[] TYPES = { + "/WEB-INF/content-types/com/arsdigita/cms/contenttypes/Person.xml" + }; + + public String[] getTypes() { + return TYPES; + } +} diff --git a/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/ui/PersonPropertiesStep.java b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/ui/PersonPropertiesStep.java new file mode 100644 index 000000000..da57f99b3 --- /dev/null +++ b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/ui/PersonPropertiesStep.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2010 Jens Pelzetter, + * for the Center of Social Policy Resarch of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.Component; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.ui.authoring.AuthoringKitWizard; +import com.arsdigita.cms.ui.authoring.BasicPageForm; +import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess; + +public class PersonPropertiesStep extends GenericPersonPropertiesStep { + + public static final String EDIT_SHEET_NAME = "edit"; + + public PersonPropertiesStep(ItemSelectionModel itemModel, + AuthoringKitWizard parent) { + super(itemModel, parent); + } + + protected void createEditSheet(ItemSelectionModel itemModel) { + BasicPageForm editSheet; + editSheet = new PersonPropertyForm(itemModel, this); + add(EDIT_SHEET_NAME, "Edit", + new WorkflowLockedComponentAccess(editSheet, itemModel), editSheet. + getSaveCancelSection().getCancelButton()); + } + + public static Component getPersonPropertySheet(ItemSelectionModel itemModel) { + Component sheet = GenericPersonPropertiesStep.getGenericPersonPropertySheet( + itemModel); + + return sheet; + } +} diff --git a/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/ui/PersonPropertyForm.java b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/ui/PersonPropertyForm.java new file mode 100644 index 000000000..a0e504d77 --- /dev/null +++ b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/ui/PersonPropertyForm.java @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2010 Jens Pelzetter, + * for the Center of Social Policy Research of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ +package com.arsdigita.cms.contenttypes.ui; + +import com.arsdigita.bebop.FormData; +import com.arsdigita.bebop.Label; +import com.arsdigita.bebop.event.FormInitListener; +import com.arsdigita.bebop.event.FormProcessListener; +import com.arsdigita.bebop.event.FormSectionEvent; +import com.arsdigita.bebop.event.FormSubmissionListener; +import com.arsdigita.bebop.form.TextField; +import com.arsdigita.bebop.parameters.ParameterModel; +import com.arsdigita.bebop.parameters.StringParameter; +import com.arsdigita.cms.ItemSelectionModel; +import com.arsdigita.cms.contenttypes.Person; +import com.arsdigita.cms.contenttypes.util.PersonGlobalizationUtil; +import com.arsdigita.cms.ui.authoring.BasicPageForm; +import org.apache.log4j.Logger; + +/** + * Form to edit the properties of a person. + * + * @author: Jens Pelzetter + */ +public class PersonPropertyForm + extends GenericPersonPropertyForm + implements FormProcessListener, + FormInitListener, + FormSubmissionListener { + + private static final Logger s_log = Logger.getLogger( + PersonPropertyForm.class); + private PersonPropertiesStep m_step; + public static final String ID = "Person_edit"; + + public PersonPropertyForm(ItemSelectionModel itemModel) { + this(itemModel, null); + } + + public PersonPropertyForm(ItemSelectionModel itemModel, + PersonPropertiesStep step) { + super(itemModel, step); + m_step = step; + addSubmissionListener(this); + } + + @Override + protected void addWidgets() { + super.addWidgets(); + } + + public void init(FormSectionEvent fse) { + super.init(fse); + FormData data = fse.getFormData(); + Person person = (Person) super.initBasicWidgets(fse); + } + + public void process(FormSectionEvent fse) { + super.process(fse); + FormData data = fse.getFormData(); + + } +} diff --git a/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/util/PersonGlobalizationUtil.java b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/util/PersonGlobalizationUtil.java new file mode 100644 index 000000000..8d51027e7 --- /dev/null +++ b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/util/PersonGlobalizationUtil.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2009 Jens Pelzetter, for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +package com.arsdigita.cms.contenttypes.util; + +import com.arsdigita.globalization.GlobalizedMessage; + +public class PersonGlobalizationUtil { + final public static String BUNDLE_NAME = + "com.arsdigita.cms.contenttypes.util.PersonResourceBundle"; + + public static GlobalizedMessage globalize (String key) { + return new GlobalizedMessage(key, BUNDLE_NAME); + } + + public static GlobalizedMessage globalize (String key, Object[] args) { + return new GlobalizedMessage(key, BUNDLE_NAME, args); + } +} \ No newline at end of file diff --git a/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/util/PersonResourceBundle.java b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/util/PersonResourceBundle.java new file mode 100644 index 000000000..999bbf468 --- /dev/null +++ b/ccm-cms-types-person/src/com/arsdigita/cms/contenttypes/util/PersonResourceBundle.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2009 Jens Pelzetter, for the Center of Social Politics of the University of Bremen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +package com.arsdigita.cms.contenttypes.util; + +import java.util.PropertyResourceBundle; +import com.arsdigita.globalization.ChainedResourceBundle; +import com.arsdigita.cms.CMSGlobalized; + +public class PersonResourceBundle extends ChainedResourceBundle implements CMSGlobalized { + public static final String PERSON_BUNDLE_NAME = + "com.arsdigita.cms.contenttypes.PersonResources"; + + public PersonResourceBundle() { + super(); + addBundle((PropertyResourceBundle)getBundle(PERSON_BUNDLE_NAME)); + addBundle((PropertyResourceBundle)getBundle(BUNDLE_NAME)); + } +} \ No newline at end of file diff --git a/ccm-cms-types-person/web/static/content-types/com/arsdigita/cms/contenttypes/Person.xsl b/ccm-cms-types-person/web/static/content-types/com/arsdigita/cms/contenttypes/Person.xsl new file mode 100644 index 000000000..22cbc0292 --- /dev/null +++ b/ccm-cms-types-person/web/static/content-types/com/arsdigita/cms/contenttypes/Person.xsl @@ -0,0 +1,35 @@ + +]> + + + + + +

+   +   +   + +

+ +
+ + +

+ + + + +

+ +
+ +
\ No newline at end of file