- Vorhandene Upgrades für Assoziationen und ContentBundles aufgeteilt

- Abstrakte Basisklassen für ContentBundle und Assoziationen Upgrades. Erlauben einfaches erstellen der Upgrades durch 
  Überschreiben einiger einfacher Methoden.
- Version von ccm-sci-types-institute auf 6.6.5 erhöht, dass war vergessen worden



git-svn-id: https://svn.libreccm.org/ccm/trunk@1628 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2012-05-01 16:36:05 +00:00
parent c311c5daf9
commit 65fd40481c
18 changed files with 1143 additions and 866 deletions

View File

@ -3,6 +3,7 @@
<script sql="ccm-cms-publicpersonalprofile/upgrade/::database::-6.6.1-6.6.2.sql"/>
</version>
<version from="6.6.2" to="6.6.3">
<script class="com.arsdigita.cms.contenttypes.PublicPersonalProfileOwnerAssocUpgrade"/>
<script class="com.arsdigita.cms.contenttypes.upgrades.PublicPersonalProfileBundleCreate"/>
<script class="com.arsdigita.cms.contenttypes.upgrades.PublicPersonalProfileOwnerAssocUpgrade"/>
</version>
</upgrade>

View File

@ -1,405 +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 the owner association (6.6.1 to 6.6.2). Warning: Update of
* ccm-cms from 6.6.4 to 6.6.5 has be executed before this update.
*
* @author Jens Pelzetter
* @version $Id: PublicPersonalProfileOwnerAssocUpgrade.java 1501 2012-02-10
* 16:49:14Z jensp $
*/
public class PublicPersonalProfileOwnerAssocUpgrade extends Program {
public PublicPersonalProfileOwnerAssocUpgrade() {
super("PublicPersonalProfileOwnerAssocUpgrade", "1.0.0", "");
}
public static void main(final String[] args) {
new PublicPersonalProfileOwnerAssocUpgrade().run(args);
}
public void doRun(final CommandLine cmdLine) {
System.out.println("Starting upgrade...");
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(
"SELECT profile_id, owner_id, owner_order "
+ "FROM ct_public_personal_profile_owner_map "
+ "JOIN cms_items on profile_id = item_id "
+ "WHERE version = 'draft'");
while (oldAssocResult.next()) {
AssocEntry entry = new AssocEntry();
entry.setProfileDraftId(oldAssocResult.getBigDecimal(1));
entry.setProfileBundleDraftId(getParentIdFor(
entry.getProfileDraftId(), conn));
entry.setOwnerDraftId(oldAssocResult.getBigDecimal(2));
entry.setOwnerBundleDraftId(getParentIdFor(
entry.getOwnerDraftId(), conn));
entry.setProfilePublicId(getPublicIdFor(
entry.getProfileDraftId(), conn));
entry.setProfileBundlePublicId(getPublicIdFor(
entry.getProfileBundleDraftId(), conn));
entry.setOwnerPublicId(getParentIdFor(
entry.getOwnerDraftId(), conn));
entry.setOwnerBundlePublicId(getParentIdFor(
entry.getOwnerBundleDraftId(), conn));
entry.setOwnerOrder(oldAssocResult.getInt(3));
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 ct_public_personal_profile_owner_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 ct_public_personal_profile_bundles ( "
+ "bundle_id integer NOT NULL)");
stmt.addBatch("CREATE TABLE ct_public_personal_profile_owner_map ( "
+ "profile_id integer NOT NULL, "
+ "owner_id integer NOT NULL, "
+ "owner_order integer)");
stmt.addBatch("ALTER TABLE ONLY ct_public_personal_profile_bundles "
+ "ADD CONSTRAINT ct_pub_per_pro_bun_bun_p_zhc9i "
+ "PRIMARY KEY (bundle_id)");
stmt.addBatch("ALTER TABLE ONLY ct_public_personal_profile_bundles "
+ " ADD CONSTRAINT ct_pub_per_pro_bun_bun_f__jr2_ "
+ "FOREIGN KEY (bundle_id) "
+ "REFERENCES cms_bundles(bundle_id)");
stmt.addBatch("ALTER TABLE ONLY ct_public_personal_profile_owner_map "
+ "ADD CONSTRAINT ct_pub_per_pro_own_map_p_rr7ie "
+ "PRIMARY KEY (owner_id, profile_id)");
stmt.addBatch("ALTER TABLE ONLY ct_public_personal_profile_owner_map "
+ "ADD CONSTRAINT ct_pub_per_pro_own_map_f_cd7_1 "
+ "FOREIGN KEY (owner_id) "
+ "REFERENCES cms_person_bundles(bundle_id)");
stmt.addBatch(
"ALTER TABLE ONLY ct_public_personal_profile_owner_map "
+ "ADD CONSTRAINT ct_pub_per_pro_own_map_f_ugs15 "
+ "FOREIGN KEY (profile_id) "
+ "REFERENCES ct_public_personal_profile_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 queryProfilesStmt = conn.createStatement();
final Statement stmt = conn.createStatement();
final ResultSet profilesRs =
queryProfilesStmt.executeQuery(
"SELECT parent_id "
+ "FROM cms_items "
+ "JOIN ct_public_personal_profiles "
+ "ON cms_items.item_id = ct_public_personal_profiles.profile_id");
while (profilesRs.next()) {
stmt.addBatch(String.format(
"INSERT INTO ct_public_personal_profile_bundles (bundle_id) "
+ "VALUES (%d)",
profilesRs.getInt(1)));
stmt.addBatch(String.format(
"UPDATE acs_objects "
+ "SET default_domain_class = 'com.arsdigita.cms.contenttypes.PublicPersonalProfileBundle', "
+ "object_type = 'com.arsdigita.cms.contenttypes.PublicPersonalProfileBundle' "
+ "WHERE object_id = %d",
profilesRs.getInt(1)));
}
final List<String> processedEntries = new ArrayList<String>();
for (AssocEntry entry : oldData) {
if (processedEntries.contains(
String.format("%s-%s",
entry.getProfileBundleDraftId().toString(),
entry.getOwnerBundleDraftId().toString()))) {
continue;
}
stmt.addBatch(String.format(
"INSERT INTO ct_public_personal_profile_owner_map ("
+ "profile_id, "
+ "owner_id, "
+ "owner_order) "
+ "VALUES (%s, %s, %d)",
entry.getProfileBundleDraftId().toString(),
entry.getOwnerBundleDraftId().toString(),
entry.getOwnerOrder()));
if ((entry.getProfileBundlePublicId() != null)
&& (entry.getOwnerBundlePublicId() != null)) {
stmt.addBatch(String.format(
"INSERT INTO ct_public_personal_profile_owner_map ("
+ "profile_id, "
+ "owner_id, "
+ "owner_order) "
+ "VALUES (%s, %s, %d)",
entry.getProfileBundlePublicId().toString(),
entry.getOwnerBundlePublicId().toString(),
entry.getOwnerOrder()));
}
if (entry.getProfileBundlePublicId() != 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.getProfileBundlePublicId(),
entry.getProfileBundlePublicId(),
entry.getOwnerBundleDraftId(),
entry.getProfilePublicId(),
entry.getOwnerDraftId()));
}
if (entry.getOwnerBundlePublicId() != 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.getOwnerBundlePublicId(),
entry.getOwnerBundlePublicId(),
entry.getProfileBundleDraftId(),
entry.getOwnerPublicId(),
entry.getProfileDraftId()));
}
processedEntries.add(String.format(
"%s-%s",
entry.getProfileBundleDraftId().toString(),
entry.getOwnerBundleDraftId().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 profileDraftId;
private BigDecimal ownerDraftId;
private BigDecimal profilePublicId;
private BigDecimal ownerPublicId;
private BigDecimal profileBundleDraftId;
private BigDecimal ownerBundleDraftId;
private BigDecimal profileBundlePublicId;
private BigDecimal ownerBundlePublicId;
private Integer ownerOrder;
public AssocEntry() {
}
public BigDecimal getOwnerBundleDraftId() {
return ownerBundleDraftId;
}
public void setOwnerBundleDraftId(BigDecimal ownerBundleDraftId) {
this.ownerBundleDraftId = ownerBundleDraftId;
}
public BigDecimal getOwnerBundlePublicId() {
return ownerBundlePublicId;
}
public void setOwnerBundlePublicId(BigDecimal ownerBundlePublicId) {
this.ownerBundlePublicId = ownerBundlePublicId;
}
public BigDecimal getOwnerDraftId() {
return ownerDraftId;
}
public void setOwnerDraftId(BigDecimal ownerDraftId) {
this.ownerDraftId = ownerDraftId;
}
public Integer getOwnerOrder() {
return ownerOrder;
}
public void setOwnerOrder(Integer ownerOrder) {
this.ownerOrder = ownerOrder;
}
public BigDecimal getOwnerPublicId() {
return ownerPublicId;
}
public void setOwnerPublicId(BigDecimal ownerPublicId) {
this.ownerPublicId = ownerPublicId;
}
public BigDecimal getProfileBundleDraftId() {
return profileBundleDraftId;
}
public void setProfileBundleDraftId(BigDecimal profileBundleDraftId) {
this.profileBundleDraftId = profileBundleDraftId;
}
public BigDecimal getProfileBundlePublicId() {
return profileBundlePublicId;
}
public void setProfileBundlePublicId(BigDecimal profileBundlePublicId) {
this.profileBundlePublicId = profileBundlePublicId;
}
public BigDecimal getProfileDraftId() {
return profileDraftId;
}
public void setProfileDraftId(BigDecimal profileDraftId) {
this.profileDraftId = profileDraftId;
}
public BigDecimal getProfilePublicId() {
return profilePublicId;
}
public void setProfilePublicId(BigDecimal profilePublicId) {
this.profilePublicId = profilePublicId;
}
}
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 connectio.");
printStackTrace(ex);
}
}
private void printStackTrace(final SQLException ex) {
ex.printStackTrace(System.err);
if (ex.getNextException() != null) {
printStackTrace(ex.getNextException());
}
}
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;
}
}

View File

@ -0,0 +1,50 @@
package com.arsdigita.cms.contenttypes.upgrades;
import com.arsdigita.cms.contenttypes.PublicPersonalProfileBundle;
/**
*
* @author Jens Pelzetter
* @version $Id$
*/
public class PublicPersonalProfileBundleCreate extends AbstractBundleUpgrade {
public PublicPersonalProfileBundleCreate() {
super("PublicPersonalProfileBundleCreate", "1.0.0", "");
}
public static void main(final String[] args) {
new PublicPersonalProfileBundleCreate().run(args);
}
@Override
protected String getBundleTableName() {
return "ct_public_personal_profile_bundles";
}
@Override
protected String getContentItemTableName() {
return "ct_public_personal_profiles";
}
@Override
protected String getIdColName() {
return "profile_id";
}
@Override
protected String getBundleClassName() {
return PublicPersonalProfileBundle.class.getName();
}
@Override
protected String getPrimaryKeyConstraintName() {
return "ct_pub_per_pro_bun_bun_p_zhc9i";
}
@Override
protected String getBundleContraintName() {
return "ct_pub_per_pro_bun_bun_f__jr2_";
}
}

View File

@ -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 PublicPersonalProfileOwnerAssocUpgrade extends AbstractAssocUpgrade {
public PublicPersonalProfileOwnerAssocUpgrade() {
super("PublicPersonalProfileOwnerAssocUpgrade", "1.0.0", "");
}
public static void main(final String[] args) {
new PublicPersonalProfileOwnerAssocUpgrade().run(args);
}
@Override
protected String getTableName() {
return "ct_public_personal_profile_owner_map.owner_id";
}
@Override
protected String getOwnerIdCol() {
return "profile_id";
}
@Override
protected String getMemberIdCol() {
return "owner_id";
}
@Override
protected Map<String, String> getAttributes() {
final Map<String, String> attributes = new HashMap<String, String>();
attributes.put("owner_order", "integer");
return attributes;
}
@Override
protected String getPrimaryKeyConstraintName() {
return "ct_pub_per_pro_own_map_p_rr7ie";
}
@Override
protected String getOwnerConstraintName() {
return "ct_pub_per_pro_own_map_f_ugs15";
}
@Override
protected String getMemberConstraintName() {
return "ct_pub_per_pro_own_map_f_cd7_1";
}
@Override
protected String getOwnerTableName() {
return "ct_public_personal_profile_bundles";
}
@Override
protected String getMemberTableName() {
return "cms_person_bundles";
}
}

View File

@ -13,7 +13,6 @@ import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ContentPage;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ReusableImageAsset;
import com.arsdigita.cms.contentassets.ItemImageAttachment;
import com.arsdigita.cms.contentassets.RelatedLink;
import com.arsdigita.cms.contenttypes.GenericAddress;
@ -58,6 +57,7 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import com.arsdigita.cms.ReusableImageAsset;
/**
* Servlet for the PublicPersonalProfile application.

View File

@ -56,15 +56,15 @@ association {
// 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);

View File

@ -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">

View File

@ -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());
}
}
}

View File

@ -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;
}
}
}

View File

@ -0,0 +1,159 @@
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();
@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 cms_bundles(bundle_id);",
getBundleTableName(),
getBundleContraintName()));
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());
}
}
}

View File

@ -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";
}
}

View File

@ -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";
}
}

View File

@ -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";
}
}

View File

@ -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";
}
}

View File

@ -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";
}
}

View File

@ -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";
}
}

View File

@ -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";
}
@Override
protected String getOwnerIdCol() {
return "organizationalunit_id";
}
@Override
protected String getMemberIdCol() {
return "person_id";
}
@Override
protected Map<String, String> getAttributes() {
final Map<String, String> attributes = new HashMap<String, String>();
attributes.put("role_name", "character varying(100)");
attributes.put("status", "character varying(100)");
return attributes;
}
@Override
protected String getPrimaryKeyConstraintName() {
return "cms_org_per_map_org_id_p_km6_m";
}
@Override
protected String getOwnerConstraintName() {
return "cms_org_per_map_org_id_f_ducb2";
}
@Override
protected String getMemberConstraintName() {
return "cms_org_per_map_per_id_f_hrpzh";
}
@Override
protected String getOwnerTableName() {
return "cms_orgaunit_bundles";
}
@Override
protected String getMemberTableName() {
return "cms_person_bundles";
}
}

View File

@ -2,7 +2,7 @@
<ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project"
name="ccm-sci-types-institute"
prettyName="Scientific CMS Institute content type"
version = "6.6.4"
version = "6.6.5"
release="1"
webapp="ROOT">