217 lines
7.3 KiB
Java
Executable File
217 lines
7.3 KiB
Java
Executable File
/*
|
|
* Copyright (C) 2001, 2002 Red Hat Inc. All Rights Reserved.
|
|
*
|
|
* The contents of this file are subject to the CCM Public
|
|
* License (the "License"); you may not use this file except in
|
|
* compliance with the License. You may obtain a copy of
|
|
* the License at http://www.redhat.com/licenses/ccmpl.html
|
|
*
|
|
* Software distributed under the License is distributed on an "AS
|
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
* implied. See the License for the specific language governing
|
|
* rights and limitations under the License.
|
|
*
|
|
*/
|
|
|
|
package com.arsdigita.docmgr.installer;
|
|
|
|
import org.apache.log4j.Logger;
|
|
|
|
import com.arsdigita.db.DbHelper;
|
|
import com.arsdigita.docmgr.Constants;
|
|
import com.arsdigita.docmgr.DocBlobject;
|
|
import com.arsdigita.docmgr.File;
|
|
import com.arsdigita.docmgr.Folder;
|
|
import com.arsdigita.docmgr.Repository;
|
|
import com.arsdigita.docmgr.ResourceImpl;
|
|
import com.arsdigita.docmgr.ui.RecentUpdatedDocsPortlet;
|
|
import com.arsdigita.domain.DomainObject;
|
|
import com.arsdigita.domain.DomainObjectFactory;
|
|
import com.arsdigita.domain.DomainObjectInstantiator;
|
|
import com.arsdigita.kernel.ACSObjectInstantiator;
|
|
import com.arsdigita.persistence.DataObject;
|
|
import com.arsdigita.persistence.SessionManager;
|
|
import com.arsdigita.persistence.TransactionContext;
|
|
import com.arsdigita.persistence.pdl.ManifestSource;
|
|
import com.arsdigita.persistence.pdl.NameFilter;
|
|
import com.arsdigita.portal.PortletType;
|
|
import com.arsdigita.portal.apportlet.AppPortletSetup;
|
|
import com.arsdigita.runtime.CompoundInitializer;
|
|
import com.arsdigita.runtime.DomainInitEvent;
|
|
import com.arsdigita.runtime.PDLInitializer;
|
|
import com.arsdigita.runtime.RuntimeConfig;
|
|
import com.arsdigita.web.ApplicationSetup;
|
|
import com.arsdigita.web.ApplicationType;
|
|
|
|
|
|
/**
|
|
* Initializes the document manager package, sets up the
|
|
* DomainFactory, registers knowledge types and portlets.
|
|
*
|
|
* @author Stefan Deusch
|
|
* @author David Dao
|
|
*
|
|
* @version $Revision: #7 $ $Date: 2003/07/10 $
|
|
*/
|
|
|
|
//public class Initializer implements com.arsdigita.initializer.Initializer {
|
|
public class Initializer extends CompoundInitializer {
|
|
|
|
|
|
public Initializer() {
|
|
final String url = RuntimeConfig.getConfig().getJDBCURL();
|
|
final int database = DbHelper.getDatabaseFromURL(url);
|
|
|
|
add(new PDLInitializer
|
|
(new ManifestSource
|
|
("ccm-docmgr.pdl.mf",
|
|
new NameFilter(DbHelper.getDatabaseSuffix(database), "pdl"))));
|
|
}
|
|
|
|
|
|
// private Configuration m_conf = new Configuration();
|
|
|
|
// private static final String SEPARATOR = java.io.File.separator;
|
|
|
|
private static String PACKAGE_TYPE_NAME = "docs";
|
|
|
|
private static Logger s_log =
|
|
Logger.getLogger(Initializer.class);
|
|
|
|
|
|
public void init(DomainInitEvent e) {
|
|
s_log.warn("Document Manager is initializing using .init(DomainInitEvent e)");
|
|
setupDomainFactory();
|
|
|
|
TransactionContext txn = SessionManager.getSession()
|
|
.getTransactionContext();
|
|
txn.beginTxn();
|
|
|
|
ApplicationType docsAppType = setupDocs();
|
|
setupDocManagerPortlet(docsAppType);
|
|
|
|
txn.commitTxn();
|
|
s_log.info("Document Manager Initializer completed.");
|
|
}
|
|
|
|
// public Initializer() { }
|
|
|
|
// /**
|
|
// * Returns the configuration object used by this initializer.
|
|
// */
|
|
// public Configuration getConfiguration() {
|
|
// return m_conf;
|
|
// }
|
|
|
|
// /**
|
|
// * Called on startup.
|
|
// */
|
|
// public void startup() {
|
|
// s_log.warn("Document Manager is initializing.");
|
|
|
|
// setupDomainFactory();
|
|
|
|
// TransactionContext txn = SessionManager.getSession()
|
|
// .getTransactionContext();
|
|
// txn.beginTxn();
|
|
|
|
// ApplicationType docsAppType = setupDocs();
|
|
// setupDocManagerPortlet(docsAppType);
|
|
|
|
// txn.commitTxn();
|
|
// s_log.info("Document Manager Initializer completed.");
|
|
// }
|
|
|
|
/**
|
|
* Set up the document manager. Checks to see if the necessary
|
|
* package exists, and if not it creates it for the first time.
|
|
*/
|
|
|
|
private ApplicationType setupDocs() {
|
|
ApplicationSetup setup = new ApplicationSetup(s_log);
|
|
setup.setApplicationObjectType(Repository.BASE_DATA_OBJECT_TYPE);
|
|
setup.setKey(PACKAGE_TYPE_NAME);
|
|
setup.setTitle("Document Manager Application");
|
|
setup.setSingleton(true);
|
|
setup.setDescription
|
|
("The document manager empowers users to share documents.");
|
|
setup.setDispatcherClass("com.arsdigita.docmgr.ui.DMDispatcher");
|
|
setup.setStylesheet("/packages/docmgr/xsl/docs.xsl");
|
|
setup.setInstantiator(new ACSObjectInstantiator() {
|
|
public DomainObject doNewInstance(DataObject dataObject) {
|
|
return new Repository(dataObject);
|
|
}
|
|
});
|
|
|
|
return setup.run();
|
|
}
|
|
|
|
private void setupDocManagerPortlet(ApplicationType provider) {
|
|
// Create the document manager portlet
|
|
AppPortletSetup setup = new AppPortletSetup(s_log);
|
|
|
|
setup.setPortletObjectType(RecentUpdatedDocsPortlet.BASE_DATA_OBJECT_TYPE);
|
|
setup.setTitle("Recently Updated Documents");
|
|
setup.setDescription("Displays the most recent documents in the document manager.");
|
|
setup.setProfile(PortletType.WIDE_PROFILE);
|
|
setup.setProviderApplicationType(provider);
|
|
setup.setInstantiator(new ACSObjectInstantiator() {
|
|
protected DomainObject doNewInstance(DataObject dataObject) {
|
|
return new RecentUpdatedDocsPortlet(dataObject);
|
|
}
|
|
});
|
|
|
|
setup.run();
|
|
}
|
|
|
|
/**
|
|
* Set up domain object factories for basic document manager
|
|
* object types.
|
|
*/
|
|
private void setupDomainFactory() {
|
|
DomainObjectFactory.registerInstantiator
|
|
(ResourceImpl.BASE_DATA_OBJECT_TYPE,
|
|
new ACSObjectInstantiator() {
|
|
public DomainObject doNewInstance(DataObject obj) {
|
|
Boolean isFolder = (Boolean) obj.get(Constants.IS_FOLDER);
|
|
if (isFolder != null && isFolder.booleanValue()) {
|
|
return new Folder(obj);
|
|
} else {
|
|
return new File(obj);
|
|
}
|
|
}
|
|
});
|
|
// File
|
|
DomainObjectFactory.registerInstantiator(
|
|
File.BASE_DATA_OBJECT_TYPE, new ACSObjectInstantiator() {
|
|
public DomainObject doNewInstance(DataObject dataObject) {
|
|
return new File(dataObject);
|
|
}
|
|
}
|
|
);
|
|
|
|
// Folder
|
|
DomainObjectFactory.registerInstantiator(
|
|
Folder.BASE_DATA_OBJECT_TYPE, new ACSObjectInstantiator() {
|
|
public DomainObject doNewInstance(DataObject dataObject) {
|
|
return new Folder(dataObject);
|
|
}
|
|
}
|
|
);
|
|
|
|
DomainObjectFactory.registerInstantiator(
|
|
DocBlobject.BASE_DATA_OBJECT_TYPE, new DomainObjectInstantiator() {
|
|
public DomainObject doNewInstance(DataObject dataObject) {
|
|
return new DocBlobject(dataObject);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
// /**
|
|
// * Shutdown the document manager.
|
|
// */
|
|
// public void shutdown() { }
|
|
|
|
}
|