MimeType.java
001 /*
002  *  TextualDocumentFormat.java
003  *
004  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
005  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
006  *
007  *  This file is part of GATE (see http://gate.ac.uk/), and is free
008  *  software, licenced under the GNU Library General Public License,
009  *  Version 2, June 1991 (in the distribution as file licence.html,
010  *  and also available at http://gate.ac.uk/gate/licence.html).
011  *
012  *  Valentin Tablan 27 Aug 2003
013  *
014  *  $Id: MimeType.java 17530 2014-03-04 15:57:43Z markagreenwood $
015  */
016 
017 package gate.corpora;
018 
019 import java.util.HashMap;
020 import java.util.Map;
021 
022 /**
023  * A very basic implementation for a MIME Type.
024  */
025 public class MimeType {
026   /**
027    * Constructor from type and subtype.
028    @param type
029    @param subType
030    */
031   public MimeType(String type, String subType){
032     this.type = type;
033     this.subtype = subType;
034     parameters = new HashMap<String,String>();
035   }
036 
037   /**
038    * Two MIME Types are equal if their types and subtypes coincide.
039    @param other the othe MIME Type to be compared with this one.
040    @return true if the two MIME Types are the same.
041    */
042   @Override
043   public boolean equals(Object other){
044     return other != null && type.equals(((MimeType)other).getType()) &&
045            subtype.equals(((MimeType)other).getSubtype());
046   }
047 
048   /**
049    * The hashcode is composed (by addition) from the hashcodes for the type and
050    * subtype.
051    @return and integer.
052    */
053   @Override
054   public int hashCode(){
055     return (type == null : type.hashCode()) +
056             (subtype == null : subtype.hashCode());
057   }
058 
059   /**
060    * Returns the type component of this MIME Type.
061    @return a String value.
062    */
063   public String getType() {
064     return type;
065   }
066 
067   /**
068    * Sets the type component of this MIME type.
069    @param type a String value.
070    */
071   public void setType(String type) {
072     this.type = type;
073   }
074 
075   /**
076    * Returns the subtype component of this MIME Type.
077    @return a String value.
078    */
079   public String getSubtype() {
080     return subtype;
081   }
082 
083   /**
084    * Sets the subtype component of this MIME type.
085    @param subtype a String value.
086    */
087   public void setSubtype(String subtype) {
088     this.subtype = subtype;
089   }
090 
091   /**
092    * Adds (and replaces if necessary) a parameter to this MIME type.
093    @param param the name of the parameter.
094    @param value the value of the parameter.
095    */
096   public void addParameter(String param, String value){
097     parameters.put(param, value);
098   }
099 
100   /**
101    * Gets the value for a particular parameter.
102    @param name the name of the parameter.
103    @return {@link java.lang.String} value.
104    */
105   public String getParameterValue(String name){
106     return parameters.get(name);
107   }
108 
109   /**
110    * Checks to see if this MIME type has a particular parameter.
111    @param name the name of the parameter.
112    @return a boolean value.
113    */
114   public boolean hasParameter(String name){
115     return parameters.containsKey(name);
116   }
117 
118   /**
119    * The type component
120    */
121   protected String type;
122 
123   /**
124    * The subtype component
125    */
126   protected String subtype;
127 
128   /**
129    * The parameters map.
130    */
131   protected Map<String,String> parameters;
132 }