⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmsresourcefilter.java

📁 cms是开源的框架
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * File   : $Source: /usr/local/cvs/opencms/src/org/opencms/file/CmsResourceFilter.java,v $
 * Date   : $Date: 2006/03/27 14:52:41 $
 * Version: $Revision: 1.23 $
 *
 * This library is part of OpenCms -
 * the Open Source Content Mananagement System
 *
 * Copyright (c) 2005 Alkacon Software GmbH (http://www.alkacon.com)
 *
 * This library 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 library 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.
 *
 * For further information about Alkacon Software GmbH, please see the
 * company website: http://www.alkacon.com
 *
 * For further information about OpenCms, please see the
 * project website: http://www.opencms.org
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.opencms.file;

/**
 * Provides filters for resource result sets obtained from requests to the OpenCms VFS.<p>
 * 
 * Using the constant filters provided by this class
 * you can control "special" behaviour 
 * of access to the VFS. For example, in the "Offline" project 
 * there can be deleted files, by using this filter you can control
 * if deleted files should be included in a result set or not.<p> 
 * 
 * @author Michael Emmerich 
 * @author Alexander Kandzior 
 * @author Carsten Weinholz 
 * @author Jan Baudisch
 * 
 * @version $Revision: 1.23 $
 * 
 * @since 6.0.0 
 */
public final class CmsResourceFilter {

    /** 
     * Filter to display all resources.<p>
     * 
     * This filter uses the following rules:
     * <ul>
     * <li>Includes: Resources marked as deleted.</li>
     * <li>Includes: Resources outside the 'time window' set with release and expiration date.</li>
     * <li>Includes: Resources marked as 'invisible' using permissions.</li>
     * </ul>
     */
    public static final CmsResourceFilter ALL = new CmsResourceFilter();

    /**
     * Filter to display all modified (new/changed/deleted) resources.<p>
     */
    public static final CmsResourceFilter ALL_MODIFIED = ALL.addExcludeState(CmsResource.STATE_UNCHANGED);

    /** 
     * Default filter to display resources for the online project.<p>
     * 
     * This filter uses the following rules:
     * <ul>
     * <li>Excludes: Resources marked as deleted.</li>
     * <li>Excludes: Resources outside the 'time window' set with release and expiration date.</li>
     * <li>Includes: Resources marked as 'invisible' using permissions.</li>
     * </ul> 
     */
    public static final CmsResourceFilter DEFAULT = ALL.addExcludeState(CmsResource.STATE_DELETED).addRequireTimerange();

    /**
     * Default filter to display files for the online project.<p>
     */
    public static final CmsResourceFilter DEFAULT_FILES = DEFAULT.addRequireFile();

    /**
     * Default filter to display folders for the online project.<p>
     */
    public static final CmsResourceFilter DEFAULT_FOLDERS = DEFAULT.addRequireFolder();

    /** 
     * Filter to display resources ignoring the release and expiration dates.<p>
     * 
     * This filter uses the following rules:
     * <ul>
     * <li>Excludes: Resources marked as deleted.</li>
     * <li>Includes: Resources outside the 'time window' set with release and expiration date.</li>
     * <li>Includes: Resources marked as 'invisible' using permissions.</li>
     * </ul> 
     */
    public static final CmsResourceFilter IGNORE_EXPIRATION = ALL.addExcludeState(CmsResource.STATE_DELETED);

    /** 
     * Filter to display only visible resources.<p>
     * 
     * This filter used the following rules:
     * <ul>
     * <li>Includes: Resources marked as deleted.</li>
     * <li>Includes: Resources outside the 'time window' set with release and expiration date.</li>
     * <li>Excludes: Resources marked as 'invisible' using permissions.</li>
     * </ul> 
     */
    public static final CmsResourceFilter ONLY_VISIBLE = ALL.addRequireVisible();

    /** 
     * Filter to display only visible and not deleted resources.<p>
     * 
     * This filter used the following rules:
     * <ul>
     * <li>Excludes: Resources marked as deleted.</li>
     * <li>Includes: Resources outside the 'time window' set with release and expiration date.</li>
     * <li>Excludes: Resources marked as 'invisible' using permissions.</li>
     * </ul> 
     */
    public static final CmsResourceFilter ONLY_VISIBLE_NO_DELETED = ONLY_VISIBLE.addExcludeState(CmsResource.STATE_DELETED);

    private static final int EXCLUDED = 2;

    private static final int IGNORED = 0;

    private static final int REQUIRED = 1;

    /** The cache id for this filter. */
    private String m_cacheId;

    /** The required start date for the timerange of the expire date. */
    private long m_expireAfter;

    /** The required end data for the timerange of the expire date. */
    private long m_expireBefore;

    /** Indicates if the expire date is used (true) or ignored (false). */
    private boolean m_filterExpire;

    /** Indicates if the resource flag is filtered (true) or not (false). */
    private int m_filterFlags;

    /** Indicates if the date of the last modification is used (true) or ignored (false). */
    private boolean m_filterLastModified;

    /** Indicates if the release date is used (true) or ignored (false). */
    private boolean m_filterRelease;

    /** Indicates if the resource state (unchanged/new/deleted/modified) is filtered (true) or not (false). */
    private int m_filterState;

    /** Indicates if the resource valid timerage is used (true) or ignored (false). */
    private boolean m_filterTimerange;

    /** Indicates if the resource type is filtered (true) or not (false). */
    private int m_filterType;

    /** Indicates if the visible permission is used (true) or ignored (false). */
    private boolean m_filterVisible;

    /** The required/excluded flags for filtering resources. */
    private int m_flags;

    /** The required start date for the timerange of the last modification date. */
    private long m_modifiedAfter;

    /** The required end data for the timerange of the last modification date. */
    private long m_modifiedBefore;

    /** Indicates if the filter should return only folders. */
    private Boolean m_onlyFolders;

    /** The required start date for the timerange of the release date. */
    private long m_releaseAfter;

    /** The required end data for the timerange of the release date. */
    private long m_releaseBefore;

    /** The required/excluded state for filtering resources. */
    private int m_state;

    /** The required/excluded type for filtering resources. */
    private int m_type;

    /**
     * Hides the public contructor.<p>
     */
    private CmsResourceFilter() {

        m_filterState = IGNORED;
        m_state = -1;

        m_filterType = IGNORED;
        m_type = -1;

        m_filterFlags = IGNORED;
        m_flags = -1;

        m_filterVisible = false;

        m_filterTimerange = false;
        m_filterLastModified = false;
        m_filterRelease = false;
        m_filterExpire = false;
        m_modifiedAfter = 0L;
        m_modifiedBefore = 0L;
        m_releaseAfter = 0L;
        m_releaseBefore = 0L;
        m_expireAfter = 0L;
        m_expireBefore = 0L;

        updateCacheId();
    }

    /**
     * Returns a new CmsResourceFilter requiring the given type.<p>
     * 
     * @param type the required resource type
     * @return a filter requiring the given type
     */
    public static CmsResourceFilter requireType(int type) {

        return new CmsResourceFilter().addRequireType(type);
    }

    /**
     * Returns an extended filter in order to avoid the given flags in the filtered resources.<p> 
     *  
     * @param flags the resource flags to exclude
     * @return a filter excluding the given resource flags
     */
    public CmsResourceFilter addExcludeFlags(int flags) {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_flags = flags;
        extendedFilter.m_filterFlags = EXCLUDED;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter in order to avoid the given type in the filtered resources.<p> 
     *  
     * @param state the resource state to exclude
     * @return a filter excluding the given resource state
     */
    public CmsResourceFilter addExcludeState(int state) {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_state = state;
        extendedFilter.m_filterState = EXCLUDED;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter in order to avoid the given type in the filtered resources.<p> 
     *  
     * @param type the resource type to exclude
     * @return a filter excluding the given resource type
     */
    public CmsResourceFilter addExcludeType(int type) {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_type = type;
        extendedFilter.m_filterType = EXCLUDED;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter to restrict the results to resources that expire in the given timerange.<p>
     * 
     * @param time the required time 
     * @return a filter to restrict the results to resources that expire in the given timerange
     */
    public CmsResourceFilter addRequireExpireAfter(long time) {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_filterExpire = true;
        extendedFilter.m_expireAfter = time;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter to restrict the results to resources that expire in the given timerange.<p>
     * 
     * @param time the required time 
     * @return a filter to restrict the results to resources that expire in the given timerange
     */
    public CmsResourceFilter addRequireExpireBefore(long time) {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_filterExpire = true;
        extendedFilter.m_expireBefore = time;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter that requires all returned resources to be files.<p> 
     *  
     * @return an extended filter that requires all returned resources to be files
     */
    public CmsResourceFilter addRequireFile() {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_onlyFolders = Boolean.FALSE;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter to guarantee a distinct resource flags of the filtered resources.<p>
     * 
     * @param flags the required resource flags
     * @return a filter requiring the given resource flags
     */
    public CmsResourceFilter addRequireFlags(int flags) {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_flags = flags;
        extendedFilter.m_filterFlags = REQUIRED;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter that requires all returned resources to be folders.<p> 
     *  
     * @return an extended filter that requires all returned resources to be folders
     */
    public CmsResourceFilter addRequireFolder() {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_onlyFolders = Boolean.TRUE;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter to restrict the results to resources modified in the given timerange.<p>
     * 
     * @param time the required time
     * @return a filter to restrict the results to resources modified in the given timerange
     */
    public CmsResourceFilter addRequireLastModifiedAfter(long time) {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_filterLastModified = true;
        extendedFilter.m_modifiedAfter = time;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter to restrict the results to resources modified in the given timerange.<p>
     * 
     * @param time the required time 
     * @return a filter to restrict the results to resources modified in the given timerange
     */
    public CmsResourceFilter addRequireLastModifiedBefore(long time) {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_filterLastModified = true;
        extendedFilter.m_modifiedBefore = time;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter to restrict the results to resources that are released in the given timerange.<p>
     * 
     * @param time the required time 
     * @return a filter to restrict the results to resources that are released in the given timerange
     */
    public CmsResourceFilter addRequireReleaseAfter(long time) {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_filterRelease = true;
        extendedFilter.m_releaseAfter = time;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter to restrict the results to resources that are released in the given timerange.<p>
     * 
     * @param time the required time 
     * @return a filter to restrict the results to resources that are released in the given timerange
     */
    public CmsResourceFilter addRequireReleaseBefore(long time) {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_filterRelease = true;
        extendedFilter.m_releaseBefore = time;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter to guarantee a distinct resource state of the filtered resources.<p>
     * 
     * @param state the required resource state
     * @return a filter requiring the given resource state
     */
    public CmsResourceFilter addRequireState(int state) {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_state = state;
        extendedFilter.m_filterState = REQUIRED;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter to guarantee all filtered resources are valid (released and not expired).<p>
     * 
     * @return a filter excluding invalid resources
     */
    public CmsResourceFilter addRequireTimerange() {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_filterTimerange = true;
        extendedFilter.updateCacheId();

        return extendedFilter;
    }

    /**
     * Returns an extended filter to guarantee a distinct resource type of the filtered resources.<p>
     * 
     * @param type the required resource type
     * @return a filter requiring the given resource type
     */
    public CmsResourceFilter addRequireType(int type) {

        CmsResourceFilter extendedFilter = (CmsResourceFilter)clone();

        extendedFilter.m_type = type;
        extendedFilter.m_filterType = REQUIRED;
        extendedFilter.updateCacheId();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -