Optimierung Assoziation Publication <-> GenericOrganizationalUnit, Ticket 1119

git-svn-id: https://svn.libreccm.org/ccm/trunk@1569 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2012-04-05 14:10:12 +00:00
parent 98f27f244d
commit 9a06f75faa
9 changed files with 602 additions and 86 deletions

View File

@ -73,15 +73,15 @@ association {
//See GenericOrganizationalUnitsPublicationsStep and
//PublicationGenericOrganizationalUnitsStep for more information
association {
GenericOrganizationalUnit[0..n] orgaunits = join ct_publications.publication_id
to cms_organizationalunits_publications_map.publication_id,
join cms_organizationalunits_publications_map.orgaunit_id
to cms_organizationalunits.organizationalunit_id;
GenericOrganizationalUnitBundle[0..n] orgaunits = join ct_publication_bundles.bundle_id
to cms_organizationalunits_publications_map.publication_id,
join cms_organizationalunits_publications_map.orgaunit_id
to cms_orgaunit_bundles.bundle_id;
Publication[0..n] publications = join cms_organizationalunits.organizationalunit_id
Publication[0..n] publications = join cms_orgaunit_bundles.bundle_id
to cms_organizationalunits_publications_map.orgaunit_id,
join cms_organizationalunits_publications_map.publication_id
to ct_publications.publication_id;
to ct_publication_bundles.bundle_id;
Integer[0..1] publicationOrder = cms_organizationalunits_publications_map.publication_order INTEGER;
}

View File

@ -7,5 +7,6 @@
</version>
<version from="6.6.2" to="6.6.3">
<script class="com.arsdigita.cms.contenttypes.PublicationAuthorAssocUpgrade"/>
<script class="com.arsdigita.cms.contenttypes.PublicationOrgaunitAssocUpgrade"/>
</version>
</upgrade>

View File

@ -1,5 +1,6 @@
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentBundle;
import com.arsdigita.cms.ContentPage;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.domain.DomainObjectFactory;
@ -21,39 +22,48 @@ public class GenericOrganizationalUnitPublicationsCollection
}
public Publication getPublication() {
return (Publication) DomainObjectFactory.newInstance(m_dataCollection.
getDataObject());
}
public BigDecimal getID() {
return (BigDecimal) m_dataCollection.getDataObject().get(ACSObject.ID);
//return (Publication) DomainObjectFactory.newInstance(m_dataCollection.
final ContentBundle bundle = (ContentBundle) DomainObjectFactory.
newInstance(m_dataCollection.getDataObject());
return (Publication) bundle.getPrimaryInstance();
}
public String getTitle() {
return (String) m_dataCollection.getDataObject().get(ContentPage.TITLE);
public Publication getPublication(final String language) {
//return (Publication) DomainObjectFactory.newInstance(m_dataCollection.
final ContentBundle bundle = (ContentBundle) DomainObjectFactory.
newInstance(m_dataCollection.getDataObject());
return (Publication) bundle.getInstance(language);
}
public Integer getYearOfPublication() {
return (Integer) m_dataCollection.getDataObject().get(
Publication.YEAR_OF_PUBLICATION);
}
/*public BigDecimal getID() {
return (BigDecimal) m_dataCollection.getDataObject().get(ACSObject.ID);
}
public String getTitle() {
return (String) m_dataCollection.getDataObject().get(ContentPage.TITLE);
}
public String getAbstract() {
return (String) m_dataCollection.getDataObject().get(
Publication.ABSTRACT);
}
public Integer getYearOfPublication() {
return (Integer) m_dataCollection.getDataObject().get(
Publication.YEAR_OF_PUBLICATION);
}
public String getMisc() {
return (String) m_dataCollection.getDataObject().get(Publication.MISC);
}
public String getAbstract() {
return (String) m_dataCollection.getDataObject().get(
Publication.ABSTRACT);
}
public AuthorshipCollection getAuthors() {
return new AuthorshipCollection((DataCollection) m_dataCollection.
getDataObject().get(Publication.AUTHORS));
}
public String getMisc() {
return (String) m_dataCollection.getDataObject().get(Publication.MISC);
}
public SeriesCollection getSeries() {
return new SeriesCollection((DataCollection) m_dataCollection.
getDataObject().get(Publication.SERIES));
}
public AuthorshipCollection getAuthors() {
return new AuthorshipCollection((DataCollection) m_dataCollection.
getDataObject().get(Publication.AUTHORS));
}
public SeriesCollection getSeries() {
return new SeriesCollection((DataCollection) m_dataCollection.
getDataObject().get(Publication.SERIES));
}*/
}

View File

@ -275,21 +275,25 @@ public class Publication extends ContentPage {
}
public PublicationGenericOrganizationalsUnitCollection getOrganizationalUnits() {
return new PublicationGenericOrganizationalsUnitCollection((DataCollection) get(
ORGAUNITS));
//return new PublicationGenericOrganizationalsUnitCollection((DataCollection) get(
// ORGAUNITS));
return getPublicationBundle().getOrganizationalUnits();
}
public void addOrganizationalUnit(final GenericOrganizationalUnit orgaunit) {
Assert.exists(orgaunit, GenericOrganizationalUnit.class);
//Assert.exists(orgaunit, GenericOrganizationalUnit.class);
add(ORGAUNITS, orgaunit);
//add(ORGAUNITS, orgaunit);
getPublicationBundle().addOrganizationalUnit(orgaunit);
}
public void removeOrganizationalUnit(
final GenericOrganizationalUnit orgaunit) {
Assert.exists(orgaunit, GenericOrganizationalUnit.class);
//Assert.exists(orgaunit, GenericOrganizationalUnit.class);
remove(ORGAUNITS, orgaunit);
//remove(ORGAUNITS, orgaunit);
getPublicationBundle().removeOrganizationalUnit(orgaunit);
}
public boolean hasOrganizationalUnits() {
@ -298,26 +302,30 @@ public class Publication extends ContentPage {
public static GenericOrganizationalUnitPublicationsCollection getPublications(
final GenericOrganizationalUnit orgaunit) {
final DataCollection dataCollection = (DataCollection) orgaunit.get(
ORGAUNIT_PUBLICATIONS);
//final DataCollection dataCollection = (DataCollection) orgaunit.get(
// ORGAUNIT_PUBLICATIONS);
return new GenericOrganizationalUnitPublicationsCollection(
dataCollection);
//return new GenericOrganizationalUnitPublicationsCollection(
// dataCollection);
return PublicationBundle.getPublications(orgaunit);
}
public static void addPublication(final GenericOrganizationalUnit orgaunit,
final Publication publication) {
Assert.exists(publication);
//Assert.exists(publication);
orgaunit.add(ORGAUNIT_PUBLICATIONS, publication);
//orgaunit.add(ORGAUNIT_PUBLICATIONS, publication);
PublicationBundle.addPublication(orgaunit, publication);
}
public static void removePublication(
final GenericOrganizationalUnit orgaunit,
final Publication publication) {
Assert.exists(publication);
//Assert.exists(publication);
orgaunit.remove(ORGAUNIT_PUBLICATIONS, publication);
//orgaunit.remove(ORGAUNIT_PUBLICATIONS, publication);
PublicationBundle.removePublication(orgaunit, publication);
}
@Override

View File

@ -15,7 +15,7 @@ import org.apache.commons.cli.CommandLine;
/**
* Upgrade for association between GenericPublication and GenericPerson
* (ccm-sci-publications 6.6.4 to 6.6.5)
* (ccm-sci-publications 6.6.2 to 6.6.3)
*
* @author Jens Pelzetter
* @version $Id$
@ -147,8 +147,7 @@ public class PublicationAuthorAssocUpgrade extends Program {
try {
System.out.println("Filling new tables with data...");
final Statement queryPublicationStmt = conn.createStatement();
final Statement queryAuthorsStmt = conn.createStatement();
final Statement queryPublicationStmt = conn.createStatement();
final Statement stmt = conn.createStatement();
final ResultSet publicationRs =
@ -209,7 +208,7 @@ public class PublicationAuthorAssocUpgrade extends Program {
if (entry.getPublicationLiveBundleId() != null) {
stmt.addBatch(String.format(
"DELETE FROM cms_published_links "
+ "WHERE pending = %s"
+ "WHERE pending = %s "
+ "AND draft_target = %s",
entry.getPublicationLiveId().toString(),
entry.getAuthorDraftId().toString()));
@ -218,7 +217,7 @@ public class PublicationAuthorAssocUpgrade extends Program {
if (entry.getAuthorBundleLiveId() != null) {
stmt.addBatch(String.format(
"DELETE FROM cms_published_links "
+ "WHERE pending = %s"
+ "WHERE pending = %s "
+ "AND draft_target = %s",
entry.getAuthorLiveId().toString(),
entry.getPublicationDraftId().toString()));

View File

@ -27,6 +27,9 @@ public class PublicationBundle extends ContentBundle {
public static final String AUTHORS = "authors";
public final static String AUTHOR_ORDER = "authorOrder";
public final static String EDITOR = "editor";
public final static String ORGAUNITS = "orgaunits";
public final static String ORGAUNIT_ORDER = "publicationOrder";
public final static String ORGAUNIT_PUBLICATIONS = "publications";
public PublicationBundle(final ContentItem primary) {
super(BASE_DATA_OBJECT_TYPE);
@ -73,6 +76,15 @@ public class PublicationBundle extends ContentBundle {
createAuthorAssoc(authors);
}
return true;
} else if (ORGAUNITS.equals(attribute)) {
final DataCollection orgaunits = (DataCollection) pubBundle.get(
ORGAUNITS);
while (orgaunits.next()) {
createOrgaUnitAssoc(orgaunits);
}
return true;
} else {
return super.copyProperty(source, property, copier);
@ -83,6 +95,41 @@ public class PublicationBundle extends ContentBundle {
}
}
private void createAuthorAssoc(final DataCollection authors) {
final GenericPersonBundle draftAuthor =
(GenericPersonBundle) DomainObjectFactory.
newInstance(authors.getDataObject());
final GenericPersonBundle liveAuthor =
(GenericPersonBundle) draftAuthor.
getLiveVersion();
if (liveAuthor != null) {
final DataObject link = add(AUTHORS, liveAuthor);
link.set(EDITOR, authors.get(AuthorshipCollection.LINKEDITOR));
link.set(AUTHOR_ORDER, authors.get(AuthorshipCollection.LINKORDER));
link.save();
}
}
private void createOrgaUnitAssoc(final DataCollection orgaunits) {
final GenericOrganizationalUnitBundle orgaunitDraft =
(GenericOrganizationalUnitBundle) DomainObjectFactory.
newInstance(orgaunits.getDataObject());
final GenericOrganizationalUnitBundle orgaunitLive =
(GenericOrganizationalUnitBundle) orgaunitDraft.
getLiveVersion();
if (orgaunitLive != null) {
final DataObject link = add(ORGAUNITS, orgaunitLive);
link.set(ORGAUNIT_ORDER, orgaunits.get("link." + ORGAUNIT_ORDER));
link.save();
}
}
@Override
public boolean copyReverseProperty(final CustomCopy source,
final ContentItem liveItem,
@ -103,10 +150,24 @@ public class PublicationBundle extends ContentBundle {
(GenericPersonBundle) liveItem);
}
return true;
} else if (("publications".equals(attribute))
&& (source instanceof GenericOrganizationalUnitBundle)) {
final GenericOrganizationalUnitBundle orgaunitBundle =
(GenericOrganizationalUnitBundle) source;
final DataCollection publications =
(DataCollection) orgaunitBundle.get(
"publications");
while (publications.next()) {
createOrgaunitPublicationAssoc(publications,
(GenericOrganizationalUnitBundle) liveItem);
}
return true;
} else {
return super.copyReverseProperty(source,
liveItem,
return super.copyReverseProperty(source,
liveItem,
property,
copier);
}
@ -115,24 +176,6 @@ public class PublicationBundle extends ContentBundle {
}
}
private void createAuthorAssoc(final DataCollection authors) {
final GenericPersonBundle draftAuthor =
(GenericPersonBundle) DomainObjectFactory.
newInstance(authors.getDataObject());
final GenericPersonBundle liveAuthor =
(GenericPersonBundle) draftAuthor.
getLiveVersion();
if (liveAuthor != null) {
final DataObject link = add(AUTHORS, liveAuthor);
link.set(EDITOR, authors.get(AuthorshipCollection.LINKEDITOR));
link.set(AUTHOR_ORDER, authors.get(AuthorshipCollection.LINKORDER));
link.save();
}
}
private void createAuthorPublicationAssoc(final DataCollection publications,
final GenericPersonBundle author) {
final PublicationBundle draftPublication =
@ -144,10 +187,31 @@ public class PublicationBundle extends ContentBundle {
if (livePublication != null) {
final DataObject link = author.add("publication", livePublication);
link.set(EDITOR, publications.get(AuthorshipCollection.LINKEDITOR));
link.set(AUTHOR_ORDER, publications.get(AuthorshipCollection.LINKORDER));
link.set(AUTHOR_ORDER, publications.get(
AuthorshipCollection.LINKORDER));
link.save();
}
}
private void createOrgaunitPublicationAssoc(
final DataCollection publications,
final GenericOrganizationalUnitBundle orgaunit) {
final PublicationBundle draftPublication =
(PublicationBundle) DomainObjectFactory.
newInstance(publications.getDataObject());
final PublicationBundle livePublication =
(PublicationBundle) draftPublication.
getLiveVersion();
if (livePublication != null) {
final DataObject link =
orgaunit.add("publications", livePublication);
link.set(ORGAUNIT_ORDER, publications.get("link." + ORGAUNIT_ORDER));
link.save();
}
}
@ -159,7 +223,7 @@ public class PublicationBundle extends ContentBundle {
public void addAuthor(final GenericPerson author, final Boolean editor) {
Assert.exists(author, GenericPerson.class);
final DataObject link = add(AUTHORS, author);
final DataObject link = add(AUTHORS, author.getGenericPersonBundle());
link.set(EDITOR, editor);
link.set(AUTHOR_ORDER, Integer.valueOf((int) getAuthors().size()));
@ -197,4 +261,61 @@ public class PublicationBundle extends ContentBundle {
publication.set(Publication.AUTHORS_STR, authorsStr);
}
}
public PublicationGenericOrganizationalsUnitCollection getOrganizationalUnits() {
return new PublicationGenericOrganizationalsUnitCollection(
(DataCollection) get(ORGAUNITS));
}
public void addOrganizationalUnit(final GenericOrganizationalUnit orgaunit) {
Assert.exists(orgaunit, GenericOrganizationalUnit.class);
final DataObject link = add(ORGAUNITS, orgaunit.
getGenericOrganizationalUnitBundle());
link.set(ORGAUNIT_ORDER, Integer.valueOf((int) getOrganizationalUnits().
size()));
link.save();
}
public void removeOrganizationalUnit(
final GenericOrganizationalUnit orgaunit) {
Assert.exists(orgaunit, GenericOrganizationalUnit.class);
remove(ORGAUNITS, orgaunit);
}
public static GenericOrganizationalUnitPublicationsCollection getPublications(
final GenericOrganizationalUnit orgaunit) {
final GenericOrganizationalUnitBundle orgaunitBundle = orgaunit.
getGenericOrganizationalUnitBundle();
final DataCollection collection = (DataCollection) orgaunitBundle.get(
ORGAUNIT_PUBLICATIONS);
return new GenericOrganizationalUnitPublicationsCollection(
collection);
}
public static void addPublication(final GenericOrganizationalUnit orgaunit,
final Publication publication) {
Assert.exists(publication);
final GenericOrganizationalUnitBundle orgaunitBundle = orgaunit.
getGenericOrganizationalUnitBundle();
orgaunitBundle.add(ORGAUNIT_PUBLICATIONS, publication);
}
public static void removePublication(
final GenericOrganizationalUnit orgaunit,
final Publication publication) {
Assert.exists(publication);
final GenericOrganizationalUnitBundle orgaunitBundle = orgaunit.
getGenericOrganizationalUnitBundle();
orgaunitBundle.remove(ORGAUNIT_PUBLICATIONS, publication);
}
}

View File

@ -1,5 +1,6 @@
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentBundle;
import com.arsdigita.cms.ContentPage;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.domain.DomainObjectFactory;
@ -23,16 +24,24 @@ public class PublicationGenericOrganizationalsUnitCollection
}
public GenericOrganizationalUnit getOrganizationalUnit() {
return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(
m_dataCollection.getDataObject());
//return (GenericOrganizationalUnit) DomainObjectFactory.newInstance(
// m_dataCollection.getDataObject());
final ContentBundle bundle = (ContentBundle) DomainObjectFactory.newInstance(m_dataCollection.getDataObject());
return (GenericOrganizationalUnit) bundle.getPrimaryInstance();
}
public GenericOrganizationalUnit getOrganizationalUnit(final String language) {
final ContentBundle bundle = (ContentBundle) DomainObjectFactory.newInstance(m_dataCollection.getDataObject());
return (GenericOrganizationalUnit) bundle.getInstance(language);
}
public BigDecimal getID() {
return (BigDecimal) m_dataCollection.getDataObject().get(ACSObject.ID);
return getOrganizationalUnit().getID();
}
public String getTitle() {
return (String) m_dataCollection.getDataObject().get(ContentPage.TITLE);
//return (String) m_dataCollection.getDataObject().get(ContentPage.TITLE);
return getOrganizationalUnit().getTitle();
}
public String getAddendum() {
@ -40,7 +49,7 @@ public class PublicationGenericOrganizationalsUnitCollection
GenericOrganizationalUnit.ADDENDUM);
}
public GenericOrganizationalUnitContactCollection getContacts() {
/*public GenericOrganizationalUnitContactCollection getContacts() {
return new GenericOrganizationalUnitContactCollection(
(DataCollection) m_dataCollection.get(
GenericOrganizationalUnit.CONTACTS));
@ -62,5 +71,5 @@ public class PublicationGenericOrganizationalsUnitCollection
return new GenericOrganizationalUnitSubordinateCollection(
(DataCollection) m_dataCollection.getDataObject().get(
GenericOrganizationalUnit.SUBORDINATE_ORGAUNITS));
}
}*/
}

View File

@ -0,0 +1,368 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.packaging.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 GenericPublication and GenericPerson
* (ccm-sci-publications 6.6.2 to 6.6.3)
*
* @author Jens Pelzetter
* @version $Id$
*/
public class PublicationOrgaunitAssocUpgrade extends Program {
public PublicationOrgaunitAssocUpgrade() {
super("PublicationOrgaunitAssocUpgrade", "1.0.0", "");
}
public static void main(final String[] args) {
new PublicationOrgaunitAssocUpgrade().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 publication_id, orgaunit_id, publication_order"
+ "FROM cms_organizationalunits_publications_map "
+ "JOIN cms_items ON orgaunit_id = item_id "
+ "WHERE version = 'draft'");
while (oldAssocResult.next()) {
PublicationOrgaunitAssocUpgrade.AssocEntry entry =
new PublicationOrgaunitAssocUpgrade.AssocEntry();
entry.setPublicationDraftId(oldAssocResult.getBigDecimal(1));
entry.setPublicationBundleDraftId(getParentIdFor(
entry.getPublicationDraftId(), conn));
entry.setOrgaunitDraftId(oldAssocResult.getBigDecimal(2));
entry.setOrgaunitBundleDraftId(getParentIdFor(
entry.getOrgaunitDraftId(), conn));
entry.setPublicationLiveId(getPublicIdFor(
entry.getPublicationDraftId(), conn));
entry.setPublicationBundleLiveId(getPublicIdFor(
entry.getPublicationBundleDraftId(), conn));
entry.setOrgaunitLiveId(getPublicIdFor(
entry.getOrgaunitDraftId(), conn));
entry.setOrgaunitBundleLiveId(getPublicIdFor(
entry.getOrgaunitBundleDraftId(), conn));
entry.setOrder(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 cms_organizationalunits_publications_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_organizationalunits_publications_map ( "
+ "orgaunit_id integer NOT NULL, "
+ "publication_id integer NOT NULL, "
+ "publication_order integer");
stmt.addBatch("ALTER TABLE ONLY cms_organizationalunits_publications_map "
+ "ADD CONSTRAINT cms_org_pub_map_org_id_p__dore "
+ "PRIMARY KEY (publication_id, orgaunit_id);");
stmt.addBatch(
"ALTER TABLE ONLY cms_organizationalunits_publications_map "
+ "ADD CONSTRAINT cms_org_pub_map_org_id_f_pe406 "
+ "FOREIGN KEY (orgaunit_id) "
+ "REFERENCES cms_orgaunit_bundles(bundle_id)");
stmt.addBatch(
"ALTER TABLE ONLY cms_organizationalunits_publications_map "
+ "ADD CONSTRAINT cms_org_pub_map_pub_id_f_6udi3 "
+ "FOREIGN KEY (publication_id) "
+ "REFERENCES ct_publication_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 queryPublicationStmt = conn.createStatement();
final Statement stmt = conn.createStatement();
final List<String> processedEntries = new ArrayList<String>();
for (AssocEntry entry : oldData) {
if (processedEntries.contains(String.format(
"%s-%s",
entry.getPublicationBundleDraftId(),
entry.getOrgaunitBundleDraftId()))) {
continue;
}
stmt.addBatch(String.format(
"INSERT INTO cms_organizationalunits_publications_map ("
+ "publication_id,"
+ "orgaunit_id,"
+ "publication_order"
+ "VALUES (%s, %s, %s)",
entry.getPublicationBundleDraftId().toString(),
entry.getOrgaunitBundleDraftId().toString(),
entry.getOrder().toString()));
if ((entry.getPublicationBundleLiveId() != null)
&& (entry.getOrgaunitBundleLiveId() != null)) {
stmt.addBatch(String.format(
"INSERT INTO cms_organizationalunits_publications_map ("
+ "publication_id,"
+ "organunit_id,"
+ "publication_order) "
+ "VALUES (%s %s %s)",
entry.getPublicationBundleLiveId().toString(),
entry.getOrgaunitBundleLiveId().toString(),
entry.getOrder().toString()));
}
if (entry.getPublicationBundleLiveId() != null) {
stmt.addBatch(String.format(
"DELETE FROM cms_published_links "
+ "WHERE pending = %s "
+ "AND draft_target = %s",
entry.getPublicationLiveId().toString(),
entry.getOrgaunitDraftId().toString()));
}
if (entry.getOrgaunitBundleLiveId() != null) {
stmt.addBatch(String.format(
"DELETE FROM cms_published_links "
+ "WHERE pending = %s "
+ "AND draft_target = %s",
entry.getOrgaunitLiveId().toString(),
entry.getPublicationDraftId().toString()));
}
processedEntries.add(String.format(
"%s-%s",
entry.getPublicationBundleDraftId().toString(),
entry.getOrgaunitBundleDraftId().toString()));
}
stmt.executeBatch();
} catch (SQLException ex) {
System.err.println("Failed to create new 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 class AssocEntry {
private BigDecimal publicationDraftId;
private BigDecimal publicationLiveId;
private BigDecimal publicationBundleDraftId;
private BigDecimal publicationBundleLiveId;
private BigDecimal orgaunitDraftId;
private BigDecimal orgaunitLiveId;
private BigDecimal orgaunitBundleDraftId;
private BigDecimal orgaunitBundleLiveId;
private Integer order;
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public BigDecimal getOrgaunitBundleDraftId() {
return orgaunitBundleDraftId;
}
public void setOrgaunitBundleDraftId(BigDecimal orgaunitBundleDraftId) {
this.orgaunitBundleDraftId = orgaunitBundleDraftId;
}
public BigDecimal getOrgaunitBundleLiveId() {
return orgaunitBundleLiveId;
}
public void setOrgaunitBundleLiveId(BigDecimal orgaunitBundleLiveId) {
this.orgaunitBundleLiveId = orgaunitBundleLiveId;
}
public BigDecimal getOrgaunitDraftId() {
return orgaunitDraftId;
}
public void setOrgaunitDraftId(BigDecimal orgaunitDraftId) {
this.orgaunitDraftId = orgaunitDraftId;
}
public BigDecimal getOrgaunitLiveId() {
return orgaunitLiveId;
}
public void setOrgaunitLiveId(BigDecimal orgaunitLiveId) {
this.orgaunitLiveId = orgaunitLiveId;
}
public BigDecimal getPublicationBundleDraftId() {
return publicationBundleDraftId;
}
public void setPublicationBundleDraftId(
BigDecimal publicationBundleDraftId) {
this.publicationBundleDraftId = publicationBundleDraftId;
}
public BigDecimal getPublicationBundleLiveId() {
return publicationBundleLiveId;
}
public void setPublicationBundleLiveId(
BigDecimal publicationBundleLiveId) {
this.publicationBundleLiveId = publicationBundleLiveId;
}
public BigDecimal getPublicationDraftId() {
return publicationDraftId;
}
public void setPublicationDraftId(BigDecimal publicationDraftId) {
this.publicationDraftId = publicationDraftId;
}
public BigDecimal getPublicationLiveId() {
return publicationLiveId;
}
public void setPublicationLiveId(BigDecimal publicationLiveId) {
this.publicationLiveId = publicationLiveId;
}
}
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

@ -120,7 +120,7 @@ public class GenericOrganizationalUnitPublicationsTable
public Object getElementAt(final int columnIndex) {
switch (columnIndex) {
case 0:
return publications.getTitle();
return publications.getPublication().getTitle();
case 1:
return PublicationGlobalizationUtil.globalize(
"genericorganizationalunit.ui.publications.remove").
@ -132,7 +132,7 @@ public class GenericOrganizationalUnitPublicationsTable
@Override
public Object getKeyAt(int columnIndex) {
return publications.getID();
return publications.getPublication().getID();
}
}
@ -147,7 +147,7 @@ public class GenericOrganizationalUnitPublicationsTable
final Object key,
final int row,
final int column) {
final com.arsdigita.cms.SecurityManager securityManager = Utilities.
final com.arsdigita.cms.SecurityManager securityManager = CMS.
getSecurityManager(state);
final Publication publication = new Publication((BigDecimal) key);
@ -190,7 +190,7 @@ public class GenericOrganizationalUnitPublicationsTable
final Object key,
final int row,
final int column) {
final com.arsdigita.cms.SecurityManager securityManager = Utilities.
final com.arsdigita.cms.SecurityManager securityManager = CMS.
getSecurityManager(state);
final GenericOrganizationalUnit orgaunit =
(GenericOrganizationalUnit) itemModel.