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