diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/data/type/VectorFieldTypeInformation.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/data/type/VectorFieldTypeInformation.java | 76 |
1 files changed, 27 insertions, 49 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/data/type/VectorFieldTypeInformation.java b/src/de/lmu/ifi/dbs/elki/data/type/VectorFieldTypeInformation.java index d05eed34..448cb147 100644 --- a/src/de/lmu/ifi/dbs/elki/data/type/VectorFieldTypeInformation.java +++ b/src/de/lmu/ifi/dbs/elki/data/type/VectorFieldTypeInformation.java @@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.data.type; This file is part of ELKI: Environment for Developing KDD-Applications Supported by Index-Structures - Copyright (C) 2013 + Copyright (C) 2014 Ludwig-Maximilians-Universität München Lehr- und Forschungseinheit für Datenbanksysteme ELKI Development Team @@ -24,7 +24,7 @@ package de.lmu.ifi.dbs.elki.data.type; */ import de.lmu.ifi.dbs.elki.data.FeatureVector; -import de.lmu.ifi.dbs.elki.persistent.ByteBufferSerializer; +import de.lmu.ifi.dbs.elki.utilities.io.ByteBufferSerializer; /** * Type information to specify that a type has a fixed dimensionality. @@ -35,9 +35,26 @@ import de.lmu.ifi.dbs.elki.persistent.ByteBufferSerializer; */ public class VectorFieldTypeInformation<V extends FeatureVector<?>> extends VectorTypeInformation<V> { /** - * Object factory for producing new instances. + * Constructor for a type request without dimensionality constraints. + * + * @param cls Class constraint + * @param <V> vector type + */ + public static <V extends FeatureVector<?>> VectorFieldTypeInformation<V> typeRequest(Class<? super V> cls) { + return new VectorFieldTypeInformation<>(cls, -1, Integer.MAX_VALUE); + } + + /** + * Constructor for a type request with dimensionality constraints. + * + * @param cls Class constraint + * @param mindim Minimum dimensionality + * @param maxdim Maximum dimensionality + * @param <V> vector type */ - private final FeatureVector.Factory<V, ?> factory; + public static <V extends FeatureVector<?>> VectorFieldTypeInformation<V> typeRequest(Class<? super V> cls, int mindim, int maxdim) { + return new VectorFieldTypeInformation<>(cls, mindim, maxdim); + } /** * Labels. @@ -53,8 +70,7 @@ public class VectorFieldTypeInformation<V extends FeatureVector<?>> extends Vect * @param serializer Serializer */ public VectorFieldTypeInformation(FeatureVector.Factory<V, ?> factory, int dim, String[] labels, ByteBufferSerializer<? super V> serializer) { - super(factory.getRestrictionClass(), serializer, dim, dim); - this.factory = factory; + super(factory, serializer, dim, dim); this.labels = labels; assert (labels == null || labels.length == dim) : "Created vector field with incomplete labels."; } @@ -68,8 +84,7 @@ public class VectorFieldTypeInformation<V extends FeatureVector<?>> extends Vect * @param serializer Serializer */ public VectorFieldTypeInformation(FeatureVector.Factory<V, ?> factory, int mindim, int maxdim, ByteBufferSerializer<? super V> serializer) { - super(factory.getRestrictionClass(), serializer, mindim, maxdim); - this.factory = factory; + super(factory, serializer, mindim, maxdim); } /** @@ -80,8 +95,7 @@ public class VectorFieldTypeInformation<V extends FeatureVector<?>> extends Vect * @param serializer Serializer */ public VectorFieldTypeInformation(FeatureVector.Factory<V, ?> factory, int dim, ByteBufferSerializer<? super V> serializer) { - super(factory.getRestrictionClass(), serializer, dim, dim); - this.factory = factory; + super(factory, serializer, dim, dim); } /** @@ -92,8 +106,7 @@ public class VectorFieldTypeInformation<V extends FeatureVector<?>> extends Vect * @param labels Labels */ public VectorFieldTypeInformation(FeatureVector.Factory<V, ?> factory, int dim, String[] labels) { - super(factory.getRestrictionClass(), factory.getDefaultSerializer(), dim, dim); - this.factory = factory; + super(factory, factory.getDefaultSerializer(), dim, dim); this.labels = labels; assert (labels == null || labels.length == dim) : "Created vector field with incomplete labels."; } @@ -105,9 +118,8 @@ public class VectorFieldTypeInformation<V extends FeatureVector<?>> extends Vect * @param mindim Minimum dimensionality request * @param maxdim Maximum dimensionality request */ - public VectorFieldTypeInformation(Class<? super V> cls, int mindim, int maxdim) { + private VectorFieldTypeInformation(Class<? super V> cls, int mindim, int maxdim) { super(cls, mindim, maxdim); - this.factory = null; } /** @@ -117,29 +129,7 @@ public class VectorFieldTypeInformation<V extends FeatureVector<?>> extends Vect * @param dim Dimensionality */ public VectorFieldTypeInformation(FeatureVector.Factory<V, ?> factory, int dim) { - super(factory.getRestrictionClass(), factory.getDefaultSerializer(), dim, dim); - this.factory = factory; - } - - /** - * Constructor for a request with fixed dimensionality. - * - * @param cls Vector restriction class. - * @param dim Dimensionality request - */ - public VectorFieldTypeInformation(Class<? super V> cls, int dim) { - super(cls, dim, dim); - this.factory = null; - } - - /** - * Constructor for a request without fixed dimensionality. - * - * @param cls Vector restriction class. - */ - public VectorFieldTypeInformation(Class<? super V> cls) { - super(cls); - this.factory = null; + super(factory, factory.getDefaultSerializer(), dim, dim); } @Override @@ -168,18 +158,6 @@ public class VectorFieldTypeInformation<V extends FeatureVector<?>> extends Vect return mindim; } - /** - * Get the object type factory. - * - * @return the factory - */ - public FeatureVector.Factory<V, ?> getFactory() { - if (factory == null) { - throw new UnsupportedOperationException("Requesting factory for a type request!"); - } - return factory; - } - @Override public String toString() { StringBuilder buf = new StringBuilder(getRestrictionClass().getSimpleName()); |