7e81684d0a3ffdcf1f90d9f5e1853ec12b671f94
[jalview.git] / src / jalview / ws / slivkaws / SlivkaParamSet.java
1 package jalview.ws.slivkaws;
2
3 import jalview.ws.params.ArgumentI;
4 import jalview.ws.params.WsParamSetI;
5 import jalview.ws.params.simple.BooleanOption;
6 import jalview.ws.params.simple.DoubleParameter;
7 import jalview.ws.params.simple.IntegerParameter;
8 import jalview.ws.params.simple.StringParameter;
9
10 import java.io.IOException;
11 import java.util.ArrayList;
12 import java.util.List;
13
14 import uk.ac.dundee.compbio.slivkaclient.BooleanField;
15 import uk.ac.dundee.compbio.slivkaclient.ChoiceField;
16 import uk.ac.dundee.compbio.slivkaclient.DecimalField;
17 import uk.ac.dundee.compbio.slivkaclient.FormField;
18 import uk.ac.dundee.compbio.slivkaclient.IntegerField;
19 import uk.ac.dundee.compbio.slivkaclient.SlivkaForm;
20 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
21 import uk.ac.dundee.compbio.slivkaclient.TextField;
22
23
24
25 public class SlivkaParamSet implements WsParamSetI
26 {
27   private SlivkaService service;
28   private List<ArgumentI> args = new ArrayList<>();
29
30   SlivkaParamSet(SlivkaService service) throws IOException {
31     this.service = service;
32     SlivkaForm form = service.getForm();
33     for (FormField field : form.getFields())
34     {
35       switch (field.getType()) {
36       case BOOLEAN:
37         BooleanField boolField = (BooleanField) field;
38         args.add(new BooleanOption(
39             field.getName(), field.getDescription(), field.getLabel(),
40             field.isRequired(), boolField.getDefault(), null
41         ));
42         break;
43       case TEXT:
44         TextField textField = (TextField) field;
45         args.add(new StringParameter(
46             field.getName(), field.getDescription(), field.isRequired(),
47             textField.getDefault(), textField.getDefault()
48         ));
49         break;
50       case INTEGER:
51         IntegerField intField = (IntegerField) field;
52         args.add(new IntegerParameter(
53             field.getName(), field.getDescription(), field.isRequired(),
54             intField.getDefault(), intField.getMin(), intField.getMax()
55         ));
56         break;
57       case DECIMAL:
58         DecimalField doubleField = (DecimalField) field;
59         args.add(new DoubleParameter(
60             field.getName(), field.getDescription(), field.isRequired(),
61             doubleField.getDefault(), doubleField.getMin(),
62             doubleField.getMax()
63         ));
64         break;
65       case CHOICE:
66         ChoiceField choiceField = (ChoiceField) field;
67         List<String> choices = new ArrayList<>(choiceField.getChoices());
68         if (field.hasMultipleValues()) {
69           int counter = 0;
70           for (String choice : choices) {
71             args.add(new BooleanOption(
72                 String.format("%s$%d", field.getName(), counter++),
73                 field.getDescription(), choice, field.isRequired(),
74                 choice.equals(choiceField.getDefault()), choice,
75                 null
76             ));
77           }
78         }
79         else
80         {
81           args.add(new StringParameter(
82               field.getName(), field.getDescription(),
83               field.isRequired(), choiceField.getDefault(), choiceField.getDefault(),
84               choices, choices
85           ));
86         }
87         break;
88       case FILE:
89       default:
90         continue;
91       }
92     }
93   }
94
95   @Override
96   public String getName()
97   {
98     return "Default";
99   }
100
101   @Override
102   public String getDescription()
103   {
104     return "";
105   }
106
107   @Override
108   public String[] getApplicableUrls()
109   {
110     return new String[] { service.getURL().toString() };
111   }
112
113   @Override
114   public String getSourceFile()
115   {
116     return null;
117   }
118
119   @Override
120   public void setSourceFile(String newfile)
121   {
122   }
123
124   @Override
125   public boolean isModifiable()
126   {
127     return true;
128   }
129
130   @Override
131   public List<ArgumentI> getArguments()
132   {
133     return args;
134   }
135
136   @Override
137   public void setArguments(List<ArgumentI> args)
138   {
139     throw new RuntimeException();
140   }
141
142 }