/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.datamodel.internal; import de.rcenvironment.core.datamodel.api.TypedDatum; import de.rcenvironment.core.datamodel.api.TypedDatumFactory; import de.rcenvironment.core.datamodel.types.api.BooleanTD; import de.rcenvironment.core.datamodel.types.api.DateTimeTD; import de.rcenvironment.core.datamodel.types.api.DirectoryReferenceTD; import de.rcenvironment.core.datamodel.types.api.EmptyTD; import de.rcenvironment.core.datamodel.types.api.FileReferenceTD; import de.rcenvironment.core.datamodel.types.api.FloatTD; import de.rcenvironment.core.datamodel.types.api.NotAValueTD; import de.rcenvironment.core.datamodel.types.api.NotAValueTD.Cause; import de.rcenvironment.core.datamodel.types.api.IntegerTD; import de.rcenvironment.core.datamodel.types.api.MatrixTD; import de.rcenvironment.core.datamodel.types.api.ShortTextTD; import de.rcenvironment.core.datamodel.types.api.SmallTableTD; import de.rcenvironment.core.datamodel.types.api.VectorTD; import de.rcenvironment.core.datamodel.types.internal.BooleanTDImpl; import de.rcenvironment.core.datamodel.types.internal.DateTimeTDImpl; import de.rcenvironment.core.datamodel.types.internal.DirectoryReferenceTDImpl; import de.rcenvironment.core.datamodel.types.internal.EmptyTDImpl; import de.rcenvironment.core.datamodel.types.internal.FileReferenceTDImpl; import de.rcenvironment.core.datamodel.types.internal.FloatTDImpl; import de.rcenvironment.core.datamodel.types.internal.NotAValueTDImpl; import de.rcenvironment.core.datamodel.types.internal.IntegerTDImpl; import de.rcenvironment.core.datamodel.types.internal.MatrixTDImpl; import de.rcenvironment.core.datamodel.types.internal.ShortTextTDImpl; import de.rcenvironment.core.datamodel.types.internal.SmallTableTDImpl; import de.rcenvironment.core.datamodel.types.internal.VectorTDImpl; /** * Default {@link TypedDatumFactory} implementation. * * @author Robert Mischke * @author Sascha Zur * @author Doreen Seider */ public class DefaultTypedDatumFactory implements TypedDatumFactory { @Override public BooleanTD createBoolean(boolean value) { return new BooleanTDImpl(value); } @Override public IntegerTD createInteger(long value) { return new IntegerTDImpl(value); } @Override public FloatTD createFloat(double value) { return new FloatTDImpl(value); } @Override public ShortTextTD createShortText(String value) { return new ShortTextTDImpl(value); } @Override public VectorTD createVector(int dimension) { if (dimension < 0) { throw new IllegalArgumentException("dimension must greater than 0"); } FloatTD[] values = new FloatTD[dimension]; for (int i = 0; i < dimension; i++) { values[i] = createFloat(0.0); } return new VectorTDImpl(values); } @Override public VectorTD createVector(FloatTD[] values) { if (values == null) { throw new NullPointerException(); } return new VectorTDImpl(values); } @Override public MatrixTD createMatrix(int rows, int columns) { if (rows < 0 || columns < 0) { throw new IllegalArgumentException("rows and columms must greater than 0"); } FloatTD[][] values = new FloatTD[rows][columns]; for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { values[i][j] = createFloat(0.0); } } return new MatrixTDImpl(values); } @Override public MatrixTD createMatrix(FloatTD[][] values) { if (values == null) { throw new NullPointerException(); } return new MatrixTDImpl(values); } @Override public SmallTableTD createSmallTable(int rows, int columns) { if (rows < 0 || columns < 0) { throw new IllegalArgumentException("rows and columms must greater than 0"); } TypedDatum[][] tableEntries = new TypedDatum[rows][columns]; for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { tableEntries[i][j] = new EmptyTDImpl(); } } return new SmallTableTDImpl(tableEntries); } @Override public SmallTableTD createSmallTable(TypedDatum[][] tableEntries) { if (tableEntries == null) { throw new NullPointerException(); } return new SmallTableTDImpl(tableEntries); } @Override public DateTimeTD createDateTime(long dataTime) { return new DateTimeTDImpl(dataTime); } @Override public FileReferenceTD createFileReference(String reference, String fileName) { if (reference == null || fileName == null) { throw new NullPointerException(); } return new FileReferenceTDImpl(reference, fileName); } @Override public EmptyTD createEmpty() { return new EmptyTDImpl(); } @Override public NotAValueTD createNotAValue() { return new NotAValueTDImpl(Cause.InvalidInputs); } @Override public NotAValueTD createNotAValue(String identifier) { return new NotAValueTDImpl(identifier, Cause.InvalidInputs); } @Override public NotAValueTD createNotAValue(NotAValueTD.Cause cause) { return new NotAValueTDImpl(cause); } @Override public NotAValueTD createNotAValue(String identifier, NotAValueTD.Cause cause) { return new NotAValueTDImpl(identifier, cause); } @Override public DirectoryReferenceTD createDirectoryReference(String reference, String dirName) { if (reference == null || dirName == null) { throw new NullPointerException(); } return new DirectoryReferenceTDImpl(reference, dirName); } }