* Java mapping of Scilab data has now a new method called getType() which
[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 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     public ScilabTypeEnum getType() {
70         return type;
71     }
72
73         /**
74          * @return 1 when there is data on the list, 0 otherwise.
75          * @see org.scilab.modules.types.ScilabType#getWidth()
76          */
77         @Override
78         public int getWidth() {
79                 if (isEmpty()) {
80                         return 0;
81                 }
82                 return size();
83         }
84
85         /**
86          * Display the representation in the Scilab language of the type<br />
87          * Note that the representation can be copied/pasted straight into Scilab 
88      *
89          * @return the pretty-printed data 
90          * @see java.util.AbstractCollection#toString()
91          */
92         @Override
93         public String toString() {
94
95                 StringBuffer result = new StringBuffer();
96                 if (isEmpty()) {
97                         result.append("list()");
98                         return result.toString();
99                 }
100
101                 result.append("list(");
102                 for (int i = 0; i < size(); i++) {
103                         result.append(get(i));
104                         if (i != size() - 1) {
105                                 result.append(", ");
106                         }
107                 }
108                 result.append(")");
109
110                 return result.toString();
111         }
112 }