Types: protect the ScilabList.toString() method to any null data
[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         /**
32          * Construct an empty Scilab list.
33          */
34         public ScilabList() {
35                 super();
36         }
37
38         /**
39          * Construct a list containing the elements of the specified collection, in
40          * the order that they are returned by the specified collection's iterator.
41          * 
42          * @param c
43          *                      the collection whose elements are to be placed into this list.
44          */
45         public ScilabList(Collection< ? extends ScilabType> c) {
46                 super(c);
47         }
48         
49         /**
50          * @return 1 when there is data on the list, 0 otherwise.
51          * @see org.scilab.modules.types.ScilabType#getHeight()
52          */
53         @Override
54         public int getHeight() {
55                 if (isEmpty()) {
56                         return 0;
57                 }
58                 return 1;
59         }
60
61         /**
62          * @return 1 when there is data on the list, 0 otherwise.
63          * @see org.scilab.modules.types.ScilabType#getWidth()
64          */
65         @Override
66         public int getWidth() {
67                 if (isEmpty()) {
68                         return 0;
69                 }
70                 return size();
71         }
72
73         /**
74          * Display the representation in the Scilab language of the type<br />
75          * Note that the representation can be copied/pasted straight into Scilab 
76      *
77          * @return the pretty-printed data 
78          * @see java.util.AbstractCollection#toString()
79          */
80         @Override
81         public String toString() {
82
83                 StringBuffer result = new StringBuffer();
84                 if (isEmpty()) {
85                         result.append("list()");
86                         return result.toString();
87                 }
88
89                 result.append("list(");
90                 for (int i = 0; i < size(); i++) {
91                         result.append(get(i));
92                         if (i != size() - 1) {
93                                 result.append(", ");
94                         }
95                 }
96                 result.append(")");
97
98                 return result.toString();
99         }
100 }