001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software distributed under the License
012: * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
013: * or implied. See the License for the specific language governing permissions and limitations under
014: * the License.
015: *
016: */
017:
018: /* $Id: SchedulerHelper.java 473861 2006-11-12 03:51:14Z gregor $ */
019:
020: package org.apache.lenya.cms.cocoon.scheduler;
021:
022: import java.util.HashMap;
023: import java.util.Map;
024:
025: import org.apache.avalon.framework.logger.Logger;
026: import org.apache.avalon.framework.parameters.Parameters;
027: import org.apache.cocoon.ProcessingException;
028: import org.apache.cocoon.environment.ObjectModelHelper;
029: import org.apache.lenya.cms.cocoon.task.CocoonTaskWrapper;
030: import org.apache.lenya.cms.publication.DocumentFactory;
031: import org.apache.lenya.cms.publication.DocumentUtil;
032: import org.apache.lenya.cms.publication.Publication;
033: import org.apache.lenya.cms.repository.Session;
034: import org.apache.lenya.cms.scheduler.LoadQuartzServlet;
035: import org.apache.lenya.cms.scheduler.ServletJob;
036: import org.apache.lenya.cms.task.TaskWrapper;
037: import org.apache.lenya.util.NamespaceMap;
038: import org.apache.lenya.util.ServletHelper;
039:
040: /**
041: * Scheduler helper
042: */
043: public class SchedulerHelper {
044:
045: /**
046: * Ctor.
047: * @param _objectModel The Cocoon component object model.
048: * @param _parameters The Cocoon component parameters.
049: * @param _logger The logger to use.
050: */
051: public SchedulerHelper(Map _objectModel, Parameters _parameters,
052: Logger _logger) {
053: this .objectModel = _objectModel;
054: this .parameters = _parameters;
055: this .logger = _logger;
056: }
057:
058: private Logger logger;
059: private Parameters parameters;
060: private Map objectModel;
061:
062: /**
063: * Creates the scheduler parameters.
064: * @return A map.
065: * @throws ProcessingException when something went wrong.
066: */
067: public Map createParameters() throws ProcessingException {
068:
069: Map map = new HashMap();
070:
071: try {
072: TaskWrapper wrapper = new CocoonTaskWrapper(
073: this .objectModel, this .parameters, null);
074:
075: this .logger.debug("Adding task wrapper parameters");
076: Map wrapperParameters = wrapper.getParameters();
077: map.putAll(wrapperParameters);
078:
079: NamespaceMap schedulerParameters = new NamespaceMap(
080: LoadQuartzServlet.PREFIX);
081:
082: DocumentFactory identityMap = DocumentUtil
083: .createDocumentIdentityMap(null, null);
084: String url = ServletHelper.getWebappURI(ObjectModelHelper
085: .getRequest(this .objectModel));
086: Publication pub = null;
087:
088: schedulerParameters
089: .put(ServletJob.PARAMETER_DOCUMENT_URL, identityMap
090: .getFromURL(url).getCanonicalWebappURL());
091: schedulerParameters.put(
092: LoadQuartzServlet.PARAMETER_PUBLICATION_ID, pub
093: .getId());
094: map.putAll(schedulerParameters.getPrefixedMap());
095: } catch (final Exception e) {
096: throw new ProcessingException(e);
097: }
098:
099: return map;
100: }
101:
102: }
|