Update script fuer ccm-cms. Funktioniert noch nicht korrekt.

git-svn-id: https://svn.libreccm.org/ccm/trunk@603 8810af33-2d31-482b-a856-94f89814c4df
master
pb 2010-11-15 09:19:47 +00:00
parent 85d515666f
commit 52b2294b8a
12 changed files with 585 additions and 4 deletions

View File

@ -2,8 +2,8 @@
<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.0" version="6.6.1"
release="2" 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"/>

View File

@ -0,0 +1,32 @@
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public License
-- as published by the Free Software Foundation; either version 2.1 of
-- the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
-- $Id: add_table_cms_addresses.sql pboy $
create table cms_addresses (
address_id integer NOT NULL,
address character varying(1000),
postalcode character varying(20),
city character varying(200),
state character varying(200),
isocountrycode character varying(2)
);
ALTER TABLE ONLY cms_addresses
ADD CONSTRAINT cms_addresse_addres_id_p_ggx2i PRIMARY KEY (address_id);
ALTER TABLE ONLY cms_addresses
ADD CONSTRAINT cms_addresse_addres_id_f_2ebau
FOREIGN KEY (address_id) REFERENCES cms_pages(item_id);

View File

@ -0,0 +1,31 @@
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public License
-- as published by the Free Software Foundation; either version 2.1 of
-- the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
-- $Id: add_table_cms_rel_attr.sql pboy $
create table cms_relation_attribute (
object_id integer NOT NULL,
attribute character varying(100) NOT NULL,
attr_key character varying(100) NOT NULL,
lang character varying(2) NOT NULL,
name character varying(100) NOT NULL,
description character varying(500)
);
ALTER TABLE ONLY cms_relation_attribute
ADD CONSTRAINT cms_rel_att_att_key_at_u_nh3g1 UNIQUE (attribute, attr_key, lang);
ALTER TABLE ONLY cms_relation_attribute
ADD CONSTRAINT cms_rela_attrib_obj_id_p_qdgsr PRIMARY KEY (object_id);

View File

@ -0,0 +1,54 @@
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public License
-- as published by the Free Software Foundation; either version 2.1 of
-- the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
-- $Id: add_tables_cms_contacts.sql pboy $
-- File has to be processed AFTER add_table_addresses!
create table cms_contacts (
contact_id integer NOT NULL,
address_id integer
);
create table cms_contactentries (
contactentry_id integer NOT NULL,
contact_id integer,
"key" character varying(100) NOT NULL,
description character varying(100),
value character varying(100) NOT NULL
);
ALTER TABLE ONLY cms_contacts
ADD CONSTRAINT cms_contact_contact_id_p_kusfp PRIMARY KEY (contact_id);
ALTER TABLE ONLY cms_contactentries
ADD CONSTRAINT cms_contacte_contac_id_p_wo_wi PRIMARY KEY (contactentry_id);
ALTER TABLE ONLY cms_contacts
ADD CONSTRAINT cms_contact_address_id_f_wyexp
FOREIGN KEY (address_id) REFERENCES cms_addresses(address_id);
ALTER TABLE ONLY cms_contacts
ADD CONSTRAINT cms_contact_contact_id_f_30c_4
FOREIGN KEY (contact_id) REFERENCES cms_pages(item_id);
ALTER TABLE ONLY cms_contactentries
ADD CONSTRAINT cms_contacte_contac_id_f_7eg_y
FOREIGN KEY (contactentry_id) REFERENCES cms_items(item_id);
ALTER TABLE ONLY cms_contactentries
ADD CONSTRAINT cms_contactent_cont_id_f_2_5m8
FOREIGN KEY (contact_id) REFERENCES cms_contacts(contact_id);

View File

@ -0,0 +1,71 @@
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public License
-- as published by the Free Software Foundation; either version 2.1 of
-- the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
-- $Id: add_tables_cms_organisation.sql pboy $
-- File has to be processed AFTER add_table_cms_contacts!
-- File has to be processed AFTER add_table_cms_persons!
create table cms_organizationalunits (
organizationalunit_id integer NOT NULL,
addendum character varying(512)
);
create table cms_organizationalunits_contact_map (
organizationalunit_id integer NOT NULL,
contact_id integer NOT NULL,
contact_type character varying(100),
map_order integer
);
create table cms_organizationalunits_person_map (
organizationalunit_id integer NOT NULL,
person_id integer NOT NULL,
role_name character varying(100)
);
ALTER TABLE ONLY cms_organizationalunits_contact_map
ADD CONSTRAINT cms_org_con_map_con_id_p_1rc4y
PRIMARY KEY (contact_id, organizationalunit_id);
ALTER TABLE ONLY cms_organizationalunits_person_map
ADD CONSTRAINT cms_org_per_map_org_id_p_km6_m
PRIMARY KEY (person_id, organizationalunit_id);
ALTER TABLE ONLY cms_organizationalunits
ADD CONSTRAINT cms_organiz_organiz_id_p_kk8qt
PRIMARY KEY (organizationalunit_id);
ALTER TABLE ONLY cms_organizationalunits_contact_map
ADD CONSTRAINT cms_org_con_map_con_id_f_9tm3c
FOREIGN KEY (contact_id) REFERENCES cms_contacts(contact_id);
ALTER TABLE ONLY cms_organizationalunits_contact_map
ADD CONSTRAINT cms_org_con_map_org_id_f_vdrnx
FOREIGN KEY (organizationalunit_id)
REFERENCES cms_organizationalunits(organizationalunit_id);
ALTER TABLE ONLY cms_organizationalunits_person_map
ADD CONSTRAINT cms_org_per_map_org_id_f_ducb2
FOREIGN KEY (organizationalunit_id)
REFERENCES cms_organizationalunits(organizationalunit_id);
ALTER TABLE ONLY cms_organizationalunits_person_map
ADD CONSTRAINT cms_org_per_map_per_id_f_hrpzh
FOREIGN KEY (person_id) REFERENCES cms_persons(person_id);
ALTER TABLE ONLY cms_organizationalunits
ADD CONSTRAINT cms_organiz_organiz_id_f_ubliq
FOREIGN KEY (organizationalunit_id) REFERENCES cms_pages(item_id);

View File

@ -0,0 +1,55 @@
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public License
-- as published by the Free Software Foundation; either version 2.1 of
-- the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
-- $Id: add_tables_cms_person.sql pboy $
-- File has to be processed AFTER add_table_cms_contacts!
create table cms_persons (
person_id integer NOT NULL,
surname character varying(512),
givenname character varying(512),
titlepre character varying(256),
titlepost character varying(256),
birthdate date,
gender character(1)
);
create table cms_person_contact_map (
person_id integer NOT NULL,
contact_id integer NOT NULL,
link_order integer,
link_key character varying(100)
);
ALTER TABLE ONLY cms_person_contact_map
ADD CONSTRAINT cms_per_con_map_con_id_p_g1cii PRIMARY KEY (contact_id, person_id);
ALTER TABLE ONLY cms_persons
ADD CONSTRAINT cms_persons_person_id_p_8z087 PRIMARY KEY (person_id);
ALTER TABLE ONLY cms_person_contact_map
ADD CONSTRAINT cms_per_con_map_con_id_f_peoc2
FOREIGN KEY (contact_id) REFERENCES cms_contacts(contact_id);
ALTER TABLE ONLY cms_person_contact_map
ADD CONSTRAINT cms_per_con_map_per_id_f_g82jn
FOREIGN KEY (person_id) REFERENCES cms_persons(person_id);
ALTER TABLE ONLY cms_persons
ADD CONSTRAINT cms_persons_person_id_f_r24km
FOREIGN KEY (person_id) REFERENCES cms_pages(item_id);

View File

@ -0,0 +1,19 @@
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public License
-- as published by the Free Software Foundation; either version 2.1 of
-- the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
-- $Id: upd_table_cms_publ_links.sql pboy $
alter table cms_published_links
add column link_attributes bytea;

View File

@ -0,0 +1,19 @@
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public License
-- as published by the Free Software Foundation; either version 2.1 of
-- the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
-- $Id: upd_table_cms_tel_links.sql pboy $
alter table cms_related_links
add column link__list_name varchar(100);

View File

@ -0,0 +1,20 @@
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public License
-- as published by the Free Software Foundation; either version 2.1 of
-- the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
-- $Id: upd_table_content_types.sql pboy $
alter table content_types
add column ancestors character varying(2000),
add column siblings character varying(2000) ;

View File

@ -0,0 +1,33 @@
--
-- Copyright (C) 2008 Peter Boy All Rights Reserved.
--
-- This library is free software; you can redistribute it and/or
-- modify it under the terms of the GNU Lesser General Public License
-- as published by the Free Software Foundation; either version 2.1 of
-- the License, or (at your option) any later version.
--
-- This library is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-- Lesser General Public License for more details.
--
-- You should have received a copy of the GNU Lesser General Public
-- License along with this library; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
-- $DateTime: 2010/11/10 23:15:09 $
\echo Red Hat Enterprise CMS 6.6.0 -> 6.6.1 Upgrade Script (PostgreSQL)
begin;
\i ../default/upgrade/6.6.0-6.6.1/add_table_cms_addresses.sql
\i ../default/upgrade/6.6.0-6.6.1/add_tables_cms_contacts.sql
\i ../default/upgrade/6.6.0-6.6.1/add_tables_cms_persons.sql
\i ../default/upgrade/6.6.0-6.6.1/add_tables_cms_organisation.sql
\i ../default/upgrade/6.6.0-6.6.1/add_table_cms_rel_attr.sql
\i ../default/upgrade/6.6.0-6.6.1/upd_table_cms_publ_links.sql
\i ../default/upgrade/6.6.0-6.6.1/upd_table_cms_rel_links.sql
\i ../default/upgrade/6.6.0-6.6.1/upd_table_content_types.sql
commit;

View File

@ -30,11 +30,18 @@
<version from="6.5.0" to="6.5.1"> <version from="6.5.0" to="6.5.1">
<script sql="ccm-cms/upgrade/::database::-6.5.0-6.5.1.sql"/> <script sql="ccm-cms/upgrade/::database::-6.5.0-6.5.1.sql"/>
</version> </version>
<version from="6.5.2" to="6.5.3"> <version from="6.5.2" to="6.5.3">
<script sql="ccm-cms/upgrade/::database::-6.5.2-6.5.3.sql"/> <script sql="ccm-cms/upgrade/::database::-6.5.2-6.5.3.sql"/>
</version> </version>
<version from="6.5.3" to="6.5.4"> <version from="6.5.3" to="6.5.4">
<script sql="ccm-cms/upgrade/::database::-6.5.3-6.5.4.sql"/> <script sql="ccm-cms/upgrade/::database::-6.5.3-6.5.4.sql"/>
</version> </version>
<version from="6.6.0" to="6.6.1">
<!--
-->
<script sql="ccm-cms/upgrade/::database::-6.6.0-6.6.1.sql"/>
<script class="com.arsdigita.cms.upgrade.CreateGenericContentTypes"/>
</version>
</upgrade> </upgrade>

View File

@ -0,0 +1,240 @@
/*
* Copyright (C) 2010 Sören Bernstein. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
package com.arsdigita.cms.upgrade;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.ContentTypeCollection;
import com.arsdigita.cms.ContentTypeLifecycleDefinition;
import com.arsdigita.cms.ContentTypeWorkflowTemplate;
import com.arsdigita.cms.installer.xml.XMLContentTypeHandler;
import com.arsdigita.cms.lifecycle.LifecycleDefinition;
import com.arsdigita.kernel.Kernel;
import com.arsdigita.kernel.KernelExcursion;
import org.apache.commons.cli.CommandLine;
import org.apache.log4j.Logger;
import com.arsdigita.packaging.Program;
import com.arsdigita.persistence.Session;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.persistence.TransactionContext;
import com.arsdigita.workflow.simple.WorkflowTemplate;
import com.arsdigita.xml.XML;
import java.math.BigDecimal;
import java.util.List;
import java.util.StringTokenizer;
/**
*
* @author quasi
* @version $Id: $
*/
public class CreateGenericContentTypes extends Program {
private static Logger s_log = Logger.getLogger(CreateGenericContentTypes.class);
/**
/* Constructor
*/
public CreateGenericContentTypes() {
super("CreateGenericContentTypes", "1.0.0", "");
}
/**
*
* @param args
*/
public static final void main(final String[] args) {
new CreateGenericContentTypes().run(args);
}
/**
*
* @param cmdLine
*/
public void doRun(CommandLine cmdLine) {
new KernelExcursion() {
public void excurse() {
setEffectiveParty(Kernel.getSystemParty());
final Session session = SessionManager.getSession();
final TransactionContext tc = session.getTransactionContext();
// add new generic content types
tc.beginTxn();
String[] ctDefFiles = new String[]
{"/WEB-INF/content-types/GenericAddress.xml",
"/WEB-INF/content-types/GenericArticle.xml",
"/WEB-INF/content-types/GenericContact.xml",
"/WEB-INF/content-types/GenericOrganizationalUnit.xml",
"/WEB-INF/content-types/GenericPerson.xml"};
if (ctDefFiles != null) {
for (int i = 0; i < ctDefFiles.length; i++) {
String xmlFile = ctDefFiles[i];
s_log.debug("Processing contentTypes in: " + xmlFile);
XML.parseResource(xmlFile, new XMLContentTypeHandler());
}
}
tc.commitTxn(); // save database additions for re-reading
// add the dependency hierarchie to any installed ct
tc.beginTxn();
ContentTypeCollection ctc = ContentType.getAllContentTypes();
s_log.error("Starte content types update");
while (ctc.next()) {
ContentType ct = ctc.getContentType();
s_log.error("Verarbeite " + ct.getClassName());
createPedigree(ct);
}
tc.commitTxn();
}
}.run();
}
/*
private boolean isLoadableInto(ContentSection section) {
if (section == null) {
throw new NullPointerException("section");
}
if (getContentSections().size() > 0) {
return getContentSections().contains(section.getName());
} else {
return ContentSection.getConfig().getDefaultContentSection().
equals(section.getName());
}
}
protected void prepareSection(final ContentSection section,
final ContentType type,
final LifecycleDefinition ld,
final WorkflowTemplate wf) {
ContentTypeLifecycleDefinition.updateLifecycleDefinition(section, type, ld);
ContentTypeWorkflowTemplate.updateWorkflowTemplate(section, type, wf);
}
protected List getContentSections() {
return java.util.Collections.EMPTY_LIST;
}
*/
/**
* Generates the pedigree for new content types created during update.
*
* Copy 'nd pasted from AbstractContentType / Loader
* @param type The new content type
*/
private void createPedigree(ContentType type) {
// The parent content type
ContentType parent = null;
// Get all content types
ContentTypeCollection cts = ContentType.getAllContentTypes();
// This is a brute force method, but I can't come up with something
// better atm without changing either all Loader or the xml-files.
while (cts.next()) {
ContentType ct = cts.getContentType();
try {
Class.forName(type.getClassName()).asSubclass(Class.forName(ct.getClassName()));
} catch (Exception ex) {
// This cast is not valid so type is not a sublacss of ct
continue;
} // Save the current ct as possible parent if we haven't found any parent yet
// or if the current ancestor list is longer than that one from the possible
// parent earlier found
if (parent == null
|| (parent.getAncestors() != null
&& ct.getAncestors() != null
&& parent.getAncestors().length() < ct.getAncestors().length())) {
parent = ct;
}
}
// If there is a valid parent content type create the pedigree
if (parent != null && !parent.getClassName().equals(type.getClassName())) {
if (parent.getAncestors() != null) {
String parentAncestors = parent.getAncestors();
StringTokenizer strTok = new StringTokenizer(parentAncestors, "/");
// Add parent ancestors to this content types ancestor list
// Also while we iterate through the list, we also need to add
// this content type as sibling to all entries in the ancestor list
while (strTok.hasMoreElements()) {
BigDecimal ctID = (BigDecimal) strTok.nextElement();
// Get the current content type
try {
ContentType ct = new ContentType(ctID);
ct.addSiblings(ctID);
} catch (Exception ex) {
// The db is broken. There is no content type for this ID
}
// Add parent ancestor
type.addAncestor(ctID);
}
}
// Add parent to ancestor list
type.addAncestor(parent.getID());
// Add this to parent siblings
parent.addSiblings(type.getID());
}
}
}