persistenceexample4/datafactory/ExamplePackagePersistenceMaster.java
package persistenceexample4.datafactory;
import com.sap.ip.me.api.persist.app.EntityFactory;
import com.sap.ip.me.api.persist.app.PackagePersistenceMaster;
import com.sap.ip.me.api.persist.app.PersistableEntity;
import com.sap.ip.me.api.persist.core.PersistenceContainer;
import com.sap.ip.me.api.persist.meta.AttributeDescriptor;
import com.sap.ip.me.api.persist.meta.AttributeType;
import com.sap.ip.me.api.persist.meta.ClassDescriptor;
import com.sap.ip.me.api.persist.meta.DescriptorRuntime;
import com.sap.ip.me.api.persist.meta.LinkDescriptor;
import com.sap.ip.me.api.persist.meta.MultiplicityType;
/**
* Create class descriptors
* The PackagePersistenceMaster instance provides descriptive information on Entity instances
* to be persisted. A application using perstistence has to implement PackagePersistenceMaster
* for the Entity instances it persists.
* Entity instances are distinguished by the classtype.
*
* In this example we declare a "license" and a "car" Entity. The multiplicityType is set to
* single - license number and the car type have a 1:1 relation ship.
*
* The "car" entity has attributes "make", "model", "enginetype", "cylinder", "valvespercylinder"
*
*/
class ExamplePackagePersistenceMaster implements PackagePersistenceMaster, EntityFactory {
static DescriptorRuntime PDR = DescriptorRuntime.getInstance();
static String[] CLASSTYPES = new String[] { Car.CLASSTYPE, License.CLASSTYPE };
static AttributeDescriptor[] CAR_ATTRIBS;
static AttributeDescriptor[] NO_ATTRIBS = new AttributeDescriptor[] {
};
static ClassDescriptor P_CLASS_LICENSE;
static ClassDescriptor P_CLASS_CAR;
static {
try {
CAR_ATTRIBS =
new AttributeDescriptor[] {
PDR.createAttributeDescriptor("make", AttributeType.STRING, 1, 20),
PDR.createAttributeDescriptor("model", AttributeType.STRING, 1, 20),
PDR.createAttributeDescriptor("enginetype", AttributeType.STRING, 1, 20),
PDR.createAttributeDescriptor("cylinders", AttributeType.INTEGER, 1, 20),
PDR.createAttributeDescriptor("valvespercylinder", AttributeType.INTEGER, 1, 20),
};
P_CLASS_CAR = PDR.createClassDescriptor(Car.CLASSTYPE, CAR_ATTRIBS, new LinkDescriptor[] { PDR.createLinkDescriptor("license", License.CLASSTYPE, MultiplicityType.SINGLE, true)});
P_CLASS_LICENSE = PDR.createClassDescriptor(License.CLASSTYPE, NO_ATTRIBS, new LinkDescriptor[] { PDR.createLinkDescriptor("car", Car.CLASSTYPE, MultiplicityType.SINGLE, true)});
} catch (Throwable t) {
t.printStackTrace();
System.exit(-1);
}
}
ExamplePackagePersistenceMaster() {
}
public String getPackageName() {
return null;
}
public String[] getClasstypes() {
return CLASSTYPES;
}
public PersistableEntity createEntity(PersistenceContainer obj) {
if (Car.CLASSTYPE.equals(obj.getClasstype())) {
return new Car(obj);
} else {
return new License(obj);
}
}
public ClassDescriptor getClassDescriptor(String classtype) {
if (Car.CLASSTYPE.equals(classtype)) {
return P_CLASS_CAR;
} else {
return P_CLASS_LICENSE;
}
}
public PackagePersistenceMaster getPersistenceMaster() {
return this;
}
}