2933 |
14 Nov 14 |
olle |
1 |
package net.sf.basedb.meludi; |
2933 |
14 Nov 14 |
olle |
2 |
|
2933 |
14 Nov 14 |
olle |
3 |
import java.util.ArrayList; |
2933 |
14 Nov 14 |
olle |
4 |
import java.util.Collection; |
2933 |
14 Nov 14 |
olle |
5 |
import java.util.Collections; |
2933 |
14 Nov 14 |
olle |
6 |
import java.util.Comparator; |
2933 |
14 Nov 14 |
olle |
7 |
import java.util.HashMap; |
2933 |
14 Nov 14 |
olle |
8 |
import java.util.List; |
2933 |
14 Nov 14 |
olle |
9 |
import java.util.Map; |
2933 |
14 Nov 14 |
olle |
10 |
|
2933 |
14 Nov 14 |
olle |
11 |
import org.json.simple.JSONObject; |
2933 |
14 Nov 14 |
olle |
12 |
|
2933 |
14 Nov 14 |
olle |
13 |
/** |
2933 |
14 Nov 14 |
olle |
Information about the various sites that are participating. |
2933 |
14 Nov 14 |
olle |
@author olle |
2933 |
14 Nov 14 |
olle |
@since 1.0 |
2933 |
14 Nov 14 |
olle |
17 |
*/ |
2933 |
14 Nov 14 |
olle |
18 |
public class Site |
2933 |
14 Nov 14 |
olle |
19 |
{ |
2933 |
14 Nov 14 |
olle |
// Store all sites by prefix |
2933 |
14 Nov 14 |
olle |
21 |
private static final Map<String, Site> sites = new HashMap<String, Site>(); |
2933 |
14 Nov 14 |
olle |
22 |
|
3028 |
11 Dec 14 |
olle |
23 |
public static final Site HELSINGBORG = new Site("Helsingborg", "Helsingborg", "2014-01-01", true); |
3028 |
11 Dec 14 |
olle |
24 |
public static final Site KARLSKRONA = new Site("Karlskrona", "Karlskrona", "2014-01-01", true); |
3028 |
11 Dec 14 |
olle |
25 |
public static final Site KRISTIANSTAD = new Site("Kristianstad", "Kristianstad", "2014-01-01", true); |
3028 |
11 Dec 14 |
olle |
26 |
public static final Site LUND = new Site("Lund", "Lund", "2014-01-01", true); |
3028 |
11 Dec 14 |
olle |
27 |
public static final Site MALMO = new Site("Malmo", "Malmö", "2014-01-01", true); |
3408 |
17 Jun 15 |
olle |
28 |
public static final Site TRELLEBORG = new Site("Trelleborg", "Trelleborg", "2015-06-16", true); |
3028 |
11 Dec 14 |
olle |
29 |
public static final Site VAXJO = new Site("Vaxjo", "Växjö", "2014-01-01", true); |
3028 |
11 Dec 14 |
olle |
30 |
public static final Site LINKOPING = new Site("Linkoping", "Linköping", "2014-01-01", false); |
4231 |
10 Nov 16 |
olle |
31 |
public static final Site UMEA = new Site("Umea", "Umeå", "2016-06-01", false); |
4231 |
10 Nov 16 |
olle |
32 |
public static final Site UPPSALA = new Site("Uppsala", "Uppsala", "2016-06-01", false); |
4725 |
29 Mar 18 |
olle |
33 |
public static final Site GOTEBORG = new Site("Goteborg", "Göteborg", "2016-06-01", false); |
4725 |
29 Mar 18 |
olle |
34 |
public static final Site STOCKHOLM = new Site("Stockholm", "Stockholm", "2016-06-01", false); |
4725 |
29 Mar 18 |
olle |
35 |
public static final Site HALMSTAD = new Site("Halmstad", "Halmstad", "2018-03-01", true); |
4725 |
29 Mar 18 |
olle |
36 |
public static final Site JONKOPING = new Site("Jonkoping", "Jönköping", "2018-03-01", false); |
2933 |
14 Nov 14 |
olle |
37 |
|
2966 |
20 Nov 14 |
olle |
38 |
public static final Site UNKNOWN = new Site(null, "Unknown", null, false); |
2966 |
20 Nov 14 |
olle |
39 |
public static final Site UNKNOWN_RPT = new Site("unknown", "Unknown", "2014-01-01", false); |
2933 |
14 Nov 14 |
olle |
40 |
|
2933 |
14 Nov 14 |
olle |
41 |
/** |
2933 |
14 Nov 14 |
olle |
Get all registered sites. |
2933 |
14 Nov 14 |
olle |
43 |
*/ |
2933 |
14 Nov 14 |
olle |
44 |
public static final Collection<Site> getAllSites() |
2933 |
14 Nov 14 |
olle |
45 |
{ |
2933 |
14 Nov 14 |
olle |
// Return all sites except Site.UNKNOWN_RPT, that is only intended for report purposes |
2933 |
14 Nov 14 |
olle |
47 |
List<Site> siteCollection = new ArrayList<Site>(); |
2933 |
14 Nov 14 |
olle |
48 |
for (Site site: Collections.unmodifiableCollection(sites.values())) |
2933 |
14 Nov 14 |
olle |
49 |
{ |
2933 |
14 Nov 14 |
olle |
50 |
if (site != Site.UNKNOWN_RPT) |
2933 |
14 Nov 14 |
olle |
51 |
{ |
2933 |
14 Nov 14 |
olle |
52 |
siteCollection.add(site); |
2933 |
14 Nov 14 |
olle |
53 |
} |
2933 |
14 Nov 14 |
olle |
54 |
} |
2933 |
14 Nov 14 |
olle |
55 |
return siteCollection; |
2933 |
14 Nov 14 |
olle |
56 |
} |
2933 |
14 Nov 14 |
olle |
57 |
|
2933 |
14 Nov 14 |
olle |
58 |
/** |
2933 |
14 Nov 14 |
olle |
Get all registered sites plus unknown site for report purposes. |
2933 |
14 Nov 14 |
olle |
60 |
*/ |
2933 |
14 Nov 14 |
olle |
61 |
public static final Collection<Site> getAllReportSites() |
2933 |
14 Nov 14 |
olle |
62 |
{ |
2933 |
14 Nov 14 |
olle |
// Return all sites including Site.UNKNOWN_RPT, that is only intended for report purposes |
2933 |
14 Nov 14 |
olle |
64 |
return Collections.unmodifiableCollection(sites.values()); |
2933 |
14 Nov 14 |
olle |
65 |
} |
2933 |
14 Nov 14 |
olle |
66 |
|
2933 |
14 Nov 14 |
olle |
67 |
public static final Comparator<Site> SORT_BY_NAME = new Comparator<Site>() |
2933 |
14 Nov 14 |
olle |
68 |
{ |
2933 |
14 Nov 14 |
olle |
69 |
@Override |
2933 |
14 Nov 14 |
olle |
70 |
public int compare(Site s1, Site s2) |
2933 |
14 Nov 14 |
olle |
71 |
{ |
2933 |
14 Nov 14 |
olle |
72 |
return s1.getName().compareTo(s2.getName()); |
2933 |
14 Nov 14 |
olle |
73 |
} |
2933 |
14 Nov 14 |
olle |
74 |
|
2933 |
14 Nov 14 |
olle |
75 |
}; |
2933 |
14 Nov 14 |
olle |
76 |
|
2933 |
14 Nov 14 |
olle |
77 |
/** |
2933 |
14 Nov 14 |
olle |
Find the site the given case name belongs to. Usually, the |
2933 |
14 Nov 14 |
olle |
first two characters in the case name is the site prefix. |
2933 |
14 Nov 14 |
olle |
If no site with the given prefix is found, {@link #UNKNOWN} is returned. |
2933 |
14 Nov 14 |
olle |
@return A Site object or UNKNOWN |
2933 |
14 Nov 14 |
olle |
82 |
*/ |
2933 |
14 Nov 14 |
olle |
83 |
public static Site findByCaseName(String caseName) |
2933 |
14 Nov 14 |
olle |
84 |
{ |
2933 |
14 Nov 14 |
olle |
85 |
Site s = sites.get(caseName.substring(0, 2)); |
2933 |
14 Nov 14 |
olle |
86 |
return s == null ? UNKNOWN : s; |
2933 |
14 Nov 14 |
olle |
87 |
} |
2933 |
14 Nov 14 |
olle |
88 |
|
2933 |
14 Nov 14 |
olle |
89 |
/** |
2933 |
14 Nov 14 |
olle |
Find the site for a given prefix. If no site with the |
2933 |
14 Nov 14 |
olle |
given prefix is found, {@link #UNKNOWN} is returned. |
2933 |
14 Nov 14 |
olle |
@return A Site object or UNKNOWN |
2933 |
14 Nov 14 |
olle |
93 |
*/ |
2933 |
14 Nov 14 |
olle |
94 |
public static Site findByPrefix(String prefix) |
2933 |
14 Nov 14 |
olle |
95 |
{ |
2933 |
14 Nov 14 |
olle |
96 |
Site s = sites.get(prefix); |
2933 |
14 Nov 14 |
olle |
97 |
return s == null ? UNKNOWN : s; |
2933 |
14 Nov 14 |
olle |
98 |
} |
2933 |
14 Nov 14 |
olle |
99 |
|
2933 |
14 Nov 14 |
olle |
100 |
private final String prefix; |
2933 |
14 Nov 14 |
olle |
101 |
private final String name; |
2933 |
14 Nov 14 |
olle |
102 |
private final String startDate; |
2933 |
14 Nov 14 |
olle |
103 |
private final boolean partOfRCC_syd; |
2933 |
14 Nov 14 |
olle |
104 |
private JSONObject json; |
2933 |
14 Nov 14 |
olle |
105 |
|
2966 |
20 Nov 14 |
olle |
106 |
private Site(String prefix, String name, String startDate, boolean partOfRCC_syd) |
2933 |
14 Nov 14 |
olle |
107 |
{ |
2933 |
14 Nov 14 |
olle |
108 |
this.prefix = prefix; |
2933 |
14 Nov 14 |
olle |
109 |
this.name = name; |
2933 |
14 Nov 14 |
olle |
110 |
this.startDate = startDate; |
2933 |
14 Nov 14 |
olle |
111 |
this.partOfRCC_syd = partOfRCC_syd; |
2933 |
14 Nov 14 |
olle |
112 |
if (prefix != null) sites.put(prefix, this); |
2933 |
14 Nov 14 |
olle |
113 |
} |
2933 |
14 Nov 14 |
olle |
114 |
|
2933 |
14 Nov 14 |
olle |
115 |
/** |
2933 |
14 Nov 14 |
olle |
Get the prefix for the site. |
2933 |
14 Nov 14 |
olle |
117 |
*/ |
2933 |
14 Nov 14 |
olle |
118 |
public String getPrefix() |
2933 |
14 Nov 14 |
olle |
119 |
{ |
2933 |
14 Nov 14 |
olle |
120 |
return prefix; |
2933 |
14 Nov 14 |
olle |
121 |
} |
2933 |
14 Nov 14 |
olle |
122 |
|
2933 |
14 Nov 14 |
olle |
123 |
/** |
2933 |
14 Nov 14 |
olle |
Get the full name of the site. |
2933 |
14 Nov 14 |
olle |
125 |
*/ |
2933 |
14 Nov 14 |
olle |
126 |
public String getName() |
2933 |
14 Nov 14 |
olle |
127 |
{ |
2933 |
14 Nov 14 |
olle |
128 |
return name; |
2933 |
14 Nov 14 |
olle |
129 |
} |
2933 |
14 Nov 14 |
olle |
130 |
|
2933 |
14 Nov 14 |
olle |
131 |
/** |
2933 |
14 Nov 14 |
olle |
Get the date the site joined the project. |
2933 |
14 Nov 14 |
olle |
133 |
*/ |
2933 |
14 Nov 14 |
olle |
134 |
public String getStartDate() |
2933 |
14 Nov 14 |
olle |
135 |
{ |
2933 |
14 Nov 14 |
olle |
136 |
return startDate; |
2933 |
14 Nov 14 |
olle |
137 |
} |
2933 |
14 Nov 14 |
olle |
138 |
|
2933 |
14 Nov 14 |
olle |
139 |
/** |
2933 |
14 Nov 14 |
olle |
Get flag indicating whether site belongs to "RCC syd" (Regionalt Cancercentrum syd) |
2933 |
14 Nov 14 |
olle |
141 |
*/ |
2933 |
14 Nov 14 |
olle |
142 |
public boolean isPartOfRCC_syd() |
2933 |
14 Nov 14 |
olle |
143 |
{ |
2933 |
14 Nov 14 |
olle |
144 |
return partOfRCC_syd; |
2933 |
14 Nov 14 |
olle |
145 |
} |
2933 |
14 Nov 14 |
olle |
146 |
|
2933 |
14 Nov 14 |
olle |
147 |
/** |
2933 |
14 Nov 14 |
olle |
Get the site information as a JSON object. |
2933 |
14 Nov 14 |
olle |
149 |
*/ |
2933 |
14 Nov 14 |
olle |
150 |
@SuppressWarnings("unchecked") |
2933 |
14 Nov 14 |
olle |
151 |
public JSONObject asJSONObject() |
2933 |
14 Nov 14 |
olle |
152 |
{ |
2933 |
14 Nov 14 |
olle |
153 |
if (json == null) |
2933 |
14 Nov 14 |
olle |
154 |
{ |
2933 |
14 Nov 14 |
olle |
155 |
json = new JSONObject(); |
2933 |
14 Nov 14 |
olle |
156 |
json.put("prefix", getPrefix()); |
2933 |
14 Nov 14 |
olle |
157 |
json.put("name", getName()); |
2933 |
14 Nov 14 |
olle |
158 |
json.put("startDate", getStartDate()); |
2933 |
14 Nov 14 |
olle |
159 |
} |
2933 |
14 Nov 14 |
olle |
160 |
return json; |
2933 |
14 Nov 14 |
olle |
161 |
} |
2933 |
14 Nov 14 |
olle |
162 |
} |