generic parent object handling
[potlatch2.git] / net / systemeD / halcyon / connection / Way.as
1 package net.systemeD.halcyon.connection {
2
3     public class Way extends Entity {
4         private var nodes:Array;
5                 public static var entity_type:String = 'way';
6
7         public function Way(id:Number, version:uint, tags:Object, nodes:Array) {
8             super(id, version, tags);
9             this.nodes = nodes;
10                         for each (var node:Node in nodes) { node.addParent(this); }
11         }
12
13         public function get length():uint {
14             return nodes.length;
15         }
16         
17         public function getNode(index:uint):Node {
18             return nodes[index];
19         }
20
21         public function insertNode(index:uint, node:Node):void {
22                         node.addParent(this);
23             nodes.splice(index, 0, node);
24         }
25
26         public function appendNode(node:Node):uint {
27                         node.addParent(this);
28             nodes.push(node);
29             return nodes.length;
30         }
31
32         public function removeNode(index:uint):void {
33             var removed:Array=nodes.splice(index, 1);
34                         removed[0].removeParent(this);
35         }
36
37         public override function toString():String {
38             return "Way("+id+"@"+version+"): "+getTagList()+
39                      " "+nodes.map(function(item:Node,index:int, arr:Array):String {return item.id.toString();}).join(",");
40         }
41
42                 public function isArea():Boolean {
43                         return (nodes[0].id==nodes[nodes.length-1].id && nodes.length>2);
44                 }
45
46                 public override function getType():String {
47                         return 'way';
48                 }
49     }
50
51 }