blob: 9e94dfcd7a8a8da25b821e09b42e27876a4cccd2 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/* $Id$ */
package org.apache.lenya.cms.publication;
/**
* A Lenya publication.
*/
public interface Publication {
/**
* <code>AUTHORING_AREA</code> The authoring area
*/
String AUTHORING_AREA = "authoring";
/**
* <code>DAV_AREA</code> The webDAV authoring area
*/
String DAV_AREA = "webdav";
/**
* <code>STAGING_AREA</code> The staging area
*/
String STAGING_AREA = "staging";
/**
* <code>LIVE_AREA</code> The live area
*/
String LIVE_AREA = "live";
/**
* <code>ARCHIVE_AREA</code> The archive area
*/
String ARCHIVE_AREA = "archive";
/**
* <code>TRASH_AREA</code> The trash area
*/
String TRASH_AREA = "trash";
/**
* <code>CONFIGURATION_PATH</code> The configuration path
*/
String CONFIGURATION_PATH = "config";
/**
* <code>CONTENT_PATH</code> The content path
*/
String CONTENT_PATH = "content";
/**
* <code>PENDING_PATH</code> The pending path
*/
String PENDING_PATH = "pending";
/**
* <code>DELETE_PATH</code> The delete path
*/
String DELETE_PATH = "delete";
/**
* The item type.
*/
String ITEM_TYPE = "publication";
/**
* @deprecated
*/
String PUBLICATION_PREFIX_URI = "lenya/pubs";
/**
* Returns the publication ID.
* @return A string value.
*/
String getId();
/**
* @return The name of the publication as specified in the configuration file.
*/
String getName();
/**
* @param name The name of the publication.
*/
void setName(String name);
/**
* @return The URI of the directory where publications are located.
*/
String getPubBaseUri();
/**
* @return if this publication exists.
*/
boolean exists();
/**
* Set the path mapper
* @param mapper The path mapper
*/
void setPathMapper(DefaultDocumentIdToPathMapper mapper);
/**
* Returns the path mapper.
* @return a <code>DocumentIdToPathMapper</code>
*/
DocumentIdToPathMapper getPathMapper();
/**
* Get the default language
* @return the default language
*/
String getDefaultLanguage();
/**
* Set the default language
* @param language The default language.
* @throws IllegalArgumentException if the publication doesn't contain this language.
*/
void setDefaultLanguage(String language);
/**
* Get all available languages for this publication
* @return an <code>Array</code> of languages
*/
String[] getLanguages();
/**
* @param language The language to add.
* @throws IllegalArgumentException if the language is invalid or already contained.
*/
void addLanguage(String language);
/**
* @param language The language to remove.
* @throws IllegalArgumentException if the language is not contained or if the language
* is the default language.
*/
void removeLanguage(String language);
/**
* Get the breadcrumb prefix. It can be used as a prefix if a publication is part of a larger
* site
* @return the breadcrumb prefix
*/
String getBreadcrumbPrefix();
/**
* Returns the hint of the site manager service that is used by this publication.
* @return A hint to use for service selection.
*/
String getSiteManagerHint();
/**
* Returns the document builder of this instance.
* @return A hint to use for service selection.
*/
DocumentBuilder getDocumentBuilder();
/**
* Returns the publication template instantiator hint. If the publication does not allow
* templating, <code>null</code> is returned.
* @return A hint to use for service selection.
*/
String getInstantiatorHint();
/**
* Returns the content directory source URI.
* If the publication does not specify a content dir, then <code>null</code> is returned.
* @return A base directory where all the content is located.
*/
String getContentUri();
/**
* Returns the proxy which is used for a particular document's area
* (see {@link #getProxy(String, boolean)}).
* @param document The document.
* @param isSslProtected A boolean value.
* @return A proxy.
*/
Proxy getProxy(Document document, boolean isSslProtected);
/**
* <p>
* Returns the proxy which is used for the given area and the ssl parameter.
* </p>
* <p>
* If no proxy is defined in the publication configuration file, a default proxy
* with the URL <code>{contextPath}/{pubId}/{area}</code> is returned.
* </p>
* <p>
* If the area string is "root", the global proxy is returned. If no global proxy
* is defined, a default global proxy with the URL <code>{contextPath}</code>
* is returned.
* </p>
* @param area area
* @param isSslProtected A boolean value.
* @return A proxy.
*/
Proxy getProxy(String area, boolean isSslProtected);
/**
* @return The ID of the template of the publication or <code>null</code> if the
* publication has no template.
*/
String getTemplateId();
/**
* @param area The area.
* @return the URI base under which contents in this publication are accessed
*/
String getContentUri(String area);
/**
* @param resourceType The resource type or <code>null</code> if no workflow is registered for
* this resource type.
* @return The workflow schema to use for this resource type.
*/
String getWorkflowSchema(ResourceType resourceType);
/**
* @return The resource types that are supported by this publication.
*/
String[] getResourceTypeNames();
/**
* @param name The name.
* @return An area object.
* @throws ResourceNotFoundException if the area does not exist.
*/
Area getArea(String name) throws ResourceNotFoundException;
/**
* @return The names of all available areas.
*/
String[] getAreaNames();
/**
* Saves the configuration of this publication.
*/
void saveConfiguration();
/**
* @return The names of all modules which are used by this publication.
*/
String[] getModuleNames();
/**
* @return The session this publication object belongs to.
*/
Session getSession();
/**
* @return The source URI of the publication directory.
*/
String getSourceUri();
}