Types: set the type field as a static final field
[scilab.git] / scilab / modules / types / src / java / org / scilab / modules / types / ScilabList.java
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
4  * 
5  *  This file must be used under the terms of the CeCILL.
6  *  This source file is licensed as described in the file COPYING, which
7  *  you should have received as part of this distribution.  The terms
8  *  are also available at
9  *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  * 
11  */
12
13 package org.scilab.modules.types;
14
15 import java.util.ArrayList;
16 import java.util.Collection;
17
18 /**
19  * This class provides a representation on the Scilab List datatype
20  * <br>
21  * Example:<br />
22  * <code>
23  * ScilabList data = new ScilabList();<br />
24  * data.add(new ScilabString("hello"));<br />
25  * data.add(new ScilabDouble(2));<br />
26  * </code>
27  * @see org.scilab.modules.javasci.Scilab
28  */
29 public class ScilabList extends ArrayList<ScilabType> implements ScilabType {
30         
31         private static final long serialVersionUID = 6884293176289980909L;
32         private static final ScilabTypeEnum type = ScilabTypeEnum.sci_list;
33
34         /**
35          * Construct an empty Scilab list.
36          */
37         public ScilabList() {
38                 super();
39         }
40
41         /**
42          * Construct a list containing the elements of the specified collection, in
43          * the order that they are returned by the specified collection's iterator.
44          * 
45          * @param c
46          *                      the collection whose elements are to be placed into this list.
47          */
48         public ScilabList(Collection< ? extends ScilabType> c) {
49                 super(c);
50         }
51         
52         /**
53          * @return 1 when there is data on the list, 0 otherwise.
54          * @see org.scilab.modules.types.ScilabType#getHeight()
55          */
56         @Override
57         public int getHeight() {
58                 if (isEmpty()) {
59                         return 0;
60                 }
61                 return 1;
62         }
63
64     /** 
65      * Return the type of Scilab 
66      * @return the type of Scilab
67      * @since 5.4.0
68      */
69     @Override
70         public ScilabTypeEnum getType() {
71         return type;
72     }
73
74         /**
75          * @return 1 when there is data on the list, 0 otherwise.
76          * @see org.scilab.modules.types.ScilabType#getWidth()
77          */
78         @Override
79         public int getWidth() {
80                 if (isEmpty()) {
81                         return 0;
82                 }
83                 return size();
84         }
85
86         /**
87          * Display the representation in the Scilab language of the type<br />
88          * Note that the representation can be copied/pasted straight into Scilab 
89      *
90          * @return the pretty-printed data 
91          * @see java.util.AbstractCollection#toString()
92          */
93         @Override
94         public String toString() {
95
96                 StringBuffer result = new StringBuffer();
97                 if (isEmpty()) {
98                         result.append("list()");
99                         return result.toString();
100                 }
101
102                 result.append("list(");
103                 for (int i = 0; i < size(); i++) {
104                         result.append(get(i));
105                         if (i != size() - 1) {
106                                 result.append(", ");
107                         }
108                 }
109                 result.append(")");
110
111                 return result.toString();
112         }
113 }