122 lines
3.9 KiB
Java
Executable File
122 lines
3.9 KiB
Java
Executable File
package org.undp.weblog;
|
|
|
|
import org.apache.log4j.Logger;
|
|
import org.undp.weblog.ui.WebLogPortlet;
|
|
|
|
import com.arsdigita.db.DbHelper;
|
|
import com.arsdigita.domain.DataObjectNotFoundException;
|
|
import com.arsdigita.domain.DomainObject;
|
|
import com.arsdigita.domain.DomainObjectFactory;
|
|
import com.arsdigita.domain.DomainObjectInstantiator;
|
|
import com.arsdigita.initializer.InitializationException;
|
|
import com.arsdigita.kernel.ACSObjectInstantiator;
|
|
import com.arsdigita.kernel.PackageType;
|
|
// import com.arsdigita.kernel.Stylesheet;
|
|
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.apportlet.AppPortletType;
|
|
import com.arsdigita.runtime.CompoundInitializer;
|
|
import com.arsdigita.runtime.DomainInitEvent;
|
|
import com.arsdigita.runtime.PDLInitializer;
|
|
import com.arsdigita.runtime.RuntimeConfig;
|
|
import com.arsdigita.web.ApplicationType;
|
|
|
|
/**
|
|
* @author Peter Kopunec
|
|
*/
|
|
|
|
public class Initializer extends CompoundInitializer {
|
|
|
|
private static final Logger s_log = Logger.getLogger(Initializer.class);
|
|
|
|
public Initializer() throws InitializationException {
|
|
final String url = RuntimeConfig.getConfig().getJDBCURL();
|
|
final int database = DbHelper.getDatabaseFromURL(url);
|
|
|
|
add(new PDLInitializer(new ManifestSource("ccm-weblog.pdl.mf",
|
|
new NameFilter(DbHelper.getDatabaseSuffix(database), "pdl"))));
|
|
}
|
|
|
|
public void init(DomainInitEvent e) {
|
|
s_log.info("WebLog Initializer starting.");
|
|
|
|
boolean isMyTransaction = false;
|
|
TransactionContext txn = SessionManager.getSession()
|
|
.getTransactionContext();
|
|
if (!txn.inTxn()) {
|
|
txn.beginTxn();
|
|
isMyTransaction = true;
|
|
}
|
|
|
|
// register application
|
|
DomainObjectInstantiator instantiator = new ACSObjectInstantiator() {
|
|
protected DomainObject doNewInstance(DataObject dataObject) {
|
|
return new WebLogApplication(dataObject);
|
|
}
|
|
};
|
|
DomainObjectFactory.registerInstantiator(
|
|
WebLogApplication.BASE_DATA_OBJECT_TYPE, instantiator);
|
|
checkSetup();
|
|
|
|
// Register the portlets
|
|
instantiator = new ACSObjectInstantiator() {
|
|
protected DomainObject doNewInstance(DataObject dataObject) {
|
|
return new WebLogPortlet(dataObject);
|
|
}
|
|
};
|
|
DomainObjectFactory.registerInstantiator(
|
|
WebLogPortlet.BASE_DATA_OBJECT_TYPE, instantiator);
|
|
|
|
if (isMyTransaction) {
|
|
txn.commitTxn();
|
|
}
|
|
|
|
s_log.debug("WebLog Initializer done.");
|
|
}
|
|
|
|
private void checkSetup() {
|
|
try {
|
|
s_log.debug("WebLog Initializer - verifying setup.");
|
|
PackageType entityType = PackageType.findByKey("weblog");
|
|
} catch (DataObjectNotFoundException e) {
|
|
setup();
|
|
}
|
|
}
|
|
|
|
private void setup() {
|
|
s_log.info("WebLog Initializer - setting up new package");
|
|
|
|
PackageType entityType = PackageType.create("weblog", "WebLog",
|
|
"WebLogs", "http://www.undp.org/weblog");
|
|
s_log.debug("Just added package type WebLog ");
|
|
|
|
// Old style StylesheetResolver where location of stylesheets are stored
|
|
// in db and as well as mappings to applications.
|
|
// New style is pattern based, see cpom.arsdigita.templating
|
|
// Stylesheet entitySheet = Stylesheet
|
|
// .createStylesheet("/packages/weblog/xsl/weblog.xsl");
|
|
// entityType.addStylesheet(entitySheet);
|
|
|
|
entityType.setDispatcherClass(WebLogDispatcher.class.getName());
|
|
|
|
entityType.save();
|
|
|
|
final ApplicationType entityAppType = ApplicationType
|
|
.createApplicationType(entityType, "WebLog Application",
|
|
WebLogApplication.BASE_DATA_OBJECT_TYPE);
|
|
entityAppType.save();
|
|
|
|
// portlet
|
|
AppPortletType portletType = AppPortletType.createAppPortletType(
|
|
"WebLog Portlet", AppPortletType.WIDE_PROFILE,
|
|
WebLogPortlet.BASE_DATA_OBJECT_TYPE);
|
|
portletType.setProviderApplicationType(entityAppType);
|
|
portletType.setPortalApplication(true);
|
|
portletType.save();
|
|
|
|
}
|
|
}
|