This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
uf:profiles [2009/02/27 15:20] alombide |
uf:profiles [2009/11/18 14:38] elisag adding |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== Profiles ==== | ||
- | |||
- | * Profiles: each Flockr has a Profile. There is a minimal set of properties that are present in each Profile. | ||
- | * Changed events: when a Flockr modifies his Profile, a change event is propagated to the remote interfaces of all other Flockrs. In reaction to these events, all connected Flockrs propagate these events to the interested Proximities. | ||
- | * Caching: Each Flockr keeps a cached Profile of the other Flockrs such that the Profile can be consulted offline. When a Flockr is connected for which there is a cached Profile, he should propagate the necessary changed events to make sure that both the cached Profile and the Flocks of the other Flockrs are updated. | ||
- | |||
- | ==== Profile Fields ==== | ||
- | |||
- | A Profile is a property object containing a number of named fields. Each field also has a Field Type. This Field Type is used to generate | ||
- | |||
- | ==== Field Types ==== | ||
- | |||
- | Field Types are represented as Field Type objects. These objects have the following API: | ||
- | * isString() | ||
- | * isEnumeration() | ||
- | * isInteger() | ||
- | * isDate() | ||
- | * isPossibleValue(aValue): | ||
- | * getPossibleValues(): | ||
- | * name() | ||
- | * defaultValue() | ||
- | * fieldSize(): | ||
- | * comparators(): | ||
- | |||
- | The following Field Types are built in: | ||
- | * StringFieldType: | ||
- | * EnumerationFieldType: | ||
- | * IntegerTypeField: | ||
- | * DateTypeField: | ||
- | |||
- | ==== Mandatory Fields ==== | ||
- | |||
- | Each profile has the following mandatory fields: | ||
- | * username | ||
- | * firstname | ||
- | * lastname | ||
- | * birthdate | ||
- | * sex | ||
- | |||
- | ==== API ==== | ||
- | |||
- | * getFieldType(fieldName) | ||
- | * checkFieldTypeForValue | ||
- | * addFieldTypeMapping(field, | ||
- | * removeFieldTypeMapping(field) | ||
- | * makeStringFieldTypeObject() | ||
- | * makeEnumerationFieldTypeObject(possibleValues) | ||
- | * makeIntegerTypeFieldObject(low, | ||
- | * makeDateTypeFieldObject(low, | ||
- | * isMandatoryField(propName) | ||
- | * addField(propName, | ||
- | * removeField(propName) | ||
- | * setField(propName, | ||
- | * fieldMatches(field, | ||
- | |||
- | ==== Implementation ==== | ||
- | |||
- | Properties of Profiles are represented as slots in the profile objects. Each Profile object has a parent object that contains the common behavior and mandatory fields for each profile. Since profiles are frequently copied over the network, they are isolate objects. | ||
- | |||
- | |||