/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program 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.
*
* Copyright (c) 2002-2013 Pentaho Corporation.. All rights reserved.
*/
package org.pentaho.platform.core.mimetype;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import org.pentaho.platform.api.mimetype.IMimeType;
import org.pentaho.platform.api.repository2.unified.Converter;
/**
* Hold mime type name and extensions associated with it.
*
* @author tkafalas
*/
@XmlRootElement
public class MimeType implements Comparable<IMimeType>, IMimeType {
private String name;
private List<String> extensions = new ArrayList<String>();
private boolean hidden;
private boolean locale;
private boolean versionEnabled;
private boolean versionCommentEnabled;
@XmlTransient
private Converter converter;
public MimeType() {
}
public MimeType( String name, List<String> extensions ) {
this.name = name;
setExtensions( extensions );
}
/**
* Convenience method to allow comma delimited list of extensions
*
* @param name
* @param extensions
*/
public MimeType( String name, String extensions ) {
this( name, Arrays.asList( extensions.split( "," ) ) );
}
@Override
public String getName() {
return name;
}
/* (non-Javadoc)
* @see org.pentaho.platform.core.mimetype.IMimeType#setName(java.lang.String)
*/
@Override
public void setName( String name ) {
this.name = name;
}
@Override
public List<String> getExtensions() {
return extensions;
}
/* (non-Javadoc)
* @see org.pentaho.platform.core.mimetype.IMimeType#isHidden()
*/
@Override
public boolean isHidden() {
return hidden;
}
/* (non-Javadoc)
* @see org.pentaho.platform.core.mimetype.IMimeType#setHidden(boolean)
*/
@Override
public void setHidden( boolean hidden ) {
this.hidden = hidden;
}
/* (non-Javadoc)
* @see org.pentaho.platform.core.mimetype.IMimeType#isLocale()
*/
@Override
public boolean isLocale() {
return locale;
}
/* (non-Javadoc)
* @see org.pentaho.platform.core.mimetype.IMimeType#setLocale(boolean)
*/
@Override
public void setLocale( boolean locale ) {
this.locale = locale;
}
/* (non-Javadoc)
* @see org.pentaho.platform.core.mimetype.IMimeType#isVersionEnabled()
*/
@Override
public boolean isVersionEnabled() {
return versionEnabled;
}
/* (non-Javadoc)
* @see org.pentaho.platform.core.mimetype.IMimeType#setVersionEnabled(boolean)
*/
@Override
public void setVersionEnabled( boolean versionEnabled ) {
this.versionEnabled = versionEnabled;
}
/* (non-Javadoc)
* @see org.pentaho.platform.core.mimetype.IMimeType#isVersionCommentEnabled()
*/
@Override
public boolean isVersionCommentEnabled() {
return versionCommentEnabled;
}
/* (non-Javadoc)
* @see org.pentaho.platform.core.mimetype.IMimeType#setVersionCommentEnabled(boolean)
*/
@Override
public void setVersionCommentEnabled( boolean versionCommentEnabled ) {
this.versionCommentEnabled = versionCommentEnabled;
}
@XmlTransient
@Override
public Converter getConverter() {
return converter;
}
@Override
public void setConverter( Converter converter ) {
this.converter = converter;
}
/* (non-Javadoc)
* @see org.pentaho.platform.core.mimetype.IMimeType#setExtensions(java.util.List)
*/
@Override
public void setExtensions( List<String> extensions ) {
for ( String extension : extensions ) {
this.extensions.add( extension );
}
}
/* (non-Javadoc)
* @see org.pentaho.platform.core.mimetype.IMimeType#toString()
*/
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append( "name:" ).append( name );
sb.append( ",extensions:[" );
for ( String extension : extensions ) {
if ( !sb.substring( sb.length() - 1 ).equals( "[" ) ) {
sb.append( "," );
}
sb.append( extension );
}
sb.append( "]" );
sb.append( ",hidden:" ).append( hidden );
sb.append( ",locale:" ).append( locale );
sb.append( ",converter:" ).append( converter );
sb.append( ",versionEnabled:" ).append( versionEnabled );
sb.append( ",versionCommentEnabled:" ).append( versionCommentEnabled );
return sb.toString();
}
@Override
public int compareTo( IMimeType o ) {
return name.compareTo( o.getName() );
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ( ( name == null ) ? 0 : name.hashCode() );
return result;
}
@Override
public boolean equals( Object obj ) {
if ( this == obj ) {
return true;
}
if ( obj == null ) {
return false;
}
if ( getClass() != obj.getClass() ) {
return false;
}
IMimeType other = (IMimeType) obj;
if ( name == null ) {
if ( other.getName() != null ) {
return false;
}
} else if ( !name.equals( other.getName() ) ) {
return false;
}
return true;
}
}