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                return ds;
101        }
102
103        /**
104         * @param shape
105         * @return a dataset filled with ones
106         */
107        static StringDataset ones(final int... shape) {
108                throw new UnsupportedOperationException("Unsupported method for class");
109        }
110
111        @Override
112        public boolean getElementBooleanAbs(int index) {
113                throw new UnsupportedOperationException("Unsupported method for class");
114        }
115
116        @Override
117        public double getElementDoubleAbs(int index) {
118                throw new UnsupportedOperationException("Unsupported method for class");
119        }
120
121        @Override
122        public long getElementLongAbs(int index) {
123                throw new UnsupportedOperationException("Unsupported method for class");
124        }
125
126        @Override
127        public double getDouble() {
128                throw new UnsupportedOperationException("Unsupported method for class");
129        }
130
131        @Override
132        public double getDouble(int i) {
133                throw new UnsupportedOperationException("Unsupported method for class");
134        }
135
136        @Override
137        public double getDouble(int i, int j) {
138                throw new UnsupportedOperationException("Unsupported method for class");
139        }
140
141        @Override
142        public double getDouble(int... pos) {
143                throw new UnsupportedOperationException("Unsupported method for class");
144        }
145
146        @Override
147        public float getFloat() {
148                throw new UnsupportedOperationException("Unsupported method for class");
149        }
150
151        @Override
152        public float getFloat(int i) {
153                throw new UnsupportedOperationException("Unsupported method for class");
154        }
155
156        @Override
157        public float getFloat(int i, int j) {
158                throw new UnsupportedOperationException("Unsupported method for class");
159        }
160
161        @Override
162        public float getFloat(int... pos) {
163                throw new UnsupportedOperationException("Unsupported method for class");
164        }
165
166        @Override
167        public long getLong() {
168                throw new UnsupportedOperationException("Unsupported method for class");
169        }
170
171        @Override
172        public long getLong(int i) {
173                throw new UnsupportedOperationException("Unsupported method for class");
174        }
175
176        @Override
177        public long getLong(int i, int j) {
178                throw new UnsupportedOperationException("Unsupported method for class");
179        }
180
181        @Override
182        public long getLong(int... pos) {
183                throw new UnsupportedOperationException("Unsupported method for class");
184        }
185
186        @Override
187        public int getInt(int i) {
188                throw new UnsupportedOperationException("Unsupported method for class");
189        }
190
191        @Override
192        public int getInt(int i, int j) {
193                throw new UnsupportedOperationException("Unsupported method for class");
194        }
195
196        @Override
197        public int getInt(int... pos) {
198                throw new UnsupportedOperationException("Unsupported method for class");
199        }
200
201        @Override
202        public short getShort() {
203                throw new UnsupportedOperationException("Unsupported method for class");
204        }
205
206        @Override
207        public short getShort(int i) {
208                throw new UnsupportedOperationException("Unsupported method for class");
209        }
210
211        @Override
212        public short getShort(int i, int j) {
213                throw new UnsupportedOperationException("Unsupported method for class");
214        }
215
216        @Override
217        public short getShort(int... pos) {
218                throw new UnsupportedOperationException("Unsupported method for class");
219        }
220
221        @Override
222        public byte getByte() {
223                throw new UnsupportedOperationException("Unsupported method for class");
224        }
225
226        @Override
227        public byte getByte(int i) {
228                throw new UnsupportedOperationException("Unsupported method for class");
229        }
230
231        @Override
232        public byte getByte(int i, int j) {
233                throw new UnsupportedOperationException("Unsupported method for class");
234        }
235
236        @Override
237        public byte getByte(int... pos) {
238                throw new UnsupportedOperationException("Unsupported method for class");
239        }
240
241        @Override
242        public boolean getBoolean() {
243                throw new UnsupportedOperationException("Unsupported method for class");
244        }
245
246        @Override
247        public boolean getBoolean(int i) {
248                throw new UnsupportedOperationException("Unsupported method for class");
249        }
250
251        @Override
252        public boolean getBoolean(int i, int j) {
253                throw new UnsupportedOperationException("Unsupported method for class");
254        }
255
256        @Override
257        public boolean getBoolean(int... pos) {
258                throw new UnsupportedOperationException("Unsupported method for class");
259        }
260
261        @Override
262        public String getStringAbs(final int index) {
263                return stringFormat instanceof MessageFormat ? stringFormat.format(data[index]) :
264                                String.format("%s", data[index]);
265        }
266
267        @Override
268        public boolean containsInfs() {
269                return false;
270        }
271
272        @Override
273        public boolean containsNans() {
274                return false;
275        }
276
277        @Override
278        public StringDataset iadd(Object o) {
279                throw new UnsupportedOperationException("Unsupported method for class");
280        }
281
282        @Override
283        public StringDataset isubtract(Object o) {
284                throw new UnsupportedOperationException("Unsupported method for class");
285        }
286
287        @Override
288        public StringDataset imultiply(Object o) {
289                throw new UnsupportedOperationException("Unsupported method for class");
290        }
291
292        @Override
293        public StringDataset idivide(Object o) {
294                throw new UnsupportedOperationException("Unsupported method for class");
295        }
296
297        @Override
298        public StringDataset iremainder(Object o) {
299                throw new UnsupportedOperationException("Unsupported method for class");
300        }
301
302        @Override
303        public StringDataset ifloor() {
304                throw new UnsupportedOperationException("Unsupported method for class");
305        }
306
307        @Override
308        public StringDataset ipower(Object o) {
309                throw new UnsupportedOperationException("Unsupported method for class");
310        }
311
312        @Override
313        public double residual(Object o) {
314                throw new UnsupportedOperationException("Unsupported method for class");
315        }
316}