/* * Copyright (C) 2005-2009 Alfresco Software Limited. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program 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 General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * As a special exception to the terms and conditions of version 2.0 of * the GPL, you may redistribute this Program in connection with Free/Libre * and Open Source Software ("FLOSS") applications as described in Alfresco's * FLOSS exception. You should have recieved a copy of the text describing * the FLOSS exception, and it is also available here: * http://www.alfresco.com/legal/licensing" */ package org.alfresco.wcm.sandbox; import java.io.Serializable; import java.util.Date; import java.util.List; import java.util.Map; import org.alfresco.service.namespace.QName; import org.alfresco.wcm.asset.AssetInfo; /** * Sandbox Service fundamental API. *

* This service API is designed to support the public facing Sandbox APIs. * * @author janv */ public interface SandboxService { /** * Create author/user sandbox within a web project for the current user *

* If the author sandbox already exists for this web project then it will be returned * * @param wpStoreId web project store id * @return SandboxInfo the created user sandbox info */ public SandboxInfo createAuthorSandbox(String wpStoreId); /** * Create author/user sandbox within a web project for the given user *

* If the author sandbox already exists for this web project then it will be returned *

* Current user must be a content manager for the web project * * @param wpStoreId web project store id * @param userName user name * @return SandboxInfo the created user sandbox info */ public SandboxInfo createAuthorSandbox(String wpStoreId, String userName); /** * List the available sandboxes for the current user and given web project * * @param wpStoreId web project store id * @return List list of sandbox info */ public List listSandboxes(String wpStoreId); /** * List the available sandboxes for the given user and web project *

* Current user must be a content manager for the web project * * @param wpStoreId web project store id * @param userName user name * @return List list of sandbox info */ public List listSandboxes(String wpStoreId, String userName); /** * Return true if sandbox is visible to user and is of given type *

* eg. isSandboxType("test123--myusername", SandboxConstants.PROP_SANDBOX_AUTHOR_MAIN) * * @param sbStoreId sandbox store id * @param sandboxType sandbox type (see SandboxConstants) * @return boolean true, if sandbox exists with given type */ public boolean isSandboxType(String sbStoreId, QName sandboxType); /** * Get sandbox info * * @param sbStoreId sandbox store id * @return SandboxInfo null if sandbox does not exist or is not visible to the current user */ public SandboxInfo getSandbox(String sbStoreId); /** * Gets author/user sandbox info for the current user *

* Returns null if the author sandbox can not be found * * @param wpStoreId web project store id * @return SandboxInfo author sandbox info */ public SandboxInfo getAuthorSandbox(String wpStoreId); /** * Gets author/user sandbox info for the given user *

* Returns null if the user sandbox can not be found *

* Current user must be a content manager for the web project * * @param wpStoreId web project store id * @param userName userName * @return SandboxInfo author sandbox info */ public SandboxInfo getAuthorSandbox(String wpStoreId, String userName); /** * Gets staging sandbox info *

* Returns null if the staging sandbox can not be found * * @param wpStoreId web project store id * @return SandboxInfo staging sandbox info */ public SandboxInfo getStagingSandbox(String wpStoreId); /** * Delete the sandbox *

* If the sandbox does not exist, will log a warning and succeed *

* Current user must be a content manager for the web project (associated with the sandbox) * * @param sbStoreId sandbox store id */ public void deleteSandbox(String sbStoreId); /** * List all changed assets for given sandbox (eg. for user sandbox compared to staging sandbox) *

* Note: This will list all new/modified/deleted assets from the sandbox root directory (eg. /www/avm_webapps) - ie. across all web apps * * @param sbStoreId sandbox store id * @param includeDeleted if true, include deleted assets as well as new/modified assets * @return List list of all changed assets */ public List listChangedAll(String sbStoreId, boolean includeDeleted); /** * List changed assets for given sandbox and web app (eg. in user sandbox) *

* Note: This will list new/modified/deleted assets for the given web app * * @param sbStoreId sandbox store id * @param webApp web app to filter by * @param includeDeleted if true, include deleted assets as well as new/modified assets * @return List list of changed assets */ public List listChangedWebApp(String sbStoreId, String webApp, boolean includeDeleted); /** * List changed assets for given sandbox path (eg. between user sandbox and staging sandbox) *

* Note: This will list new/modified/deleted assets from the directory and below. The destination path will be dervied. * * @param sbStoreId sandbox store id * @param relativePath relative path to filter by (eg. /www/avm_webapps/ROOT/MyFolderToList) * @param includeDeleted if true, include deleted assets as well as new/modified assets * @return List list of changed assets */ public List listChanged(String sbStoreId, String relativePath, boolean includeDeleted); /** * List changed (new/modified/deleted) assets between any two sandbox paths * * @param srcSandboxStoreId source sandbox store id * @param srcRelativePath source relative path to filter by (eg. /www/avm_webapps/ROOT/MyFolderToList) * @param dstSandboxStoreId destination sandbox store id * @param dstRelativePath destination relative path to filter by (eg. /www/avm_webapps/ROOT/MyFolderToList) * @param includeDeleted if true, include deleted assets as well as new/modified assets * @return List list of changed assets */ public List listChanged(String srcSandboxStoreId, String srcRelativePath, String dstSandboxStoreId, String dstRelativePath, boolean includeDeleted); /** * Submit all changed assets for given sandbox (eg. from user sandbox to staging sandbox) *

* Note: This will submit all new/modified/deleted assets from the sandbox root directory (eg. /www/avm_webapps) - ie. across all web apps *

* @param sbStoreId sandbox store id * @param submitLabel label for submitted snapshot * @param submitDescription description for submitted snapshot */ public void submitAll(String sbStoreId, String submitLabel, String submitDescription); /** * Submit changed assets for given sandbox and web app (eg. in user sandbox) *

* Note: This will submit new/modified/deleted assets for the given web app * * @param sbStoreId sandbox store id * @param webApp web app to filter by * @param submitLabel label for submitted snapshot * @param submitDescription description for submitted snapshot */ public void submitWebApp(String sbStoreId, String webApp, String submitLabel, String submitDescription); /** * Submit changed asset(s) for given sandbox path (eg. in user sandbox) *

* Note: This will submit new/modified/deleted asset(s) for given path (either file or directory and below) * * @param sbStoreId sandbox store id * @param relativePath relative path to filter by (eg. /www/avm_webapps or /www/avm_webapps/ROOT/MyFolderToSubmit) * @param submitLabel label for submitted snapshot * @param submitDescription description for submitted snapshot */ public void submit(String sbStoreId, String relativePath, String submitLabel, String submitDescription); /** * Submit list of changed assets for given sandbox (eg. in user sandbox) * * @param sbStoreId sandbox store id * @param assetPaths list of assets, as relative paths (eg. /www/avm_webapps/ROOT/MyFolderToSubmit) * @param submitLabel label for submitted snapshot * @param submitDescription description for submitted snapshot */ public void submitList(String sbStoreId, List relativePaths, String submitLabel, String submitDescription); /** * Submit list of changed assets for given sandbox (eg. from user sandbox to staging sandbox) * * @param sbStoreId sandbox store id * @param assetNodes list of assets * @param submitLabel label for submitted snapshot * @param submitDescription description for submitted snapshot */ public void submitListAssets(String sbStoreId, List assets, String submitLabel, String submitDescription); /** * Submit list of changed assets for given sandbox (eg. from user sandbox to staging sandbox) * * NOTE: for backwards compatibility - subject to change - hence deprecated for now * * @param sbStoreId sandbox store id * @param assetPaths list of assets, as relative paths (eg. /www/avm_webapps/ROOT/MyFolderToSubmit) * @param workflowName selected workflow name - if null, will use default submit direct workflow * @param workflowParams configured workflow params * @param submitLabel label for submitted snapshot * @param submitDescription description for submitted snapshot * @param expirationDates optional map of for those assets set with an expiration date, or can be null (if no expiration dates) * @param launchDate optional launch date * @param validateLinks if true then will validate links (if link validation is enabled) * @param autoDeploy if true then will auto-deploy on workflow approval * * @deprecated subject to change */ public void submitListAssets(String sbStoreId, List relativePaths, String workflowName, Map workflowParams, String submitLabel, String submitDescription, Map expirationDates, Date launchDate, boolean validateLinks, boolean autoDeploy); /** * Revert all changed assets for given sandbox (eg. in user sandbox) *

* Note: This will revert all new/modified/deleted assets from the sandbox store root directory (eg. /www/avm_webapps) - ie. across all web apps * * @param sbStoreId sandbox store id */ public void revertAll(String sbStoreId); /** * Revert changed assets for given sandbox and web app (eg. in user sandbox) *

* Note: This will revert new/modified/deleted assets for the given web app * * @param sbStoreId sandbox store id * @param webApp web app to filter by */ public void revertWebApp(String sbStoreId, String webApp); /** * Revert changed asset(s) for given sandbox path (eg. in user sandbox) *

* Note: This will revert new/modified/deleted asset(s) for given path (either file or directory and below) * * @param sbStoreId sandbox store id * @param relativePath relative path to filter by (eg. /www/avm_webapps/ROOT/MyFolderToRevert) */ public void revert(String sbStoreId, String relativePath); /** * Revert list of changed assets for given sandbox (eg. in user sandbox) * * @param sbStoreId sandbox store id * @param assetPaths list of assets, as relative paths (eg. /www/avm_webapps/ROOT/MyFolderToRevert) */ public void revertList(String sbStoreId, List relativePaths); /** * Revert list of changed assets for given sandbox (eg. in user sandbox) * * @param assets list of assets */ public void revertListAssets(String sbStoreId, List assets); /** * Revert sandbox to a specific snapshot version ID (ie. for staging sandbox) *

* Current user must be a content manager for the web project * * @param sbStoreId staging sandbox store id * @param version version */ public void revertSnapshot(String sbStoreId, int version); /** * List all snapshots (sandbox versions) for the given sandbox (ie. for staging sandbox) *

* Current user must be a content manager for the web project * * @param sbStoreId staging sandbox store id * @param includeSystemGenerated if false will ignore system generated snapshots else true to get all snapshots * @return List list of sandbox versions */ public List listSnapshots(String sbStoreId, boolean includeSystemGenerated); /** * List snapshots (sandbox versions) for the given sandbox between given dates (ie. for staging sandbox) *

* Current user must be a content manager for the web project * * @param sbStoreId staging sandbox store id * @param from from date * @param to to date * @param includeSystemGenerated if false will ignore system generated snapshots else true to get all snapshots * @return List list of sandbox versions */ public List listSnapshots(String sbStoreId, Date from, Date to, boolean includeSystemGenerated); }