CSVMessageDescriptor.java
- /*
- * Copyright (c) 2002-2022, City of Paris
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice
- * and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice
- * and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * License 1.0
- */
- package fr.paris.lutece.portal.service.csv;
- import org.apache.commons.lang3.StringUtils;
- /**
- * Describe an error that occurred during the reading of a CSV file.
- */
- public class CSVMessageDescriptor implements Comparable<CSVMessageDescriptor>
- {
- private CSVMessageLevel _messageLevel;
- private int _nLineNumber;
- private String _strMessageContent;
- /**
- * Default constructor
- */
- public CSVMessageDescriptor( )
- {
- }
- /**
- * Creates a new <i>CSVMessageDescriptor</i> with every attributes initialized
- *
- * @param messageLevel
- * The level of the message
- * @param nLineNumber
- * The number of the line associated with the message
- * @param strMessageContent
- * The content of the message
- */
- public CSVMessageDescriptor( CSVMessageLevel messageLevel, int nLineNumber, String strMessageContent )
- {
- this._messageLevel = messageLevel;
- this._nLineNumber = nLineNumber;
- this._strMessageContent = strMessageContent;
- }
- /**
- * Get the level of the message
- *
- * @return The level of the message
- */
- public CSVMessageLevel getMessageLevel( )
- {
- return _messageLevel;
- }
- /**
- * Set the level of the message
- *
- * @param messageLevel
- * the level of the message
- */
- public void setMessageLevel( CSVMessageLevel messageLevel )
- {
- this._messageLevel = messageLevel;
- }
- /**
- * Get the number of the line of the CSV file associated with this message.
- *
- * @return The number of the line of the CSV file associated with this message.
- */
- public int getLineNumber( )
- {
- return _nLineNumber;
- }
- /**
- * Set the number of the line of the CSV file associated with this error.
- *
- * @param nLineNumber
- * The number of the line of the CSV file associated with this error.
- */
- public void setLineNumber( int nLineNumber )
- {
- this._nLineNumber = nLineNumber;
- }
- /**
- * Get the description of the message
- *
- * @return The description of the message
- */
- public String getMessageContent( )
- {
- return _strMessageContent;
- }
- /**
- * Set the description of the message
- *
- * @param strMessageContent
- * The description of the message
- */
- public void setMessageContent( String strMessageContent )
- {
- this._strMessageContent = strMessageContent;
- }
- /**
- * compare this CSVMessageDescriptor with another.<br>
- * <b>This method returns 0 for objects that are not equals ! Use with care in collections !</b>
- *
- * @param o
- * Object to compare to
- * @return Returns :<br>
- * <ul>
- * <li>-1 if the line number of this object is greater than the line number of the other object, or if this object has an
- * {@link CSVMessageLevel#INFO INFO} level and the other one an {@link CSVMessageLevel#ERROR ERROR} level if they have the same line number.</li>
- * <li>0 if they both have the same line number and level, regardless of their description</li>
- * <li>1 if the other object is null, if its line number if greater than the line number of the current object, or if this object has a
- * {@link CSVMessageLevel#ERROR ERROR} level whereas the other has the {@link CSVMessageLevel#INFO INFO} level if they have the same line
- * number.</li>
- * </ul>
- */
- @Override
- public int compareTo( CSVMessageDescriptor o )
- {
- if ( null == o )
- {
- return 1;
- }
- if ( this.getLineNumber( ) == o.getLineNumber( ) )
- {
- if ( this.getMessageLevel( ) == CSVMessageLevel.ERROR )
- {
- if ( o.getMessageLevel( ) == CSVMessageLevel.ERROR )
- {
- return getMessageContent( ).compareTo( o.getMessageContent( ) );
- }
- return 1;
- }
- if ( o.getMessageLevel( ) == CSVMessageLevel.INFO )
- {
- return getMessageContent( ).compareTo( o.getMessageContent( ) );
- }
- return -1;
- }
- if ( this.getLineNumber( ) > o.getLineNumber( ) )
- {
- return 1;
- }
- return -1;
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean equals( Object o )
- {
- if ( !( o instanceof CSVMessageDescriptor ) )
- {
- return false;
- }
- CSVMessageDescriptor other = (CSVMessageDescriptor) o;
- return ( getLineNumber( ) == other.getLineNumber( ) )
- && ( ( ( getMessageLevel( ) == null ) && ( other.getMessageLevel( ) == null ) ) || getMessageLevel( ).equals( other.getMessageLevel( ) ) )
- && StringUtils.equals( getMessageContent( ), other.getMessageContent( ) );
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public int hashCode( )
- {
- return ( this.getLineNumber( ) * 1000 ) + this.getMessageLevel( ).hashCode( );
- }
- }