package org.flexo.model;
import org.flexo.model.impl.FlexoModelObjectImpl;
import org.openflexo.model.annotations.CloningStrategy;
import org.openflexo.model.annotations.CloningStrategy.StrategyType;
import org.openflexo.model.annotations.Getter;
import org.openflexo.model.annotations.ImplementationClass;
import org.openflexo.model.annotations.Initializer;
import org.openflexo.model.annotations.ModelEntity;
import org.openflexo.model.annotations.Parameter;
import org.openflexo.model.annotations.Setter;
import org.openflexo.model.annotations.XMLAttribute;
import org.openflexo.model.factory.AccessibleProxyObject;
import org.openflexo.model.factory.CloneableProxyObject;
@ModelEntity(isAbstract = true)
@ImplementationClass(FlexoModelObjectImpl.class)
public interface FlexoModelObject extends AccessibleProxyObject, CloneableProxyObject {
public static final String FLEXO_ID = "flexoId";
public static final String NAME = "name";
public static final String DELETED = "deleted";
@Initializer
public FlexoModelObject init();
@Initializer
public FlexoModelObject init(@Parameter(FLEXO_ID) String flexoId);
// @XMLProperty(id="flexoId",kind=Kind.GETTER,xml="flexoID",defaultValue="00000")
@Getter(value = FLEXO_ID, defaultValue = "0000")
@XMLAttribute(xmlTag = FLEXO_ID)
public String getFlexoID();
// @XMLProperty(id="flexoId",kind=Kind.SETTER)
@Setter(FLEXO_ID)
public void setFlexoID(String flexoID);
@Getter(value = NAME, defaultValue = "???")
@XMLAttribute(xmlTag = NAME)
// @CloningStrategy(StrategyType.FACTORY, factory = "deriveName()")
@CloningStrategy(StrategyType.CLONE)
public String getName();
@Setter(NAME)
public void setName(String name);
public String deriveName();
/*@XMLProperty(xml="lastUpdateDate")
public Date getLastUpdateDate();
public void setLastUpdateDate(Date lastUpdateDate);
@XMLRelationship(xml="father",target=FlexoModelObject.class, cardinality=Cardinality.MANY_TO_ONE, reverseMethodName="children")
public FlexoModelObject getFather();
public void setFather(FlexoModelObject father);
@XMLRelationship(xml="children",target=FlexoModelObject.class, cardinality=Cardinality.ONE_TO_MANY, reverseMethodName="father")
public List<FlexoModelObject> getChildren();
public void setChildren();*/
}