/*
* This library is part of OpenCms -
* the Open Source Content Management System
*
* Copyright (c) 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.workplace.tools.content.check;
import org.opencms.file.CmsFile;
import org.opencms.file.CmsObject;
import org.opencms.file.CmsResource;
import org.opencms.main.CmsException;
import org.opencms.xml.content.CmsXmlContent;
import org.opencms.xml.content.CmsXmlContentFactory;
import java.util.ArrayList;
import java.util.List;
/**
* This object encapuslates a CmsResource, its content and unmarshalled xml content
* for processing in the content check plugins.<p>
*
*
* @since 6.1.2
*/
public class CmsContentCheckResource {
/** Encapsulated content array. */
private byte[] m_content;
/** List of errors found during content check. */
private List m_errors;
/** Encapsulated CmsResource. */
private CmsResource m_resource;
/** List of warnings found during content check. */
private List m_warnings;
/** Encapsulated unmashalled xml content. */
private CmsXmlContent m_xmlcontent;
/**
* Constructor, creates an CmsContentCheckResource object.<p>
*
* @param res the CmsResource to encapsulate in the CmsContentCheckResource.
*/
public CmsContentCheckResource(CmsResource res) {
m_resource = res;
m_content = null;
m_xmlcontent = null;
m_errors = new ArrayList();
m_warnings = new ArrayList();
}
/** Adds a new error to the list of errors for this resource.<p>
*
* @param error the error message to be added
*/
public void addError(String error) {
m_errors.add(error);
}
/** Adds a list of errors to the list of errors for this resource.<p>
*
* @param errors the error messages to be added
*/
public void addErrors(List errors) {
m_errors.addAll(errors);
}
/** Adds a new warning to the list of warnings for this resource.<p>
*
* @param warning the warning message to be added
*/
public void addWarning(String warning) {
m_warnings.add(warning);
}
/** Adds a list of warnings to the list of warnings for this resource.<p>
*
* @param warnings the error messages to be added
*/
public void addWarnings(List warnings) {
m_warnings.addAll(warnings);
}
/**
* Gets the encapuslated file content.<p>
*
* @return the byte array holding the file content
*/
public byte[] getContent() {
return m_content;
}
/**
* Gets the list of all errors found during the content checks for this resource.<p>
* @return List of erros, delivered as strings
*/
public List getErrors() {
return m_errors;
}
/**
* Gets the encapsulated CmsResource.<p>
*
* @return the CmsResource
*/
public CmsResource getResource() {
return m_resource;
}
/**
* Gets the root path of the encapsulated CmsResource.<p>
*
* @return root path of the encapsulated CmsResource
*/
public String getResourceName() {
return m_resource.getRootPath();
}
/**
* Gets the list of all warnings found during the content checks for this resource.<p>
* @return List of warnings, delivered as strings
*/
public List getWarnings() {
return m_warnings;
}
/**
* Gets the encapuslated and unmarshalled xml content.<p>
*
* @return the unmarshalled xml content
*/
public CmsXmlContent getXmlContent() {
return m_xmlcontent;
}
/**
* Loads the content of the encapsulated CmsResource and stores it within the
* CmsContentCheckResource. If the content is already existing, it is not loaded
* again.<p>
*
* @param cms the CmsObject
* @throws CmsException if loading of the content fails
*/
public void upgradeContent(CmsObject cms) throws CmsException {
if (m_content == null) {
m_content = cms.readFile(m_resource).getContents();
}
}
/**
* Unmarshalls the content of the encapsulated CmsResource and stores it within the
* CmsContentCheckResource. If the xmlcontent is already existing, it is not unmarshalled
* again.<p>
*
* @param cms the CmsObject
* @throws CmsException if loading of the content fails
*/
public void upgradeXmlContent(CmsObject cms) throws CmsException {
if (m_xmlcontent == null) {
CmsFile file = cms.readFile(m_resource);
m_xmlcontent = CmsXmlContentFactory.unmarshal(cms, file);
}
}
}