extensions/net.sf.basedb.meludi/trunk/src/net/sf/basedb/meludi/Site.java

Code
Comments
Other
Rev Date Author Line
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 14   Information about the various sites that are participating.
2933 14 Nov 14 olle 15   @author olle
2933 14 Nov 14 olle 16   @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 20   // 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 42     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 46     // 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 59     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 63     // 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 78     Find the site the given case name belongs to. Usually, the
2933 14 Nov 14 olle 79     first two characters in the case name is the site prefix. 
2933 14 Nov 14 olle 80     If no site with the given prefix is found, {@link #UNKNOWN} is returned.
2933 14 Nov 14 olle 81     @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 90     Find the site for a given prefix. If no site with the
2933 14 Nov 14 olle 91     given prefix is found, {@link #UNKNOWN} is returned.
2933 14 Nov 14 olle 92     @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 116     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 124     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 132     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 140       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 148     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 }