1 package cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages;
2
3
4 import java.util.*;import javax.vecmath.*;import cz.cuni.amis.pogamut.base.communication.messages.*;import cz.cuni.amis.pogamut.base.communication.worldview.*;import cz.cuni.amis.pogamut.base.communication.worldview.event.*;import cz.cuni.amis.pogamut.base.communication.worldview.object.*;import cz.cuni.amis.pogamut.multi.communication.worldview.object.*;import cz.cuni.amis.pogamut.base.communication.translator.event.*;import cz.cuni.amis.pogamut.multi.communication.translator.event.*;import cz.cuni.amis.pogamut.base3d.worldview.object.*;import cz.cuni.amis.pogamut.base3d.worldview.object.event.*;import cz.cuni.amis.pogamut.ut2004.communication.messages.*;import cz.cuni.amis.pogamut.ut2004.communication.worldview.objects.*;import cz.cuni.amis.pogamut.ut2004multi.communication.worldview.objects.*;import cz.cuni.amis.pogamut.ut2004.communication.translator.itemdescriptor.*;import cz.cuni.amis.pogamut.ut2004.communication.messages.ItemType.Category;import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId;import cz.cuni.amis.utils.exception.*;import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldObjectUpdateResult.Result;import cz.cuni.amis.utils.SafeEquals;import cz.cuni.amis.pogamut.base.agent.*;import cz.cuni.amis.pogamut.multi.agent.*;import cz.cuni.amis.pogamut.multi.communication.worldview.property.*;import cz.cuni.amis.pogamut.ut2004multi.communication.worldview.property.*;import cz.cuni.amis.utils.token.*;import cz.cuni.amis.utils.*;
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public class FlagInfoMessage
29 extends
30 FlagInfo
31 implements IWorldObjectUpdatedEvent, ICompositeWorldObjectUpdatedEvent
32
33 {
34
35
36
37
38
39
40 public FlagInfoMessage()
41 {
42 }
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 public FlagInfoMessage(
97 UnrealId Id, Location Location, UnrealId Holder, Integer Team, boolean Visible, String State
98 ) {
99
100 this.Id = Id;
101
102 this.Location = Location;
103
104 this.Holder = Holder;
105
106 this.Team = Team;
107
108 this.Visible = Visible;
109
110 this.State = State;
111
112 }
113
114
115
116
117
118
119 public FlagInfoMessage(FlagInfoMessage original) {
120
121 this.Id = original.getId()
122 ;
123
124 this.Location = original.getLocation()
125 ;
126
127 this.Holder = original.getHolder()
128 ;
129
130 this.Team = original.getTeam()
131 ;
132
133 this.Visible = original.isVisible()
134 ;
135
136 this.State = original.getState()
137 ;
138
139 this.TeamId = original.getTeamId();
140
141 this.SimTime = original.getSimTime();
142 }
143
144
145 protected ITeamId TeamId;
146
147
148
149
150 protected void setTeamId(ITeamId TeamId) {
151 this.TeamId = TeamId;
152 }
153
154 public ITeamId getTeamId() {
155 return TeamId;
156 }
157
158
159
160
161
162
163
164
165
166 protected
167 UnrealId Id =
168 null;
169
170
171
172
173
174 protected boolean Id_Set = false;
175
176 @Override
177
178
179
180
181
182
183 public UnrealId getId()
184 {
185 return Id;
186 }
187
188
189
190
191
192
193
194
195 protected
196 Location Location =
197 null;
198
199
200
201
202
203 protected boolean Location_Set = false;
204
205 @Override
206
207
208
209
210
211
212
213 public Location getLocation()
214 {
215 return Location;
216 }
217
218
219
220
221
222
223
224
225
226 protected
227 UnrealId Holder =
228 null;
229
230
231
232
233
234 protected boolean Holder_Set = false;
235
236 @Override
237
238
239
240
241
242
243
244
245 public UnrealId getHolder()
246 {
247 return Holder;
248 }
249
250
251
252
253
254 protected
255 Integer Team =
256 null;
257
258
259
260
261
262 protected boolean Team_Set = false;
263
264 @Override
265
266
267
268
269 public Integer getTeam()
270 {
271 return Team;
272 }
273
274
275
276
277
278 protected
279 boolean Visible =
280 false;
281
282
283
284
285
286 protected boolean Visible_Set = false;
287
288 @Override
289
290
291
292
293 public boolean isVisible()
294 {
295 return Visible;
296 }
297
298
299
300
301
302
303
304
305 protected
306 String State =
307 null;
308
309
310
311
312
313 protected boolean State_Set = false;
314
315 @Override
316
317
318
319
320
321
322
323 public String getState()
324 {
325 return State;
326 }
327
328
329 private FlagInfoLocal localPart = null;
330
331 @Override
332 public FlagInfoLocal
333 getLocal() {
334 if (localPart != null) return localPart;
335 return localPart = new
336 FlagInfoLocalMessage();
337 }
338
339 private FlagInfoShared sharedPart = null;
340
341 @Override
342 public FlagInfoShared
343 getShared() {
344 if (sharedPart != null) return sharedPart;
345 return sharedPart = new
346 FlagInfoSharedMessage();
347 }
348
349 private FlagInfoStatic staticPart = null;
350
351 @Override
352 public FlagInfoStatic
353 getStatic() {
354 if (staticPart != null) return staticPart;
355 return staticPart = new
356 FlagInfoStaticMessage();
357 }
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372 public class FlagInfoLocalMessage
373 extends
374 FlagInfoLocal
375 {
376
377 @Override
378 public
379 FlagInfoLocalMessage clone() {
380 return this;
381 }
382
383 public FlagInfoLocalMessage getLocal() {
384 return this;
385 }
386 public ISharedWorldObject getShared() {
387 throw new UnsupportedOperationException("Could not return LOCAL as SHARED");
388 }
389 public IStaticWorldObject getStatic() {
390 throw new UnsupportedOperationException("Could not return LOCAL as STATIC");
391 }
392
393
394
395
396
397
398 public UnrealId getId()
399 {
400 return Id;
401 }
402
403
404
405
406 public boolean isVisible()
407 {
408 return Visible;
409 }
410
411
412 public String toString() {
413 return
414 super.toString() + "[" +
415
416 "Id = " + String.valueOf(getId()
417 ) + " | " +
418
419 "Visible = " + String.valueOf(isVisible()
420 ) + " | " +
421
422 "]";
423 }
424
425
426 public String toHtmlString() {
427 return super.toString() + "[<br/>" +
428
429 "<b>Id</b> = " + String.valueOf(getId()
430 ) + " <br/> " +
431
432 "<b>Visible</b> = " + String.valueOf(isVisible()
433 ) + " <br/> " +
434
435 "<br/>]";
436 }
437
438
439
440
441
442
443
444
445
446
447 }
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462 public class FlagInfoStaticMessage
463 extends
464 FlagInfoStatic
465 {
466
467 @Override
468 public
469 FlagInfoStaticMessage clone() {
470 return this;
471 }
472
473
474
475
476
477
478 public UnrealId getId()
479 {
480 return Id;
481 }
482
483
484 @Override
485 public boolean isDifferentFrom(IStaticWorldObject other)
486 {
487 if (other == null)
488 {
489 return true;
490 }
491 else if (other == this)
492 {
493 return false;
494 }
495 else
496 {
497 FlagInfoStatic obj = (FlagInfoStatic) other;
498
499
500 if ( !(
501 AdvancedEquals.equalsOrNull(this.getId()
502 , obj.getId()
503 )
504 ) )
505 {
506 System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property Id on object class FlagInfoStatic");
507 return true;
508 }
509
510 }
511 return false;
512 }
513
514
515 public String toString() {
516 return
517 super.toString() + "[" +
518
519 "Id = " + String.valueOf(getId()
520 ) + " | " +
521
522 "]";
523 }
524
525
526 public String toHtmlString() {
527 return super.toString() + "[<br/>" +
528
529 "<b>Id</b> = " + String.valueOf(getId()
530 ) + " <br/> " +
531
532 "<br/>]";
533 }
534
535
536
537
538
539
540
541
542
543
544 }
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559 public class FlagInfoSharedMessage
560 extends
561 FlagInfoShared
562 {
563
564
565
566 public FlagInfoSharedMessage()
567 {
568
569 propertyMap.put(myLocation.getPropertyId(), myLocation);
570
571 propertyMap.put(myHolder.getPropertyId(), myHolder);
572
573 propertyMap.put(myTeam.getPropertyId(), myTeam);
574
575 propertyMap.put(myState.getPropertyId(), myState);
576
577 }
578
579 @Override
580 public
581 FlagInfoSharedMessage clone() {
582 return this;
583 }
584
585
586
587
588 protected HashMap<PropertyId, ISharedProperty> propertyMap = new HashMap<PropertyId, ISharedProperty>(
589 4
590 );
591
592 @Override
593 public ISharedProperty getProperty(PropertyId id) {
594 return propertyMap.get(id);
595 }
596
597 @Override
598 public Map<PropertyId, ISharedProperty> getProperties() {
599 return propertyMap;
600 }
601
602
603
604
605
606
607
608
609 public UnrealId getId()
610 {
611 return Id;
612 }
613
614
615
616
617
618
619
620
621 protected
622 LocationProperty
623 myLocation
624 = new
625 LocationProperty
626 (
627 getId(),
628 "Location",
629 Location,
630 FlagInfo.class
631 );
632
633
634
635
636
637
638
639 public Location getLocation()
640 {
641 return myLocation.getValue();
642 }
643
644
645
646
647
648
649
650
651
652 protected
653 UnrealIdProperty
654 myHolder
655 = new
656 UnrealIdProperty
657 (
658 getId(),
659 "Holder",
660 Holder,
661 FlagInfo.class
662 );
663
664
665
666
667
668
669
670
671 public UnrealId getHolder()
672 {
673 return myHolder.getValue();
674 }
675
676
677
678
679
680 protected
681 IntegerProperty
682 myTeam
683 = new
684 IntegerProperty
685 (
686 getId(),
687 "Team",
688 Team,
689 FlagInfo.class
690 );
691
692
693
694
695 public Integer getTeam()
696 {
697 return myTeam.getValue();
698 }
699
700
701
702
703
704
705
706
707 protected
708 StringProperty
709 myState
710 = new
711 StringProperty
712 (
713 getId(),
714 "State",
715 State,
716 FlagInfo.class
717 );
718
719
720
721
722
723
724
725 public String getState()
726 {
727 return myState.getValue();
728 }
729
730
731 public String toString() {
732 return
733 super.toString() + "[" +
734
735 "Id = " + String.valueOf(getId()
736 ) + " | " +
737
738 "Location = " + String.valueOf(getLocation()
739 ) + " | " +
740
741 "Holder = " + String.valueOf(getHolder()
742 ) + " | " +
743
744 "Team = " + String.valueOf(getTeam()
745 ) + " | " +
746
747 "State = " + String.valueOf(getState()
748 ) + " | " +
749
750 "]";
751 }
752
753
754 public String toHtmlString() {
755 return super.toString() + "[<br/>" +
756
757 "<b>Id</b> = " + String.valueOf(getId()
758 ) + " <br/> " +
759
760 "<b>Location</b> = " + String.valueOf(getLocation()
761 ) + " <br/> " +
762
763 "<b>Holder</b> = " + String.valueOf(getHolder()
764 ) + " <br/> " +
765
766 "<b>Team</b> = " + String.valueOf(getTeam()
767 ) + " <br/> " +
768
769 "<b>State</b> = " + String.valueOf(getState()
770 ) + " <br/> " +
771
772 "<br/>]";
773 }
774
775
776
777
778
779
780
781
782
783
784 }
785
786
787
788
789 @Override
790 public IWorldObjectUpdateResult<IWorldObject> update(IWorldObject object) {
791 if (object == null)
792 {
793 return new IWorldObjectUpdateResult.WorldObjectUpdateResult(IWorldObjectUpdateResult.Result.CREATED, this);
794 }
795 if (!( object instanceof FlagInfoMessage) ) {
796 throw new PogamutException("Can't update different class than FlagInfoMessage, got class " + object.getClass().getSimpleName() + "!", this);
797 }
798 FlagInfoMessage toUpdate = (FlagInfoMessage)object;
799
800 boolean updated = false;
801
802
803
804 if (toUpdate.Visible != isVisible()
805 ) {
806 toUpdate.Visible=isVisible()
807 ;
808 updated = true;
809 }
810
811
812
813
814 if (getLocation()
815 != null) {
816
817 if (!SafeEquals.equals(toUpdate.Location, getLocation()
818 )) {
819 toUpdate.Location=getLocation()
820 ;
821 updated = true;
822 }
823
824 }
825
826 if (!SafeEquals.equals(toUpdate.Holder, getHolder()
827 )) {
828 toUpdate.Holder=getHolder()
829 ;
830 updated = true;
831 }
832
833 if (!SafeEquals.equals(toUpdate.Team, getTeam()
834 )) {
835 toUpdate.Team=getTeam()
836 ;
837 updated = true;
838 }
839
840 if (!SafeEquals.equals(toUpdate.State, getState()
841 )) {
842 toUpdate.State=getState()
843 ;
844 updated = true;
845 }
846
847
848
849 toUpdate.SimTime = SimTime;
850
851 if (updated) {
852 return new IWorldObjectUpdateResult.WorldObjectUpdateResult<IWorldObject>(IWorldObjectUpdateResult.Result.UPDATED, toUpdate);
853 } else {
854 return new IWorldObjectUpdateResult.WorldObjectUpdateResult<IWorldObject>(IWorldObjectUpdateResult.Result.SAME, toUpdate);
855 }
856 }
857
858 @Override
859 public ILocalWorldObjectUpdatedEvent getLocalEvent() {
860 return new FlagInfoLocalImpl.FlagInfoLocalUpdate
861 (this.getLocal(), SimTime);
862 }
863
864 @Override
865 public ISharedWorldObjectUpdatedEvent getSharedEvent() {
866 return new FlagInfoSharedImpl.FlagInfoSharedUpdate
867 (this.getShared(), SimTime, this.getTeamId());
868 }
869
870 @Override
871 public IStaticWorldObjectUpdatedEvent getStaticEvent() {
872 return new FlagInfoStaticImpl.FlagInfoStaticUpdate
873 (this.getStatic(), SimTime);
874 }
875
876
877 public String toString() {
878 return
879 super.toString() + "[" +
880
881 "Id = " + String.valueOf(getId()
882 ) + " | " +
883
884 "Location = " + String.valueOf(getLocation()
885 ) + " | " +
886
887 "Holder = " + String.valueOf(getHolder()
888 ) + " | " +
889
890 "Team = " + String.valueOf(getTeam()
891 ) + " | " +
892
893 "Visible = " + String.valueOf(isVisible()
894 ) + " | " +
895
896 "State = " + String.valueOf(getState()
897 ) + " | " +
898
899 "]";
900 }
901
902
903 public String toHtmlString() {
904 return super.toString() + "[<br/>" +
905
906 "<b>Id</b> = " + String.valueOf(getId()
907 ) + " <br/> " +
908
909 "<b>Location</b> = " + String.valueOf(getLocation()
910 ) + " <br/> " +
911
912 "<b>Holder</b> = " + String.valueOf(getHolder()
913 ) + " <br/> " +
914
915 "<b>Team</b> = " + String.valueOf(getTeam()
916 ) + " <br/> " +
917
918 "<b>Visible</b> = " + String.valueOf(isVisible()
919 ) + " <br/> " +
920
921 "<b>State</b> = " + String.valueOf(getState()
922 ) + " <br/> " +
923
924 "<br/>]";
925 }
926
927
928
929
930
931
932
933
934
935
936 }
937