JAL-3066 Working custom parameters for clustalo
[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.RadioChoiceParameter;
9 import jalview.ws.params.simple.StringParameter;
10
11 import java.io.IOException;
12 import java.util.ArrayList;
13 import java.util.List;
14
15 import uk.ac.dundee.compbio.slivkaclient.BooleanField;
16 import uk.ac.dundee.compbio.slivkaclient.ChoiceField;
17 import uk.ac.dundee.compbio.slivkaclient.DecimalField;
18 import uk.ac.dundee.compbio.slivkaclient.Form;
19 import uk.ac.dundee.compbio.slivkaclient.FormField;
20 import uk.ac.dundee.compbio.slivkaclient.IntegerField;
21 import uk.ac.dundee.compbio.slivkaclient.Service;
22 import uk.ac.dundee.compbio.slivkaclient.TextField;
23
24
25
26 public class SlivkaParamSet implements WsParamSetI
27 {
28   private Service service;
29   private List<ArgumentI> args = new ArrayList<>();
30
31   SlivkaParamSet(Service service) throws IOException {
32     this.service = service;
33     Form form = service.getForm();
34     for (FormField field : form.getFields())
35     {
36       ArgumentI arg;
37       switch (field.getType()) {
38       case BOOLEAN:
39         BooleanField boolField = (BooleanField) field;
40         arg = new BooleanOption(
41             field.getName(), field.getDescription(), field.isRequired(), boolField.getDefault(),
42             boolField.getDefault(), null
43         );
44         break;
45       case TEXT:
46         TextField textField = (TextField) field;
47         arg = new StringParameter(
48             field.getName(), field.getDescription(), field.isRequired(), textField.getDefault(),
49             textField.getDefault()
50         );
51         break;
52       case INTEGER:
53         IntegerField intField = (IntegerField) field;
54         arg = new IntegerParameter(
55             field.getName(), field.getDescription(), field.isRequired(), intField.getDefault(),
56             intField.getMin(), intField.getMax()
57         );
58         break;
59       case DECIMAL:
60         DecimalField doubleField = (DecimalField) field;
61         arg = new DoubleParameter(
62             field.getName(), field.getDescription(), field.isRequired(), doubleField.getDefault(),
63             doubleField.getMin(), doubleField.getMax()
64         );
65         break;
66       case CHOICE:
67         ChoiceField choiceField = (ChoiceField) field;
68         arg = new RadioChoiceParameter(
69             field.getName(), field.getDescription(), new ArrayList<>(choiceField.getChoices()), choiceField.getDefault()
70         );
71         break;
72       case FILE:
73       default:
74         continue;
75       }
76       args.add(arg);
77     }
78   }
79
80   @Override
81   public String getName()
82   {
83     return "Default";
84   }
85
86   @Override
87   public String getDescription()
88   {
89     return "";
90   }
91
92   @Override
93   public String[] getApplicableUrls()
94   {
95     return new String[] { service.getURL().toString() };
96   }
97
98   @Override
99   public String getSourceFile()
100   {
101     return null;
102   }
103
104   @Override
105   public void setSourceFile(String newfile)
106   {
107   }
108
109   @Override
110   public boolean isModifiable()
111   {
112     return true;
113   }
114
115   @Override
116   public List<ArgumentI> getArguments()
117   {
118     return args;
119   }
120
121   @Override
122   public void setArguments(List<ArgumentI> args)
123   {
124     throw new RuntimeException();
125   }
126
127 }