Merge remote-tracking branch 'origin/unstable' into testing
[gpl/argeo-suite.git] / org.argeo.app.api / src / org / argeo / app / api / EntityMimeType.java
diff --git a/org.argeo.app.api/src/org/argeo/app/api/EntityMimeType.java b/org.argeo.app.api/src/org/argeo/app/api/EntityMimeType.java
new file mode 100644 (file)
index 0000000..eaefcd0
--- /dev/null
@@ -0,0 +1,60 @@
+package org.argeo.app.api;
+
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+
+/** Supported mime types. */
+public enum EntityMimeType {
+       XML("text/xml", "xml"), CSV("text/csv", "csv");
+
+       private final String mimeType;
+       private final String[] extensions;
+
+       EntityMimeType(String mimeType, String... extensions) {
+               this.mimeType = mimeType;
+               this.extensions = extensions;
+       }
+
+       public String getMimeType() {
+               return mimeType;
+       }
+
+       public String[] getExtensions() {
+               return extensions;
+       }
+
+       public String getDefaultExtension() {
+               if (extensions.length > 0)
+                       return extensions[0];
+               else
+                       return null;
+       }
+
+       public String toHttpContentType(Charset charset) {
+               if (charset == null)
+                       return mimeType;
+               return mimeType + "; charset=" + charset.name();
+       }
+
+       public String toHttpContentType() {
+               if (mimeType.startsWith("text/")) {
+                       return toHttpContentType(StandardCharsets.UTF_8);
+               } else {
+                       return mimeType;
+               }
+       }
+
+       public static EntityMimeType find(String mimeType) {
+               for (EntityMimeType entityMimeType : values()) {
+                       if (entityMimeType.mimeType.equals(mimeType))
+                               return entityMimeType;
+               }
+               return null;
+       }
+
+       @Override
+       public String toString() {
+               return mimeType;
+       }
+
+}