e93a031aad7d4c5f3dd30b5b3916f68dae477104
[scilab.git] / scilab / modules / types / src / java / org / scilab / modules / types / scilabTypes / ScilabString.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.scilabTypes;
14
15 /**
16  * This class provides a wrapping on the Scilab String datatype
17  */
18 public class ScilabString implements ScilabType {
19
20         private String[][] data;
21
22         /**
23          * Default constructor
24          */
25     public ScilabString() {
26                 data = null;
27     }
28     
29     /**
30      * Constructor with data.
31      * 
32      * @param data the associated data.
33      */
34     public ScilabString(String[][] data) {
35                 this.data = data;
36     }
37     
38     /**
39      * Constructor with vector data.
40      * 
41      * @param data the column vector data 
42      */
43     public ScilabString(String[] data) {
44                 if (data == null || data.length == 0) {
45                         this.data = new String[1][1];
46                         this.data[0][0] = "";
47                 } else {
48                         this.data = new String[1][data.length];
49                         for (int i = 0; i < data.length; i++) {
50                                 this.data[0][i] = data[i];
51                         }
52                 }
53     }
54     
55     /**
56      * Constructor with a unique value
57      * 
58      * @param string the value
59      */
60     public ScilabString(String string) {
61                 if (string == null) {
62                         throw new IllegalArgumentException("string == null");
63                 }
64                 this.data = new String[1][1];
65                 this.data[0][0] = string;
66     }
67
68     /**
69      * Set the values.
70      * 
71      * @param data the values
72      */
73     public void setData(String[][] data) {
74                 this.data = data;
75     }
76
77     /**
78      * @return the associated values
79      */
80     public String[][] getData() {
81                 return data;
82     }
83     
84         /**
85          * @return the height of the data matrix
86          * @see org.scilab.modules.types.scilabTypes.ScilabType#getHeight()
87          */
88     public int getHeight() {
89                 if (data == null) {
90                         return 0;
91                 }
92                 return data.length;
93         }
94
95         /**
96          * @return the width of the data matrix
97          * @see org.scilab.modules.types.scilabTypes.ScilabType#getWidth()
98          */
99         public int getWidth() {
100                 if (data == null) {
101                         return 0;
102                 }
103                 return data[0].length;
104         }
105     
106         /**
107          * Check the emptiness of the associated data.
108          * @return true, if the associated data array is empty. 
109          */
110     public boolean isEmpty() {
111         return (data == null);
112     }
113     
114         /**
115          * @return a Scilab-like String representation of the data.
116          * @see java.lang.Object#toString()
117          */
118         public String toString() {
119                 StringBuffer result = new StringBuffer();
120                 if (isEmpty()) {
121                         result.append("[]");
122                         return result.toString();
123                 }
124
125                 result.append("[");
126                 for (int i = 0; i < getHeight(); ++i) {
127                         for (int j = 0; j < getWidth(); ++j) {
128
129                                 result.append('"');
130                                 result.append(getData()[i][j]);
131                                 result.append('"');
132                                 
133                                 if (j != getWidth() - 1) {
134                                         result.append(", ");
135                                 }
136                         }
137                         if (i != getHeight() - 1) {
138                                 result.append(" ; ");
139                         }
140                 }
141                 result.append("]");
142                 return result.toString();
143         }
144 }