RelationAttributes (Database Driven Enum) werden jetzt bereits im Loader von ccm-sci-bundle mit Werten gefüllt (Ticket #1733). Außerdem einige technische Änderungen an RelationAttribute.

git-svn-id: https://svn.libreccm.org/ccm/trunk@2251 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2013-07-10 15:38:38 +00:00
parent 416b3cb01d
commit 1a9c542474
15 changed files with 1371 additions and 113 deletions

View File

@ -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.8" version="6.6.9"
release="1" release="1"
webapp="ROOT"> webapp="ROOT">
<ccm:dependencies> <ccm:dependencies>

View File

@ -21,9 +21,9 @@ model com.arsdigita.cms;
import com.arsdigita.kernel.ACSObject; import com.arsdigita.kernel.ACSObject;
object type RelationAttribute { object type RelationAttribute extends ACSObject {
BigDecimal[1..1] id = cms_relation_attribute.object_id INTEGER; //BigDecimal[1..1] id = cms_relation_attribute.object_id INTEGER;
String[1..1] attribute = cms_relation_attribute.attribute VARCHAR(100); String[1..1] attribute = cms_relation_attribute.attribute VARCHAR(100);
String[1..1] attr_key = cms_relation_attribute.attr_key VARCHAR(100); String[1..1] attr_key = cms_relation_attribute.attr_key VARCHAR(100);
String[1..1] lang = cms_relation_attribute.lang VARCHAR(2); String[1..1] lang = cms_relation_attribute.lang VARCHAR(2);
@ -31,6 +31,7 @@ object type RelationAttribute {
String[0..1] description = cms_relation_attribute.description VARCHAR(500); String[0..1] description = cms_relation_attribute.description VARCHAR(500);
unique (attribute, attr_key, lang); unique (attribute, attr_key, lang);
object key (id); //object key (id);
reference key(cms_relation_attribute.object_id);
} }

View File

@ -69,4 +69,8 @@
<!-- Fill the personsstr column --> <!-- Fill the personsstr column -->
<script class="com.arsdigita.cms.upgrade.PersonsStrColumn"/> <script class="com.arsdigita.cms.upgrade.PersonsStrColumn"/>
</version> </version>
<version from="6.6.8" to="6.6.9">
<!-- Make RelationAttribute SubClass of ACSObject -->
<script class="com.arsdigita.cms.upgrade.RelationAttributeACSObject"/>
</version>
</upgrade> </upgrade>

View File

@ -108,10 +108,9 @@ public class Initializer extends CompoundInitializer {
s_log.debug("CMS.Initializer.(Constructor) invoked"); s_log.debug("CMS.Initializer.(Constructor) invoked");
add(new PDLInitializer(new ManifestSource("ccm-cms.pdl.mf", add(new PDLInitializer(new ManifestSource("ccm-cms.pdl.mf",
new NameFilter(DbHelper new NameFilter(DbHelper
.getDatabaseSuffix(database), .getDatabaseSuffix(database),
"pdl"))) "pdl"))));
);
add(new com.arsdigita.cms.contentsection.Initializer()); add(new com.arsdigita.cms.contentsection.Initializer());
add(new com.arsdigita.cms.publishToFile.Initializer()); add(new com.arsdigita.cms.publishToFile.Initializer());
@ -165,36 +164,36 @@ public class Initializer extends CompoundInitializer {
URLService.registerFinder( URLService.registerFinder(
Link.BASE_DATA_OBJECT_TYPE, Link.BASE_DATA_OBJECT_TYPE,
new URLFinder() { new URLFinder() {
public String find(OID oid, String context) public String find(OID oid, String context)
throws NoValidURLException { throws NoValidURLException {
return find(oid); return find(oid);
}
public String find(OID oid)
throws NoValidURLException {
Link link;
try {
link = (Link) DomainObjectFactory.newInstance(oid);
} catch (DataObjectNotFoundException ex) {
throw new NoValidURLException("Cannot find an object with oid: " + oid);
}
if (Link.EXTERNAL_LINK.equals(link.getTargetType())) {
return link.getTargetURI();
} else {
ContentItem target = link.getTargetItem();
try {
return URLService.locate(target.getOID());
} catch (URLFinderNotFoundException ex) {
throw new UncheckedWrapperException(ex);
} }
}
}
public String find(OID oid) });
throws NoValidURLException {
Link link;
try {
link = (Link) DomainObjectFactory.newInstance(oid);
} catch (DataObjectNotFoundException ex) {
throw new NoValidURLException("Cannot find an object with oid: " + oid);
}
if (Link.EXTERNAL_LINK.equals(link.getTargetType())) {
return link.getTargetURI();
} else {
ContentItem target = link.getTargetItem();
try {
return URLService.locate(target.getOID());
} catch (URLFinderNotFoundException ex) {
throw new UncheckedWrapperException(ex);
}
}
}
});
ImageSizerFactory.initialize(); ImageSizerFactory.initialize();
registerInstantiators(e.getFactory()); registerInstantiators(e.getFactory());
@ -210,7 +209,7 @@ public class Initializer extends CompoundInitializer {
final String workspaceURL = CMS.WORKSPACE_PACKAGE_KEY; final String workspaceURL = CMS.WORKSPACE_PACKAGE_KEY;
final String contentCenterMap = s_conf.getContentCenterMap(); final String contentCenterMap = s_conf.getContentCenterMap();
ContentCenterSetup workspaceSetup = new ContentCenterSetup(workspaceURL, ContentCenterSetup workspaceSetup = new ContentCenterSetup(workspaceURL,
contentCenterMap); contentCenterMap);
workspaceSetup.run(); workspaceSetup.run();
// register item adapters // register item adapters
@ -315,24 +314,33 @@ public class Initializer extends CompoundInitializer {
} }
}); });
f.registerInstantiator(RelationAttribute.BASE_DATA_OBJECT_TYPE,
new ACSObjectInstantiator() {
@Override
public DomainObject doNewInstance(DataObject dataObject) {
return new RelationAttribute(dataObject);
}
});
} }
private void registerLuceneEngine() { private void registerLuceneEngine() {
QueryEngineRegistry.registerEngine(IndexerType.LUCENE, QueryEngineRegistry.registerEngine(IndexerType.LUCENE,
new FilterType[]{ new FilterType[]{
new CategoryFilterType(), new CategoryFilterType(),
new ContentSectionFilterType(), new ContentSectionFilterType(),
new CMSContentSectionFilterType(), new CMSContentSectionFilterType(),
new ContentTypeFilterType(), new ContentTypeFilterType(),
new CreationDateFilterType(), new CreationDateFilterType(),
new CreationUserFilterType(), new CreationUserFilterType(),
new LastModifiedDateFilterType(), new LastModifiedDateFilterType(),
new LastModifiedUserFilterType(), new LastModifiedUserFilterType(),
new ObjectTypeFilterType(), new ObjectTypeFilterType(),
new PermissionFilterType(), new PermissionFilterType(),
new VersionFilterType() new VersionFilterType()
}, },
new LuceneQueryEngine()); new LuceneQueryEngine());
} }
@ -340,19 +348,19 @@ public class Initializer extends CompoundInitializer {
QueryEngineRegistry.registerEngine(IndexerType.INTERMEDIA, QueryEngineRegistry.registerEngine(IndexerType.INTERMEDIA,
new FilterType[]{ new FilterType[]{
new CategoryFilterType(), new CategoryFilterType(),
new ContentSectionFilterType(), new ContentSectionFilterType(),
new CMSContentSectionFilterType(), new CMSContentSectionFilterType(),
new ContentTypeFilterType(), new ContentTypeFilterType(),
new CreationDateFilterType(), new CreationDateFilterType(),
new CreationUserFilterType(), new CreationUserFilterType(),
new LastModifiedDateFilterType(), new LastModifiedDateFilterType(),
new LastModifiedUserFilterType(), new LastModifiedUserFilterType(),
new LaunchDateFilterType(), new LaunchDateFilterType(),
new ObjectTypeFilterType(), new ObjectTypeFilterType(),
new PermissionFilterType(), new PermissionFilterType(),
new VersionFilterType() new VersionFilterType()
}, },
new IntermediaQueryEngine()); new IntermediaQueryEngine());
} }

View File

@ -6,7 +6,7 @@
package com.arsdigita.cms; package com.arsdigita.cms;
import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.domain.DomainObject; import com.arsdigita.kernel.ACSObject;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -24,7 +24,7 @@ import java.math.BigDecimal;
* *
* @author quasi * @author quasi
*/ */
public class RelationAttribute extends DomainObject { public class RelationAttribute extends ACSObject { //extends DomainObject {
public static final String ID = "id"; public static final String ID = "id";
public static final String ATTRIBUTE = "attribute"; public static final String ATTRIBUTE = "attribute";
@ -39,7 +39,7 @@ public class RelationAttribute extends DomainObject {
/** /**
* Default constructor. This creates a new (empty) RelationAttribute. * Default constructor. This creates a new (empty) RelationAttribute.
**/ **/
public RelationAttribute() { public RelationAttribute() {
super(BASE_DATA_OBJECT_TYPE); super(BASE_DATA_OBJECT_TYPE);
} }

View File

@ -0,0 +1,188 @@
/*
* Copyright (C) 2013 Jens Pelzetter
*
* 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;
import com.arsdigita.xml.XML;
import java.math.BigDecimal;
import org.apache.log4j.Logger;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;
/**
* This is a helper tool for loading data for the RelationAttributes (Database Driven Enums)
* into the database in a loader of a module. This helper class uses a XML format for loading
* the enum data, which looks like this:
*
* <pre>
* &lt;ddenums&gt;
* &lt;ddenum name="..."&gt;
* &lt;entry key="..." lang="..." id="..."&gt;
* &lt;value&gt;...&lt;/value&gt;
* &lt;description&gt;...&lt;/description&gt;
* &lt;entry&gt;
* &lt;/ddenum&gt;
* &lt;/ddenums&gt;
* </pre>
*
* The root element is {@code <ddenums>} which can appear only once per file. The {@code <ddenums} can have multiple
* {@code <ddenum>} elements as child elements. The {@code <ddenum> element has one attribute, {@code name} which contains
* the name of the enumeration. Each {@code <ddenum>} may have multiple {@code<entry>} child elements. The
* {@code <entry>} element has three attributes.
*
* <dl>
* <dt>{@code key}</dt><dd>The key of the entry. This attribute is mandatory.</dd>
* <dt>{@code lang}</dt><dd>The language of the entry. This attribute is mandatory. The combination of {@code key}
* and {@code lang} should be unique.</dd>
* <dt>{@code id}</dt><dd>This attribute is optional and contains the database id of the entry if necessary. The
* value is maybe ignored by this import tool.</dd>
* </dl>
*
* Each entry has at least a {@code <value>} element as child. The {@code <value>} element contains the value of the
* enum entry. Optionally there can also be can descriptions element containing a description of the entry.
*
* @author Jens Pelzetter <jens@jp-digital.de>
* @version $Id$
*/
public class RelationAttributeImportTool {
private final static Logger LOGGER = Logger.getLogger(RelationAttributeImportTool.class);
public void loadData(final String fileName) {
XML.parseResource(fileName, new RelationAttributeXmlHandler());
}
//Suppressing this warnings because they are false positives here.
@SuppressWarnings({"PMD.CyclomaticComplexity", "PMD.AvoidStringBufferField"})
private class RelationAttributeXmlHandler extends DefaultHandler {
private String currentEnum;
private String currentKey;
private String currentLang;
private String currentId;
private String currentValue;
private String currentDesc;
private StringBuffer charBuffer;
public RelationAttributeXmlHandler() {
super();
//Nothing
}
@Override
public void startElement(final String uri,
final String localName,
final String qName,
final Attributes attributes) {
if ("ddenum".equals(qName)) {
currentEnum = attributes.getValue("name");
} else if ("entry".equals(qName)) {
currentKey = attributes.getValue("key");
currentLang = attributes.getValue("lang");
currentId = attributes.getValue("id");
} else if ("value".equals(qName)) {
//Create new StringBuffer of creating a string from the content of the element
charBuffer = new StringBuffer();
} else if ("description".equals(qName)) {
//Create new StringBuffer of creating a string from the content of the element
charBuffer = new StringBuffer();
}
}
@Override
public void endElement(final String uri,
final String localName,
final String qName) {
if ("ddenum".equals(qName)) {
currentEnum = "";
} else if ("entry".equals(qName)) {
createEntry();
currentKey = "";
currentLang = "";
currentId = "";
currentValue = "";
currentDesc = "";
} else if ("value".equals(qName)) {
//Copy the value of the StringBuffer charBuffer to currentValue
currentValue = charBuffer.toString().trim();
charBuffer = new StringBuffer();
} else if ("description".equals(qName)) {
//Copy the value of the StringBuffer charBuffer to currentValue
currentDesc = charBuffer.toString().trim();
charBuffer = new StringBuffer();
}
}
@Override
public void characters(final char[] chars, final int start, final int length) {
if (charBuffer != null) {
for(int i = start; i < start + length; i++) {
charBuffer.append(chars[i]);
}
}
}
//Supressing this warning since there is no better way yet.
@SuppressWarnings("PMD.NPathComplexity")
private void createEntry() {
if ((currentEnum == null) || currentEnum.isEmpty()) {
LOGGER.warn(String.format(
"Value for current enum is empty. Ignorning entry with key '%s' and lang '%s'.",
currentKey,
currentLang));
return;
}
if ((currentKey == null) || currentKey.isEmpty()) {
LOGGER.warn("No key. Ignorning entry");
return;
}
if ((currentLang == null) || currentLang.isEmpty()) {
LOGGER.warn(String.format("No lang for entry with key '%s'. Ignoring entry",
currentKey));
return;
}
LOGGER.warn("Creating RelationAttribute entry with this values:");
LOGGER.warn(String.format("\tcurrentEnum = '%s'", currentEnum));
LOGGER.warn(String.format("\tcurrentKey = '%s'", currentKey));
LOGGER.warn(String.format("\tcurrentLang = '%s'", currentLang));
LOGGER.warn(String.format("\tcurrentValue = '%s'", currentValue));
final RelationAttribute entry = new RelationAttribute();
if ((currentId != null) && !currentId.isEmpty()) {
entry.setID(new BigDecimal(currentId));
}
entry.setAttribute(currentEnum);
entry.setKey(currentKey);
entry.setLanguage(currentLang);
entry.setName(currentValue);
if ((currentDesc != null) && !currentValue.isEmpty()) {
entry.setDescription(currentDesc);
}
entry.save();
}
}
}

View File

@ -16,7 +16,9 @@ import com.arsdigita.util.cmd.Program;
import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLine;
/** /**
* * Adds a column {@code personsStr} to GenericOrganizationalUnit, including values. This column contains the names
* of all members of an organizational unit as one string. See {@link GenericOrganizationalUnit} for more details.
*
* @author Jens Pelzetter <jens@jp-digital.de> * @author Jens Pelzetter <jens@jp-digital.de>
* @version $Id$ * @version $Id$
*/ */

View File

@ -0,0 +1,187 @@
package com.arsdigita.cms.upgrade;
import com.arsdigita.cms.RelationAttribute;
import com.arsdigita.kernel.KernelExcursion;
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 java.util.ArrayList;
import java.util.List;
import org.apache.commons.cli.CommandLine;
/**
*
* @author Jens Pelzetter <jens@jp-digital.de>
* @version $Id$
*/
public class RelationAttributeACSObject extends Program {
public RelationAttributeACSObject() {
super("RelationAttributeACSObejct", "1.0.0", "");
}
public static final void main(final String[] args) {
new RelationAttributeACSObject().run(args);
}
@Override
protected void doRun(final CommandLine cmdLine) {
new KernelExcursion() {
@Override
protected void excurse() {
final Connection connection = Connections.acquire(RuntimeConfig.getConfig().getJDBCURL());
try {
connection.setAutoCommit(false);
} catch (SQLException ex) {
System.err.println("Failed to configure JDBC connection.");
printStackTrace(ex);
close(connection);
return;
}
final List<RelationAttributeEntry> entries = new ArrayList<RelationAttributeEntry>();
try {
final Statement stmt = connection.createStatement();
final ResultSet result = stmt.executeQuery(
"SELECT attribute, attr_key, lang, name, description FROM cms_relation_attribute;");
while (result.next()) {
final RelationAttributeEntry entry = new RelationAttributeEntry();
entry.setAttribute(result.getString("attribute"));
entry.setKey(result.getString("attr_key"));
entry.setLanguage(result.getString("lang"));
entry.setName(result.getString("name"));
entry.setDescription(result.getString("description"));
entries.add(entry);
}
System.out.printf("Found %d RelationAttributes entries.\n", entries.size());
stmt.addBatch("DROP TABLE 'cms_relation_attribute';");
stmt.addBatch("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)");
stmt.addBatch("ALTER TABLE public.cms_relation_attribute OWNER TO ccm;");
stmt.addBatch("ALTER TABLE ONLY cms_relation_attribute "
+ "ADD CONSTRAINT cms_rela_attrib_obj_id_f_23qc3 FOREIGN KEY (object_id) REFERENCES acs_objects(object_id);");
stmt.executeBatch();
close(connection);
} catch (SQLException ex) {
System.err.printf("SQL Error");
rollback(connection);
close(connection);
return;
}
for (RelationAttributeEntry entry : entries) {
createRelationAttribute(entry);
}
}
};
}
private void createRelationAttribute(final RelationAttributeEntry entry) {
final RelationAttribute attribute = new RelationAttribute();
attribute.setAttribute(entry.getAttribute());
attribute.setKey(entry.getKey());
attribute.setLanguage(entry.getLanguage());
attribute.setName(entry.getName());
attribute.setDescription(entry.getDescription());
attribute.save();
}
;
private void rollback(final Connection conn) {
try {
System.err.println("WARNING: Rollback.");
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 RelationAttributeEntry {
private String attribute;
private String key;
private String language;
private String name;
private String description;
public RelationAttributeEntry() {
//Nothing
}
public String getAttribute() {
return attribute;
}
public void setAttribute(final String attribute) {
this.attribute = attribute;
}
public String getKey() {
return key;
}
public void setKey(final String key) {
this.key = key;
}
public String getLanguage() {
return language;
}
public void setLanguage(final String language) {
this.language = language;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
}

View File

@ -0,0 +1,173 @@
<?xml version="1.0"?>
<ddenums>
<ddenum name="GenericContactTypes">
<entry key="commonContact" lang="de">
<value>Kontakt</value>
</entry>
<entry key="commonContact" lang="en">
<value>Contact</value>
</entry>
<entry key="speaker" lang="en">
<value>Speaker</value>
</entry>
<entry key="speaker" lang="de">
<value>Sprecher</value>
</entry>
<entry key="office" lang="en">
<value>Office</value>
</entry>
<entry key="office" lang="de">
<value>Sekretariat</value>
</entry>
</ddenum>
<ddenum name="GenericContactEntryKeys">
<entry key="phoneOffice" lang="en">
<value>Phone (office)</value>
</entry>
<entry key="phoneOffice" lang="de">
<value>Telefon (Büro)</value>
</entry>
<entry key="phonePrivate" lang="en">
<value>Phone (home)</value>
</entry>
<entry key="phonePrivate" lang="de">
<value>Telefon (Privat)</value>
</entry>
<entry key="phoneMobile" lang="en">
<value>Phone (mobil)</value>
</entry>
<entry key="phoneMobile" lang="de">
<value>Telefon (Mobil)</value>
</entry>
<entry key="fax" lang="en">
<value>Fax</value>
</entry>
<entry key="fax" lang="de">
<value>Fax</value>
</entry>
<entry key="email" lang="en">
<value>Email</value>
</entry>
<entry key="email" lang="de">
<value>E-Mail</value>
</entry>
<entry key="office" lang="en">
<value>Room</value>
</entry>
<entry key="office" lang="de">
<value>Raum</value>
</entry>
<entry key="homepage" lang="en">
<value>Homepage</value>
</entry>
<entry key="homepage" lang="de">
<value>Homepage</value>
</entry>
<entry key="im" lang="en">
<value>Instant Messanger</value>
</entry>
<entry key="im" lang="de">
<value>Instant Messanger</value>
</entry>
<entry key="visitingHours" lang="en">
<value>Visiting Hours</value>
</entry>
<entry key="visitingHours" lang="de">
<value>Sprechzeiten</value>
</entry>
</ddenum>
<ddenum name="GenericOrganizationalUnitRole">
<entry key="head" lang="en">
<value>Chief executive officer</value>
</entry>
<entry key="head" lang="de">
<value>Geschäftsführung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
</ddenum>
<ddenum name="GenericOrganizationalUnitMemberStatus">
<entry key="active" lang="en">
<value>Active</value>
</entry>
<entry key="active" lang="de">
<value>Aktiv</value>
</entry>
<entry key="associated" lang="en">
<value>Associated</value>
</entry>
<entry key="associated" lang="de">
<value>Assoziiert</value>
</entry>
<entry key="former" lang="en">
<value>Former</value>
</entry>
<entry key="former" lang="de">
<value>Ehemalig</value>
</entry>
</ddenum>
<ddenum name="SciInstituteRole">
<entry key="head" lang="en">
<value>Managing director</value>
</entry>
<entry key="head" lang="de">
<value>Geschäftsführer</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
<entry key="administration" lang="en">
<value>Administration</value>
</entry>
<entry key="administration" lang="de">
<value>Verwaltung</value>
</entry>
<entry key="guest" lang="en">
<value>Guest</value>
</entry>
<entry key="guest" lang="de">
<value>Gast</value>
</entry>
</ddenum>
<ddenum name="SciDepartmentRole">
<entry key="head" lang="en">
<value>Department head</value>
</entry>
<entry key="head" lang="de">
<value>Abteilungsleitung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
<entry key="secretariat" lang="en">
<value>Office</value>
</entry>
<entry key="secretariat" lang="de">
<value>Sekretariat</value>
</entry>
</ddenum>
<ddenum name="SciProjectRole">
<entry key="head" lang="en">
<value>Project head</value>
</entry>
<entry key="head" lang="de">
<value>Projektleitung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
</ddenum>
</ddenums>

View File

@ -0,0 +1,173 @@
<?xml version="1.0"?>
<ddenums>
<ddenum name="GenericContactTypes">
<entry key="commonContact" lang="de">
<value>Kontakt</value>
</entry>
<entry key="commonContact" lang="en">
<value>Contact</value>
</entry>
<entry key="speaker" lang="en">
<value>Speaker</value>
</entry>
<entry key="speaker" lang="de">
<value>Sprecher</value>
</entry>
<entry key="office" lang="en">
<value>Office</value>
</entry>
<entry key="office" lang="de">
<value>Sekretariat</value>
</entry>
</ddenum>
<ddenum name="GenericContactEntryKeys">
<entry key="phoneOffice" lang="en">
<value>Phone (office)</value>
</entry>
<entry key="phoneOffice" lang="de">
<value>Telefon (Büro)</value>
</entry>
<entry key="phonePrivate" lang="en">
<value>Phone (home)</value>
</entry>
<entry key="phonePrivate" lang="de">
<value>Telefon (Privat)</value>
</entry>
<entry key="phoneMobile" lang="en">
<value>Phone (mobil)</value>
</entry>
<entry key="phoneMobile" lang="de">
<value>Telefon (Mobil)</value>
</entry>
<entry key="fax" lang="en">
<value>Fax</value>
</entry>
<entry key="fax" lang="de">
<value>Fax</value>
</entry>
<entry key="email" lang="en">
<value>Email</value>
</entry>
<entry key="email" lang="de">
<value>E-Mail</value>
</entry>
<entry key="office" lang="en">
<value>Room</value>
</entry>
<entry key="office" lang="de">
<value>Raum</value>
</entry>
<entry key="homepage" lang="en">
<value>Homepage</value>
</entry>
<entry key="homepage" lang="de">
<value>Homepage</value>
</entry>
<entry key="im" lang="en">
<value>Instant Messanger</value>
</entry>
<entry key="im" lang="de">
<value>Instant Messanger</value>
</entry>
<entry key="visitingHours" lang="en">
<value>Visiting Hours</value>
</entry>
<entry key="visitingHours" lang="de">
<value>Sprechzeiten</value>
</entry>
</ddenum>
<ddenum name="GenericOrganizationalUnitRole">
<entry key="head" lang="en">
<value>Chief executive officer</value>
</entry>
<entry key="head" lang="de">
<value>Geschäftsführung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
</ddenum>
<ddenum name="GenericOrganizationalUnitMemberStatus">
<entry key="active" lang="en">
<value>Active</value>
</entry>
<entry key="active" lang="de">
<value>Aktiv</value>
</entry>
<entry key="associated" lang="en">
<value>Associated</value>
</entry>
<entry key="associated" lang="de">
<value>Assoziiert</value>
</entry>
<entry key="former" lang="en">
<value>Former</value>
</entry>
<entry key="former" lang="de">
<value>Ehemalig</value>
</entry>
</ddenum>
<ddenum name="SciInstituteRole">
<entry key="head" lang="en">
<value>Managing director</value>
</entry>
<entry key="head" lang="de">
<value>Geschäftsführer</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
<entry key="administration" lang="en">
<value>Administration</value>
</entry>
<entry key="administration" lang="de">
<value>Verwaltung</value>
</entry>
<entry key="guest" lang="en">
<value>Guest</value>
</entry>
<entry key="guest" lang="de">
<value>Gast</value>
</entry>
</ddenum>
<ddenum name="SciDepartmentRole">
<entry key="head" lang="en">
<value>Department head</value>
</entry>
<entry key="head" lang="de">
<value>Abteilungsleitung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
<entry key="secretariat" lang="en">
<value>Office</value>
</entry>
<entry key="secretariat" lang="de">
<value>Sekretariat</value>
</entry>
</ddenum>
<ddenum name="SciProjectRole">
<entry key="head" lang="en">
<value>Project head</value>
</entry>
<entry key="head" lang="de">
<value>Projektleitung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
</ddenum>
</ddenums>

View File

@ -0,0 +1,173 @@
<?xml version="1.0"?>
<ddenums>
<ddenum name="GenericContactTypes">
<entry key="commonContact" lang="de">
<value>Kontakt</value>
</entry>
<entry key="commonContact" lang="en">
<value>Contact</value>
</entry>
<entry key="speaker" lang="en">
<value>Speaker</value>
</entry>
<entry key="speaker" lang="de">
<value>Sprecher</value>
</entry>
<entry key="office" lang="en">
<value>Office</value>
</entry>
<entry key="office" lang="de">
<value>Sekretariat</value>
</entry>
</ddenum>
<ddenum name="GenericContactEntryKeys">
<entry key="phoneOffice" lang="en">
<value>Phone (office)</value>
</entry>
<entry key="phoneOffice" lang="de">
<value>Telefon (Büro)</value>
</entry>
<entry key="phonePrivate" lang="en">
<value>Phone (home)</value>
</entry>
<entry key="phonePrivate" lang="de">
<value>Telefon (Privat)</value>
</entry>
<entry key="phoneMobile" lang="en">
<value>Phone (mobil)</value>
</entry>
<entry key="phoneMobile" lang="de">
<value>Telefon (Mobil)</value>
</entry>
<entry key="fax" lang="en">
<value>Fax</value>
</entry>
<entry key="fax" lang="de">
<value>Fax</value>
</entry>
<entry key="email" lang="en">
<value>Email</value>
</entry>
<entry key="email" lang="de">
<value>E-Mail</value>
</entry>
<entry key="office" lang="en">
<value>Room</value>
</entry>
<entry key="office" lang="de">
<value>Raum</value>
</entry>
<entry key="homepage" lang="en">
<value>Homepage</value>
</entry>
<entry key="homepage" lang="de">
<value>Homepage</value>
</entry>
<entry key="im" lang="en">
<value>Instant Messanger</value>
</entry>
<entry key="im" lang="de">
<value>Instant Messanger</value>
</entry>
<entry key="visitingHours" lang="en">
<value>Visiting Hours</value>
</entry>
<entry key="visitingHours" lang="de">
<value>Sprechzeiten</value>
</entry>
</ddenum>
<ddenum name="GenericOrganizationalUnitRole">
<entry key="head" lang="en">
<value>Chief executive officer</value>
</entry>
<entry key="head" lang="de">
<value>Geschäftsführung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
</ddenum>
<ddenum name="GenericOrganizationalUnitMemberStatus">
<entry key="active" lang="en">
<value>Active</value>
</entry>
<entry key="active" lang="de">
<value>Aktiv</value>
</entry>
<entry key="associated" lang="en">
<value>Associated</value>
</entry>
<entry key="associated" lang="de">
<value>Assoziiert</value>
</entry>
<entry key="former" lang="en">
<value>Former</value>
</entry>
<entry key="former" lang="de">
<value>Ehemalig</value>
</entry>
</ddenum>
<ddenum name="SciInstituteRole">
<entry key="head" lang="en">
<value>Managing director</value>
</entry>
<entry key="head" lang="de">
<value>Geschäftsführer</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
<entry key="administration" lang="en">
<value>Administration</value>
</entry>
<entry key="administration" lang="de">
<value>Verwaltung</value>
</entry>
<entry key="guest" lang="en">
<value>Guest</value>
</entry>
<entry key="guest" lang="de">
<value>Gast</value>
</entry>
</ddenum>
<ddenum name="SciDepartmentRole">
<entry key="head" lang="en">
<value>Department head</value>
</entry>
<entry key="head" lang="de">
<value>Abteilungsleitung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
<entry key="secretariat" lang="en">
<value>Office</value>
</entry>
<entry key="secretariat" lang="de">
<value>Sekretariat</value>
</entry>
</ddenum>
<ddenum name="SciProjectRole">
<entry key="head" lang="en">
<value>Project head</value>
</entry>
<entry key="head" lang="de">
<value>Projektleitung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
</ddenum>
</ddenums>

View File

@ -0,0 +1,173 @@
<?xml version="1.0"?>
<ddenums>
<ddenum name="GenericContactTypes">
<entry key="commonContact" lang="de">
<value>Kontakt</value>
</entry>
<entry key="commonContact" lang="en">
<value>Contact</value>
</entry>
<entry key="speaker" lang="en">
<value>Speaker</value>
</entry>
<entry key="speaker" lang="de">
<value>Sprecher</value>
</entry>
<entry key="office" lang="en">
<value>Office</value>
</entry>
<entry key="office" lang="de">
<value>Sekretariat</value>
</entry>
</ddenum>
<ddenum name="GenericContactEntryKeys">
<entry key="phoneOffice" lang="en">
<value>Phone (office)</value>
</entry>
<entry key="phoneOffice" lang="de">
<value>Telefon (Büro)</value>
</entry>
<entry key="phonePrivate" lang="en">
<value>Phone (home)</value>
</entry>
<entry key="phonePrivate" lang="de">
<value>Telefon (Privat)</value>
</entry>
<entry key="phoneMobile" lang="en">
<value>Phone (mobil)</value>
</entry>
<entry key="phoneMobile" lang="de">
<value>Telefon (Mobil)</value>
</entry>
<entry key="fax" lang="en">
<value>Fax</value>
</entry>
<entry key="fax" lang="de">
<value>Fax</value>
</entry>
<entry key="email" lang="en">
<value>Email</value>
</entry>
<entry key="email" lang="de">
<value>E-Mail</value>
</entry>
<entry key="office" lang="en">
<value>Room</value>
</entry>
<entry key="office" lang="de">
<value>Raum</value>
</entry>
<entry key="homepage" lang="en">
<value>Homepage</value>
</entry>
<entry key="homepage" lang="de">
<value>Homepage</value>
</entry>
<entry key="im" lang="en">
<value>Instant Messanger</value>
</entry>
<entry key="im" lang="de">
<value>Instant Messanger</value>
</entry>
<entry key="visitingHours" lang="en">
<value>Visiting Hours</value>
</entry>
<entry key="visitingHours" lang="de">
<value>Sprechzeiten</value>
</entry>
</ddenum>
<ddenum name="GenericOrganizationalUnitRole">
<entry key="head" lang="en">
<value>Chief executive officer</value>
</entry>
<entry key="head" lang="de">
<value>Geschäftsführung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
</ddenum>
<ddenum name="GenericOrganizationalUnitMemberStatus">
<entry key="active" lang="en">
<value>Active</value>
</entry>
<entry key="active" lang="de">
<value>Aktiv</value>
</entry>
<entry key="associated" lang="en">
<value>Associated</value>
</entry>
<entry key="associated" lang="de">
<value>Assoziiert</value>
</entry>
<entry key="former" lang="en">
<value>Former</value>
</entry>
<entry key="former" lang="de">
<value>Ehemalig</value>
</entry>
</ddenum>
<ddenum name="SciInstituteRole">
<entry key="head" lang="en">
<value>Managing director</value>
</entry>
<entry key="head" lang="de">
<value>Geschäftsführer</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
<entry key="administration" lang="en">
<value>Administration</value>
</entry>
<entry key="administration" lang="de">
<value>Verwaltung</value>
</entry>
<entry key="guest" lang="en">
<value>Guest</value>
</entry>
<entry key="guest" lang="de">
<value>Gast</value>
</entry>
</ddenum>
<ddenum name="SciDepartmentRole">
<entry key="head" lang="en">
<value>Department head</value>
</entry>
<entry key="head" lang="de">
<value>Abteilungsleitung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
<entry key="secretariat" lang="en">
<value>Office</value>
</entry>
<entry key="secretariat" lang="de">
<value>Sekretariat</value>
</entry>
</ddenum>
<ddenum name="SciProjectRole">
<entry key="head" lang="en">
<value>Project head</value>
</entry>
<entry key="head" lang="de">
<value>Projektleitung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
</ddenum>
</ddenums>

View File

@ -0,0 +1,173 @@
<?xml version="1.0"?>
<ddenums>
<ddenum name="GenericContactTypes">
<entry key="commonContact" lang="de">
<value>Kontakt</value>
</entry>
<entry key="commonContact" lang="en">
<value>Contact</value>
</entry>
<entry key="speaker" lang="en">
<value>Speaker</value>
</entry>
<entry key="speaker" lang="de">
<value>Sprecher</value>
</entry>
<entry key="office" lang="en">
<value>Office</value>
</entry>
<entry key="office" lang="de">
<value>Sekretariat</value>
</entry>
</ddenum>
<ddenum name="GenericContactEntryKeys">
<entry key="phoneOffice" lang="en">
<value>Phone (office)</value>
</entry>
<entry key="phoneOffice" lang="de">
<value>Telefon (Büro)</value>
</entry>
<entry key="phonePrivate" lang="en">
<value>Phone (home)</value>
</entry>
<entry key="phonePrivate" lang="de">
<value>Telefon (Privat)</value>
</entry>
<entry key="phoneMobile" lang="en">
<value>Phone (mobil)</value>
</entry>
<entry key="phoneMobile" lang="de">
<value>Telefon (Mobil)</value>
</entry>
<entry key="fax" lang="en">
<value>Fax</value>
</entry>
<entry key="fax" lang="de">
<value>Fax</value>
</entry>
<entry key="email" lang="en">
<value>Email</value>
</entry>
<entry key="email" lang="de">
<value>E-Mail</value>
</entry>
<entry key="office" lang="en">
<value>Room</value>
</entry>
<entry key="office" lang="de">
<value>Raum</value>
</entry>
<entry key="homepage" lang="en">
<value>Homepage</value>
</entry>
<entry key="homepage" lang="de">
<value>Homepage</value>
</entry>
<entry key="im" lang="en">
<value>Instant Messanger</value>
</entry>
<entry key="im" lang="de">
<value>Instant Messanger</value>
</entry>
<entry key="visitingHours" lang="en">
<value>Visiting Hours</value>
</entry>
<entry key="visitingHours" lang="de">
<value>Sprechzeiten</value>
</entry>
</ddenum>
<ddenum name="GenericOrganizationalUnitRole">
<entry key="head" lang="en">
<value>Chief executive officer</value>
</entry>
<entry key="head" lang="de">
<value>Geschäftsführung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
</ddenum>
<ddenum name="GenericOrganizationalUnitMemberStatus">
<entry key="active" lang="en">
<value>Active</value>
</entry>
<entry key="active" lang="de">
<value>Aktiv</value>
</entry>
<entry key="associated" lang="en">
<value>Associated</value>
</entry>
<entry key="associated" lang="de">
<value>Assoziiert</value>
</entry>
<entry key="former" lang="en">
<value>Former</value>
</entry>
<entry key="former" lang="de">
<value>Ehemalig</value>
</entry>
</ddenum>
<ddenum name="SciInstituteRole">
<entry key="head" lang="en">
<value>Managing director</value>
</entry>
<entry key="head" lang="de">
<value>Geschäftsführer</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
<entry key="administration" lang="en">
<value>Administration</value>
</entry>
<entry key="administration" lang="de">
<value>Verwaltung</value>
</entry>
<entry key="guest" lang="en">
<value>Guest</value>
</entry>
<entry key="guest" lang="de">
<value>Gast</value>
</entry>
</ddenum>
<ddenum name="SciDepartmentRole">
<entry key="head" lang="en">
<value>Department head</value>
</entry>
<entry key="head" lang="de">
<value>Abteilungsleitung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
<entry key="secretariat" lang="en">
<value>Office</value>
</entry>
<entry key="secretariat" lang="de">
<value>Sekretariat</value>
</entry>
</ddenum>
<ddenum name="SciProjectRole">
<entry key="head" lang="en">
<value>Project head</value>
</entry>
<entry key="head" lang="de">
<value>Projektleitung</value>
</entry>
<entry key="member" lang="en">
<value>Member</value>
</entry>
<entry key="member" lang="de">
<value>Mitglied</value>
</entry>
</ddenum>
</ddenums>

View File

@ -19,6 +19,8 @@
package com.arsdigita.bundle; package com.arsdigita.bundle;
import com.arsdigita.categorization.Categorization; import com.arsdigita.categorization.Categorization;
import com.arsdigita.cms.RelationAttribute;
import com.arsdigita.cms.RelationAttributeCollection;
import com.arsdigita.runtime.CompoundInitializer; import com.arsdigita.runtime.CompoundInitializer;
import com.arsdigita.runtime.DomainInitEvent; import com.arsdigita.runtime.DomainInitEvent;
import com.arsdigita.templating.PatternStylesheetResolver; import com.arsdigita.templating.PatternStylesheetResolver;
@ -60,5 +62,6 @@ public class Initializer extends CompoundInitializer {
// "webapp", // "webapp",
// new WebAppPatternGenerator() // new WebAppPatternGenerator()
// ); // );
} }
} }

View File

@ -15,13 +15,12 @@
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package com.arsdigita.bundle; package com.arsdigita.bundle;
import com.arsdigita.categorization.Category; import com.arsdigita.categorization.Category;
import com.arsdigita.categorization.RootCategoryCollection; import com.arsdigita.categorization.RootCategoryCollection;
import com.arsdigita.cms.ContentSection; import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.RelationAttributeImportTool;
import com.arsdigita.cms.SecurityManager; import com.arsdigita.cms.SecurityManager;
import com.arsdigita.cms.ui.role.RoleFactory; import com.arsdigita.cms.ui.role.RoleFactory;
import com.arsdigita.kernel.Role; import com.arsdigita.kernel.Role;
@ -62,8 +61,6 @@ public class Loader extends PackageLoader {
/** Logger instance for debugging */ /** Logger instance for debugging */
private static final Logger s_log = Logger.getLogger(Loader.class); private static final Logger s_log = Logger.getLogger(Loader.class);
// ///////////////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////////////
// Parameter Section // Parameter Section
// ///////////////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////////////
@ -82,10 +79,8 @@ public class Loader extends PackageLoader {
* "com.arsdigita.navigation.Navigation:local:Local Navigation" * "com.arsdigita.navigation.Navigation:local:Local Navigation"
*/ */
private Parameter m_customApplicationInstances = new StringArrayParameter( private Parameter m_customApplicationInstances = new StringArrayParameter(
"com.arsdigita.bundle.loader.custom_app_instances", "com.arsdigita.bundle.loader.custom_app_instances",
Parameter.OPTIONAL, null Parameter.OPTIONAL, null);
);
/** /**
* Comma separated list of fully qualified filenames, each file containing * Comma separated list of fully qualified filenames, each file containing
* a set of Terms domain catagories definitions. These form an initial set * a set of Terms domain catagories definitions. These form an initial set
@ -94,12 +89,10 @@ public class Loader extends PackageLoader {
* Files are stored as part of the jar, so classloader can find them. * Files are stored as part of the jar, so classloader can find them.
*/ */
private Parameter m_categoryFiles = new StringArrayParameter( private Parameter m_categoryFiles = new StringArrayParameter(
"com.arsdigita.bundle.loader.category_files", "com.arsdigita.bundle.loader.category_files",
Parameter.REQUIRED,new String[]{ Parameter.REQUIRED, new String[]{
"bundle/categories/sci-nav-domain-1.00.xml", "bundle/categories/sci-nav-domain-1.00.xml",
"bundle/categories/sci-nav-hierarchy-1.00.xml" } "bundle/categories/sci-nav-hierarchy-1.00.xml"});
);
/** /**
* List of comma separated sets of domain mappings. * List of comma separated sets of domain mappings.
* It's the developers / administrators responsibility to ensure all * It's the developers / administrators responsibility to ensure all
@ -117,16 +110,21 @@ public class Loader extends PackageLoader {
* *
*/ */
private Parameter m_domainMappings = new StringArrayParameter( private Parameter m_domainMappings = new StringArrayParameter(
"com.arsdigita.bundle.loader.domain_mappings", "com.arsdigita.bundle.loader.domain_mappings",
Parameter.REQUIRED,new String[]{ "STD-NAV:/navigation/", Parameter.REQUIRED, new String[]{"STD-NAV:/navigation/",
"STD-NAV:/main/", "STD-NAV:/main/",
"STD-NAV:/portal/" } "STD-NAV:/portal/"});
);
/**
* Database Drive Enum data to load.
*/
private Parameter m_ddenums = new StringArrayParameter("com.arsdigita.bundle.loader.ddenums",
Parameter.REQUIRED,
new String[]{"bundle/ddenums.xml"});
// ///////////////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////////////
// Parameter Section END // Parameter Section END
// ///////////////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////////////
/** /**
* Constructor, just registers parameters. * Constructor, just registers parameters.
*/ */
@ -137,10 +135,10 @@ public class Loader extends PackageLoader {
register(m_customApplicationInstances); register(m_customApplicationInstances);
register(m_categoryFiles); register(m_categoryFiles);
register(m_domainMappings); register(m_domainMappings);
register(m_ddenums);
} }
public void run(final ScriptContext ctx) { public void run(final ScriptContext ctx) {
/* Create site specific custom applications instances of arbitrary /* Create site specific custom applications instances of arbitrary
@ -149,25 +147,25 @@ public class Loader extends PackageLoader {
* navigation tree(s) or additional content sections. * navigation tree(s) or additional content sections.
*/ */
String[] customApplicationInstances = (String[]) get(m_customApplicationInstances); String[] customApplicationInstances = (String[]) get(m_customApplicationInstances);
if ( customApplicationInstances != null) { if (customApplicationInstances != null) {
for (int i = 0 ; i < customApplicationInstances.length ; i++) { for (int i = 0; i < customApplicationInstances.length; i++) {
final String aCustomApplicationInstance = customApplicationInstances[i]; final String aCustomApplicationInstance = customApplicationInstances[i];
StringTokenizer tok = new StringTokenizer( aCustomApplicationInstance, ":" ); StringTokenizer tok = new StringTokenizer(aCustomApplicationInstance, ":");
String type = null; // full qualified class name String type = null; // full qualified class name
String url = null; // url fragment (last part) String url = null; // url fragment (last part)
String title = null; // title of new application instance String title = null; // title of new application instance
String parent = null; // parent class name String parent = null; // parent class name
for ( int j = 0; tok.hasMoreTokens(); j++ ) { for (int j = 0; tok.hasMoreTokens(); j++) {
if ( 0 == j ) { if (0 == j) {
type = tok.nextToken(); type = tok.nextToken();
} else if ( 1 == j ) { } else if (1 == j) {
url = tok.nextToken(); url = tok.nextToken();
} else if ( 2 == j ) { } else if (2 == j) {
title = tok.nextToken(); title = tok.nextToken();
} else if ( 3 == j ) { } else if (3 == j) {
parent = tok.nextToken(); parent = tok.nextToken();
} else { } else {
parent = null; parent = null;
@ -179,7 +177,7 @@ public class Loader extends PackageLoader {
} }
/* Import from the categories definition files: Create Terms domains /* Import from the categories definition files: Create Terms domains
* and populate them with categories * and populate them with categories
* (alternatively this could be delegated to terms.Loader because it's * (alternatively this could be delegated to terms.Loader because it's
@ -191,7 +189,7 @@ public class Loader extends PackageLoader {
String[] files = (String[]) get(m_categoryFiles); String[] files = (String[]) get(m_categoryFiles);
final Parser parser = new Parser(); final Parser parser = new Parser();
// for each filename in the array of files containing categories // for each filename in the array of files containing categories
for (int i = 0 ; i < files.length ; i++) { for (int i = 0; i < files.length; i++) {
final String file = files[i]; final String file = files[i];
if (s_log.isInfoEnabled()) { if (s_log.isInfoEnabled()) {
s_log.info("Process " + file); s_log.info("Process " + file);
@ -209,20 +207,20 @@ public class Loader extends PackageLoader {
* existent, i.e. previously importet in the previous step. * existent, i.e. previously importet in the previous step.
*/ */
String[] domainMappings = (String[]) get(m_domainMappings); String[] domainMappings = (String[]) get(m_domainMappings);
for (int i = 0 ; i < domainMappings.length ; i++) { for (int i = 0; i < domainMappings.length; i++) {
final String aDomainMapping = domainMappings[i]; final String aDomainMapping = domainMappings[i];
StringTokenizer tok = new StringTokenizer( aDomainMapping, ":" ); StringTokenizer tok = new StringTokenizer(aDomainMapping, ":");
String key = null; String key = null;
String app = null; String app = null;
String context = null; String context = null;
for ( int j = 0; tok.hasMoreTokens(); j++ ) { for (int j = 0; tok.hasMoreTokens(); j++) {
if ( 0 == j ) { if (0 == j) {
key = tok.nextToken(); key = tok.nextToken();
} else if ( 1 == j ) { } else if (1 == j) {
app = tok.nextToken(); app = tok.nextToken();
} else if ( 2 == j ) { } else if (2 == j) {
context = tok.nextToken(); context = tok.nextToken();
} else { } else {
context = null; context = null;
@ -232,13 +230,16 @@ public class Loader extends PackageLoader {
registerDomain(key, app, context); registerDomain(key, app, context);
} }
// registerServicesTemplate("/services/"); wird nicht gebraucht // registerServicesTemplate("/services/"); wird nicht gebraucht
final RelationAttributeImportTool ddenumTool = new RelationAttributeImportTool();
for(String ddenum : (String[]) get(m_ddenums)) {
ddenumTool.loadData(ddenum);
}
} // end run method } // end run method
// public void registerServicesTemplate(String appURL) { // public void registerServicesTemplate(String appURL) {
// Application app = Application.retrieveApplicationForPath(appURL); // Application app = Application.retrieveApplicationForPath(appURL);
// Assert.exists(app, Application.class); // Assert.exists(app, Application.class);
@ -255,8 +256,6 @@ public class Loader extends PackageLoader {
// Template.DEFAULT_DISPATCHER_CONTEXT, // Template.DEFAULT_DISPATCHER_CONTEXT,
// Template.DEFAULT_USE_CONTEXT ); // Template.DEFAULT_USE_CONTEXT );
// } // }
/** /**
* Determines the Terms domain using domainKey as well as the application * Determines the Terms domain using domainKey as well as the application
* instance using appURL and then creates a domain mapping using context * instance using appURL and then creates a domain mapping using context
@ -279,10 +278,10 @@ public class Loader extends PackageLoader {
/* Determine Domain and Application objects, both MUST exist! */ /* Determine Domain and Application objects, both MUST exist! */
Domain domain = Domain.retrieve(domainKey); // package com.arsdigita.london.terms Domain domain = Domain.retrieve(domainKey); // package com.arsdigita.london.terms
Application app = Application.retrieveApplicationForPath(appURL); Application app = Application.retrieveApplicationForPath(appURL);
/* Create domain mapping */ /* Create domain mapping */
domain.setAsRootForObject(app, context); domain.setAsRootForObject(app, context);
/* Create permissions and roles for content-center applications only */ /* Create permissions and roles for content-center applications only */
if (app instanceof ContentSection) { if (app instanceof ContentSection) {
RoleCollection coll = ((ContentSection) app).getStaffGroup().getOrderedRoles(); RoleCollection coll = ((ContentSection) app).getStaffGroup().getOrderedRoles();
@ -317,4 +316,5 @@ public class Loader extends PackageLoader {
} }
} }
} }
} }