Inhaltsverzeichnis

Services

Datenstrukturen

DexData

String key
String name
String type

String tag
	
String data

Boolean dataRead
Long cts_ts
Long val_ts

DexUser target

static belongsTo = [
	owner : DexUser
	]
static mapping = {
	data type:'text'
	name type:'text'
	tag type:'text'
}

DexUser

static final Long DEFAULT_VALID_TIME_MS=604800000l // one week

String username
Long val_time_ms

static hasMany = [
	whiteList : DexWhiteListEntry,
	forwardRules : DexForwardRule,
	dexData : DexData
	]
static mappedBy = [
	dexData :'owner'	
]
  static constraints = {
	whiteList nullable:true
	forwardRules nullable:true
	dexData nullable:true
	username nullable:false, unique:true
	val_time_ms nullable:true
  }

static mapping = {
	forwardRules sort:'precedence', order:'asc'
	whiteList sort:'allowedUser', order:'asc'
	dexData sort:'cts_ts', order:'desc'
}

DexWhiteListEntry

String allowedUser

static belongsTo = [
	owner : DexUser
	]

DexForwardRule

String keyRule
String name
Boolean active

Long precedence
Long val_ts
Boolean exit

static hasMany = [
	dataSources : DexForwardSource,
	dataTypes : DexForwardType,
	dataTags : DexForwardTag,
	dataTargets : DexForwardTarget 
	]
static belongsTo = [
	owner : DexUser
	]	

DexForwardSource

String value

static belongsTo = [
	owner : DexForwardRule
	]

DexForwardTag

String value

static belongsTo = [
	owner : DexForwardRule
	]

DexForwardType

String value

static belongsTo = [
	owner : DexForwardRule
	]

DexForwardTarget

String value

static belongsTo = [
	owner : DexForwardRule
	]

Akzessor-Methoden

DexData

CreateDexDataService

Signatur
Boolean performCall (
			String itentis,
			String itoris,
			String key,
			String name,
			String target,
			String type,
			String tag,
			String data,
			Long val_ts) {

Erzeugt ein DexData-Objekt. Der versendende User, dessen Name durch den Sitzungsschlüssel automatisch ermittelt wird, wird gesucht, oder erstmals angelegt.

Ablauf

Die Methode schlägt nur an, falls entweder kein TargetUser angegeben wurde, oder der Absender beim angegebenen TargetUser auf dessen WhiteList steht.

Die Methode sucht, falls ein existierender Target-User angegeben wurde, ob dessen Whitelist eine Einstellung der DexData erlaubt.

Ist kein TargetUser angegeben, handelt es sich um ein privates DexData und wird somit nur mit dem owner erzeugt.

Ist der TargetUser angegeben und der Absender befindet sich auf dessen WhiteList, wird nach einer ForwardRule gesucht.

Falls keine ForewardRule existiert, wird ein DexData erzeugt und dem TargetUser zugeordnet.

Existiert eine ForewardRule, wird für jeden gültigen Eintrag ein DexData erstellt und der owner durch den Eigentümer der ForwardRule ersetzt. Falls keine einzige Regel greift, wird ein einzelnes DexData dem TargetUser zugeordnet. Falls wenigstes eine Regel gegriffen hat, erhält der TargetUser selbst möglicherweise keine Kopie des weitergeleiteten DexData.

RetrieveCountDexDataService

Long performCall (
			String itentis,
			String itoris,
			String typ,
			String tag) {

Ermittelt die Anzahl der DexData-Elemente, die für diesen User existieren. Die Ermittlung der anzahl kann durch den tag oder den type-Parameter eingeschränkt werden (oder durch beide). Die Angabe dieser Parameter ist jedoch optional.

ListDexDataService

List<DexDataEnvelope> performCall (
			String itentis,
			String itoris,
			Boolean isTarget,
			Boolean isSource,
			Long offsetItems,
			Long maxItems) {

Listet alle DexData auf und und gibt eine Liste der Namens/Schlüssel-Paare zurück. Dabei muss die maximale Länge der Liste durch den maxItems-Parameter und der Beginn der Liste im absoluten Ergebnis durch den offsetItems-Parameter spezifiziert werden.

Weiterhin ist die List einschränkbar auf die Einträge, die dem User von anderen Usern bereitgestellt wurden, falls isTarget gesetzt ist.

Oder auf die Einträge, die von dem aufrufenden User an andere User gesendet wurden. Dh. alle Einträge, deren TargetUser nicht null sind und vom User abweichend lauten.

Die ermittelte Liste ist in jedem Falle unsortiert.

SearchDexDataService

List<DexDataEnvelope> performCall (
			String itentis,
			String itoris,
			String type,
			String tag,
			Boolean sortByTime,
			Long offsetItems,
			Long maxItems) {

Diese Methode ermöglicht eine erweiterte Suche. Der Parameter tag ist dabei verpflichtend. Ohne angegebenen Tag ergibt die Suche stets die leere Menge.

Zusätzlich kann optional der Parameter type angegeben werden, nach dem dann zusätzlich gesucht wird. Auch die Angaben zu offsetItems und maxItems ist optional.

Die ermittelte Teilmenge wird nach dem Erstellungszeitstempel cts_ts absteigend sortiert, falls sortByTime gesetzt ist, sonst alphabetisch nach name absteigend.

ReadDexDataService

String performCall (
			String itentis,
			String itoris,
			String key) {

Ist der Schlüssel eines DexData bekannt, kann dessen Inhalt ermittelt werden, falls der anfragende user entweder mit owner oder target identisch ist. In letzterem Falle, wird das dataRead-Attribute auf true gesetzt.

DeleteDexDataService

Boolean performCall (
			String itentis,
			String itoris,
			String key) {

Diese Methode löscht ein DexData. Die Löschung ist möglich, falls der anfordernde User entweder mit owner oder dem target identisch ist.

ForewardRules

CreateOrUpdateDexForwardRuleService

Boolean performCall (
			String itentis,
			String itoris,
			String key,
			String name,
			Boolean active,
			Long precedence,
			Long val_ts,
			Boolean exit,
			List<String> owners,
			List<String> targets,
			List<String> types,
			List<String> tags) {
Werte

Mit dieser Methode kann einer Weiterleitungsregel ForwardRule angelegt oder modifiziert werden. Neu angelegt wird die Regel dann, wenn der eindeitige Schlüssel key nicht zu einer existierenden Regel in der Datenbank passt, oder null ist.

Der Name name kann frei gewähltt werden und für den User zur Gedächtnisstütze dienen.

Gültigkeit

Das Flag active muss gesetzt sein, falls die Regel angewendet werden soll. Somit kann man eine Regel, die man ausser Kraft setzen möchte stillegen, ohne Sie löschen zu müssen.

Der Zeitstempel val_ts kann angegeben werden. In diesem Fall zeigt er den absoluten Unix-Zeitpunkt in ms an, ab dem die Regel nicht mehr gültig ist. Wird er nicht spezifiziert gilt die Regel permanent.

Anwendungssequenzen

Die beiden Parameter precedence und exit sind von Bedeutung, falls mehrere Regeln definiert wurden. Alle gültigen Regeln werden in der Reihenfolge aufsteigender Präzendenz interpretiert, solange noch weitere Regeln vorhanden sind und keine vorhergehende Regel zur erzeugung eines DexData geführt hat. Wurde bereits ein DexData erzeugt, wird mit den regel höherer Präzendez nur solange fortgefahren, bis eine Regel erreicht und durch diese ein DexData angelegt wird, deren exit Flag gesetzt ist.

Matching

Falls Werte für owners, targets und types spezifizert sind, kann die entsprechende Regel nur angewendet werden, falls owner, taget und type in den Listen vorkommt (und-Verknüpfung).

Weiterleitungsziele

Eine Weiterleitung ist nur sinnvoll, falls mindestens ein target durch dessen Nutzernamen spezifiziert wurde. Werden mehrere Nutzernamen (targets) angegeben, wird für jeden ein eigenes DexData angelegt. Möchte der Eigentümer dieser weiterleitingsregel selbst eine kopie erhalten, muss er ebenso seinen eigenen Nutzernamen in targets eintragen, andernfalls würde er keine Benachrichtigung über die weitergeleiteten DexData-Objekte erhalten. Dies ist in einigen Fällen durchaus wünschenswert.

ListDexForwardRulesService

List<KeyNamePair> performCall (
			String itentis,
			String itoris) {

Liefert eine vollständige Liste der Weiterleitungsregeln des Users zurück, bestehend aus Name-Schlüssel-Paaren.

RetrieveDexForwardRuleService

DexForwardRule performCall (
			String itentis,
			String itoris,
			String key) {

Liefert den Inhalt einer Weiterleitungsregel zurück, die durch den Schlüssel angegeben wurde.

Rückgabeobjekt
 DexForwardRule {
String key
String name
Boolean active
Long precedence
Boolean exit
Long val_ts
List<String> sources
List<String> targets
List<String> tags
List<String> types
}

DeleteDexForwardRuleService

Boolean performCall (
			String itentis,
			String itoris,
			String key) {

Löscht eine Weiterleitungsregel permanent. Dazu muss der eindeutige Key angegeben werden. Durch den Sitzungsschlüssel wird der eigentümer ermittelt und die löschung erfolgt nur, wenn der Eigentümer bei DexData mit dem Attribut owner oder dem Attribut target identisch sind.

WhiteLists

FetchDexWhitelistService

List<String> performCall (
			String itentis,
			String itoris) {

PutDexWhitelistService

Boolean performCall (
			String itentis,
			String itoris,
			List<String> owners) {

DexUsers

DeleteDexUserService

Boolean performCall (
			String itentis,
			String itoris) {