001package org.hl7.fhir.utilities;
002
003import java.util.ArrayList;
004import java.util.HashMap;
005import java.util.List;
006import java.util.Map;
007
008public class MimeType {
009
010  private String source;
011  private String base;
012  private Map<String, String> params = new HashMap<String, String>();
013
014  public MimeType(String s) {
015    source = s;
016    for (String p : s.split("\\;"))
017      if (base == null)
018        base = p;
019      else
020        params.put(p.substring(0, p.indexOf("=")), p.substring(p.indexOf("=")+1));
021    if ("xml".equals(base))
022      base = "application/fhir+xml";
023    if ("json".equals(base))
024      base = "application/fhir+json";
025    if ("ttl".equals(base))
026      base = "application/fhir+ttl";
027  }
028
029  public String main() {
030    if (base.contains("/"))
031      return base.substring(0, base.indexOf("/"));
032    else
033      return base;
034  }
035
036  public String sub() {
037    if (base.contains("/"))
038      return base.substring(base.indexOf("/")+1);
039    else
040      return null;
041  }
042
043  public boolean hasParam(String name) {
044    return params.containsKey(name);
045  }
046
047  public boolean isValid() {
048    return (Utilities.existsInList(main(), "application", "audio", "font", "example", "image", "message", "model", "multipart", "text", "video") || main().startsWith("x-")) && !Utilities.noString(sub());
049  }
050
051  public static List<MimeType> parseList(String s) {
052    List<MimeType> result = new ArrayList<MimeType>();
053    for (String e : s.split("\\,"))
054        result.add(new MimeType(e));
055    return result;
056  }
057
058  public String display() {
059    return source;
060  }
061
062}