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.java150
1 files changed, 53 insertions, 97 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 9e6c2470..7de2a121 100644
--- a/src/de/lmu/ifi/dbs/elki/data/type/VectorFieldTypeInformation.java
+++ b/src/de/lmu/ifi/dbs/elki/data/type/VectorFieldTypeInformation.java
@@ -33,94 +33,68 @@ import de.lmu.ifi.dbs.elki.persistent.ByteBufferSerializer;
*
* @param <V> Vector type
*/
-public class VectorFieldTypeInformation<V extends FeatureVector<?, ?>> extends VectorTypeInformation<V> {
+public class VectorFieldTypeInformation<V extends FeatureVector<?>> extends VectorTypeInformation<V> {
/**
- * Object factory for producing new instances
+ * Object factory for producing new instances.
*/
- private final V factory;
+ private final FeatureVector.Factory<V, ?> factory;
/**
- * Labels
+ * Labels.
*/
private String[] labels = null;
/**
* Constructor with given dimensionality and factory, so usually an instance.
*
- * @param cls Restriction java class
- * @param serializer Serializer
+ * @param factory Factory class
* @param dim Dimensionality
* @param labels Labels
- * @param factory Factory class
+ * @param serializer Serializer
*/
- public VectorFieldTypeInformation(Class<? super V> cls, ByteBufferSerializer<? super V> serializer, int dim, String[] labels, V factory) {
- super(cls, serializer, dim, dim);
- this.labels = labels;
+ public VectorFieldTypeInformation(FeatureVector.Factory<V, ?> factory, int dim, String[] labels, ByteBufferSerializer<? super V> serializer) {
+ super(factory.getRestrictionClass(), serializer, dim, dim);
this.factory = factory;
+ this.labels = labels;
assert (labels == null || labels.length == dim) : "Created vector field with incomplete labels.";
}
/**
- * Constructor for a request with minimum and maximum dimensionality.
- *
- * @param cls Vector restriction class.
- * @param serializer Serializer
- * @param mindim Minimum dimensionality request
- * @param maxdim Maximum dimensionality request
- */
- public VectorFieldTypeInformation(Class<? super V> cls, ByteBufferSerializer<? super V> serializer, int mindim, int maxdim) {
- super(cls, serializer, mindim, maxdim);
- this.factory = null;
- }
-
- /**
* Constructor with given dimensionality and factory, so usually an instance.
*
- * @param cls Restriction java class
- * @param serializer Serializer
- * @param dim Dimensionality
* @param factory Factory class
- */
- public VectorFieldTypeInformation(Class<? super V> cls, ByteBufferSerializer<? super V> serializer, int dim, V factory) {
- super(cls, serializer, dim, dim);
- this.factory = factory;
- }
-
- /**
- * Constructor for a request with fixed dimensionality.
- *
- * @param cls Vector restriction class.
+ * @param mindim Minimum dimensionality
+ * @param maxdim Maximum dimensionality
* @param serializer Serializer
- * @param dim Dimensionality request
*/
- public VectorFieldTypeInformation(Class<? super V> cls, ByteBufferSerializer<? super V> serializer, int dim) {
- super(cls, serializer, dim, dim);
- this.factory = null;
+ public VectorFieldTypeInformation(FeatureVector.Factory<V, ?> factory, int mindim, int maxdim, ByteBufferSerializer<? super V> serializer) {
+ super(factory.getRestrictionClass(), serializer, mindim, maxdim);
+ this.factory = factory;
}
/**
- * Constructor for a request without fixed dimensionality.
+ * Constructor with given dimensionality and factory, so usually an instance.
*
- * @param cls Vector restriction class.
+ * @param factory Factory class
+ * @param dim Dimensionality
* @param serializer Serializer
*/
- public VectorFieldTypeInformation(Class<? super V> cls, ByteBufferSerializer<? super V> serializer) {
- super(cls, serializer);
- this.factory = null;
+ public VectorFieldTypeInformation(FeatureVector.Factory<V, ?> factory, int dim, ByteBufferSerializer<? super V> serializer) {
+ super(factory.getRestrictionClass(), serializer, dim, dim);
+ this.factory = factory;
}
/**
* Constructor with given dimensionality and factory, so usually an instance.
*
- * @param cls Restriction java class
+ * @param factory Factory class
* @param dim Dimensionality
* @param labels Labels
- * @param factory Factory class
*/
- public VectorFieldTypeInformation(Class<? super V> cls, int dim, String[] labels, V factory) {
- super(cls, dim, dim);
- this.labels = labels;
+ public VectorFieldTypeInformation(FeatureVector.Factory<V, ?> factory, int dim, String[] labels) {
+ super(factory.getRestrictionClass(), factory.getDefaultSerializer(), dim, dim);
this.factory = factory;
+ this.labels = labels;
assert (labels == null || labels.length == dim) : "Created vector field with incomplete labels.";
}
@@ -139,12 +113,11 @@ public class VectorFieldTypeInformation<V extends FeatureVector<?, ?>> extends V
/**
* Constructor with given dimensionality and factory, so usually an instance.
*
- * @param cls Restriction java class
- * @param dim Dimensionality
* @param factory Factory class
+ * @param dim Dimensionality
*/
- public VectorFieldTypeInformation(Class<? super V> cls, int dim, V factory) {
- super(cls, dim, dim);
+ public VectorFieldTypeInformation(FeatureVector.Factory<V, ?> factory, int dim) {
+ super(factory.getRestrictionClass(), factory.getDefaultSerializer(), dim, dim);
this.factory = factory;
}
@@ -172,12 +145,12 @@ public class VectorFieldTypeInformation<V extends FeatureVector<?, ?>> extends V
@Override
public boolean isAssignableFromType(TypeInformation type) {
// Do all checks from superclass
- if(!super.isAssignableFromType(type)) {
+ if (!super.isAssignableFromType(type)) {
return false;
}
// Additionally check that mindim == maxdim.
VectorTypeInformation<?> other = (VectorTypeInformation<?>) type;
- if(other.mindim != other.maxdim) {
+ if (other.mindim != other.maxdim) {
return false;
}
return true;
@@ -188,8 +161,8 @@ public class VectorFieldTypeInformation<V extends FeatureVector<?, ?>> extends V
*
* @return dimensionality
*/
- public int dimensionality() {
- if(mindim != maxdim) {
+ public int getDimensionality() {
+ if (mindim != maxdim) {
throw new UnsupportedOperationException("Requesting dimensionality for a type request without defined dimensionality!");
}
return mindim;
@@ -200,66 +173,49 @@ public class VectorFieldTypeInformation<V extends FeatureVector<?, ?>> extends V
*
* @return the factory
*/
- public V getFactory() {
- if(factory == null) {
+ public FeatureVector.Factory<V, ?> getFactory() {
+ if (factory == null) {
throw new UnsupportedOperationException("Requesting factory for a type request!");
}
return factory;
}
- /**
- * Pseudo constructor that is often convenient to use when T is not completely
- * known.
- *
- * @param <T> Type
- * @param cls Class restriction
- * @return Type
- */
- public static <T extends FeatureVector<?, ?>> VectorFieldTypeInformation<T> get(Class<T> cls) {
- return new VectorFieldTypeInformation<T>(cls);
- }
-
- /**
- * Pseudo constructor that is often convenient to use when T is not completely
- * known, but the dimensionality is fixed.
- *
- * @param <T> Type
- * @param cls Class restriction
- * @param dim Dimensionality (exact)
- * @return Type
- */
- public static <T extends FeatureVector<?, ?>> VectorFieldTypeInformation<T> get(Class<T> cls, int dim) {
- return new VectorFieldTypeInformation<T>(cls, dim);
- }
-
@Override
public String toString() {
- StringBuffer buf = new StringBuffer(getRestrictionClass().getSimpleName());
- if(mindim == maxdim) {
+ StringBuilder buf = new StringBuilder(getRestrictionClass().getSimpleName());
+ if (mindim == maxdim) {
buf.append(",dim=").append(mindim);
- }
- else {
+ } else {
buf.append(",field");
- if(mindim >= 0) {
- buf.append(",mindim=" + mindim);
+ if (mindim >= 0) {
+ buf.append(",mindim=").append(mindim);
}
- if(maxdim < Integer.MAX_VALUE) {
- buf.append(",maxdim=" + maxdim);
+ if (maxdim < Integer.MAX_VALUE) {
+ buf.append(",maxdim=").append(maxdim);
}
}
return buf.toString();
}
/**
- * Get the column label
+ * Get the column label.
*
* @param col Column number
* @return Label
*/
public String getLabel(int col) {
- if(labels == null) {
+ if (labels == null) {
return null;
}
- return labels[col - 1];
+ return labels[col];
+ }
+
+ /**
+ * Get the column labels.
+ *
+ * @return labels
+ */
+ protected String[] getLabels() {
+ return labels;
}
-} \ No newline at end of file
+}