Update for web services stubs
[jabaws.git] / webservices / compbio / ws / server / Category.java
1 package compbio.ws.server;\r
2 \r
3 import java.util.HashSet;\r
4 import java.util.Set;\r
5 import java.util.TreeSet;\r
6 \r
7 import javax.xml.bind.annotation.XmlAccessType;\r
8 import javax.xml.bind.annotation.XmlAccessorType;\r
9 \r
10 import compbio.ws.client.Services;\r
11 \r
12 /**\r
13  * Class that splits {@link Services} to categories. Services themselves have no\r
14  * knowledge which category they belongs to.\r
15  * \r
16  * This class is responsible for initialization of all the categories (done\r
17  * statically) and holds the category names as constrains.\r
18  * \r
19  * \r
20  * @author pvtroshin\r
21  * @version 1.0 September 2011\r
22  */\r
23 @XmlAccessorType(XmlAccessType.FIELD)\r
24 public class Category {\r
25         /*\r
26          * TODO refactor initialization and constrains into separate classes if\r
27          * further complexity is expected.\r
28          */\r
29 \r
30         /**\r
31          * All of the Category names\r
32          */\r
33         public static final String CATEGORY_ALIGNMENT = "Alignment";\r
34         public static final String CATEGORY_DISORDER = "Protein Disorder";\r
35         public static final String CATEGORY_CONSERVATION = "Conservation";\r
36 \r
37         String name;\r
38         Set<Services> services;\r
39 \r
40         private Category(String name, Set<Services> services) {\r
41                 this.name = name;\r
42                 this.services = services;\r
43         }\r
44 \r
45         private Category() {\r
46                 // Default constructor for JAXB\r
47         }\r
48 \r
49         Set<Services> getServices() {\r
50                 return new TreeSet<Services>(services);\r
51         }\r
52 \r
53         public static Set<Category> getCategories() {\r
54                 return init();\r
55         }\r
56 \r
57         private static Set<Category> init() {\r
58                 Set<Services> align_services = new HashSet<Services>();\r
59                 align_services.add(Services.ClustalOWS);\r
60                 align_services.add(Services.ClustalWS);\r
61                 align_services.add(Services.MafftWS);\r
62                 align_services.add(Services.MuscleWS);\r
63                 align_services.add(Services.ProbconsWS);\r
64                 align_services.add(Services.TcoffeeWS);\r
65                 Category alignment = new Category(CATEGORY_ALIGNMENT, align_services);\r
66 \r
67                 Set<Services> disorder_services = new HashSet<Services>();\r
68                 align_services.add(Services.DisemblWS);\r
69                 align_services.add(Services.GlobPlotWS);\r
70                 align_services.add(Services.IUPredWS);\r
71                 align_services.add(Services.JronnWS);\r
72 \r
73                 Category disorder = new Category(CATEGORY_DISORDER, disorder_services);\r
74                 Set<Services> conservation_services = new HashSet<Services>();\r
75                 align_services.add(Services.AAConWS);\r
76 \r
77                 Category conservation = new Category(CATEGORY_CONSERVATION,\r
78                                 conservation_services);\r
79 \r
80                 Set<Category> categories = new HashSet<Category>();\r
81                 categories.add(alignment);\r
82                 categories.add(disorder);\r
83                 categories.add(conservation);\r
84 \r
85                 return categories;\r
86         }\r
87 }\r