📄 cmspublishlist.java
字号:
/*
* File : $Source: /usr/local/cvs/opencms/src/org/opencms/db/CmsPublishList.java,v $
* Date : $Date: 2006/03/27 14:52:27 $
* Version: $Revision: 1.25 $
*
* 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.db;
import org.opencms.file.CmsProject;
import org.opencms.file.CmsResource;
import org.opencms.main.CmsIllegalArgumentException;
import org.opencms.util.CmsFileUtil;
import org.opencms.util.CmsUUID;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
/**
* A container for all new/changed/deteled Cms resources that are published together.<p>
*
* Only classes inside the org.opencms.db package can add or remove elements to or from this list.
* This allows the OpenCms API to pass the list around between classes, but with restricted access to
* create this list.<p>
*
* To create a publish list, one of the public constructors must be used in order to set the basic operation mode
* (project publish or direct publish).
* After this, use <code>{@link org.opencms.db.CmsDriverManager#fillPublishList(CmsDbContext, CmsPublishList)}</code>
* to fill the actual values of the publish list.<p>
*
* @author Alexander Kandzior
* @author Thomas Weckert
*
* @version $Revision: 1.25 $
*
* @since 6.0.0
*
* @see org.opencms.db.CmsDriverManager#fillPublishList(CmsDbContext, CmsPublishList)
*/
public class CmsPublishList {
/** The list of deleted Cms folder resources to be published.<p> */
private List m_deletedFolderList;
/** The list of direct publish resources. */
private List m_directPublishResources;
/** The list of new/changed/deleted Cms file resources to be published.<p> */
private List m_fileList;
/** The list of new/changed Cms folder resources to be published.<p> */
private List m_folderList;
/** The id of the project that is to be published. */
private int m_projectId;
/** The publish history ID.<p> */
private CmsUUID m_publishHistoryId;
/** Indicates if siblings of the resources in the list should also be published. */
private boolean m_publishSiblings;
/** Indicates if sub-resources in folders should be published (for direct publish only). */
private boolean m_publishSubResources;
/**
* Constructs a publish list for a given project.<p>
*
* @param project the project to publish, this should always be the id of the current project
*/
public CmsPublishList(CmsProject project) {
this(project, null, false, true);
}
/**
* Constructs a publish list for a single direct publish resource.<p>
*
* @param directPublishResource a VFS resource to be published directly
* @param publishSiblings indicates if all siblings of the selected resources should be published
*/
public CmsPublishList(CmsResource directPublishResource, boolean publishSiblings) {
this(null, Collections.singletonList(directPublishResource), publishSiblings, true);
}
/**
* Constructs a publish list for a list of direct publish resources.<p>
*
* @param directPublishResources a list of <code>{@link CmsResource}</code> instances to be published directly
* @param publishSiblings indicates if all siblings of the selected resources should be published
*/
public CmsPublishList(List directPublishResources, boolean publishSiblings) {
this(null, directPublishResources, publishSiblings, true);
}
/**
* Constructs a publish list for a list of direct publish resources.<p>
*
* @param directPublishResources a list of <code>{@link CmsResource}</code> instances to be published directly
* @param publishSiblings indicates if all siblings of the selected resources should be published
* @param publishSubResources indicates if sub-resources in folders should be published (for direct publish only)
*/
public CmsPublishList(List directPublishResources, boolean publishSiblings, boolean publishSubResources) {
this(null, directPublishResources, publishSiblings, publishSubResources);
}
/**
* Internal constructor for a publish list.<p>
*
* @param project the project to publish
* @param directPublishResources the list of direct publish resources
* @param publishSiblings indicates if all siblings of the selected resources should be published
* @param publishSubResources indicates if sub-resources in folders should be published (for direct publish only)
*/
private CmsPublishList(
CmsProject project,
List directPublishResources,
boolean publishSiblings,
boolean publishSubResources) {
m_fileList = new ArrayList();
m_folderList = new ArrayList();
m_deletedFolderList = new ArrayList();
m_publishHistoryId = new CmsUUID();
m_publishSiblings = publishSiblings;
m_publishSubResources = publishSubResources;
m_projectId = (project != null) ? project.getId() : -1;
if (directPublishResources != null) {
// reduce list of folders to minimum
m_directPublishResources = Collections.unmodifiableList(CmsFileUtil.removeRedundantResources(directPublishResources));
}
}
/**
* Returns a list of folder resources with the given state.<p>
*
* @return a list of folder resources with the desired state
*/
public List getDeletedFolderList() {
return m_deletedFolderList;
}
/**
* Returns the list of resources that should be published for a "direct" publish operation.<p>
*
* Will return <code>null</code> if this publish list was not initilaized for a "direct publish" but
* for a project publish.<p>
*
* @return the list of resources that should be published for a "direct" publish operation, or <code>null</code>
*/
public List getDirectPublishResources() {
return m_directPublishResources;
}
/**
* Returns an unmodifiable list of the Cms file resources in this publish list.<p>
*
* @return the list with the Cms file resources in this publish list
*/
public List getFileList() {
return Collections.unmodifiableList(m_fileList);
}
/**
* Returns an unmodifiable list of the new/changed Cms folder resources in this publish list.<p>
*
* @return the list with the new/changed Cms file resources in this publish list
*/
public List getFolderList() {
return Collections.unmodifiableList(m_folderList);
}
/**
* Returns the id of the project that should be published, or <code>-1</code> if this publish list
* is initialized for a "direct publish" operation.<p>
*
* @return the id of the project that should be published, or <code>-1</code>
*/
public int getProjectId() {
return m_projectId;
}
/**
* Returns the publish history Id for this publish list.<p>
*
* @return the publish history Id
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -