/* * Copyright (C) 2012 eXo Platform SAS. * * This 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 2.1 of * the License, or (at your option) any later version. * * This software 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 this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.services.jcr.impl.quota; /** * QuotaManager provides methods for getting sizes of all JCR instances, getting/setting quotas and various settings. * * @author <a href="abazko@exoplatform.com">Anatoliy Bazko</a> * @version $Id: QuotaManager.java 34360 2009-07-22 23:58:59Z tolusha $ */ public interface QuotaManager { /** * Returns a node data size. Size of the node is a size of content stored in it * and in all descendant nodes. * * @param repositoryName * the repository name * @param workspaceName * the workspace name in repository * @param nodePath * the absolute path to node * @throws QuotaManagerException If an error occurs. */ long getNodeDataSize(String repositoryName, String workspaceName, String nodePath) throws QuotaManagerException; /** * Returns a node quota limit, a maximum allowed node data size of this node. * First will be tried to check if quota limit was explicitly set for this path. * Otherwise will be tried to find pattern quota that matches for defined * node path. * * @param repositoryName * the repository name * @param workspaceName * the workspace name in repository * @param nodePath * the absolute path to node * @throws QuotaManagerException If an error occurs. * @throws UnknownQuotaLimitException If quota limit was not set */ long getNodeQuota(String repositoryName, String workspaceName, String nodePath) throws QuotaManagerException; /** * Sets node quota limit, a maximum allowed node data size of this node. * * @param repositoryName * the repository name * @param workspaceName * the workspace name in repository * @param nodePath * the absolute path to node * @param quotaLimit * the maximum allowed node data size of this node * @param asyncUpdate * true means updating node data size will be done asynchronously * @throws QuotaManagerException If an error occurs. */ void setNodeQuota(String repositoryName, String workspaceName, String nodePath, long quotaLimit, boolean asyncUpdate) throws QuotaManagerException; /** * Removes node quota limit, a maximum allowed node data size of this node. * * @param repositoryName * the repository name * @param workspaceName * the workspace name in repository * @param nodePath * the absolute path to node * @throws QuotaManagerException If an error occurs. */ void removeNodeQuota(String repositoryName, String workspaceName, String nodePath) throws QuotaManagerException; /** * Sets node quota limit for bunch of nodes at same time. * * @param repositoryName * the repository name * @param workspaceName * the workspace name in repository * @param patternPath * the pattern indicates bunch of nodes, allowed <code>*</code> as any node name in a path * and <code>%</code> as any character in name * @param quotaLimit * the maximum allowed node data size of a node * @param asyncUpdate * true means updating node data size will be done asynchronously * @throws QuotaManagerException If an error occurs. */ void setGroupOfNodesQuota(String repositoryName, String workspaceName, String patternPath, long quotaLimit, boolean asyncUpdate) throws QuotaManagerException; /** * Removes node quota limit for bunch of nodes at same time. * * @param repositoryName * the repository name * @param workspaceName * the workspace name in repository * @param patternPath * the pattern indicates bunch of nodes, allowed <code>*</code> as any node name in a path * and <code>%</code> as any character in name * @throws QuotaManagerException If an error occurs. */ void removeGroupOfNodesQuota(String repositoryName, String workspaceName, String patternPath) throws QuotaManagerException; /** * Returns workspace data size. Size of workspace is a size of content stored in a root node. * * @param repositoryName * the repository name * @param workspaceName * the workspace name in repository * @throws QuotaManagerException If an error occurs. */ long getWorkspaceDataSize(String repositoryName, String workspaceName) throws QuotaManagerException; /** * Returns workspace quota limit, a maximum allowed workspace data size. * * @param repositoryName * the repository name * @param workspaceName * the workspace name in repository * @throws QuotaManagerException If an error occurs. * @throws UnknownQuotaLimitException If quota limit was not set */ long getWorkspaceQuota(String repositoryName, String workspaceName) throws QuotaManagerException; /** * Sets workspace quota limit, a maximum allowed workspace data size. * * @param repositoryName * the repository name * @param workspaceName * the workspace name in repository * @param quotaLimit * the maximum allowed workspace data size. * * @throws QuotaManagerException If an error occurs. */ void setWorkspaceQuota(String repositoryName, String workspaceName, long quotaLimit) throws QuotaManagerException; /** * Removes workspace quota limit, a maximum allowed workspace data size. * * @param repositoryName * the repository name * @param workspaceName * the workspace name in repository * @throws QuotaManagerException If an error occurs. */ void removeWorkspaceQuota(String repositoryName, String workspaceName) throws QuotaManagerException; /** * Returns a index size of particular workspace in repository. Size of the workspace's index is a size of the * index directory at file system belonging to workspace. * * @param repositoryName * the repository name * @param workspaceName * the workspace name in repository * @throws QuotaManagerException If an error occurs. */ long getWorkspaceIndexSize(String repositoryName, String workspaceName) throws QuotaManagerException; /** * Returns repository data size. Size of repository is a sum of all its workspaces data size. * * @param repositoryName * the repository name * @throws QuotaManagerException If an error occurs. */ long getRepositoryDataSize(String repositoryName) throws QuotaManagerException; /** * Returns a repository quota limit, a maximum allowed repository data size. * * @param repositoryName * the repository name * @throws QuotaManagerException If an error occurs. * @throws UnknownQuotaLimitException If quota limit was not set */ long getRepositoryQuota(String repositoryName) throws QuotaManagerException; /** * Sets a repository quota limit, a maximum allowed repository data size. * * @param repositoryName * the repository name * @param quotaLimit * the maximum allowed repository data size. * * @throws QuotaManagerException If an error occurs. */ void setRepositoryQuota(String repositoryName, long quotaLimit) throws QuotaManagerException; /** * Removes a repository quota limit, a maximum allowed repository data size. * * @param repositoryName * the repository name * @throws QuotaManagerException If an error occurs. */ void removeRepositoryQuota(String repositoryName) throws QuotaManagerException; /** * Returns a index size of particular repository. Size of the repository's index is a size of the * index directory at file system belonging to repository. * * @param repositoryName * the repository name * * @throws QuotaManagerException If an error occurs. */ long getRepositoryIndexSize(String repositoryName) throws QuotaManagerException; /** * Returns global data size. Global size is sum of all repositories data size. * * @throws QuotaManagerException If an error occurs. */ long getGlobalDataSize() throws QuotaManagerException; /** * Returns global quota limit, a maximum allowed global data size. * * @throws QuotaManagerException If an error occurs. * @throws UnknownQuotaLimitException If quota limit was not set */ long getGlobalQuota() throws QuotaManagerException; /** * Sets global quota limit, a maximum allowed global data size. * * @param quotaLimit * the sum of maximum allowed content size * * @throws QuotaManagerException If an error occurs. */ void setGlobalQuota(long quotaLimit) throws QuotaManagerException; /** * Removes global quota limit, a maximum allowed global data size. * * @throws QuotaManagerException If an error occurs. */ void removeGlobalQuota() throws QuotaManagerException; /** * Returns a global index size. * * @throws QuotaManagerException If an error occurs. */ long getGlobalIndexSize() throws QuotaManagerException; }