All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencms.xml.content.CmsXmlContentErrorHandler Maven / Gradle / Ivy

Go to download

OpenCms is an enterprise-ready, easy to use website content management system based on Java and XML technology. Offering a complete set of features, OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.

There is a newer version: 18.0
Show newest version
/*
 * This library is part of OpenCms -
 * the Open Source Content Management System
 *
 * Copyright (c) Alkacon Software GmbH & Co. KG (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 & Co. KG, 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.xml.content;

import org.opencms.main.CmsLog;
import org.opencms.xml.types.I_CmsXmlContentValue;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import org.apache.commons.logging.Log;

/**
 * Handler for issues found during XML content validation.

* * @since 6.0.0 */ public class CmsXmlContentErrorHandler { /** Static reference to the log. */ private static final Log LOG = CmsLog.getLog(CmsXmlContentErrorHandler.class); /** The list of validation errors. */ private Map> m_errors; /** Indicates that the validated content has errors. */ private boolean m_hasErrors; /** Indicates that the validated content has warnings. */ private boolean m_hasWarnings; /** The list of validation warnings. */ private Map> m_warnings; /** * Create a new instance of the validation handler.

*/ public CmsXmlContentErrorHandler() { // initialize the internal error / warning list m_warnings = new HashMap>(); m_errors = new HashMap>(); } /** * Adds an error message to the internal list of errors, * also raised the "has errors" flag.

* * @param value the value that contains the error * @param message the error message to add */ public void addError(I_CmsXmlContentValue value, String message) { m_hasErrors = true; Locale locale = value.getLocale(); Map localeErrors = getLocalIssueMap(m_errors, locale); localeErrors.put(value.getPath(), message); if (LOG.isDebugEnabled()) { LOG.debug( Messages.get().getBundle().key(Messages.LOG_XMLCONTENT_VALIDATION_ERR_2, value.getPath(), message)); } } /** * Adds an warning message to the internal list of errors, * also raised the "has warning" flag.

* * @param value the value that contians the warning * @param message the warning message to add */ public void addWarning(I_CmsXmlContentValue value, String message) { m_hasWarnings = true; Locale locale = value.getLocale(); Map localeWarnings = getLocalIssueMap(m_warnings, locale); localeWarnings.put(value.getPath(), message); if (LOG.isDebugEnabled()) { LOG.debug( Messages.get().getBundle().key(Messages.LOG_XMLCONTENT_VALIDATION_WARN_2, value.getPath(), message)); } } /** * Returns the map of validation errors.

* * The map contains further maps. The key of the "first" map is the * {@link java.util.Locale} of the language where issues where found. The key of the "second" map * is a mapping from the element node name obtained with {@link I_CmsXmlContentValue#getPath()} to the error message * which is a String.

* * @return the map of validation errors */ public Map> getErrors() { return m_errors; } /** * Returns the Map of errors for the selected locale.

* * @param locale the locale to get the errors for * * @return the Map of errors for the selected locale */ public Map getErrors(Locale locale) { return m_errors.get(locale); } /** * Returns the map of validation warnings.

* * The map contains further maps. The key of the "first" map is the * {@link java.util.Locale} of the language where issues where found. The key of the "second" map * is a mapping from the element node name obtained with {@link I_CmsXmlContentValue#getPath()} to the error message * which is a String.

* * @return the map of validation warnings */ public Map> getWarnings() { return m_warnings; } /** * Returns the Map of warnings for the selected locale.

* * @param locale the locale to get the warnings for * * @return the Map of warnings for the selected locale */ public Map getWarnings(Locale locale) { return m_warnings.get(locale); } /** * Returns true if the validated content had errors.

* * @return true if the validated content had errors */ public boolean hasErrors() { return m_hasErrors; } /** * Returns true if there is at last one error in the selected locale.

* * @param locale the locale to check * * @return true if there is at last one error in the selected locale */ public boolean hasErrors(Locale locale) { return null != getErrors(locale); } /** * Returns true if the validated content has warnings.

* * @return true if the validated content had warnings */ public boolean hasWarnings() { return m_hasWarnings; } /** * Returns true if there is at last one warning in the selected locale.

* * @param locale the locale to check * * @return true if there is at last one warning in the selected locale */ public boolean hasWarnings(Locale locale) { return null != getWarnings(locale); } /** * Returns the localized issue map from the given base map.

* * If the base map does not contains an issue map for the given locale, * a new map is added for the locale.

* * @param base the base issue map * @param locale the locale to get the localized issue map for * * @return the localized issue map from the given base map */ private Map getLocalIssueMap(Map> base, Locale locale) { Map result = base.get(locale); if (result == null) { result = new HashMap(); base.put(locale, result); } return result; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy