summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/data/type/VectorFieldTypeInformation.java
diff options
context:
space:
mode:
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.java76
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());