Updateskript für Publication <-> GenericPerson
git-svn-id: https://svn.libreccm.org/ccm/trunk@1568 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
9e72a3b58b
commit
98f27f244d
|
|
@ -2,7 +2,7 @@
|
||||||
<ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project"
|
<ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project"
|
||||||
name="ccm-cms"
|
name="ccm-cms"
|
||||||
prettyName="Red Hat CCM Content Management System"
|
prettyName="Red Hat CCM Content Management System"
|
||||||
version="6.6.6"
|
version="6.6.7"
|
||||||
release="1"
|
release="1"
|
||||||
webapp="ROOT">
|
webapp="ROOT">
|
||||||
<ccm:dependencies>
|
<ccm:dependencies>
|
||||||
|
|
|
||||||
|
|
@ -1955,17 +1955,28 @@ public class ContentItem extends VersionedACSObject implements CustomCopy {
|
||||||
return assocCopier.copyProperty(source, property, copier);
|
return assocCopier.copyProperty(source, property, copier);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
if (handlesReverseProperties()) {
|
if (source instanceof ContentItem) {
|
||||||
return copyReverseProperty(source, this, property, copier);
|
final ContentItem sourceItem = (ContentItem) source;
|
||||||
|
final Object value = sourceItem.get(property.getName());
|
||||||
|
if (value instanceof DataCollection) {
|
||||||
|
final DataCollection collection = (DataCollection) value;
|
||||||
|
while(collection.next()) {
|
||||||
|
DomainObject obj = DomainObjectFactory.newInstance(collection.getDataObject());
|
||||||
|
if (obj instanceof ContentItem) {
|
||||||
|
final ContentItem item = (ContentItem) obj;
|
||||||
|
return item.copyReverseProperty(source,
|
||||||
|
item,
|
||||||
|
property,
|
||||||
|
|
||||||
|
copier);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean handlesReverseProperties() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean copyReverseProperty(final CustomCopy source,
|
public boolean copyReverseProperty(final CustomCopy source,
|
||||||
final ContentItem liveItem,
|
final ContentItem liveItem,
|
||||||
final Property property,
|
final Property property,
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,12 @@
|
||||||
<ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project"
|
<ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project"
|
||||||
name="ccm-sci-publications"
|
name="ccm-sci-publications"
|
||||||
prettyName="OpenCCM Content Types"
|
prettyName="OpenCCM Content Types"
|
||||||
version="6.6.2"
|
version="6.6.3"
|
||||||
release="1"
|
release="1"
|
||||||
webapp="ROOT">
|
webapp="ROOT">
|
||||||
<ccm:dependencies>
|
<ccm:dependencies>
|
||||||
<ccm:requires name="ccm-core" version="6.6.0" relation="ge"/>
|
<ccm:requires name="ccm-core" version="6.6.0" relation="ge"/>
|
||||||
<ccm:requires name="ccm-cms" version="6.6.0" relation="ge"/>
|
<ccm:requires name="ccm-cms" version="6.6.6" relation="ge"/>
|
||||||
</ccm:dependencies>
|
</ccm:dependencies>
|
||||||
<ccm:directories>
|
<ccm:directories>
|
||||||
<ccm:directory name="pdl"/>
|
<ccm:directory name="pdl"/>
|
||||||
|
|
|
||||||
|
|
@ -5,4 +5,7 @@
|
||||||
<version from="6.6.1" to="6.6.2">
|
<version from="6.6.1" to="6.6.2">
|
||||||
<script sql="ccm-sci-publications/upgrade/::database::-6.6.1-6.6.2.sql"/>
|
<script sql="ccm-sci-publications/upgrade/::database::-6.6.1-6.6.2.sql"/>
|
||||||
</version>
|
</version>
|
||||||
|
<version from="6.6.2" to="6.6.3">
|
||||||
|
<script class="com.arsdigita.cms.contenttypes.PublicationAuthorAssocUpgrade"/>
|
||||||
|
</version>
|
||||||
</upgrade>
|
</upgrade>
|
||||||
|
|
@ -0,0 +1,411 @@
|
||||||
|
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.4 to 6.6.5)
|
||||||
|
*
|
||||||
|
* @author Jens Pelzetter
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public class PublicationAuthorAssocUpgrade extends Program {
|
||||||
|
|
||||||
|
public PublicationAuthorAssocUpgrade() {
|
||||||
|
super("PublicationAuthorAssocUpgrade", "1.0.0", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(final String[] args) {
|
||||||
|
new PublicationAuthorAssocUpgrade().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, person_id, editor, authorship_order"
|
||||||
|
+ "FROM ct_publications_authorship "
|
||||||
|
+ "JOIN cms_items ON publication_id = item_id "
|
||||||
|
+ "WHERE version = 'draft'");
|
||||||
|
|
||||||
|
while (oldAssocResult.next()) {
|
||||||
|
AssocEntry entry = new AssocEntry();
|
||||||
|
|
||||||
|
entry.setPublicationDraftId(oldAssocResult.getBigDecimal(1));
|
||||||
|
entry.setPublicationDraftBundleId(getParentIdFor(
|
||||||
|
entry.getPublicationDraftId(), conn));
|
||||||
|
entry.setAuthorDraftId(oldAssocResult.getBigDecimal(2));
|
||||||
|
entry.setAuthorBundleDraftId(getParentIdFor(
|
||||||
|
entry.getAuthorDraftId(), conn));
|
||||||
|
|
||||||
|
entry.setPublicationLiveId(getPublicIdFor(
|
||||||
|
entry.getPublicationDraftId(), conn));
|
||||||
|
entry.setPublicationLiveBundleId(getPublicIdFor(
|
||||||
|
entry.getPublicationDraftBundleId(), conn));
|
||||||
|
entry.setAuthorLiveId(getPublicIdFor(
|
||||||
|
entry.getAuthorDraftId(), conn));
|
||||||
|
entry.setAuthorBundleLiveId(getPublicIdFor(
|
||||||
|
entry.getAuthorBundleDraftId(), conn));
|
||||||
|
|
||||||
|
entry.setEditor(oldAssocResult.getBoolean(3));
|
||||||
|
entry.setAuthorOrder(oldAssocResult.getInt(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 ct_publications_authorship");
|
||||||
|
} 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_publication_bundles ("
|
||||||
|
+ "bundle_id integer NOT NULL)");
|
||||||
|
|
||||||
|
stmt.addBatch("CREATE TABLE ct_publications_authorship ("
|
||||||
|
+ "publication_id integer NOT NULL, "
|
||||||
|
+ "person_id integer NOT NULL, "
|
||||||
|
+ "editor boolean, "
|
||||||
|
+ "authorship_order integer");
|
||||||
|
|
||||||
|
stmt.addBatch("ALTER TABLE ONLY ct_publication_bundles "
|
||||||
|
+ "ADD CONSTRAINT ct_publica_bund_bun_id_p_ivy3p "
|
||||||
|
+ "PRIMARY KEY (bundle_id);");
|
||||||
|
|
||||||
|
stmt.addBatch("ALTER TABLE ONLY ct_publication_bundles "
|
||||||
|
+ "ADD CONSTRAINT ct_publica_bund_bun_id_f_bp022 "
|
||||||
|
+ "FOREIGN KEY(bundle_id) "
|
||||||
|
+ "REFERENCES cms_bundles (bundle_id)");
|
||||||
|
|
||||||
|
stmt.addBatch("ALTER TABLE ct_publications_authorship "
|
||||||
|
+ "ADD CONSTRAINT ct_pub_aut_per_id_pub__p_adskp "
|
||||||
|
+ "PRIMARY KEY (person_id, publication_id)");
|
||||||
|
|
||||||
|
stmt.addBatch("ALTER TABLE ONLY ct_publications_authorship "
|
||||||
|
+ "ADD CONSTRAINT ct_publi_auth_publi_id_f_6aw9g "
|
||||||
|
+ "FOREIGN KEY (publication_id) "
|
||||||
|
+ "REFERENCES ct_publication_bundles(bundle_id)");
|
||||||
|
|
||||||
|
stmt.addBatch("ALTER TABLE ONLY ct_publications_authorship "
|
||||||
|
+ "ADD CONSTRAINT ct_public_autho_per_id_f_ot1p6 "
|
||||||
|
+ "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 queryPublicationStmt = conn.createStatement();
|
||||||
|
final Statement queryAuthorsStmt = conn.createStatement();
|
||||||
|
final Statement stmt = conn.createStatement();
|
||||||
|
|
||||||
|
final ResultSet publicationRs =
|
||||||
|
queryPublicationStmt.executeQuery(
|
||||||
|
"SELECT parent_id "
|
||||||
|
+ "FROM cms_items "
|
||||||
|
+ "JOIN cms_publications "
|
||||||
|
+ "WHERE cms_items.item_id = cms_publications.publication_id");
|
||||||
|
|
||||||
|
while (publicationRs.next()) {
|
||||||
|
stmt.addBatch(String.format("INSERT INTO cms_publication_bundles (bundle_id) "
|
||||||
|
+ "VALUES (%d)",
|
||||||
|
publicationRs.getInt(1)));
|
||||||
|
stmt.addBatch(String.format(
|
||||||
|
"UPDATE acs_objects "
|
||||||
|
+ "SET default_domain_class = 'com.arsdigita.cms.contenttypes.PublicationBundle', "
|
||||||
|
+ "object_type = 'com.arsdigita.cms.contenttypes.PublicationBundle' "
|
||||||
|
+ "WHERE object_id = %d",
|
||||||
|
publicationRs.getInt(1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
final List<String> processedEntries = new ArrayList<String>();
|
||||||
|
for (AssocEntry entry : oldData) {
|
||||||
|
if (processedEntries.contains(String.format(
|
||||||
|
"%s-%s",
|
||||||
|
entry.getPublicationDraftBundleId().toString(),
|
||||||
|
entry.getAuthorBundleDraftId().toString()))) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
stmt.addBatch(String.format(
|
||||||
|
"INSERT INTO ct_publications_authorship ("
|
||||||
|
+ "publication_id, "
|
||||||
|
+ "person_id, "
|
||||||
|
+ "editor, "
|
||||||
|
+ "authorship_order) "
|
||||||
|
+ "VALUES (%s, %s, %s, %s)",
|
||||||
|
entry.getPublicationDraftBundleId().toString(),
|
||||||
|
entry.getAuthorBundleDraftId().toString(),
|
||||||
|
entry.getEditor().toString(),
|
||||||
|
entry.getAuthorOrder().toString()));
|
||||||
|
|
||||||
|
if ((entry.getPublicationLiveBundleId() != null)
|
||||||
|
&& (entry.getAuthorBundleLiveId() != null)) {
|
||||||
|
stmt.addBatch(String.format(
|
||||||
|
"INSERT INTO ct_publications_authorship ("
|
||||||
|
+ "publication_id, "
|
||||||
|
+ "person_id, "
|
||||||
|
+ "editor, "
|
||||||
|
+ "authorship_order) "
|
||||||
|
+ "VALUES (%s, %s, %s, %s)",
|
||||||
|
entry.getPublicationLiveBundleId().toString(),
|
||||||
|
entry.getAuthorBundleLiveId().toString(),
|
||||||
|
entry.getEditor().toString(),
|
||||||
|
entry.getAuthorOrder().toString()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (entry.getPublicationLiveBundleId() != null) {
|
||||||
|
stmt.addBatch(String.format(
|
||||||
|
"DELETE FROM cms_published_links "
|
||||||
|
+ "WHERE pending = %s"
|
||||||
|
+ "AND draft_target = %s",
|
||||||
|
entry.getPublicationLiveId().toString(),
|
||||||
|
entry.getAuthorDraftId().toString()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (entry.getAuthorBundleLiveId() != null) {
|
||||||
|
stmt.addBatch(String.format(
|
||||||
|
"DELETE FROM cms_published_links "
|
||||||
|
+ "WHERE pending = %s"
|
||||||
|
+ "AND draft_target = %s",
|
||||||
|
entry.getAuthorLiveId().toString(),
|
||||||
|
entry.getPublicationDraftId().toString()));
|
||||||
|
}
|
||||||
|
|
||||||
|
processedEntries.add(String.format(
|
||||||
|
"%s-%s",
|
||||||
|
entry.getPublicationDraftBundleId().toString(),
|
||||||
|
entry.getAuthorBundleDraftId().
|
||||||
|
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 authorDraftId;
|
||||||
|
private BigDecimal publicationLiveId;
|
||||||
|
private BigDecimal authorLiveId;
|
||||||
|
private BigDecimal publicationDraftBundleId;
|
||||||
|
private BigDecimal authorBundleDraftId;
|
||||||
|
private BigDecimal publicationLiveBundleId;
|
||||||
|
private BigDecimal authorBundleLiveId;
|
||||||
|
private Boolean editor;
|
||||||
|
private Integer authorOrder;
|
||||||
|
|
||||||
|
public AssocEntry() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getAuthorBundleDraftId() {
|
||||||
|
return authorBundleDraftId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAuthorBundleDraftId(BigDecimal authorBundleDraftId) {
|
||||||
|
this.authorBundleDraftId = authorBundleDraftId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getAuthorBundleLiveId() {
|
||||||
|
return authorBundleLiveId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAuthorBundleLiveId(BigDecimal authorBundleLiveId) {
|
||||||
|
this.authorBundleLiveId = authorBundleLiveId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getAuthorDraftId() {
|
||||||
|
return authorDraftId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAuthorDraftId(BigDecimal authorDraftId) {
|
||||||
|
this.authorDraftId = authorDraftId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getAuthorLiveId() {
|
||||||
|
return authorLiveId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAuthorLiveId(BigDecimal authorLiveId) {
|
||||||
|
this.authorLiveId = authorLiveId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getAuthorOrder() {
|
||||||
|
return authorOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAuthorOrder(Integer authorOrder) {
|
||||||
|
this.authorOrder = authorOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getEditor() {
|
||||||
|
return editor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEditor(Boolean editor) {
|
||||||
|
this.editor = editor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getPublicationDraftBundleId() {
|
||||||
|
return publicationDraftBundleId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPublicationDraftBundleId(
|
||||||
|
BigDecimal publicationDraftBundleId) {
|
||||||
|
this.publicationDraftBundleId = publicationDraftBundleId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getPublicationDraftId() {
|
||||||
|
return publicationDraftId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPublicationDraftId(BigDecimal publicationDraftId) {
|
||||||
|
this.publicationDraftId = publicationDraftId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getPublicationLiveBundleId() {
|
||||||
|
return publicationLiveBundleId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPublicationLiveBundleId(
|
||||||
|
BigDecimal publicationLiveBundleId) {
|
||||||
|
this.publicationLiveBundleId = publicationLiveBundleId;
|
||||||
|
}
|
||||||
|
|
||||||
|
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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -83,11 +83,6 @@ public class PublicationBundle extends ContentBundle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean handlesReverseProperties() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean copyReverseProperty(final CustomCopy source,
|
public boolean copyReverseProperty(final CustomCopy source,
|
||||||
final ContentItem liveItem,
|
final ContentItem liveItem,
|
||||||
|
|
@ -110,7 +105,9 @@ public class PublicationBundle extends ContentBundle {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return super.copyReverseProperty(source, liveItem, property,
|
return super.copyReverseProperty(source,
|
||||||
|
liveItem,
|
||||||
|
property,
|
||||||
copier);
|
copier);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,13 @@
|
||||||
<ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project"
|
<ccm:application xmlns:ccm="http://ccm.redhat.com/ccm-project"
|
||||||
name="ccm-sci-types-department"
|
name="ccm-sci-types-department"
|
||||||
prettyName="Scientific CMS Department content type"
|
prettyName="Scientific CMS Department content type"
|
||||||
version = "6.6.4"
|
version = "6.6.5"
|
||||||
release="1"
|
release="1"
|
||||||
webapp="ROOT">
|
webapp="ROOT">
|
||||||
|
|
||||||
<ccm:dependencies>
|
<ccm:dependencies>
|
||||||
<ccm:requires name="ccm-core" version="6.6.3" relation="ge"/>
|
<ccm:requires name="ccm-core" version="6.6.3" relation="ge"/>
|
||||||
<ccm:requires name="ccm-cms" version="6.6.4" relation="ge"/>
|
<ccm:requires name="ccm-cms" version="6.6.6" relation="ge"/>
|
||||||
</ccm:dependencies>
|
</ccm:dependencies>
|
||||||
<ccm:directories>
|
<ccm:directories>
|
||||||
<ccm:directory name="pdl"/>
|
<ccm:directory name="pdl"/>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue