/*
* Copyright (C) 2005-2011 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Alfresco 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see
* This service API is designed to support the public facing Web Project APIs. * * @author janv */ public interface WebProjectService { // // Web project operations // /** * Create a new web project (with a default ROOT webapp) *
* Note: the DNS name will be used to generate the web project store id, which can be subsequently retrieved via WebProjectInfo.getStoreId() * * @param dnsName DNS name (required, must be unique) * @param name name (required, must be unique) * @param title title * @param description description * @return WebProjectInfo the created web project info */ @NotAuditable public WebProjectInfo createWebProject(String dnsName, String name, String title, String description); /** * Create a new web project (with a default ROOT webapp) *
* Note: the DNS name will be used to generate the web project store id, which can be subsequently retrieved via WebProjectInfo.getStoreId() * * @param dnsName DNS name (required, must be unique) * @param name name (required, must be unique) * @param title title * @param description description * @param sourceNodeRef web project node ref to branch from (can be null) * @return WebProjectInfo the created web project info * * @deprecated see createWebProject(String dnsName, WebProjectInfo wpInfo) */ @NotAuditable public WebProjectInfo createWebProject(String dnsName, String name, String title, String description, NodeRef sourceNodeRef); /** * Create a new web project (with given default web app) *
* Note: the DNS name will be used to generate the web project store id, which can be subsequently retrieved via WebProjectInfo.getStoreId() * * @param dnsName DNS name (required, must be unique) * @param name name (required, must be unique) * @param title title * @param description description * @param defaultWebApp default webapp (if null, will default to ROOT webapp) * @param useAsTemplate true if this web project can be used as a template to branch from * @param sourceNodeRef web project node ref to branch from (can be null) * @return WebProjectInfo the created web project info */ @NotAuditable public WebProjectInfo createWebProject(String dnsName, String name, String title, String description, String defaultWebApp, boolean useAsTemplate, NodeRef sourceNodeRef); /** * Create a new web project (with given web project info) *
* Note: the DNS name will be used to generate the web project store id, which can be subsequently retrieved via WebProjectInfo.getStoreId()
*
* @param wpInfo web project info
*
* Note:
*
* @param dnsName DNS name (required, must be unique)
* @param name name (required, must be unique)
* @param title title
* @param description description
* @param defaultWebApp default webapp (if null, will default to ROOT webapp)
* @param useAsTemplate true if this web project can be used as a template to branch from
* @param sourceNodeRef web project node ref to branch from (can be null)
* @param previewProvider preview URI service provider name (must correspond to registered name, if null will be set to default provider)
*
* @return WebProjectInfo the created web project info
*/
@NotAuditable
public WebProjectInfo createWebProject(WebProjectInfo wpInfo);
/**
* Determines whether the "Web Projects" container node is present.
*
* @return true if the "Web Projects" container node is present
*/
@NotAuditable
public boolean hasWebProjectsRoot();
/**
* Returns the Web Projects container
*
* @return NodeRef the node ref of the "Web Projects" container node
*/
@NotAuditable
public NodeRef getWebProjectsRoot();
/**
* Returns the Web Project for the given AVM path
*
* @param absoluteAVMPath the AVM path from which to determine the Web Project
* @return NodeRef the web project node ref for the path or null if it could not be determined
*/
@NotAuditable
public NodeRef getWebProjectNodeFromPath(String absoluteAVMPath);
/**
* Returns the Web Project for the given AVM store name (sandbox store id)
*
* @param storeName the AVM store name (sandbox store id) from which to determine the Web Project
* @return NodeRef the web project node ref for the path or null if it could not be determined
*/
@NotAuditable
public NodeRef getWebProjectNodeFromStore(String storeName);
/**
* List the available web projects for the current user
*
* @return List
* Returns null if the web project can not be found
*
* @param wpStoreId web project store id
* @return WebProjectInfo web project info
*/
@NotAuditable
public WebProjectInfo getWebProject(String wpStoreId);
/**
* Gets web project info based on the DM nodeRef of a web project
*
* Returns null if the web project can not be found
*
* @param wpNodeRef web project node ref
* @return WebProjectInfo web project info
*/
@NotAuditable
public WebProjectInfo getWebProject(NodeRef wpNodeRef);
/**
* Get preview provider name configured for given web project (if not configured then return default preview provider)
* @param wpStoreId web project store id
* @return previewProviderName preview URI service provide name
*/
@NotAuditable
public String getPreviewProvider(String wpStoreId);
/**
* Update the web project info
*
* Note: the nodeRef and storeId (dnsName) of a web project cannot be updated once the web project has been created
*
* @param wpInfo web project info
*/
@NotAuditable
public void updateWebProject(WebProjectInfo wpInfo);
/**
* Delete the web project
*
* If the web project does not exist, will log a warning and succeed
*
* Current user must be a content manager for the web project
*
* @param name web project store id
*/
@NotAuditable
public void deleteWebProject(String wpStoreId);
/**
* Delete the web project
*
* If the web project does not exist, will log a warning and succeed
*
* Current user must be a content manager for the web project
*
* Note: this will cascade delete all sandboxes associated with a web project
*
* @param name web project node ref
*/
@NotAuditable
public void deleteWebProject(NodeRef wpNodeRef);
//
// Web app operations
//
/**
* Create webapp for the given web project.
*
* Current user must be a content manager for the web project
*
* @param wpStoreId web project store id
* @param name webapp name (must be unique within a web project)
* @param description webapp description
*/
@NotAuditable
public void createWebApp(String wpStoreId, String name, String description);
/**
* Create webapp for the given web project.
*
* Current user must be a content manager for the web project
*
* @param wpNodeRef web project node ref
* @param name webapp name (must be unique within a web project)
* @param description webapp description
*/
@NotAuditable
public void createWebApp(NodeRef wpNodeRef, String name, String description);
/**
* List webapps for the web project
*
* @param wpStoreId web project store id
* @return List
* Current user must be a content manager for the web project
*
* Note: this will cascade delete all assets within a webapp
*
* @param wpStoreId web project store id
* @param name webapp name
*/
@NotAuditable
public void deleteWebApp(String wpStoreId, String name);
/**
* Delete webapp from the given web project
*
* Current user must be a content manager for the web project
*
* Note: this will cascade delete all assets within a webapp
*
* @param wpNodeRef web project node ref
* @param name webapp name
*/
@NotAuditable
public void deleteWebApp(NodeRef wpNodeRef, String name);
//
// Web user operations
//
/**
* Returns true if the current user is a manager of this web project
*
* Note: This includes admin users but does not include the System user
*
* @param wpStoreId web project store id
* @return boolean true if the user is a manager (role = WCMUtil.ROLE_CONTENT_MANAGER), false otherwise
*/
@NotAuditable
public boolean isContentManager(String wpStoreId);
/**
* Returns true if the current user is a manager of this web project
*
* @param wpNodeRef web project node ref
* @return boolean true if the user is a manager (role = WCMUtil.ROLE_CONTENT_MANAGER), false otherwise
*/
@NotAuditable
public boolean isContentManager(NodeRef wpNodeRef);
/**
* Returns true if the user is a manager of this web project
*
* Note: This includes admin users but does not include the System user
*
* @param storeName web project store id
* @param username user name
* @return boolean true if the user is a manager, false otherwise
*/
@NotAuditable
public boolean isContentManager(String wpStoreId, String username);
/**
* Returns true if the user is a manager of this web project
*
* Note: This includes admin users but does not include the System user
*
* @param wpNodeRef web project node ref
* @param userName user name
* @return boolean true if the user is a manager (role = WCMUtil.ROLE_CONTENT_MANAGER), false otherwise
*/
@NotAuditable
public boolean isContentManager(NodeRef wpNodeRef, String userName);
/**
* List the web users of the web project
*
* Current user must be a content manager for the web project
*
* @param wpStoreId web project store id
* @return Map
* Current user must be a content manager for the web project
*
* @param wpNodeRef web project node ref
* @return Map
* Note: authority name can be user or group, although a group is flattened into a set of users
*
* Note: author sandbox will NOT be auto created for each invited user
*
* @param wpStoreId web project store id
* @param userGroupRoles map of
* Note: authority name can be user or group, although a group is flattened into a set of users
*
* @param wpStoreId web project store id
* @param userGroupRoles map of
* Note: authority name can be user or group, although a group is flattened into a set of users
*
* @param wpNodeRef web project node ref
* @param userGroupRoles map of
* Note: author sandbox will NOT be auto created for each invited user
*
* @param wpStoreId web project store id
* @param userName user name (not a group)
* @param userRole web project role
*/
@NotAuditable
public void inviteWebUser(String wpStoreId, String userName, String userRole);
/**
* Invite user to web project
*
* @param wpStoreId web project store id
* @param userName user name (not a group)
* @param userRole web project role
* @param autoCreateAuthorSandbox if true then auto create the author sandbox for each invited user
*/
@NotAuditable
public void inviteWebUser(String wpStoreId, String userName, String userRole, boolean autoCreateAuthorSandbox);
/**
* Invite user to web project
*
* @param wpNodeRef web project node ref
* @param userName user name (not a group)
* @param userRole web project role
* @param autoCreateAuthorSandbox if true then auto create the author sandbox for each invited user
*/
@NotAuditable
public void inviteWebUser(NodeRef wpNodeRef, String userName, String userRole, boolean autoCreateAuthorSandbox);
/**
* Uninvite user from a web project
*
* Note: author sandbox will NOT be auto deleted
*
* @param wpStoreId web project store id
* @param userName user name
*/
@NotAuditable
public void uninviteWebUser(String wpStoreId, String userName);
/**
* Uninvite user from a web project
*
* Note: if author sandbox is auto deleted then this will cascade delete without warning (even if there are changed items)
*
* @param wpStoreId web project store id
* @param userName user name
* @param autoDeleteAuthorSandbox if true then auto delete the author sandbox
*/
@NotAuditable
public void uninviteWebUser(String wpStoreId, String userName, boolean autoDeleteAuthorSandbox);
/**
* Uninvite user from a web project
*
* Note: if author sandbox is auto deleted then this will cascade delete without warning (even if there are changed items)
*
* @param wpNodeRef web project node ref
* @param userName user name
* @param autoDeleteAuthorSandbox if true then auto delete the author sandbox
*/
@NotAuditable
public void uninviteWebUser(NodeRef wpNodeRef, String userName, boolean autoDeleteAuthorSandbox);
}