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 | 150 |
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 +} |