/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package Sirius.server.localserver.object;
import Sirius.server.localserver.attribute.Attribute;
import Sirius.server.localserver.attribute.ObjectAttribute;
import Sirius.server.newuser.UserGroup;
import Sirius.util.Mapable;
import java.io.Serializable;
import java.util.Collection;
import java.util.HashMap;
import de.cismet.cids.tools.fromstring.FromStringCreator;
import de.cismet.cids.tools.fromstring.StringCreateable;
import de.cismet.cids.tools.tostring.StringConvertable;
/**
* DOCUMENT ME!
*
* @author srichter
* @version $Revision$, $Date$
*/
public interface Object extends Mapable, StringConvertable, StringCreateable, Serializable {
//~ Instance fields --------------------------------------------------------
/** modidifed meta object (to be updated). */
int MODIFIED = 2;
/** new meta object (to be inserted). */
int NEW = 1;
/** status not set. */
int NO_STATUS = 0;
/** object template. */
int TEMPLATE = 4;
/** deleted meta object (to be deleted). */
int TO_DELETE = 3;
//~ Methods ----------------------------------------------------------------
/**
* adds all attributes to the Object.
*
* @param objectAttributes attributes to be added to the Object
*/
void addAllAttributes(ObjectAttribute[] objectAttributes);
/**
* Fügt ein Attribut in die davor vorgesehenen AtrributVectoren ein.<BR>
*
* @param anyAttribute Objektattribute
*
* @see #longs
* @see #dates
* @see #doubles
* @see #longs
*/
void addAttribute(ObjectAttribute anyAttribute);
/**
* UNUSED.
*
* @param m UNUSED
*
* @return UNUSED
*
* @deprecated UNUSED
*/
@Override
java.lang.Object constructKey(Mapable m);
/**
* liefert eine fuer ug sichtbare Attributierung.
*
* @param ug Benutzergruppe nach der gefiltert werden soll
*
* @return eine fuer UG massgeschneiderte Version des Objekts
*/
Object filter(UserGroup ug);
/**
* creates an Instance of this Object from a string representation.
*
* <p>fromString(o.toSting())=o <B>should</B> be valid however this cannot be true in all thinkable situations</p>
*
* @param objectRepresentation string represntation of this Object
* @param mo templet of an Object
*
* @return an instance of Object constucted by the objectCreator using the Stringreprsentation as input
*
* @throws Exception java.lang.Exception error during consturction of an Object
*/
@Override
java.lang.Object fromString(String objectRepresentation, java.lang.Object mo) throws Exception;
/**
* beschafft eine Arrayrprenstation aller Attribute des Object.<BR>
*
* @return Alle Attribute des Objekts
*
* @see #longs
*/
ObjectAttribute[] getAttribs();
/**
* retrieves an Attributed referenced by its key (name) Please note that this method retrieves the first attribute
* that matchtes if one needs all attributes matching he should use getAttributeByname().
*
* @param key Schlüssel (key) des gewünschten Attributs
*
* @return das Attribut zu dem der Schlüssel passt
*/
java.lang.Object getAttribute(java.lang.Object key);
/**
* Method from Hell liefert ein Attribut �ber den Fieldname Es wird davon ausgegangen, dass nur ObjectAttributes im
* getAttributes() sind.
*
* @param fieldname DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
ObjectAttribute getAttributeByFieldName(String fieldname);
/**
* beschafft eine Collection welche alle Attribute enthält deren Schlüssel dem parameter name entsprechen.
*
* @param name Name/Schlüssel des Attributes
* @param maxResult DOCUMENT ME!
*
* @return Collection mit allen attributen gleichen schlüssels == name
*/
Collection<Attribute> getAttributeByName(String name, int maxResult);
/**
* getter for attribHash.
*
* @return Hashtabel containing this objects attributes
*/
HashMap getAttributes();
/**
* beschafft eine Collection welche alle Attribute enthält deren Schlüssel dem parameter name entsprechen.
*
* @param names Name/Schlüssel des Attributes
*
* @return Collection mit allen attributen gleichen schlüssels == name
*/
Collection getAttributesByName(Collection names);
/**
* DOCUMENT ME!
*
* @param c DOCUMENT ME!
* @param recursionDepth DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
Collection getAttributesByType(Class c, int recursionDepth);
/**
* DOCUMENT ME!
*
* @param c DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
Collection getAttributesByType(Class c);
/**
* getter for classID.
*
* @return id der Klasse dieses Objekts
*
* @see #classID
*/
int getClassID();
/**
* getter for ID.
*
* @return eineutiger Schlüssel (innerhlab einer Klasse)
*
* @see #objectID
*/
int getID();
/**
* key of the form classId.objectID.
*
* @return eindeutiger Schlüssel innerhalb einer domain (i.d.R. objectID@classID)
*/
@Override
java.lang.Object getKey();
/**
* geter for primaryKey.
*
* @return this objects class tables primary key
*/
Attribute getPrimaryKey();
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
ObjectAttribute getReferencingObjectAttribute();
/**
* geter for status.
*
* @return staturs
*/
int getStatus();
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
String getStatusDebugString();
/**
* DOCUMENT ME!
*
* @param c DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
Collection getTraversedAttributesByType(Class c);
/**
* getter for dummy.
*
* @return determines whether it is an artificial object
*/
boolean isDummy();
/**
* Getter for property persistent.
*
* @return Value of property persistent.
*/
boolean isPersistent();
/**
* indicates whether fromString() can be called.
*
* @return can be created from a string reprenstation of this object
*/
@Override
boolean isStringCreateable();
/**
* DOCUMENT ME!
*
* @param anyAttribute DOCUMENT ME!
*/
void removeAttribute(ObjectAttribute anyAttribute);
/**
* setter for dummy.
*
* @param dummy whether it is a dummy
*/
void setDummy(boolean dummy);
/**
* DOCUMENT ME!
*
* @param objectID DOCUMENT ME!
*/
void setID(int objectID);
/**
* Setter for property persistent.
*
* @param persistent New value of property persistent.
*/
void setPersistent(boolean persistent);
/**
* DOCUMENT ME!
*/
void setPrimaryKeysNull();
/**
* DOCUMENT ME!
*
* @param referencingObjectAttribute DOCUMENT ME!
*/
void setReferencingObjectAttribute(ObjectAttribute referencingObjectAttribute);
/**
* setter for status.
*
* @param status status
*/
void setStatus(int status);
/**
* initializes all attributes with NULL.
*/
void setValuesNull();
/**
* DOCUMENT ME!
*
* @return the objectCreator
*/
FromStringCreator getObjectCreator();
}