1 package net.systemeD.halcyon.connection {
3 public class Relation extends Entity {
4 private var members:Array;
5 public static var entity_type:String = 'relation';
7 public function Relation(id:Number, version:uint, tags:Object, loaded:Boolean, members:Array) {
8 super(id, version, tags, loaded);
9 this.members = members;
10 for each (var member:RelationMember in members) { member.entity.addParent(this); }
13 public function update(version:uint, tags:Object, loaded:Boolean, members:Array):void {
14 var member:RelationMember;
15 for each (member in this.members) { member.entity.removeParent(this); }
16 updateEntityProperties(version,tags,loaded); this.members=members;
17 for each (member in members) { member.entity.addParent(this); }
20 public function get length():uint {
21 return members.length;
24 public function findEntityMemberIndex(entity:Entity):int {
25 for (var index:uint = 0; index < members.length; index++) {
26 var member:RelationMember = members[index];
27 if ( member.entity == entity )
33 public function getMember(index:uint):RelationMember {
34 return members[index];
37 public function setMember(index:uint, member:RelationMember):void {
38 member.entity.addParent(this);
39 members.splice(index, 1, member);
42 public function insertMember(index:uint, member:RelationMember):void {
43 member.entity.addParent(this);
44 members.splice(index, 0, member);
47 public function appendMember(member:RelationMember):uint {
48 member.entity.addParent(this);
50 return members.length;
53 public function removeMember(index:uint):void {
54 var removed:Array=members.splice(index, 1);
55 removed[0].entity.removeParent(this);
58 public function getDescription():String {
60 var relTags:Object = getTagsHash();
61 if ( relTags["type"] ) {
62 desc = relTags["type"];
64 desc += " " + relTags[desc];
67 desc += " " + relTags["ref"];
68 if ( relTags["name"] )
69 desc += " " + relTags["name"];
73 public override function getType():String {
77 public override function toString():String {
78 return "Relation("+id+"@"+version+"): "+members.length+" members "+getTagList();