001/*-
002 *******************************************************************************
003 * Copyright (c) 2011, 2016 Diamond Light Source Ltd.
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the Eclipse Public License v1.0
006 * which accompanies this distribution, and is available at
007 * http://www.eclipse.org/legal/epl-v10.html
008 *
009 * Contributors:
010 *    Peter Chang - initial API and implementation and/or initial documentation
011 *******************************************************************************/
012
013package org.eclipse.january.dataset;
014
015import java.text.MessageFormat;
016
017/**
018 * Extend dataset for objects
019 */
020public class StringDataset extends StringDatasetBase {
021        // pin UID to base class
022        private static final long serialVersionUID = Dataset.serialVersionUID;
023
024        /**
025         * Create a null dataset
026         */
027        StringDataset() {
028                super();
029        }
030
031        /**
032         * Create a null-filled dataset of given shape
033         * @param shape
034         */
035        StringDataset(final int... shape) {
036                super(shape);
037        }
038
039        /**
040         * Create a dataset using given data
041         * @param data
042         * @param shape
043         *            (can be null to create 1D dataset)
044         */
045        StringDataset(final String[] data, int... shape) {
046                super(data, shape);
047        }
048
049        /**
050         * Copy a dataset
051         * @param dataset
052         */
053        StringDataset(final StringDataset dataset) {
054                super(dataset);
055        }
056
057        /**
058         * Cast a dataset to this class type
059         * @param dataset
060         */
061        StringDataset(final Dataset dataset) {
062                super(dataset);
063        }
064
065        @Override
066        public StringDataset getView(boolean deepCopyMetadata) {
067                StringDataset view = new StringDataset();
068                copyToView(this, view, true, deepCopyMetadata);
069                view.setData();
070                return view;
071        }
072
073        @Override
074        public StringDataset clone() {
075                return new StringDataset(this);
076        }
077
078        @Override
079        public StringDataset getSlice(SliceIterator siter) {
080                StringDatasetBase base = super.getSlice(siter);
081
082                StringDataset slice = new StringDataset();
083                copyToView(base, slice, false, false);
084                slice.setData();
085                return slice;
086        }
087
088        /**
089         * Create a dataset from an object which could be a Java list, array (of arrays...)
090         * or Number. Ragged sequences or arrays are padded with zeros.
091         * 
092         * @param obj
093         * @return dataset with contents given by input
094         */
095        static StringDataset createFromObject(final Object obj) {
096                StringDatasetBase result = StringDatasetBase.createFromObject(obj);
097                StringDataset ds = new StringDataset(result.data, result.shape);
098                if (result.shape.length == 0) {
099                        ds.setShape(result.shape); // special case of single item
100                }
101                return ds;
102        }
103
104        /**
105         * @param shape
106         * @return a dataset filled with ones
107         */
108        static StringDataset ones(final int... shape) {
109                throw new UnsupportedOperationException("Unsupported method for class");
110        }
111
112        @Override
113        public boolean getElementBooleanAbs(int index) {
114                throw new UnsupportedOperationException("Unsupported method for class");
115        }
116
117        @Override
118        public double getElementDoubleAbs(int index) {
119                throw new UnsupportedOperationException("Unsupported method for class");
120        }
121
122        @Override
123        public long getElementLongAbs(int index) {
124                throw new UnsupportedOperationException("Unsupported method for class");
125        }
126
127        @Override
128        public double getDouble() {
129                throw new UnsupportedOperationException("Unsupported method for class");
130        }
131
132        @Override
133        public double getDouble(int i) {
134                throw new UnsupportedOperationException("Unsupported method for class");
135        }
136
137        @Override
138        public double getDouble(int i, int j) {
139                throw new UnsupportedOperationException("Unsupported method for class");
140        }
141
142        @Override
143        public double getDouble(int... pos) {
144                throw new UnsupportedOperationException("Unsupported method for class");
145        }
146
147        @Override
148        public float getFloat() {
149                throw new UnsupportedOperationException("Unsupported method for class");
150        }
151
152        @Override
153        public float getFloat(int i) {
154                throw new UnsupportedOperationException("Unsupported method for class");
155        }
156
157        @Override
158        public float getFloat(int i, int j) {
159                throw new UnsupportedOperationException("Unsupported method for class");
160        }
161
162        @Override
163        public float getFloat(int... pos) {
164                throw new UnsupportedOperationException("Unsupported method for class");
165        }
166
167        @Override
168        public long getLong() {
169                throw new UnsupportedOperationException("Unsupported method for class");
170        }
171
172        @Override
173        public long getLong(int i) {
174                throw new UnsupportedOperationException("Unsupported method for class");
175        }
176
177        @Override
178        public long getLong(int i, int j) {
179                throw new UnsupportedOperationException("Unsupported method for class");
180        }
181
182        @Override
183        public long getLong(int... pos) {
184                throw new UnsupportedOperationException("Unsupported method for class");
185        }
186
187        @Override
188        public int getInt(int i) {
189                throw new UnsupportedOperationException("Unsupported method for class");
190        }
191
192        @Override
193        public int getInt(int i, int j) {
194                throw new UnsupportedOperationException("Unsupported method for class");
195        }
196
197        @Override
198        public int getInt(int... pos) {
199                throw new UnsupportedOperationException("Unsupported method for class");
200        }
201
202        @Override
203        public short getShort() {
204                throw new UnsupportedOperationException("Unsupported method for class");
205        }
206
207        @Override
208        public short getShort(int i) {
209                throw new UnsupportedOperationException("Unsupported method for class");
210        }
211
212        @Override
213        public short getShort(int i, int j) {
214                throw new UnsupportedOperationException("Unsupported method for class");
215        }
216
217        @Override
218        public short getShort(int... pos) {
219                throw new UnsupportedOperationException("Unsupported method for class");
220        }
221
222        @Override
223        public byte getByte() {
224                throw new UnsupportedOperationException("Unsupported method for class");
225        }
226
227        @Override
228        public byte getByte(int i) {
229                throw new UnsupportedOperationException("Unsupported method for class");
230        }
231
232        @Override
233        public byte getByte(int i, int j) {
234                throw new UnsupportedOperationException("Unsupported method for class");
235        }
236
237        @Override
238        public byte getByte(int... pos) {
239                throw new UnsupportedOperationException("Unsupported method for class");
240        }
241
242        @Override
243        public boolean getBoolean() {
244                throw new UnsupportedOperationException("Unsupported method for class");
245        }
246
247        @Override
248        public boolean getBoolean(int i) {
249                throw new UnsupportedOperationException("Unsupported method for class");
250        }
251
252        @Override
253        public boolean getBoolean(int i, int j) {
254                throw new UnsupportedOperationException("Unsupported method for class");
255        }
256
257        @Override
258        public boolean getBoolean(int... pos) {
259                throw new UnsupportedOperationException("Unsupported method for class");
260        }
261
262        @Override
263        public String getStringAbs(final int index) {
264                return stringFormat instanceof MessageFormat ? stringFormat.format(data[index]) :
265                                String.format("%s", data[index]);
266        }
267
268        @Override
269        public boolean containsInfs() {
270                return false;
271        }
272
273        @Override
274        public boolean containsNans() {
275                return false;
276        }
277
278        @Override
279        public StringDataset iadd(Object o) {
280                throw new UnsupportedOperationException("Unsupported method for class");
281        }
282
283        @Override
284        public StringDataset isubtract(Object o) {
285                throw new UnsupportedOperationException("Unsupported method for class");
286        }
287
288        @Override
289        public StringDataset imultiply(Object o) {
290                throw new UnsupportedOperationException("Unsupported method for class");
291        }
292
293        @Override
294        public StringDataset idivide(Object o) {
295                throw new UnsupportedOperationException("Unsupported method for class");
296        }
297
298        @Override
299        public StringDataset iremainder(Object o) {
300                throw new UnsupportedOperationException("Unsupported method for class");
301        }
302
303        @Override
304        public StringDataset ifloor() {
305                throw new UnsupportedOperationException("Unsupported method for class");
306        }
307
308        @Override
309        public StringDataset ipower(Object o) {
310                throw new UnsupportedOperationException("Unsupported method for class");
311        }
312
313        @Override
314        public double residual(Object o) {
315                throw new UnsupportedOperationException("Unsupported method for class");
316        }
317}