1 package de.fhdw.wtf.persistence.meta;
2
3 /**
4 * A class to represent an object in the database. An object is identified by its type, which can be a user type or a
5 * base type and an Id which is unique.
6 *
7 */
8 public abstract class Object extends InstanceItem {
9
10 /**
11 * The Type of this Object. Could be a Base Type or an User Object.
12 */
13 private final Type instanceOf;
14
15 /**
16 * Protected superclass constructor which must be inherited by its subclasses.
17 *
18 * @param instanceOf
19 * The Type of this Object.
20 */
21 protected Object(final Type instanceOf) {
22 this.instanceOf = instanceOf;
23 }
24
25 /**
26 * Getter for the Type.
27 *
28 * @return Provides the Type of this Object.
29 */
30 public Type getInstanceOf() {
31 return this.instanceOf;
32 }
33
34 /**
35 * A static factory Method for objects. It checks whether the the given Tuple of Object Id and type information is a
36 * base type or not and creates a new object instance of this object.
37 *
38 * @param id
39 * The Id of the object in the database.
40 * @param instance_of
41 * The type information of the Object.
42 * @return Provides a new Instance of the given object. If its a BaseType a BaseTypeValue Class will be instantiated
43 * otherwise a new user object will be instantiated.
44 */
45 public static Object checkForBaseTypes(final long id, final Type instance_of) {
46 if (instance_of.getId() == StringType.getInstance().getId()) {
47 return new StringValue(id);
48 } else if (instance_of.getId() == IntegerType.getInstance().getId()) {
49 return new IntegerValue(id);
50 } else {
51 return UserObject.init(id, instance_of);
52 }
53 }
54
55 @Override
56 public String toString() {
57 return "(" + this.getId() + "," + this.getInstanceOf().toString() + ")";
58 }
59
60 }