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 |
Used to define MIME types. |
1546 |
02 Mar 12 |
nicklas |
19 |
|
1546 |
02 Mar 12 |
nicklas |
@author nicklas |
1546 |
02 Mar 12 |
nicklas |
@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 |
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 |
The definition of the "VCF" type. We better have to set the MIME type |
4619 |
13 Nov 17 |
nicklas |
to text/plain to avoid confusion with VCard files. |
4619 |
13 Nov 17 |
nicklas |
@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 |
The definition of the "GTC" type. |
6475 |
05 Nov 21 |
nicklas |
@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 |
The definition of the "IDAT" type. |
6866 |
14 Nov 22 |
nicklas |
@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 |
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 |
@param cName The name of the static constant |
3571 |
30 Oct 15 |
nicklas |
@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 |
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 |
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 |
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 |
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 |
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 |
Load the subtype as a BASE item. |
1546 |
02 Mar 12 |
nicklas |
@param dc The DbControl to use for database access |
1546 |
02 Mar 12 |
nicklas |
@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 |
List all MIME types in the database that matches the extension |
1546 |
02 Mar 12 |
nicklas |
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 |
} |