5865 |
12 Mar 20 |
nicklas |
1 |
package net.sf.basedb.reggie.dao; |
5865 |
12 Mar 20 |
nicklas |
2 |
|
5865 |
12 Mar 20 |
nicklas |
3 |
import java.lang.reflect.Field; |
5865 |
12 Mar 20 |
nicklas |
4 |
import java.lang.reflect.Modifier; |
5865 |
12 Mar 20 |
nicklas |
5 |
|
5865 |
12 Mar 20 |
nicklas |
6 |
import org.json.simple.JSONObject; |
5865 |
12 Mar 20 |
nicklas |
7 |
|
5865 |
12 Mar 20 |
nicklas |
8 |
import net.sf.basedb.core.DbControl; |
5865 |
12 Mar 20 |
nicklas |
9 |
import net.sf.basedb.core.ItemQuery; |
5865 |
12 Mar 20 |
nicklas |
10 |
import net.sf.basedb.core.Tag; |
5865 |
12 Mar 20 |
nicklas |
11 |
import net.sf.basedb.core.query.Annotations; |
5865 |
12 Mar 20 |
nicklas |
12 |
import net.sf.basedb.core.query.Expressions; |
5865 |
12 Mar 20 |
nicklas |
13 |
import net.sf.basedb.core.query.Hql; |
5865 |
12 Mar 20 |
nicklas |
14 |
import net.sf.basedb.core.query.Restrictions; |
5865 |
12 Mar 20 |
nicklas |
15 |
|
5865 |
12 Mar 20 |
nicklas |
16 |
|
5865 |
12 Mar 20 |
nicklas |
17 |
/** |
5865 |
12 Mar 20 |
nicklas |
Class for collecting barcode-related settings. |
5865 |
12 Mar 20 |
nicklas |
19 |
|
5865 |
12 Mar 20 |
nicklas |
Expect this class to evolve as more things are implemented. |
5865 |
12 Mar 20 |
nicklas |
21 |
|
5865 |
12 Mar 20 |
nicklas |
@author nicklas |
5865 |
12 Mar 20 |
nicklas |
@since 4.26 |
5865 |
12 Mar 20 |
nicklas |
24 |
*/ |
5865 |
12 Mar 20 |
nicklas |
25 |
public class BarcodeSet |
5865 |
12 Mar 20 |
nicklas |
26 |
{ |
5865 |
12 Mar 20 |
nicklas |
27 |
|
5865 |
12 Mar 20 |
nicklas |
28 |
/** |
5865 |
12 Mar 20 |
nicklas |
The TruSeq single barcode set. |
5865 |
12 Mar 20 |
nicklas |
30 |
*/ |
5865 |
12 Mar 20 |
nicklas |
31 |
public static final BarcodeSet TRUSEQ_SINGLE = new BarcodeSet("TRUSEQ_SINGLE", "TruSeqSingle"); |
5865 |
12 Mar 20 |
nicklas |
32 |
|
5865 |
12 Mar 20 |
nicklas |
33 |
/** |
5865 |
12 Mar 20 |
nicklas |
The TruSeq dual unique barcode set. |
5865 |
12 Mar 20 |
nicklas |
35 |
*/ |
5865 |
12 Mar 20 |
nicklas |
36 |
public static final BarcodeSet TRUSEQ_UNIQUE_DUAL = new BarcodeSet("TRUSEQ_DUAL_UNIQUE", "TruSeqUniqueDual"); |
5865 |
12 Mar 20 |
nicklas |
37 |
|
5865 |
12 Mar 20 |
nicklas |
38 |
/** |
6887 |
24 Nov 22 |
nicklas |
The IDT10 dual unique barcode set. |
6887 |
24 Nov 22 |
nicklas |
@since 4.41 |
6887 |
24 Nov 22 |
nicklas |
41 |
*/ |
6887 |
24 Nov 22 |
nicklas |
42 |
public static final BarcodeSet IDT10_UDI = new BarcodeSet("IDT10_UDI", "IDT10_UDI"); |
6887 |
24 Nov 22 |
nicklas |
43 |
|
6887 |
24 Nov 22 |
nicklas |
44 |
/** |
5865 |
12 Mar 20 |
nicklas |
Get a barcode set by it's display name. |
5865 |
12 Mar 20 |
nicklas |
@param name The name of the barcode set |
5865 |
12 Mar 20 |
nicklas |
@return A barcode set object or null if not found |
5865 |
12 Mar 20 |
nicklas |
48 |
*/ |
5865 |
12 Mar 20 |
nicklas |
49 |
public static BarcodeSet getByName(String name) |
5865 |
12 Mar 20 |
nicklas |
50 |
{ |
5865 |
12 Mar 20 |
nicklas |
51 |
for (Field f : BarcodeSet.class.getDeclaredFields()) |
5865 |
12 Mar 20 |
nicklas |
52 |
{ |
5865 |
12 Mar 20 |
nicklas |
53 |
if (Modifier.isStatic(f.getModifiers()) && f.getType() == BarcodeSet.class) |
5865 |
12 Mar 20 |
nicklas |
54 |
{ |
5865 |
12 Mar 20 |
nicklas |
55 |
try |
5865 |
12 Mar 20 |
nicklas |
56 |
{ |
5865 |
12 Mar 20 |
nicklas |
57 |
BarcodeSet bs = (BarcodeSet)f.get(null); |
5865 |
12 Mar 20 |
nicklas |
58 |
if (bs.getName().equals(name)) return bs; |
5865 |
12 Mar 20 |
nicklas |
59 |
} |
5865 |
12 Mar 20 |
nicklas |
60 |
catch (IllegalArgumentException | IllegalAccessException e) |
5865 |
12 Mar 20 |
nicklas |
61 |
{} // Should not happen |
5865 |
12 Mar 20 |
nicklas |
62 |
} |
5865 |
12 Mar 20 |
nicklas |
63 |
} |
5865 |
12 Mar 20 |
nicklas |
64 |
return null; |
5865 |
12 Mar 20 |
nicklas |
65 |
} |
5865 |
12 Mar 20 |
nicklas |
66 |
|
5865 |
12 Mar 20 |
nicklas |
67 |
/** |
5865 |
12 Mar 20 |
nicklas |
Get the barcode set by name of the static constant defined in this class. |
5865 |
12 Mar 20 |
nicklas |
69 |
|
5865 |
12 Mar 20 |
nicklas |
@param cName The name of the static constant |
5865 |
12 Mar 20 |
nicklas |
@return A barcode set object or null if not found |
5865 |
12 Mar 20 |
nicklas |
72 |
*/ |
5865 |
12 Mar 20 |
nicklas |
73 |
public static BarcodeSet getByCName(String cName) |
5865 |
12 Mar 20 |
nicklas |
74 |
{ |
5865 |
12 Mar 20 |
nicklas |
75 |
if (cName == null) return null; |
5865 |
12 Mar 20 |
nicklas |
76 |
BarcodeSet bs = null; |
5865 |
12 Mar 20 |
nicklas |
77 |
try |
5865 |
12 Mar 20 |
nicklas |
78 |
{ |
5865 |
12 Mar 20 |
nicklas |
79 |
Field f = BarcodeSet.class.getDeclaredField(cName); |
5865 |
12 Mar 20 |
nicklas |
80 |
bs = (BarcodeSet)f.get(null); |
5865 |
12 Mar 20 |
nicklas |
81 |
} |
5865 |
12 Mar 20 |
nicklas |
82 |
catch (NoSuchFieldException ex) |
5865 |
12 Mar 20 |
nicklas |
83 |
{} |
5865 |
12 Mar 20 |
nicklas |
84 |
catch (IllegalAccessException ex) |
5865 |
12 Mar 20 |
nicklas |
85 |
{} |
5865 |
12 Mar 20 |
nicklas |
86 |
catch (ClassCastException ex) |
5865 |
12 Mar 20 |
nicklas |
87 |
{} |
5865 |
12 Mar 20 |
nicklas |
88 |
return bs; |
5865 |
12 Mar 20 |
nicklas |
89 |
} |
5865 |
12 Mar 20 |
nicklas |
90 |
|
5865 |
12 Mar 20 |
nicklas |
91 |
private final String id; |
5865 |
12 Mar 20 |
nicklas |
92 |
private final String name; |
5865 |
12 Mar 20 |
nicklas |
93 |
|
5865 |
12 Mar 20 |
nicklas |
94 |
private BarcodeSet(String id, String name) |
5865 |
12 Mar 20 |
nicklas |
95 |
{ |
5865 |
12 Mar 20 |
nicklas |
96 |
this.id = id; |
5865 |
12 Mar 20 |
nicklas |
97 |
this.name = name; |
5865 |
12 Mar 20 |
nicklas |
98 |
} |
5865 |
12 Mar 20 |
nicklas |
99 |
|
5865 |
12 Mar 20 |
nicklas |
100 |
public String getId() |
5865 |
12 Mar 20 |
nicklas |
101 |
{ |
5865 |
12 Mar 20 |
nicklas |
102 |
return id; |
5865 |
12 Mar 20 |
nicklas |
103 |
} |
5865 |
12 Mar 20 |
nicklas |
104 |
|
5865 |
12 Mar 20 |
nicklas |
105 |
public String getName() |
5865 |
12 Mar 20 |
nicklas |
106 |
{ |
5865 |
12 Mar 20 |
nicklas |
107 |
return name; |
5865 |
12 Mar 20 |
nicklas |
108 |
} |
5865 |
12 Mar 20 |
nicklas |
109 |
|
5865 |
12 Mar 20 |
nicklas |
110 |
/** |
5865 |
12 Mar 20 |
nicklas |
Add a filter to the given query to only return items that |
5865 |
12 Mar 20 |
nicklas |
has been annotated as belonging to this barcode set. |
5865 |
12 Mar 20 |
nicklas |
113 |
*/ |
5865 |
12 Mar 20 |
nicklas |
114 |
public void addFilter(DbControl dc, ItemQuery<Tag> query) |
5865 |
12 Mar 20 |
nicklas |
115 |
{ |
5865 |
12 Mar 20 |
nicklas |
116 |
query.join(Annotations.innerJoin(Annotationtype.BARCODE_SET.load(dc), "bs")); |
5865 |
12 Mar 20 |
nicklas |
117 |
query.restrict(Restrictions.eq(Hql.alias("bs"), Expressions.string(getName()))); |
5865 |
12 Mar 20 |
nicklas |
118 |
} |
5865 |
12 Mar 20 |
nicklas |
119 |
|
5865 |
12 Mar 20 |
nicklas |
120 |
|
5865 |
12 Mar 20 |
nicklas |
121 |
/** |
5865 |
12 Mar 20 |
nicklas |
Get the information as a JSON object ready to be sent as an AJAX response. |
5865 |
12 Mar 20 |
nicklas |
123 |
*/ |
5865 |
12 Mar 20 |
nicklas |
124 |
public JSONObject asJSONObject() |
5865 |
12 Mar 20 |
nicklas |
125 |
{ |
5865 |
12 Mar 20 |
nicklas |
126 |
JSONObject json = new JSONObject(); |
5865 |
12 Mar 20 |
nicklas |
127 |
json.put("id", getId()); |
5865 |
12 Mar 20 |
nicklas |
128 |
json.put("name", getName()); |
5865 |
12 Mar 20 |
nicklas |
129 |
return json; |
5865 |
12 Mar 20 |
nicklas |
130 |
} |
5865 |
12 Mar 20 |
nicklas |
131 |
|
5865 |
12 Mar 20 |
nicklas |
132 |
} |