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

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