extensions/net.sf.basedb.meludi/trunk/src/net/sf/basedb/meludi/dao/Mimetype.java

Code
Comments
Other
Rev Date Author Line
2933 14 Nov 14 olle 1 package net.sf.basedb.meludi.dao;
2933 14 Nov 14 olle 2
2933 14 Nov 14 olle 3 import java.lang.reflect.Field;
2933 14 Nov 14 olle 4 import java.util.List;
2933 14 Nov 14 olle 5
2933 14 Nov 14 olle 6 import net.sf.basedb.core.DbControl;
2933 14 Nov 14 olle 7 import net.sf.basedb.core.Include;
2933 14 Nov 14 olle 8 import net.sf.basedb.core.InvalidDataException;
2933 14 Nov 14 olle 9 import net.sf.basedb.core.ItemNotFoundException;
2933 14 Nov 14 olle 10 import net.sf.basedb.core.ItemQuery;
2933 14 Nov 14 olle 11 import net.sf.basedb.core.MimeType;
2933 14 Nov 14 olle 12 import net.sf.basedb.core.Type;
2933 14 Nov 14 olle 13 import net.sf.basedb.core.query.Expressions;
2933 14 Nov 14 olle 14 import net.sf.basedb.core.query.Hql;
2933 14 Nov 14 olle 15 import net.sf.basedb.core.query.Restrictions;
2933 14 Nov 14 olle 16
2933 14 Nov 14 olle 17 /**
2933 14 Nov 14 olle 18   Used to define MIME types.
2933 14 Nov 14 olle 19   
2933 14 Nov 14 olle 20   @author nicklas
2933 14 Nov 14 olle 21   @since 2.4
2933 14 Nov 14 olle 22 */
2933 14 Nov 14 olle 23 public class Mimetype 
2933 14 Nov 14 olle 24 {
2933 14 Nov 14 olle 25
2933 14 Nov 14 olle 26   /**
2933 14 Nov 14 olle 27     The definition of the "LabView GX raw data" type.
2933 14 Nov 14 olle 28   */
3028 11 Dec 14 olle 29 /*
2933 14 Nov 14 olle 30   public static final Mimetype GDX = 
2933 14 Nov 14 olle 31     new Mimetype("application/octet-stream", "gdx", "LabView GX raw data", Subtype.CALIPER_RAW_DATA);
3028 11 Dec 14 olle 32 */
2933 14 Nov 14 olle 33   
2933 14 Nov 14 olle 34   /**
2933 14 Nov 14 olle 35     Get the MIME type by name of the static constant defined in this class.
2933 14 Nov 14 olle 36     
2933 14 Nov 14 olle 37     @param name The name of the static constant
2933 14 Nov 14 olle 38     @return A bioplate type object or null if not found
2933 14 Nov 14 olle 39   */
2933 14 Nov 14 olle 40   public static Mimetype getByCName(String cName)
2933 14 Nov 14 olle 41   {
2933 14 Nov 14 olle 42     if (cName == null) return null;
2933 14 Nov 14 olle 43     Mimetype type = null;
2933 14 Nov 14 olle 44     try
2933 14 Nov 14 olle 45     {
2933 14 Nov 14 olle 46       Field f = Mimetype.class.getDeclaredField(cName);
2933 14 Nov 14 olle 47       type = (Mimetype)f.get(null);
2933 14 Nov 14 olle 48     }
2933 14 Nov 14 olle 49     catch (NoSuchFieldException ex)
2933 14 Nov 14 olle 50     {}
2933 14 Nov 14 olle 51     catch (IllegalAccessException ex)
2933 14 Nov 14 olle 52     {}
2933 14 Nov 14 olle 53     catch (ClassCastException ex)
2933 14 Nov 14 olle 54     {}
2933 14 Nov 14 olle 55     return type;
2933 14 Nov 14 olle 56   }
2933 14 Nov 14 olle 57
2933 14 Nov 14 olle 58   
2933 14 Nov 14 olle 59   private final String mimeType;
2933 14 Nov 14 olle 60   private final String extension;
2933 14 Nov 14 olle 61   private final String description;
2933 14 Nov 14 olle 62   private final Subtype fileType;
2933 14 Nov 14 olle 63   
2933 14 Nov 14 olle 64   private int id;
2933 14 Nov 14 olle 65   
2933 14 Nov 14 olle 66   /**
2933 14 Nov 14 olle 67     Create a new definition
2933 14 Nov 14 olle 68     @param name The name of the subtype
2933 14 Nov 14 olle 69     @param bioMaterialType The type of biomaterial that can be placed on the bioplate 
2933 14 Nov 14 olle 70     @param subtype The subtype of biomaterial that can be placed on the bioplate
2933 14 Nov 14 olle 71   */
2933 14 Nov 14 olle 72   private Mimetype(String mimeType, String extension, String description, Subtype fileType)
2933 14 Nov 14 olle 73   {
2933 14 Nov 14 olle 74     this.mimeType = mimeType;
2933 14 Nov 14 olle 75     this.extension = extension;
2933 14 Nov 14 olle 76     this.description = description;
2933 14 Nov 14 olle 77     this.fileType = fileType;
2933 14 Nov 14 olle 78   }
2933 14 Nov 14 olle 79     
2933 14 Nov 14 olle 80   /**
2933 14 Nov 14 olle 81     Get the MIME type.
2933 14 Nov 14 olle 82   */
2933 14 Nov 14 olle 83   public String getMimeType()
2933 14 Nov 14 olle 84   {
2933 14 Nov 14 olle 85     return mimeType;
2933 14 Nov 14 olle 86   }
2933 14 Nov 14 olle 87   
2933 14 Nov 14 olle 88   /**
2933 14 Nov 14 olle 89     Get the file extensions that is usually associated with this MIME Type.
2933 14 Nov 14 olle 90   */
2933 14 Nov 14 olle 91   public String getExtension()
2933 14 Nov 14 olle 92   {
2933 14 Nov 14 olle 93     return extension;
2933 14 Nov 14 olle 94   }
2933 14 Nov 14 olle 95   
2933 14 Nov 14 olle 96   /**
2933 14 Nov 14 olle 97     Get the associated file type.
2933 14 Nov 14 olle 98   */
2933 14 Nov 14 olle 99   public Subtype getFileType()
2933 14 Nov 14 olle 100   {
2933 14 Nov 14 olle 101     return fileType;
2933 14 Nov 14 olle 102   }
2933 14 Nov 14 olle 103   
2933 14 Nov 14 olle 104   /**
2933 14 Nov 14 olle 105     Get the lock mode for wells.
2933 14 Nov 14 olle 106   */
2933 14 Nov 14 olle 107   public String getDescription()
2933 14 Nov 14 olle 108   {
2933 14 Nov 14 olle 109     return description;
2933 14 Nov 14 olle 110   }
2933 14 Nov 14 olle 111   
2933 14 Nov 14 olle 112   /**
2933 14 Nov 14 olle 113     Load the subtype as a BASE item.
2933 14 Nov 14 olle 114     @param dc The DbControl to use for database access
2933 14 Nov 14 olle 115     @return An ItemSubtype object
2933 14 Nov 14 olle 116   */
2933 14 Nov 14 olle 117   public MimeType load(DbControl dc)
2933 14 Nov 14 olle 118   {
2933 14 Nov 14 olle 119     MimeType mimeType = null;
2933 14 Nov 14 olle 120     if (id == 0)
2933 14 Nov 14 olle 121     {
2933 14 Nov 14 olle 122       List<MimeType> result = list(dc);
2933 14 Nov 14 olle 123
2933 14 Nov 14 olle 124       if (result.size() == 0)
2933 14 Nov 14 olle 125       {
2933 14 Nov 14 olle 126         throw new ItemNotFoundException("MimeType["+getExtension()+"]");
2933 14 Nov 14 olle 127       }
2933 14 Nov 14 olle 128       else if (result.size() > 1)
2933 14 Nov 14 olle 129       {
2933 14 Nov 14 olle 130         throw new InvalidDataException("Found > 1 MimeType["+getExtension()+"]");
2933 14 Nov 14 olle 131       }
2933 14 Nov 14 olle 132       else
2933 14 Nov 14 olle 133       {
2933 14 Nov 14 olle 134         mimeType = result.get(0);
2933 14 Nov 14 olle 135         id = mimeType.getId();
2933 14 Nov 14 olle 136       }
2933 14 Nov 14 olle 137     }
2933 14 Nov 14 olle 138     else
2933 14 Nov 14 olle 139     {
2933 14 Nov 14 olle 140       mimeType = MimeType.getById(dc, id);
2933 14 Nov 14 olle 141     }
2933 14 Nov 14 olle 142     return mimeType;
2933 14 Nov 14 olle 143   }
2933 14 Nov 14 olle 144   
2933 14 Nov 14 olle 145   /**
2933 14 Nov 14 olle 146     List all MIME types in the database that matches the extension
2933 14 Nov 14 olle 147     in this definition.
2933 14 Nov 14 olle 148   */
2933 14 Nov 14 olle 149   public List<MimeType> list(DbControl dc)
2933 14 Nov 14 olle 150   {
2933 14 Nov 14 olle 151     ItemQuery<MimeType> query = MimeType.getQuery();
2933 14 Nov 14 olle 152     query.restrict(
2933 14 Nov 14 olle 153       Restrictions.eq(
2933 14 Nov 14 olle 154         Hql.property("extension"), 
2933 14 Nov 14 olle 155         Expressions.parameter("extension", getExtension(), Type.STRING)
2933 14 Nov 14 olle 156       ));
2933 14 Nov 14 olle 157     query.include(Include.ALL);
2933 14 Nov 14 olle 158     return query.list(dc);
2933 14 Nov 14 olle 159   }
2933 14 Nov 14 olle 160
2933 14 Nov 14 olle 161 }