blob: 0ec3b21500da332c451d480e0fcdaa53ae059ee8 [file] [log] [blame]
package edu.uci.ics.asterix.om.types;
import edu.uci.ics.asterix.common.exceptions.AsterixException;
import edu.uci.ics.asterix.om.base.IAObject;
import edu.uci.ics.asterix.om.visitors.IOMVisitor;
public abstract class BuiltinType implements IAType {
private static final long serialVersionUID = 1L;
public abstract static class LowerCaseConstructorType extends BuiltinType {
private static final long serialVersionUID = 1L;
@Override
public String getConstructor() {
return getTypeTag().toString().toLowerCase();
}
}
/** the type of all types */
public final static BuiltinType ASTERIX_TYPE = new BuiltinType() {
private static final long serialVersionUID = 1L;
@Override
public ATypeTag getTypeTag() {
return ATypeTag.TYPE;
}
@Override
public String getDisplayName() {
return "AsterixType";
}
@Override
public String getTypeName() {
return "atype";
}
@Override
public String getConstructor() {
return null;
}
};
public final static BuiltinType AINT8 = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "AInt8";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.INT8;
}
@Override
public String getTypeName() {
return "int8";
}
};
public final static BuiltinType AINT16 = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "AInt16";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.INT16;
}
@Override
public String getTypeName() {
return "int16";
}
};
public final static BuiltinType AINT32 = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "AInt32";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.INT32;
}
@Override
public String getTypeName() {
return "int32";
}
};
public static final BuiltinType AINT64 = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public ATypeTag getTypeTag() {
return ATypeTag.INT64;
}
@Override
public String getDisplayName() {
return "AInt64";
}
@Override
public String getTypeName() {
return "int64";
}
};
public final static BuiltinType ABINARY = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "ABinary";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.BINARY;
}
@Override
public String getTypeName() {
return "binary";
}
};
public final static BuiltinType AFLOAT = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "AFloat";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.FLOAT;
}
@Override
public String getTypeName() {
return "float";
}
};
public final static BuiltinType ADOUBLE = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "ADouble";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.DOUBLE;
}
@Override
public String getTypeName() {
return "double";
}
};
public final static BuiltinType ASTRING = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "AString";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.STRING;
}
@Override
public String getTypeName() {
return "string";
}
};
public final static BuiltinType ANULL = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "Null";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.NULL;
}
@Override
public String getTypeName() {
return "null";
}
};
public final static BuiltinType ABOOLEAN = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "ABoolean";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.BOOLEAN;
}
@Override
public String getTypeName() {
return "boolean";
}
};
public final static BuiltinType ATIME = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "ATime";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.TIME;
}
@Override
public String getTypeName() {
return "time";
}
};
public final static BuiltinType ADATE = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "ADate";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.DATE;
}
@Override
public String getTypeName() {
return "date";
}
};
public final static BuiltinType ADATETIME = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "ADateTime";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.DATETIME;
}
@Override
public String getTypeName() {
return "datetime";
}
};
public final static BuiltinType ADURATION = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "ADuration";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.DURATION;
}
@Override
public String getTypeName() {
return "duration";
}
};
public final static BuiltinType APOINT = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public ATypeTag getTypeTag() {
return ATypeTag.POINT;
}
@Override
public String getDisplayName() {
return "APoint";
}
@Override
public String getTypeName() {
return "point";
}
};
public final static BuiltinType APOINT3D = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public ATypeTag getTypeTag() {
return ATypeTag.POINT3D;
}
@Override
public String getDisplayName() {
return "APoint3D";
}
@Override
public String getTypeName() {
return "point3d";
}
};
public final static BuiltinType ALINE = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "ALINE";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.LINE;
}
@Override
public String getTypeName() {
return "line";
}
};
public final static BuiltinType APOLYGON = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "APOLYGON";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.POLYGON;
}
@Override
public String getTypeName() {
return "polygon";
}
};
public final static BuiltinType ACIRCLE = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "ACIRCLE";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.CIRCLE;
}
@Override
public String getTypeName() {
return "circle";
}
};
public final static BuiltinType ARECTANGLE = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public String getDisplayName() {
return "ARECTANGLE";
}
@Override
public ATypeTag getTypeTag() {
return ATypeTag.RECTANGLE;
}
@Override
public String getTypeName() {
return "rectangle";
}
};
public static final IAType ABITARRAY = new LowerCaseConstructorType() {
private static final long serialVersionUID = 1L;
@Override
public ATypeTag getTypeTag() {
return ATypeTag.BITARRAY;
}
@Override
public String getDisplayName() {
return "ABitArray";
}
@Override
public String getTypeName() {
return "abitarray";
}
};
public static final IAType ANY = new BuiltinType() {
private static final long serialVersionUID = 1L;
@Override
public ATypeTag getTypeTag() {
return ATypeTag.ANY;
}
@Override
public String getTypeName() {
return "any";
}
@Override
public String getDisplayName() {
return "ANY";
}
@Override
public String getConstructor() {
return null;
}
};
public abstract String getConstructor();
@Override
public void accept(IOMVisitor visitor) throws AsterixException {
visitor.visitAType(this);
}
@Override
public IAType getType() {
return ASTERIX_TYPE;
}
@Override
public String toString() {
return getTypeTag().toString();
}
@Override
public boolean deepEqual(IAObject obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof BuiltinType)) {
return false;
}
return ((BuiltinType) obj).getTypeTag().equals(getTypeTag());
}
@Override
public boolean equals(Object object) {
return this.deepEqual((IAObject) object);
}
@Override
public int hashCode() {
return getTypeTag().hashCode();
}
@Override
public int hash() {
return getType().getTypeTag().serialize();
}
public static BuiltinType builtinTypeFromString(String str) throws AsterixException {
if (str.equals(BuiltinType.AINT32.getTypeName())) {
return BuiltinType.AINT32;
} else if (str.equals(BuiltinType.ASTRING.getTypeName())) {
return BuiltinType.ASTRING;
} else if (str.equals(BuiltinType.ADOUBLE.getTypeName())) {
return BuiltinType.ADOUBLE;
} else if (str.equals(BuiltinType.AFLOAT.getTypeName())) {
return BuiltinType.AFLOAT;
}
throw new AsterixException("No string translation for type: " + str + " .");
}
public static ATypeTag builtinTypeTagFromString(String str) throws AsterixException {
if (str.equals("int32")) {
return ATypeTag.INT32;
} else if (str.equals("string")) {
return ATypeTag.STRING;
} else if (str.equals("double")) {
return ATypeTag.DOUBLE;
} else if (str.equals("float")) {
return ATypeTag.FLOAT;
}
throw new AsterixException("No string translation for type: " + str + " .");
}
}