From: <pb...@fe...> - 2012-05-05 07:15:55
|
Author: pboy Date: 2012-05-05 07:15:40 +0000 (Sat, 05 May 2012) New Revision: 2311 Added: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/ trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/AbstractAssocUpgrade.java trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/AbstractBundleUpgrade.java trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreateContactBundles.java trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreateOrgaUnitBundles.java trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreatePersonBundles.java trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericContactGenericPersonAssocUpgrade.java trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericContactAssocUpgrade.java trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericOrgaUnitAssocUpgrade.java trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericPersonAssocUpgrade.java Removed: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericContactPersonAssocUpgrade.java Modified: trunk/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl trunk/ccm-cms/src/ccm-cms.upgrade trunk/ccm-core/src/com/arsdigita/domain/ReflectionInstantiator.java trunk/ccm-core/src/com/arsdigita/util/cmd/CommandLine.java trunk/ccm-core/src/com/arsdigita/util/cmd/StringSwitch.java trunk/ccm-core/src/com/arsdigita/util/cmd/Switch.java trunk/ccm-portalworkspace/src/com/arsdigita/portalworkspace/ui/PortletTypeForm.java Log: Some more enhancements of associoations and multilanguage support. Modified: trunk/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl =================================================================== --- trunk/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl 2012-05-05 07:13:29 UTC (rev 2310) +++ trunk/ccm-cms/pdl/com/arsdigita/content-types/GenericOrganizationalUnit.pdl 2012-05-05 07:15:40 UTC (rev 2311) @@ -56,15 +56,15 @@ // Links a organization with persons. association { - GenericOrganizationalUnitBundle[0..n] organizationalunits = join cms_bundles.bundle_id + GenericOrganizationalUnitBundle[0..n] organizationalunits = join cms_person_bundles.bundle_id to cms_organizationalunits_person_map.person_id, join cms_organizationalunits_person_map.organizationalunit_id - to cms_bundles.bundle_id; + to cms_orgaunit_bundles.bundle_id; - GenericPersonBundle[0..n] persons = join cms_bundles.bundle_id + GenericPersonBundle[0..n] persons = join cms_orgaunit_bundles.bundle_id to cms_organizationalunits_person_map.organizationalunit_id, join cms_organizationalunits_person_map.person_id - to cms_bundles.bundle_id; + to cms_person_bundles.bundle_id; // Additional attributes for the association String[0..1] role_name = cms_organizationalunits_person_map.role_name VARCHAR(100); Modified: trunk/ccm-cms/src/ccm-cms.upgrade =================================================================== --- trunk/ccm-cms/src/ccm-cms.upgrade 2012-05-05 07:13:29 UTC (rev 2310) +++ trunk/ccm-cms/src/ccm-cms.upgrade 2012-05-05 07:15:40 UTC (rev 2311) @@ -52,7 +52,9 @@ <script sql="ccm-cms/upgrade/::database::-6.6.3-6.6.4.sql"/> </version> <version from="6.6.4" to="6.6.5"> - <script class="com.arsdigita.cms.contenttypes.GenericContactPersonAssocUpgrade"/> + <script class="com.arsdigita.cms.contenttypes.upgrades.CreateContactBundles"/> + <script class="com.arsdigita.cms.contenttypes.upgrades.CreatePersonBundles"/> + <script class="com.arsdigita.cms.contenttypes.upgrades.GenericContactGenericPersonAssocUpgrade"/> <script sql="ccm-cms/upgrade::database::-6.6.4-6.6.5.sql"/> </version> <version from="6.6.5" to="6.6.6"> @@ -61,6 +63,6 @@ </version> <version from="6.6.6" to="6.6.7"> <!-- CMS Workspace&Service now loaded as legacy free application --> - <script sql="ccm-cms/upgrade/::database::-6.6.6-6.6.7.sql"/> + <script sql="ccm-cms/upgrade/::database::-6.6.6-6.6.7.sql"/> </version> </upgrade> Deleted: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericContactPersonAssocUpgrade.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericContactPersonAssocUpgrade.java 2012-05-05 07:13:29 UTC (rev 2310) +++ trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/GenericContactPersonAssocUpgrade.java 2012-05-05 07:15:40 UTC (rev 2311) @@ -1,452 +0,0 @@ -package com.arsdigita.cms.contenttypes; - -import com.arsdigita.util.cmd.Program; -import com.arsdigita.runtime.RuntimeConfig; -import com.arsdigita.util.jdbc.Connections; -import java.math.BigDecimal; -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.ArrayList; -import java.util.List; -import org.apache.commons.cli.CommandLine; - -/** - * Upgrade for association between GenericContact and GenericPerson (6.6.4 to - * 6.6.5) - * - * @author Jens Pelzetter - * @version $Id: GenericContactPersonAssocUpgrade.java 1501 2012-02-10 16:49:14Z - * jensp $ - */ -public class GenericContactPersonAssocUpgrade extends Program { - - public GenericContactPersonAssocUpgrade() { - super("GenericContactPersonAssocUpgrade", "1.0.0", ""); - } - - public static void main(final String[] args) { - new GenericContactPersonAssocUpgrade().run(args); - } - - public void doRun(final CommandLine cmdLine) { - System.out.println("Starting upgrade..."); - List<AssocEntry> oldData = new ArrayList<AssocEntry>(); - - System.out.println("Trying to get JDBC connection..."); - - final Connection conn = Connections.acquire(RuntimeConfig.getConfig(). - getJDBCURL()); - try { - conn.setAutoCommit(false); - } catch (SQLException ex) { - System.err.println("Failed to configure JDBC connection."); - printStackTrace(ex); - close(conn); - return; - } - - System.out.println("Retrieving old data..."); - try { - final Statement stmt = conn.createStatement(); - final ResultSet oldAssocResult = stmt.executeQuery( - "SELECT person_id, contact_id, link_order, link_key " - + "FROM cms_person_contact_map " - + "JOIN cms_items on person_id = item_id " - + "WHERE version = 'draft' "); - - while (oldAssocResult.next()) { - AssocEntry entry = new AssocEntry(); - - entry.setPersonDraftId(oldAssocResult.getBigDecimal(1)); - entry.setPersonDraftBundleId(getParentIdFor( - entry.getPersonDraftId(), conn)); - entry.setContactDraftId(oldAssocResult.getBigDecimal(2)); - entry.setContactDraftBundleId(getParentIdFor( - entry.getContactDraftId(), conn)); - - entry.setPersonPublicId(getPublicIdFor( - entry.getPersonDraftId(), conn)); - entry.setPersonPublicBundleId(getPublicIdFor( - entry.getPersonDraftBundleId(), conn)); - entry.setContactPublicId(getPublicIdFor( - entry.getContactDraftId(), conn)); - entry.setContactPublicBundleId(getPublicIdFor( - entry.getContactDraftBundleId(), conn)); - - entry.setLinkOrder(oldAssocResult.getInt(3)); - entry.setLinkKey(oldAssocResult.getString(4)); - - oldData.add(entry); - } - } catch (SQLException ex) { - System.err.println("Failed to retrieve old data."); - printStackTrace(ex); - return; - } - - try { - System.out.println("Droping old table..."); - final Statement stmt = conn.createStatement(); - stmt.execute("DROP TABLE cms_person_contact_map"); - } catch (SQLException ex) { - System.err.println("Failed to drop old table."); - printStackTrace(ex); - rollback(conn); - close(conn); - return; - } - - try { - System.out.println("Creating new tables..."); - final Statement stmt = conn.createStatement(); - - stmt.addBatch("CREATE TABLE cms_person_bundles ( " - + "bundle_id integer NOT NULL)"); - - stmt.addBatch("CREATE TABLE cms_contact_bundles ( " - + "bundle_id integer NOT NULL)"); - - stmt.addBatch("CREATE TABLE cms_person_contact_map (" - + "person_id integer NOT NULL," - + "contact_id integer NOT NULL," - + "link_order integer," - + "link_key character varying(100)" - + ")"); - - stmt.addBatch("ALTER TABLE ONLY cms_person_bundles " - + "ADD CONSTRAINT cms_pers_bundl_bund_id_p_7xuzi " - + "PRIMARY KEY (bundle_id);"); - - stmt.addBatch("ALTER TABLE ONLY cms_person_bundles " - + "ADD CONSTRAINT cms_pers_bundl_bund_id_f__rzge " - + "FOREIGN KEY (bundle_id) " - + "REFERENCES cms_bundles(bundle_id);"); - - stmt.addBatch("ALTER TABLE ONLY cms_contact_bundles " - + "ADD CONSTRAINT cms_cont_bundl_bund_id_p_2p6vp " - + "PRIMARY KEY (bundle_id);"); - - stmt.addBatch("ALTER TABLE ONLY cms_contact_bundles " - + "ADD CONSTRAINT cms_cont_bundl_bund_id_f_m8aga " - + "FOREIGN KEY (bundle_id) " - + "REFERENCES cms_bundles(bundle_id);"); - - stmt.addBatch("ALTER TABLE ONLY cms_person_contact_map " - + "ADD CONSTRAINT cms_per_con_map_con_id_p_g1cii " - + "PRIMARY KEY (contact_id, person_id)"); - - stmt.addBatch("ALTER TABLE ONLY cms_person_contact_map " - + "ADD CONSTRAINT cms_per_con_map_con_id_f_peoc2 " - + "FOREIGN KEY (contact_id) " - + "REFERENCES cms_contact_bundles(bundle_id);"); - - stmt.addBatch("ALTER TABLE ONLY cms_person_contact_map " - + "ADD CONSTRAINT cms_per_con_map_per_id_f_g82jn " - + "FOREIGN KEY (person_id) " - + "REFERENCES cms_person_bundles(bundle_id);"); - stmt.executeBatch(); - - } catch (SQLException ex) { - System.err.println("Failed to create new table."); - printStackTrace(ex); - rollback(conn); - close(conn); - return; - } - - try { - System.out.println("Filling new tables with data..."); - final Statement queryPersonsStmt = conn.createStatement(); - final Statement queryContactsStmt = conn.createStatement(); - final Statement stmt = conn.createStatement(); - - final ResultSet personsRs = - queryPersonsStmt.executeQuery( - "SELECT parent_id " - + "FROM cms_items " - + "JOIN cms_persons " - + "ON cms_items.item_id = cms_persons.person_id"); - - while (personsRs.next()) { - stmt.addBatch(String.format("INSERT INTO cms_person_bundles (bundle_id) " - + "VALUES (%d)", - personsRs.getInt(1))); - stmt.addBatch(String.format( - "UPDATE acs_objects " - + "SET default_domain_class = 'com.arsdigita.cms.contenttypes.GenericPersonBundle'," - + "object_type = 'com.arsdigita.cms.contenttypes.GenericPersonBundle' " - + "WHERE object_id = %d", - personsRs.getInt(1))); - } - - final ResultSet contactsRs = queryContactsStmt.executeQuery( - "SELECT DISTINCT parent_id " - + "FROM cms_items " - + "JOIN cms_contacts " - + "ON cms_items.item_id = cms_contacts.contact_id"); - - while (contactsRs.next()) { - stmt.addBatch(String.format("INSERT INTO cms_contact_bundles (bundle_id) " - + "VALUES (%s)", - contactsRs.getInt(1))); - stmt.addBatch(String.format( - "UPDATE acs_objects " - + "SET default_domain_class = 'com.arsdigita.cms.contenttypes.GenericContactBundle', " - + "object_type = 'com.arsdigita.cms.contenttypes.GenericContactBundle' " - + "WHERE object_id = %d", - contactsRs.getInt(1))); - } - - final List<String> processedEntries = - new ArrayList<String>(); - for (AssocEntry entry : oldData) { - if (processedEntries.contains( - String.format("%s-%s", - entry.getPersonDraftBundleId().toString(), - entry.getContactDraftBundleId().toString()))) { - continue; - } - - stmt.addBatch(String.format( - "INSERT INTO cms_person_contact_map (" - + "person_id, " - + "contact_id, " - + "link_order, " - + "link_key) " - + "VALUES (%s, %s, %d, '%s')", - entry.getPersonDraftBundleId().toString(), - entry.getContactDraftBundleId().toString(), - entry.getLinkOrder(), - entry.getLinkKey())); - - if ((entry.getPersonPublicBundleId() != null) - && (entry.getContactPublicBundleId() != null)) { - stmt.addBatch(String.format( - "INSERT INTO cms_person_contact_map (" - + "person_id, " - + "contact_id, " - + "link_order, " - + "link_key) " - + "VALUES (%s, %s, %d, '%s')", - entry.getPersonPublicBundleId().toString(), - entry.getContactPublicBundleId().toString(), - entry.getLinkOrder(), - entry.getLinkKey())); - } - - if (entry.getPersonPublicBundleId() != null) { - stmt.addBatch(String.format( - "UPDATE cms_published_links " - + "SET pending = %s, " - + "pending_source = %s, " - + "draft_target = %s " - + "WHERE pending = %s " - + "AND draft_target = %s", - entry.getPersonPublicBundleId().toString(), - entry.getPersonPublicBundleId().toString(), - entry.getContactDraftBundleId(), - entry.getPersonPublicId(), - entry.getContactDraftId())); - } - - if (entry.getContactPublicBundleId() != null) { - stmt.addBatch(String.format( - "UPDATE cms_published_links " - + "SET pending = %s, " - + "pending_source = %s, " - + "draft_target = %s " - + "WHERE pending = %s " - + "AND draft_target = %s", - entry.getContactPublicBundleId().toString(), - entry.getContactPublicBundleId().toString(), - entry.getPersonDraftBundleId(), - entry.getContactPublicId(), - entry.getPersonDraftId())); - } - - processedEntries.add(String.format( - "%s-%s", - entry.getPersonDraftBundleId(). - toString(), - entry.getContactDraftBundleId().toString())); - } - - stmt.executeBatch(); - - - } catch (SQLException ex) { - System.err.println("Failed to fill tables."); - printStackTrace(ex); - rollback(conn); - close(conn); - return; - } - - try { - conn.commit(); - } catch (SQLException ex) { - System.err.println("Failed to commiting changes."); - printStackTrace(ex); - rollback(conn); - return; - } - - close(conn); - } - - private class AssocEntry { - - private BigDecimal personDraftId; - private BigDecimal contactDraftId; - private BigDecimal personPublicId; - private BigDecimal contactPublicId; - private BigDecimal personDraftBundleId; - private BigDecimal contactDraftBundleId; - private BigDecimal personPublicBundleId; - private BigDecimal contactPublicBundleId; - private Integer linkOrder; - private String linkKey; - - public AssocEntry() { - } - - public BigDecimal getContactDraftBundleId() { - return contactDraftBundleId; - } - - public void setContactDraftBundleId(BigDecimal contactDraftBundleId) { - this.contactDraftBundleId = contactDraftBundleId; - } - - public BigDecimal getContactDraftId() { - return contactDraftId; - } - - public void setContactDraftId(BigDecimal contactDraftId) { - this.contactDraftId = contactDraftId; - } - - public BigDecimal getContactPublicBundleId() { - return contactPublicBundleId; - } - - public void setContactPublicBundleId(BigDecimal contactPublicBundleId) { - this.contactPublicBundleId = contactPublicBundleId; - } - - public BigDecimal getContactPublicId() { - return contactPublicId; - } - - public void setContactPublicId(BigDecimal contactPublicId) { - this.contactPublicId = contactPublicId; - } - - public String getLinkKey() { - return linkKey; - } - - public void setLinkKey(String linkKey) { - this.linkKey = linkKey; - } - - public Integer getLinkOrder() { - return linkOrder; - } - - public void setLinkOrder(Integer linkOrder) { - this.linkOrder = linkOrder; - } - - public BigDecimal getPersonDraftBundleId() { - return personDraftBundleId; - } - - public void setPersonDraftBundleId(BigDecimal personDraftBundleId) { - this.personDraftBundleId = personDraftBundleId; - } - - public BigDecimal getPersonDraftId() { - return personDraftId; - } - - public void setPersonDraftId(BigDecimal personDraftId) { - this.personDraftId = personDraftId; - } - - public BigDecimal getPersonPublicBundleId() { - return personPublicBundleId; - } - - public void setPersonPublicBundleId(BigDecimal personPublicBundleId) { - this.personPublicBundleId = personPublicBundleId; - } - - public BigDecimal getPersonPublicId() { - return personPublicId; - } - - public void setPersonPublicId(BigDecimal personPublicId) { - this.personPublicId = personPublicId; - } - } - - private BigDecimal getPublicIdFor(final BigDecimal id, - final Connection conn) - throws SQLException { - final Statement stmt = conn.createStatement(); - - final ResultSet rs = stmt.executeQuery(String.format( - "SELECT item_id FROM cms_items WHERE master_id = %s", - id.toString())); - - while (rs.next()) { - return rs.getBigDecimal(1); - } - - return null; - } - - private BigDecimal getParentIdFor(final BigDecimal id, - final Connection conn) - throws SQLException { - final Statement stmt = conn.createStatement(); - - final ResultSet rs = stmt.executeQuery(String.format( - "SELECT parent_id FROM cms_items WHERE item_id = %s", - id.toString())); - - while (rs.next()) { - return rs.getBigDecimal(1); - } - - return null; - } - - private void rollback(final Connection conn) { - try { - conn.rollback(); - } catch (SQLException ex1) { - System.err.println("Rollback failed."); - ex1.printStackTrace(System.err); - } - } - - private void close(final Connection conn) { - try { - conn.close(); - } catch (SQLException ex) { - System.err.println("Failed to close JDBC connection."); - printStackTrace(ex); - } - } - - private void printStackTrace(final SQLException ex) { - ex.printStackTrace(System.err); - if (ex.getNextException() != null) { - printStackTrace(ex.getNextException()); - } - } -} Added: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/AbstractAssocUpgrade.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/AbstractAssocUpgrade.java (rev 0) +++ trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/AbstractAssocUpgrade.java 2012-05-05 07:15:40 UTC (rev 2311) @@ -0,0 +1,420 @@ +package com.arsdigita.cms.contenttypes.upgrades; + +import com.arsdigita.runtime.RuntimeConfig; +import com.arsdigita.util.cmd.Program; +import com.arsdigita.util.jdbc.Connections; +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.commons.cli.CommandLine; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public abstract class AbstractAssocUpgrade extends Program { + + public AbstractAssocUpgrade(final String name, final String version, final String usage) { + super(name, version, usage); + } + + protected abstract String getTableName(); + + protected abstract String getOwnerIdCol(); + + protected abstract String getMemberIdCol(); + + protected abstract Map<String, String> getAttributes(); + + protected abstract String getPrimaryKeyConstraintName(); + + protected abstract String getOwnerConstraintName(); + + protected abstract String getMemberConstraintName(); + + protected abstract String getOwnerTableName(); + + protected abstract String getMemberTableName(); + + @Override + protected void doRun(final CommandLine cmdLine) { + System.out.println("Starting upgrade..."); + final List<AssocEntry> oldData = new ArrayList<AssocEntry>(); + + final Connection conn = Connections.acquire(RuntimeConfig.getConfig(). + getJDBCURL()); + try { + conn.setAutoCommit(false); + } catch (SQLException ex) { + System.err.println("Failed to configure JDBC connection."); + printStackTrace(ex); + close(conn); + return; + } + + System.out.println("Retrieving old data..."); + try { + final Statement stmt = conn.createStatement(); + final ResultSet oldAssocResult = stmt.executeQuery(String.format( + "SELECT * " + + "FROM %s " + + "JOIN cms_items on %s = item_id " + + "WHERE version = 'draft' ", + getTableName(), + getOwnerIdCol())); + + while (oldAssocResult.next()) { + AssocEntry entry = new AssocEntry(); + + entry.setOwnerDraftId(oldAssocResult.getBigDecimal(getOwnerIdCol())); + entry.setOwnerDraftBundleId(getParentIdFor(entry.getOwnerDraftId(), conn)); + + entry.setMemberDraftId(oldAssocResult.getBigDecimal(getMemberIdCol())); + entry.setMemberDraftBundleId(getParentIdFor(entry.getMemberDraftId(), conn)); + + entry.setOwnerPublicId(getPublicIdFor(entry.getOwnerDraftId(), conn)); + entry.setOwnerPublicBundleId(getPublicIdFor(entry.getOwnerDraftBundleId(), conn)); + + entry.setMemberPublicId(getPublicIdFor(entry.getMemberDraftId(), conn)); + entry.setMemberPublicBundleId(getPublicIdFor(entry.getMemberDraftBundleId(), conn)); + + for (Map.Entry<String, String> attribute : getAttributes().entrySet()) { + entry.addAttribute(attribute.getKey(), oldAssocResult.getString(attribute.getKey())); + } + + oldData.add(entry); + } + } catch (SQLException ex) { + System.err.println("Failed to retrieve old data."); + printStackTrace(ex); + return; + } + + try { + System.out.println("Droping old table..."); + final Statement stmt = conn.createStatement(); + stmt.execute(String.format("DROP TABLE %s", getTableName())); + } catch (SQLException ex) { + System.err.println("Failed to drop old table."); + printStackTrace(ex); + rollback(conn); + close(conn); + return; + } + + try { + System.out.printf("Creating new table %s...\n", getTableName()); + final Statement stmt = conn.createStatement(); + + final StringBuilder attributesBuilder = new StringBuilder(); + for (Map.Entry<String, String> attribute : getAttributes().entrySet()) { + if (attributesBuilder.length() > 0) { + attributesBuilder.append(",\n"); + } + attributesBuilder.append(attribute.getKey()).append(' ').append(attribute.getValue()); + } + stmt.addBatch(String.format("CREATE TABLE %s (" + + "%s integer NOT NULL," + + "%s integer NOT NULL," + + "%s" + + ")", + getTableName(), + getOwnerIdCol(), + getMemberIdCol(), + attributesBuilder.toString())); + + stmt.addBatch(String.format("ALTER TABLE ONLY %s " + + "ADD CONSTRAINT %s " + + "PRIMARY KEY (%s, %s)", + getTableName(), + getPrimaryKeyConstraintName(), + getOwnerIdCol(), + getMemberIdCol())); + + stmt.addBatch(String.format("ALTER TABLE ONLY %s " + + "ADD CONSTRAINT %s " + + "FOREIGN KEY (%s)" + + "REFERENCES %s(bundle_id)", + getTableName(), + getOwnerConstraintName(), + getOwnerIdCol(), + getOwnerTableName())); + + stmt.addBatch(String.format("ALTER TABLE ONLY %s " + + "ADD CONSTRAINT %s " + + "FOREIGN KEY (%s)" + + "REFERENCES %s(bundle_id)", + getTableName(), + getMemberConstraintName(), + getMemberIdCol(), + getMemberTableName())); + + stmt.executeBatch(); + + } catch (SQLException ex) { + System.err.printf("Failed to create new table '%s'.\n", getTableName()); + printStackTrace(ex); + rollback(conn); + close(conn); + return; + } + + try { + System.out.println("Filling new table with data..."); + + final List<String> processedEntries = + new ArrayList<String>(); + final Statement stmt = conn.createStatement(); + + for (AssocEntry entry : oldData) { + if (processedEntries.contains( + String.format("%s-%s", + entry.getOwnerDraftBundleId().toString(), + entry.getMemberDraftBundleId().toString()))) { + continue; + } + + final StringBuilder attributeCols = new StringBuilder(); + for (Map.Entry<String, String> attribute : getAttributes().entrySet()) { + attributeCols.append(","); + attributeCols.append(attribute.getKey()); + } + final StringBuilder attributeValues = new StringBuilder(); + for (Map.Entry<String, String> attribute : getAttributes().entrySet()) { + attributeValues.append(","); + if (attribute.getValue().startsWith("character")) { + attributeValues.append('\"'); + } + attributeValues.append(entry.getAttributes().get(attribute.getKey())); + if (attribute.getValue().startsWith("character")) { + attributeValues.append('\"'); + } + } + stmt.addBatch(String.format("INSERT INTO %s (" + + "%s," + + "%s" + + "%s) " + + "VALUES (%s, %s %s)", + getTableName(), + getOwnerIdCol(), + getMemberIdCol(), + attributeCols.toString(), + entry.getOwnerDraftBundleId().toString(), + entry.getMemberDraftBundleId().toString(), + attributeValues.toString())); + if ((entry.getOwnerPublicBundleId() != null) + && (entry.getMemberPublicBundleId() != null)) { + stmt.addBatch(String.format("INSERT INTO %s (" + + "%s," + + "%s" + + "%s) " + + "VALUES (%s, %s %s)", + getTableName(), + getOwnerIdCol(), + getMemberIdCol(), + attributeCols.toString(), + entry.getOwnerPublicBundleId().toString(), + entry.getMemberPublicBundleId().toString(), + attributeValues.toString())); + } + + if (entry.getOwnerPublicId() != null) { + stmt.addBatch(String.format("DELETE FROM cms_published_links " + + "WHERE pending = %s " + + "AND draft_target = %s", + entry.getOwnerPublicId().toString(), + entry.getMemberDraftId().toString())); + } + + if (entry.getMemberPublicId() != null) { + stmt.addBatch(String.format("DELETE FROM cms_published_links " + + "WHERE pending = %s" + + "AND draft_target = %s", + entry.getMemberPublicId().toString(), + entry.getOwnerDraftId().toString())); + } + + processedEntries.add(String.format("%s-%s", + entry.getOwnerDraftBundleId().toString(), + entry.getMemberDraftBundleId().toString())); + + stmt.executeBatch(); + } + } catch (SQLException ex) { + System.err.println("Failed to fill table."); + printStackTrace(ex); + rollback(conn); + close(conn); + return; + } + + try { + conn.commit(); + } catch (SQLException ex) { + System.err.println("Failed to commiting changes."); + printStackTrace(ex); + rollback(conn); + return; + } + + close(conn); + } + + private BigDecimal getPublicIdFor(final BigDecimal id, + final Connection conn) + throws SQLException { + final Statement stmt = conn.createStatement(); + + final ResultSet rs = stmt.executeQuery(String.format( + "SELECT item_id FROM cms_items WHERE master_id = %s", + id.toString())); + + while (rs.next()) { + return rs.getBigDecimal(1); + } + + return null; + } + + private BigDecimal getParentIdFor(final BigDecimal id, + final Connection conn) + throws SQLException { + final Statement stmt = conn.createStatement(); + + final ResultSet rs = stmt.executeQuery(String.format( + "SELECT parent_id FROM cms_items WHERE item_id = %s", + id.toString())); + + while (rs.next()) { + return rs.getBigDecimal(1); + } + + return null; + } + + private void rollback(final Connection conn) { + try { + conn.rollback(); + } catch (SQLException ex1) { + System.err.println("Rollback failed."); + ex1.printStackTrace(System.err); + } + } + + private void close(final Connection conn) { + try { + conn.close(); + } catch (SQLException ex) { + System.err.println("Failed to close JDBC connection."); + printStackTrace(ex); + } + } + + private void printStackTrace(final SQLException ex) { + ex.printStackTrace(System.err); + if (ex.getNextException() != null) { + printStackTrace(ex.getNextException()); + } + } + + private class AssocEntry { + + private BigDecimal ownerDraftId; + private BigDecimal memberDraftId; + private BigDecimal ownerPublicId; + private BigDecimal memberPublicId; + private BigDecimal ownerDraftBundleId; + private BigDecimal memberDraftBundleId; + private BigDecimal ownerPublicBundleId; + private BigDecimal memberPublicBundleId; + private Map<String, String> attributes = new HashMap<String, String>(); + + public AssocEntry() { + } + + public BigDecimal getOwnerDraftId() { + return ownerDraftId; + } + + public void setOwnerDraftId(final BigDecimal ownerDraftId) { + this.ownerDraftId = ownerDraftId; + } + + public BigDecimal getMemberDraftId() { + return memberDraftId; + } + + public void setMemberDraftId(final BigDecimal memberDraftId) { + this.memberDraftId = memberDraftId; + } + + public BigDecimal getOwnerPublicId() { + return ownerPublicId; + } + + public void setOwnerPublicId(final BigDecimal ownerPublicId) { + this.ownerPublicId = ownerPublicId; + } + + public BigDecimal getMemberPublicId() { + return memberPublicId; + } + + public void setMemberPublicId(final BigDecimal memberPublicId) { + this.memberPublicId = memberPublicId; + } + + public BigDecimal getOwnerDraftBundleId() { + return ownerDraftBundleId; + } + + public void setOwnerDraftBundleId(final BigDecimal ownerDraftBundleId) { + this.ownerDraftBundleId = ownerDraftBundleId; + } + + public BigDecimal getMemberDraftBundleId() { + return memberDraftBundleId; + } + + public void setMemberDraftBundleId(final BigDecimal memberDraftBundleId) { + this.memberDraftBundleId = memberDraftBundleId; + } + + public BigDecimal getMemberPublicBundleId() { + return memberPublicBundleId; + } + + public void setMemberPublicBundleId(BigDecimal memberPublicBundleId) { + this.memberPublicBundleId = memberPublicBundleId; + } + + public BigDecimal getOwnerPublicBundleId() { + return ownerPublicBundleId; + } + + public void setOwnerPublicBundleId(BigDecimal ownerPublicBundleId) { + this.ownerPublicBundleId = ownerPublicBundleId; + } + + public Map<String, String> getAttributes() { + return Collections.unmodifiableMap(attributes); + } + + public void addAttribute(final String name, final String value) { + attributes.put(name, value); + } + + public void setAttributes(final Map<String, String> attributes) { + this.attributes = attributes; + } + + } +} Property changes on: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/AbstractAssocUpgrade.java ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Header Added: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/AbstractBundleUpgrade.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/AbstractBundleUpgrade.java (rev 0) +++ trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/AbstractBundleUpgrade.java 2012-05-05 07:15:40 UTC (rev 2311) @@ -0,0 +1,164 @@ +package com.arsdigita.cms.contenttypes.upgrades; + +import com.arsdigita.runtime.RuntimeConfig; +import com.arsdigita.util.cmd.Program; +import com.arsdigita.util.jdbc.Connections; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import org.apache.commons.cli.CommandLine; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public abstract class AbstractBundleUpgrade extends Program { + + public AbstractBundleUpgrade(final String name, final String version, final String usage) { + super(name, version, usage); + } + + protected abstract String getBundleTableName(); + + protected abstract String getContentItemTableName(); + + protected abstract String getIdColName(); + + protected abstract String getBundleClassName(); + + protected abstract String getPrimaryKeyConstraintName(); + + protected abstract String getBundleContraintName(); + + protected String getSuperBundleTable() { + return "cms_bundles"; + } + + @Override + public void doRun(final CommandLine cmdLine) { + System.out.println("Starting upgrade..."); + + System.out.println("Trying to get JDBC connection..."); + + final Connection conn = Connections.acquire(RuntimeConfig.getConfig(). + getJDBCURL()); + try { + conn.setAutoCommit(false); + } catch (SQLException ex) { + System.err.println("Failed to configure JDBC connection."); + printStackTrace(ex); + close(conn); + return; + } + + try { + System.out.printf("Creating new table %s...\n", getBundleTableName()); + final Statement stmt = conn.createStatement(); + + stmt.addBatch(String.format("CREATE TABLE %s ( " + + "bundle_id integer NOT NULL)", + getBundleTableName())); + + stmt.addBatch(String.format("ALTER TABLE ONLY %s " + + "ADD CONSTRAINT %s " + + "PRIMARY KEY (bundle_id);", + getBundleTableName(), + getPrimaryKeyConstraintName())); + + stmt.addBatch(String.format("ALTER TABLE ONLY %s " + + "ADD CONSTRAINT %s " + + "FOREIGN KEY (bundle_id) " + + "REFERENCES %s(bundle_id);", + getBundleTableName(), + getBundleContraintName(), + getSuperBundleTable())); + + stmt.executeBatch(); + + } catch (SQLException ex) { + System.err.printf("Failed to create table %s.\n", + getBundleTableName()); + printStackTrace(ex); + rollback(conn); + close(conn); + return; + } + + try { + System.out.println("Filling new tables with data..."); + final Statement queryPersonsStmt = conn.createStatement(); + final Statement stmt = conn.createStatement(); + + final ResultSet personsRs = queryPersonsStmt.executeQuery(String.format( + "SELECT parent_id " + + "FROM cms_items " + + "JOIN %s " + + "ON cms_items.item_id = %s.%s", + getBundleTableName(), + getBundleTableName(), + getIdColName())); + + while (personsRs.next()) { + stmt.addBatch(String.format("INSERT INTO %s (bundle_id) " + + "VALUES (%d)", + getBundleClassName(), + personsRs.getInt(1))); + stmt.addBatch(String.format( + "UPDATE acs_objects " + + "SET default_domain_class = '%s'," + + "object_type = '%s' " + + "WHERE object_id = %d", + getBundleClassName(), + getBundleClassName(), + personsRs.getInt(1))); + } + + stmt.executeBatch(); + } catch (SQLException ex) { + System.err.println("Failed to fill tables."); + printStackTrace(ex); + rollback(conn); + close(conn); + return; + } + + try { + conn.commit(); + } catch (SQLException ex) { + System.err.println("Failed to commiting modifications."); + printStackTrace(ex); + rollback(conn); + return; + } + + close(conn); + } + + private void rollback(final Connection conn) { + try { + conn.rollback(); + } catch (SQLException ex1) { + System.err.println("Rollback failed."); + ex1.printStackTrace(System.err); + } + } + + private void close(final Connection conn) { + try { + conn.close(); + } catch (SQLException ex) { + System.err.println("Failed to close JDBC connection."); + printStackTrace(ex); + } + } + + private void printStackTrace(final SQLException ex) { + ex.printStackTrace(System.err); + if (ex.getNextException() != null) { + printStackTrace(ex.getNextException()); + } + } + +} Property changes on: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/AbstractBundleUpgrade.java ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Header Added: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreateContactBundles.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreateContactBundles.java (rev 0) +++ trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreateContactBundles.java 2012-05-05 07:15:40 UTC (rev 2311) @@ -0,0 +1,50 @@ +package com.arsdigita.cms.contenttypes.upgrades; + +import com.arsdigita.cms.contenttypes.GenericContactBundle; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class CreateContactBundles extends AbstractBundleUpgrade { + + public CreateContactBundles() { + super("CreateContactBundles", "1.0.0", ""); + } + + public static void main(final String args[]) { + new CreateContactBundles().run(args); + } + + @Override + protected String getBundleTableName() { + return "cms_contact_bundles"; + } + + @Override + protected String getContentItemTableName() { + return "cms_contacts"; + } + + @Override + protected String getIdColName() { + return "contact_id"; + } + + @Override + protected String getBundleClassName() { + return GenericContactBundle.class.getName(); + } + + @Override + protected String getPrimaryKeyConstraintName() { + return "cms_cont_bundl_bund_id_p_2p6vp"; + } + + @Override + protected String getBundleContraintName() { + return "cms_cont_bundl_bund_id_f_m8aga"; + } + +} Property changes on: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreateContactBundles.java ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Header Added: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreateOrgaUnitBundles.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreateOrgaUnitBundles.java (rev 0) +++ trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreateOrgaUnitBundles.java 2012-05-05 07:15:40 UTC (rev 2311) @@ -0,0 +1,50 @@ +package com.arsdigita.cms.contenttypes.upgrades; + +import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitBundle; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class CreateOrgaUnitBundles extends AbstractBundleUpgrade { + + public CreateOrgaUnitBundles() { + super("CreateOrgaUnitBundles", "1.0.0", ""); + } + + public static void main(final String args[]) { + new CreateOrgaUnitBundles().run(args); + } + + @Override + protected String getBundleTableName() { + return "cms_orgaunit_bundles"; + } + + @Override + protected String getContentItemTableName() { + return "cms_organizationalunits"; + } + + @Override + protected String getIdColName() { + return "organizationalunit_id"; + } + + @Override + protected String getBundleClassName() { + return GenericOrganizationalUnitBundle.class.getName(); + } + + @Override + protected String getPrimaryKeyConstraintName() { + return "cms_orgau_bund_bund_id_p_cfjhf"; + } + + @Override + protected String getBundleContraintName() { + return "cms_org_con_map_org_id_f_vdrnx"; + } + +} Property changes on: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreateOrgaUnitBundles.java ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Header Added: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreatePersonBundles.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreatePersonBundles.java (rev 0) +++ trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreatePersonBundles.java 2012-05-05 07:15:40 UTC (rev 2311) @@ -0,0 +1,51 @@ +package com.arsdigita.cms.contenttypes.upgrades; + +import com.arsdigita.cms.contenttypes.GenericPersonBundle; + +/** + * Creates new table {@code cms_person_bundles}. Part of upgrade from 6.6.4 to 6.6.5 + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class CreatePersonBundles extends AbstractBundleUpgrade { + + public CreatePersonBundles() { + super("CreatePersonBundles", "1.0.0", ""); + } + + public static void main(final String args[]) { + new CreatePersonBundles().run(args); + } + + @Override + protected String getBundleTableName() { + return "cms_person_bundles"; + } + + @Override + protected String getContentItemTableName() { + return "cms_persons"; + } + + @Override + protected String getIdColName() { + return "person_id"; + } + + @Override + protected String getBundleClassName() { + return GenericPersonBundle.class.getName(); + } + + @Override + protected String getPrimaryKeyConstraintName() { + return "cms_pers_bundl_bund_id_p_7xuzi"; + } + + @Override + protected String getBundleContraintName() { + return "cms_pers_bundl_bund_id_f__rzge"; + } + +} Property changes on: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/CreatePersonBundles.java ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Header Added: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericContactGenericPersonAssocUpgrade.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericContactGenericPersonAssocUpgrade.java (rev 0) +++ trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericContactGenericPersonAssocUpgrade.java 2012-05-05 07:15:40 UTC (rev 2311) @@ -0,0 +1,71 @@ +package com.arsdigita.cms.contenttypes.upgrades; + +import java.util.HashMap; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class GenericContactGenericPersonAssocUpgrade extends AbstractAssocUpgrade { + + public GenericContactGenericPersonAssocUpgrade() { + super("GenericContactGenericPersonAssocUpgrade", "1.0.0", ""); + } + + public static void main(final String[] args) { + new GenericContactGenericPersonAssocUpgrade().run(args); + } + + @Override + protected String getTableName() { + return "cms_person_contact_map"; + } + + @Override + protected String getOwnerIdCol() { + return "person_id"; + } + + @Override + protected String getMemberIdCol() { + return "contact_id"; + } + + @Override + protected Map<String, String> getAttributes() { + final Map<String, String> attributes = new HashMap<String, String>(); + attributes.put("link_order", "integer"); + attributes.put("link_key", "character varying(100)"); + return attributes; + } + + @Override + protected String getPrimaryKeyConstraintName() { + return "cms_per_con_map_con_id_p_g1cii"; + } + + @Override + protected String getOwnerConstraintName() { + return "cms_per_con_map_per_id_f_g82jn"; + } + + @Override + protected String getMemberConstraintName() { + return "cms_per_con_map_con_id_f_peoc2"; + } + + @Override + protected String getOwnerTableName() { + return "cms_person_bundles"; + } + + @Override + protected String getMemberTableName() { + return "cms_contact_bundles"; + } + + + +} Property changes on: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericContactGenericPersonAssocUpgrade.java ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Header Added: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericContactAssocUpgrade.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericContactAssocUpgrade.java (rev 0) +++ trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericContactAssocUpgrade.java 2012-05-05 07:15:40 UTC (rev 2311) @@ -0,0 +1,71 @@ +package com.arsdigita.cms.contenttypes.upgrades; + +import java.util.HashMap; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class GenericOrgaUnitGenericContactAssocUpgrade extends AbstractAssocUpgrade { + + public GenericOrgaUnitGenericContactAssocUpgrade() { + super("GenericOrgaUnitGenericContactAssocUpgrade", "1.0.0", ""); + } + + public static void main(final String args[]) { + new GenericOrgaUnitGenericContactAssocUpgrade().run(args); + } + + @Override + protected String getTableName() { + return "cms_organizationalunits_contact_map"; + } + + @Override + protected String getOwnerIdCol() { + return "organizationalunit_id"; + } + + @Override + protected String getMemberIdCol() { + return "contact_id"; + } + + @Override + protected Map<String, String> getAttributes() { + final Map<String, String> attributes = new HashMap<String, String>(); + attributes.put("contact_type", "character varying(100)"); + attributes.put("map_order", "integer"); + return attributes; + } + + @Override + protected String getPrimaryKeyConstraintName() { + return "cms_org_con_map_con_id_p_1rc4y"; + } + + @Override + protected String getOwnerConstraintName() { + return "cms_org_con_map_org_id_f_vdrnx"; + } + + @Override + protected String getMemberConstraintName() { + return "cms_org_con_map_con_id_f_9tm3c"; + } + + @Override + protected String getOwnerTableName() { + return "cms_orgaunit_bundles"; + } + + @Override + protected String getMemberTableName() { + return "cms_contact_bundles"; + } + + + +} Property changes on: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericContactAssocUpgrade.java ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Header Added: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericOrgaUnitAssocUpgrade.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericOrgaUnitAssocUpgrade.java (rev 0) +++ trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericOrgaUnitAssocUpgrade.java 2012-05-05 07:15:40 UTC (rev 2311) @@ -0,0 +1,70 @@ +package com.arsdigita.cms.contenttypes.upgrades; + +import java.util.HashMap; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class GenericOrgaUnitGenericOrgaUnitAssocUpgrade extends AbstractAssocUpgrade { + + public GenericOrgaUnitGenericOrgaUnitAssocUpgrade() { + super("GenericOrgaUnitGenericOrgaUnitAssocUpgrade", "1.0.0", ""); + } + + public static void main(final String args[]) { + new GenericOrgaUnitGenericOrgaUnitAssocUpgrade().run(args); + } + + @Override + protected String getTableName() { + return "cms_organizationalunits_hierarchy_map"; + } + + @Override + protected String getOwnerIdCol() { + return "superior_orgaunit_id"; + } + + @Override + protected String getMemberIdCol() { + return "subordinate_orgaunit_id"; + } + + @Override + protected Map<String, String> getAttributes() { + final Map<String, String> attributes = new HashMap<String, String>(); + attributes.put("assoc_type", "character varying(128)"); + attributes.put("superior_orgaunit_order", "integer"); + attributes.put("subordinate_orgaunit_order", "integer"); + return attributes; + } + + @Override + protected String getPrimaryKeyConstraintName() { + return "cms_org_hie_map_sub_or_p_nykpq"; + } + + @Override + protected String getOwnerConstraintName() { + return "cms_org_hie_map_sup_or_f_qchkn"; + } + + @Override + protected String getMemberConstraintName() { + return "cms_org_hie_map_sub_or_f_xq5is"; + } + + @Override + protected String getOwnerTableName() { + return "cms_orgaunit_bundles"; + } + + @Override + protected String getMemberTableName() { + return "cms_orgaunit_bundles"; + } + +} Property changes on: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericOrgaUnitAssocUpgrade.java ___________________________________________________________________ Added: svn:keywords + URL HeadURL Author LastChangedBy Date LastChangedDate Rev Revision LastChangedRevision Id Header Added: trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericPersonAssocUpgrade.java =================================================================== --- trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericPersonAssocUpgrade.java (rev 0) +++ trunk/ccm-cms/src/com/arsdigita/cms/contenttypes/upgrades/GenericOrgaUnitGenericPersonAssocUpgrade.java 2012-05-05 07:15:40 UTC (rev 2311) @@ -0,0 +1,69 @@ +package com.arsdigita.cms.contenttypes.upgrades; + +import java.util.HashMap; +import java.util.Map; + +/** + * + * @author Jens Pelzetter + * @version $Id$ + */ +public class GenericOrgaUnitGenericPersonAssocUpgrade extends AbstractAssocUpgrade { + + public GenericOrgaUnitGenericPersonAssocUpgrade() { + super("GenericOrgaUnitGenericPersonAssocUpgrade", "1.0.0", ""); + } + + public static void main(final String args[]) { + new GenericContactGenericPersonAssocUpgrade().run(args); + } + + @Override + protected String getTableName() { + return "cms_organizationalunits_person_map"; + } + + @O... [truncated message content] |