Class QuotaManager

    • Field Detail

      • ADMIN_QUOTA_DEFAULT_WORKSPACE_QUOTA

        public static final java.lang.String ADMIN_QUOTA_DEFAULT_WORKSPACE_QUOTA
        See Also:
        Constant Field Values
      • ADMIN_QUOTA_MAXIMUM_SITE_QUOTA

        public static final java.lang.String ADMIN_QUOTA_MAXIMUM_SITE_QUOTA
        See Also:
        Constant Field Values
      • ADMIN_QUOTA_DEFAULT_WORKSPACE_ALERT_THRESHOLD

        public static final java.lang.String ADMIN_QUOTA_DEFAULT_WORKSPACE_ALERT_THRESHOLD
        See Also:
        Constant Field Values
      • ADMIN_QUOTA_SITE_ALERT_THRESHOLD

        public static final java.lang.String ADMIN_QUOTA_SITE_ALERT_THRESHOLD
        See Also:
        Constant Field Values
      • ADMIN_QUOTA_DELAY_BETWEEN_QUOTA_ALERT

        public static final java.lang.String ADMIN_QUOTA_DELAY_BETWEEN_QUOTA_ALERT
        See Also:
        Constant Field Values
      • ADMIN_QUOTA_CHECK_SCHEDULE

        public static final java.lang.String ADMIN_QUOTA_CHECK_SCHEDULE
        See Also:
        Constant Field Values
      • CHANNEL_FILE_ANALYZER_THREAD_POOL_SIZE

        public static final java.lang.String CHANNEL_FILE_ANALYZER_THREAD_POOL_SIZE
        See Also:
        Constant Field Values
      • CHANNEL_WS_UPDATER_THREAD_POOL_SIZE

        public static final java.lang.String CHANNEL_WS_UPDATER_THREAD_POOL_SIZE
        See Also:
        Constant Field Values
      • CHANNEL_QUOTA_MANAGEMENT_ENABLED

        public static final java.lang.String CHANNEL_QUOTA_MANAGEMENT_ENABLED
        See Also:
        Constant Field Values
      • REJECT_UPLOAD_OVER_QUOTA_PROPERTIES_NAME

        public static final java.lang.String REJECT_UPLOAD_OVER_QUOTA_PROPERTIES_NAME
        See Also:
        Constant Field Values
      • CHANNEL_QUOTA_FEATURE

        public static final java.lang.String CHANNEL_QUOTA_FEATURE
        See Also:
        Constant Field Values
      • DEFAULT_ALERT_THRESHOLD

        public static final int DEFAULT_ALERT_THRESHOLD
        See Also:
        Constant Field Values
      • DEFAULT_WORKSPACE_QUOTA

        public static final long DEFAULT_WORKSPACE_QUOTA
      • DEFAULT_SITE_QUOTA

        public static final long DEFAULT_SITE_QUOTA
      • currentChannelAnalyzerThread

        protected transient FileAnalyzerThread currentChannelAnalyzerThread
      • analyzerThreadPool

        protected transient java.util.concurrent.ExecutorService analyzerThreadPool
      • wsUpdaterThreadPool

        protected transient java.util.concurrent.ExecutorService wsUpdaterThreadPool
      • lastChannelQuotaNotificationDate

        protected transient long lastChannelQuotaNotificationDate
      • channelQuotaAlert

        protected transient QuotaElement channelQuotaAlert
      • cacheFileSize

        protected transient java.util.Map<java.lang.String,​FileSize> cacheFileSize
    • Method Detail

      • propertiesChange

        public void propertiesChange​(JProperties properties)
        Description copied from interface: JPropertiesListener
        Invoked after properties have been modified in JCMS and save on disk.

        You cannot alter the value received in parameters.

        Note that properties parameter may be null, a limited set of site properties, or all site properties.

        To check that a property has been modified, reload the "current" property instead using channel.getProperties or channel.getProperty.

        Specified by:
        propertiesChange in interface JPropertiesListener
        Parameters:
        properties - the properties which have been submitted to change
      • readProperties

        protected void readProperties()
      • isQuotaFeatureEnabled

        public boolean isQuotaFeatureEnabled()
      • getSiteElement

        public QuotaElement getSiteElement()
        create a QuotaElement for a whiole site. If the site has a running analyze thread, this method will return null
        Returns:
        the QuotaElement
      • getElements

        public java.util.Map<Workspace,​QuotaElement> getElements()
        returns the Map with all QuotaElement per workspace, the value with the null key is for the whole site. Values can be null is a running analyze thread exists for the workspace or site.
        Returns:
        the Map with all QuotaElement per workspace, the value with the null key is for the whole site. Values can be null is a running analyze thread exists for the workspace or site.
      • getElements

        public java.util.Map<Workspace,​QuotaElement> getElements​(Workspace workspace)
        returns the Map with all QuotaElement per workspace, the value with the null key is for the whole site. Values can be null is a running analyze thread exists for the workspace or site.
        Parameters:
        workspace - the workspace used to filter elements (if null, global element are returned)
        Returns:
        the Map with all QuotaElement per workspace, the value with the null key is for the whole site. Values can be null is a running analyze thread exists for the workspace or site.
      • isQuotaEnabled

        public boolean isQuotaEnabled()
      • getDefaultQuotaSize

        public long getDefaultQuotaSize()
      • setDefaultQuotaSize

        public void setDefaultQuotaSize​(long defaultQuotaSize)
      • getDefaultAlertThreshold

        public int getDefaultAlertThreshold()
      • setDefaultAlertThreshold

        public void setDefaultAlertThreshold​(int defaultAlertThreshold)
      • updateWorkspacesQuota

        public void updateWorkspacesQuota()
        Update all workspaces quota in separate threads
      • updateQuota

        public void updateQuota​(Workspace wk)
        Update workspace quota in separate threads
        Parameters:
        wk - the workspace
      • updateAfterFileChange

        public void updateAfterFileChange​(java.io.File file)
        update quota after a file change
        Parameters:
        file - the File
      • updateAfterFileDocumentChange

        public void updateAfterFileDocumentChange​(FileDocument fileDoc)
        update quota after a filedocument change
        Parameters:
        fileDoc - the FileDocument
      • handleAlarm

        public void handleAlarm​(AlarmEntry entry)
        Manage periodically quota refresh
        Specified by:
        handleAlarm in interface AlarmListener
        Parameters:
        entry - the AlarmEntry which has been triggered.
      • checkQuotas

        public void checkQuotas()
        Check all quotas and send notifications if needed.
      • checkQuotas

        public void checkQuotas​(Workspace workspace)
        Check workspace quota and send notifications if needed, this method is called after the end of an analyzeThread.
        Parameters:
        workspace - the workspace to check, or null for the global sire
      • getAnalyzerThreadPool

        public java.util.concurrent.ExecutorService getAnalyzerThreadPool()
        get analyzer thread pool use to count real file size in background mode
        Returns:
        the ExecutorService
      • getGlobalFileAnalyzer

        public WorkspaceFileSizeResult getGlobalFileAnalyzer​(boolean refresh)
        returns WorkspaceFileSizeResult instance associated with this site. Note that as file analyze is down asynchronously, this method should returns null if an analyze is in progress (or if refresh is asked). In this case, user should ask getCurrentAnalyzerThread() to retrieve the analyze thread. getCompleteness() method on the thread can be used to know the state of the thread.
        Parameters:
        refresh - force to ignore data previously present in cache
        Returns:
        WorkspaceFileSizeResult instance associated with this site or null if an analyze is in progress (or if refresh is asked).
      • getCurrentChannelAnalyzerThread

        public FileAnalyzerThread getCurrentChannelAnalyzerThread()
        Return the current analyzer thread if analyze is in progress
        Returns:
        the FileAnalyzerThread or null if no analyze is running
      • handleFileAnalyzeEnd

        public void handleFileAnalyzeEnd​(WorkspaceFileSizeResult fileAnalyzer)
        This method is called when global file analyzer has end
        Parameters:
        fileAnalyzer - a WorkspaceFileAnalyzer
      • getLastChannelQuotaNotificationDate

        public long getLastChannelQuotaNotificationDate()
      • setLastChannelQuotaNotificationDate

        public void setLastChannelQuotaNotificationDate​(long lastChannelQuotaNotificationDate)
      • getChannelQuotaAlert

        public QuotaElement getChannelQuotaAlert()
      • setChannelQuotaAlert

        public void setChannelQuotaAlert​(QuotaElement channelQuotaAlert)
      • shutdownThreads

        public void shutdownThreads()
      • updateCacheFileSize

        public void updateCacheFileSize​(java.io.File file,
                                        FileSize fileSizeObj)
        update the cache file size with computed size
        Parameters:
        file - the File used to generate map key
        fileSizeObj - the FileSize to store
      • getCacheFileSize

        public FileSize getCacheFileSize​(java.io.File file)
        get the cache file size with computed size
        Parameters:
        file - the File used to generate map key
        Returns:
        the size stored for this file or 0L if the file cannot be found.
      • computeFileSizes

        public static FileSize computeFileSizes​(java.io.File realFile,
                                                AssociatedFilesManager afMgr)
        Compute file size (with and without associated files)
        Parameters:
        realFile - the File
        afMgr - the current AssociatedFilesManager if any
        Returns:
        an array of long, the first element is the size without any associated files and the second with these files
      • addDocumentToVersionCache

        public void addDocumentToVersionCache​(FileDocument fileDoc)
        Add the current filename of the specified FileDocument to the cache.
        Parameters:
        fileDoc - the FileDocument whose filename must be cached
      • addDocumentVersionToVersionCache

        public void addDocumentVersionToVersionCache​(FileDocument oldFileDoc,
                                                     FileDocument fileDoc)
        Add the current filename of the new FileDocument version to the cache.
        Parameters:
        oldFileDoc - Previous document (ignored in current implementation)
        fileDoc - the new FileDocument whose filename must be cached
      • deleteDocumentFromVersionCache

        public void deleteDocumentFromVersionCache​(FileDocument fileDoc)
        Remove filename of the specified FileDocument from the cache.
        Parameters:
        fileDoc - FileDocument whose filename must be removed
      • isUploadEnabled

        public ControllerStatus isUploadEnabled()
        indicates if upload is enabled for all the site
        Returns:
        ControllerStatus.OK if it is enabled, false otherwise. a warn JcmsMessage is available in status message.
      • isUploadEnabled

        public ControllerStatus isUploadEnabled​(Workspace wk)
        indicates if upload is enabled for all the site and provided workspace if not null
        Parameters:
        wk - the Workspace to check for quota
        Returns:
        ControllerStatus.OK if it is enabled, false otherwise. a warn JcmsMessage is available in status message.
      • isUploadAccepted

        public boolean isUploadAccepted​(DocUploadInfo info)
        indicates if document can be uploaded (regarding the global site quota)
        Parameters:
        info - the DocUploadInfo used to compute new size
        Returns:
        true is accepted, false otherwise. a warn JcmsMessage is available in JcmsContext if it's disabled.
      • isUploadAccepted

        public boolean isUploadAccepted​(DocUploadInfo info,
                                        Workspace wk)
        indicates if document can be uploaded (regarding the global site quota and provided workspace if not null)
        Parameters:
        info - the DocUploadInfo used to compute new size
        wk - the Workspace to check for quota
        Returns:
        true is accepted, false otherwise. a warn JcmsMessage is available in JcmsContext if it's disabled.
      • isUploadAccepted

        public boolean isUploadAccepted​(long fileLength,
                                        Workspace wk)
        indicates if document can be uploaded (regarding the global site quota and provided workspace if not null)
        Parameters:
        fileLength - the length of the file used to compute new size
        wk - the Workspace to check for quota
        Returns:
        true is accepted, false otherwise. a warn JcmsMessage is available in JcmsContext if it's disabled.