merged 1.1 branch into head
[mir.git] / source / mircoders / module / ModuleMediaType.java
index ec9fe36..57887a8 100755 (executable)
 
 package mircoders.module;
 
+import java.util.List;
+
 import mir.entity.Entity;
 import mir.entity.EntityList;
 import mir.log.LoggerWrapper;
 import mir.module.AbstractModule;
-import mir.module.ModuleExc;
-import mir.module.ModuleFailure;
 import mir.util.JDBCStringRoutines;
 import mir.util.StringRoutines;
+import mir.storage.DatabaseExc;
 import mircoders.storage.DatabaseMediaType;
 
-import java.util.List;
-
 public class ModuleMediaType extends AbstractModule {
   static LoggerWrapper logger = new LoggerWrapper("Module.Content");
 
@@ -49,68 +48,46 @@ public class ModuleMediaType extends AbstractModule {
     super(DatabaseMediaType.getInstance());
   }
 
-  public Entity findMediaTypeForMimeType(String aMimeType) throws ModuleExc, ModuleFailure {
+  public Entity findMediaTypeForMimeType(String aMimeType) {
     List contentTypeParts = StringRoutines.splitString(aMimeType, "/");
 
     if (contentTypeParts.size()!=2) {
-      throw new InvalidMimeTypeExc("Invalid mimetype: " + aMimeType, aMimeType);
+      return null;
     }
     String mimeTypeMajor = (String) contentTypeParts.get(0);
 
     EntityList mediaTypes;
 
-    mediaTypes = DatabaseMediaType.getInstance().selectByWhereClause("mime_type = '"+JDBCStringRoutines.escapeStringLiteral(aMimeType)+"'");
-    if (mediaTypes.size() == 0) {
-      mediaTypes = DatabaseMediaType.getInstance().selectByWhereClause("mime_type = '"+JDBCStringRoutines.escapeStringLiteral(mimeTypeMajor+"/*")+"'");
-    }
-    if (mediaTypes.size() == 0) {
-      mediaTypes = DatabaseMediaType.getInstance().selectByWhereClause("mime_type = '"+JDBCStringRoutines.escapeStringLiteral("*/*")+"'");
-    }
-    if (mediaTypes.size() == 0) {
-      throw new UnsupportedMimeTypeExc("Unsupported mimetype: " + aMimeType, aMimeType);
-    }
-
-    return (Entity) mediaTypes.elementAt(0);
-  }
-
-  public Entity findMediaTypeForExtension(String anExtension) throws ModuleExc, ModuleFailure {
-    EntityList mediaTypes = DatabaseMediaType.getInstance().selectByWhereClause("name = '"+JDBCStringRoutines.escapeStringLiteral(anExtension)+"'");
-
-    if (mediaTypes.size() == 0) {
-      try {
-        return findMediaTypeForMimeType("*/*");
+    try {
+      mediaTypes = DatabaseMediaType.getInstance().selectByWhereClause("mime_type = '"+JDBCStringRoutines.escapeStringLiteral(aMimeType)+"'");
+      if (mediaTypes.size() == 0) {
+        mediaTypes = DatabaseMediaType.getInstance().selectByWhereClause("mime_type = '"+JDBCStringRoutines.escapeStringLiteral(mimeTypeMajor+"/*")+"'");
       }
-      catch (UnsupportedMimeTypeExc e) {
-        throw new UnsupportedMimeTypeExc("Unsupported media extension: " + anExtension, anExtension);
+      if (mediaTypes.size() == 0) {
+        return null;
       }
     }
-    else {
-      return (Entity) mediaTypes.elementAt(0);
+    catch (DatabaseExc e) {
+      return null;
     }
-  }
 
-  public static class MimeTypeExc extends ModuleExc {
-    private String mimeType;
+    return mediaTypes.elementAt(0);
+  }
 
-    public MimeTypeExc(String aMessage, String aMimeType) {
-      super (aMessage);
-      mimeType = aMimeType;
-    }
+  public Entity findMediaTypeForExtension(String anExtension) {
+    EntityList mediaTypes;
 
-    public String getMimeType() {
-      return mimeType;
+    try {
+      mediaTypes = DatabaseMediaType.getInstance().selectByWhereClause(
+          "name = '"+JDBCStringRoutines.escapeStringLiteral(anExtension.toLowerCase())+"'");
     }
-  }
-
-  public static class UnsupportedMimeTypeExc extends MimeTypeExc {
-    public UnsupportedMimeTypeExc(String aMessage, String aMimeType) {
-      super(aMessage, aMimeType);
+    catch (DatabaseExc e) {
+      return null;
     }
-  }
 
-  public static class InvalidMimeTypeExc extends MimeTypeExc {
-    public InvalidMimeTypeExc(String aMessage, String aMimeType) {
-      super(aMessage, aMimeType);
+    if (mediaTypes.size() == 0) {
+      return null;
     }
+               return mediaTypes.elementAt(0);
   }
 }
\ No newline at end of file