JAL-3878 Make BaseJob setters public so they can be accessed by other tasks.
[jalview.git] / src / jalview / ws2 / params / ArgumentBeanList.java
1 package jalview.ws2.params;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.List;
6
7 import javax.xml.bind.annotation.XmlElement;
8 import javax.xml.bind.annotation.XmlRootElement;
9
10 import jalview.ws.params.ArgumentI;
11
12 /**
13  * A wrapper of {@link ArgumentBean} list that can be marshaled or unmarshalled.
14  * Used by {@link SimpleParamDatastore} to read and store parameters in a file.
15  * 
16  * @see ArgumentBean
17  * @see SimpleParamDatastore
18  * @author mmwarowny
19  */
20 @XmlRootElement(name = "arguments")
21 class ArgumentBeanList
22 {
23   @XmlElement(name = "argument")
24   public List<ArgumentBean> arguments = Collections.emptyList();
25
26   ArgumentBeanList()
27   {
28   }
29
30   ArgumentBeanList(List<ArgumentBean> arguments)
31   {
32     this.arguments = arguments;
33   }
34
35   static ArgumentBeanList fromList(List<? extends ArgumentI> list)
36   {
37     var args = new ArrayList<ArgumentBean>();
38     for (var item : list)
39       args.add(item instanceof ArgumentBean ? (ArgumentBean) item : new ArgumentBean(item));
40     return new ArgumentBeanList(args);
41   }
42
43   @Override
44   public String toString()
45   {
46     var elements = new String[arguments.size()];
47     for (int i = 0; i < arguments.size(); i++)
48       elements[i] = arguments.toString();
49     return "[" + String.join(", ", elements) + "]";
50   }
51 }