1 package cz.cuni.amis.pogamut.ut2004multi.communication.worldview.objects;
2
3 import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldObjectUpdatedEvent;
4 import cz.cuni.amis.pogamut.multi.communication.worldview.object.ILocalWorldObject;
5 import cz.cuni.amis.pogamut.multi.communication.worldview.object.ISharedWorldObject;
6 import cz.cuni.amis.pogamut.multi.communication.worldview.object.IStaticWorldObject;
7 import cz.cuni.amis.utils.exception.PogamutException;
8 import cz.cuni.amis.utils.flag.FlagInteger;
9 import cz.cuni.amis.utils.flag.ImmutableFlag;
10
11 public class TestCompositeViewableObjectImpl extends TestCompositeViewableObject{
12
13 protected TestLocalViewableObject localPart;
14 protected TestSharedViewableObject sharedPart;
15 protected TestStaticViewableObject staticPart;
16
17 private static FlagInteger instances = new FlagInteger(0);
18
19 public static ImmutableFlag<Integer> getInstances() {
20 return instances.getImmutable();
21 }
22
23 @Override
24 protected void finalize() throws Throwable {
25 super.finalize();
26 instances.decrement(1);
27 }
28
29 public TestCompositeViewableObjectImpl( TestLocalViewableObject localPart, TestSharedViewableObject sharedPart, TestStaticViewableObject staticPart)
30 {
31 super(localPart.getId());
32 instances.increment(1);
33 this.localPart = localPart;
34 if ( sharedPart.getId() != this.id || staticPart.getId() != this.getId())
35 {
36 throw new PogamutException("Trying to create composite object from objects with different Ids", this);
37 }
38
39 this.sharedPart = sharedPart;
40 this.staticPart = staticPart;
41
42 }
43
44 @Override
45 public ILocalWorldObject getLocal() {
46 return localPart;
47 }
48
49 @Override
50 public ISharedWorldObject getShared() {
51 return sharedPart;
52 }
53
54 @Override
55 public IStaticWorldObject getStatic() {
56 return staticPart;
57 }
58
59 @Override
60 public long getSimTime() {
61 if ( localPart.getSimTime() < sharedPart.getSimTime() )
62 {
63 return sharedPart.getSimTime();
64 }
65 return localPart.getSimTime();
66 }
67
68 @Override
69 public String getLocalString() {
70 return localPart.getLocalString();
71 }
72
73 @Override
74 public long getLocalLong() {
75 return localPart.getLocalLong();
76 }
77
78 @Override
79 public String getStaticString() {
80 return staticPart.getStaticString();
81 }
82
83 @Override
84 public long getStaticLong() {
85 return staticPart.getStaticLong();
86 }
87
88 @Override
89 public String getSharedString() {
90 return sharedPart.getSharedString();
91 }
92
93 @Override
94 public long getSharedLong() {
95 return sharedPart.getSharedLong();
96 }
97
98 @Override
99 public IWorldObjectUpdatedEvent createDisappearEvent() {
100
101 return null;
102 }
103
104 @Override
105 public boolean isVisible() {
106 return localPart.isVisible();
107 }
108
109 }