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}