Line data Source code
1 :
2 : /*
3 : * ALMA - Atacama Large Millimeter Array
4 : * (c) European Southern Observatory, 2002
5 : * (c) Associated Universities Inc., 2002
6 : * Copyright by ESO (in the framework of the ALMA collaboration),
7 : * Copyright by AUI (in the framework of the ALMA collaboration),
8 : * All rights reserved.
9 : *
10 : * This library is free software; you can redistribute it and/or
11 : * modify it under the terms of the GNU Lesser General Public
12 : * License as published by the Free software Foundation; either
13 : * version 2.1 of the License, or (at your option) any later version.
14 : *
15 : * This library is distributed in the hope that it will be useful,
16 : * but WITHOUT ANY WARRANTY, without even the implied warranty of
17 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 : * Lesser General Public License for more details.
19 : *
20 : * You should have received a copy of the GNU Lesser General Public
21 : * License along with this library; if not, write to the Free Software
22 : * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
23 : * MA 02111-1307 USA
24 : *
25 : * Warning!
26 : * --------------------------------------------------------------------
27 : * | This is generated code! Do not modify this file. |
28 : * | If you do, all changes will be lost when the file is re-generated. |
29 : * --------------------------------------------------------------------
30 : *
31 : * File FieldRow.cpp
32 : */
33 :
34 : #include <vector>
35 : #include <set>
36 :
37 : #include <alma/ASDM/ASDM.h>
38 : #include <alma/ASDM/FieldRow.h>
39 : #include <alma/ASDM/FieldTable.h>
40 :
41 : #include <alma/ASDM/EphemerisTable.h>
42 : #include <alma/ASDM/EphemerisRow.h>
43 :
44 : #include <alma/ASDM/SourceTable.h>
45 : #include <alma/ASDM/SourceRow.h>
46 :
47 : #include <alma/ASDM/FieldTable.h>
48 : #include <alma/ASDM/FieldRow.h>
49 :
50 :
51 : using asdm::ASDM;
52 : using asdm::FieldRow;
53 : using asdm::FieldTable;
54 :
55 : using asdm::EphemerisTable;
56 : using asdm::EphemerisRow;
57 :
58 : using asdm::SourceTable;
59 : using asdm::SourceRow;
60 :
61 : using asdm::FieldTable;
62 : using asdm::FieldRow;
63 :
64 :
65 : #include <alma/ASDM/Parser.h>
66 :
67 : #include <alma/ASDM/EnumerationParser.h>
68 : #include <alma/ASDM/ASDMValuesParser.h>
69 :
70 : #include <alma/ASDM/InvalidArgumentException.h>
71 :
72 : using namespace std;
73 :
74 : namespace asdm {
75 0 : FieldRow::~FieldRow() {
76 0 : }
77 :
78 : /**
79 : * Return the table to which this row belongs.
80 : */
81 0 : FieldTable &FieldRow::getTable() const {
82 0 : return table;
83 : }
84 :
85 0 : bool FieldRow::isAdded() const {
86 0 : return hasBeenAdded;
87 : }
88 :
89 0 : void FieldRow::isAdded(bool added) {
90 0 : hasBeenAdded = added;
91 0 : }
92 :
93 : #ifndef WITHOUT_ACS
94 : using asdmIDL::FieldRowIDL;
95 : #endif
96 :
97 : #ifndef WITHOUT_ACS
98 : /**
99 : * Return this row in the form of an IDL struct.
100 : * @return The values of this row as a FieldRowIDL struct.
101 : */
102 : FieldRowIDL *FieldRow::toIDL() const {
103 : FieldRowIDL *x = new FieldRowIDL ();
104 :
105 : // Fill the IDL structure.
106 :
107 :
108 :
109 :
110 :
111 :
112 :
113 : x->fieldId = fieldId.toIDLTag();
114 :
115 :
116 :
117 :
118 :
119 :
120 :
121 :
122 :
123 :
124 : x->fieldName = CORBA::string_dup(fieldName.c_str());
125 :
126 :
127 :
128 :
129 :
130 :
131 :
132 :
133 :
134 :
135 :
136 : x->numPoly = numPoly;
137 :
138 :
139 :
140 :
141 :
142 :
143 :
144 :
145 :
146 :
147 : x->delayDir.length(delayDir.size());
148 : for (unsigned int i = 0; i < delayDir.size(); i++) {
149 : x->delayDir[i].length(delayDir.at(i).size());
150 : }
151 :
152 : for (unsigned int i = 0; i < delayDir.size() ; i++)
153 : for (unsigned int j = 0; j < delayDir.at(i).size(); j++)
154 :
155 : x->delayDir[i][j]= delayDir.at(i).at(j).toIDLAngle();
156 :
157 :
158 :
159 :
160 :
161 :
162 :
163 :
164 :
165 :
166 :
167 : x->phaseDir.length(phaseDir.size());
168 : for (unsigned int i = 0; i < phaseDir.size(); i++) {
169 : x->phaseDir[i].length(phaseDir.at(i).size());
170 : }
171 :
172 : for (unsigned int i = 0; i < phaseDir.size() ; i++)
173 : for (unsigned int j = 0; j < phaseDir.at(i).size(); j++)
174 :
175 : x->phaseDir[i][j]= phaseDir.at(i).at(j).toIDLAngle();
176 :
177 :
178 :
179 :
180 :
181 :
182 :
183 :
184 :
185 :
186 :
187 : x->referenceDir.length(referenceDir.size());
188 : for (unsigned int i = 0; i < referenceDir.size(); i++) {
189 : x->referenceDir[i].length(referenceDir.at(i).size());
190 : }
191 :
192 : for (unsigned int i = 0; i < referenceDir.size() ; i++)
193 : for (unsigned int j = 0; j < referenceDir.at(i).size(); j++)
194 :
195 : x->referenceDir[i][j]= referenceDir.at(i).at(j).toIDLAngle();
196 :
197 :
198 :
199 :
200 :
201 :
202 :
203 :
204 :
205 : x->timeExists = timeExists;
206 :
207 :
208 :
209 : x->time = time.toIDLArrayTime();
210 :
211 :
212 :
213 :
214 :
215 :
216 :
217 : x->codeExists = codeExists;
218 :
219 :
220 :
221 :
222 : x->code = CORBA::string_dup(code.c_str());
223 :
224 :
225 :
226 :
227 :
228 :
229 :
230 :
231 : x->directionCodeExists = directionCodeExists;
232 :
233 :
234 :
235 :
236 : x->directionCode = directionCode;
237 :
238 :
239 :
240 :
241 :
242 :
243 :
244 :
245 : x->directionEquinoxExists = directionEquinoxExists;
246 :
247 :
248 :
249 : x->directionEquinox = directionEquinox.toIDLArrayTime();
250 :
251 :
252 :
253 :
254 :
255 :
256 :
257 : x->assocNatureExists = assocNatureExists;
258 :
259 :
260 :
261 :
262 : x->assocNature = CORBA::string_dup(assocNature.c_str());
263 :
264 :
265 :
266 :
267 :
268 :
269 :
270 :
271 :
272 :
273 :
274 :
275 : x->assocFieldIdExists = assocFieldIdExists;
276 :
277 :
278 :
279 :
280 : x->assocFieldId = assocFieldId.toIDLTag();
281 :
282 :
283 :
284 :
285 :
286 :
287 :
288 :
289 : x->ephemerisIdExists = ephemerisIdExists;
290 :
291 :
292 :
293 :
294 :
295 : x->ephemerisId = ephemerisId;
296 :
297 :
298 :
299 :
300 :
301 :
302 :
303 :
304 :
305 : x->sourceIdExists = sourceIdExists;
306 :
307 :
308 :
309 :
310 :
311 : x->sourceId = sourceId;
312 :
313 :
314 :
315 :
316 :
317 :
318 :
319 :
320 :
321 :
322 :
323 :
324 :
325 :
326 : return x;
327 :
328 : }
329 :
330 : void FieldRow::toIDL(asdmIDL::FieldRowIDL& x) const {
331 : // Set the x's fields.
332 :
333 :
334 :
335 :
336 :
337 :
338 :
339 : x.fieldId = fieldId.toIDLTag();
340 :
341 :
342 :
343 :
344 :
345 :
346 :
347 :
348 :
349 :
350 : x.fieldName = CORBA::string_dup(fieldName.c_str());
351 :
352 :
353 :
354 :
355 :
356 :
357 :
358 :
359 :
360 :
361 :
362 : x.numPoly = numPoly;
363 :
364 :
365 :
366 :
367 :
368 :
369 :
370 :
371 :
372 :
373 : x.delayDir.length(delayDir.size());
374 : for (unsigned int i = 0; i < delayDir.size(); i++) {
375 : x.delayDir[i].length(delayDir.at(i).size());
376 : }
377 :
378 : for (unsigned int i = 0; i < delayDir.size() ; i++)
379 : for (unsigned int j = 0; j < delayDir.at(i).size(); j++)
380 :
381 : x.delayDir[i][j]= delayDir.at(i).at(j).toIDLAngle();
382 :
383 :
384 :
385 :
386 :
387 :
388 :
389 :
390 :
391 :
392 :
393 : x.phaseDir.length(phaseDir.size());
394 : for (unsigned int i = 0; i < phaseDir.size(); i++) {
395 : x.phaseDir[i].length(phaseDir.at(i).size());
396 : }
397 :
398 : for (unsigned int i = 0; i < phaseDir.size() ; i++)
399 : for (unsigned int j = 0; j < phaseDir.at(i).size(); j++)
400 :
401 : x.phaseDir[i][j]= phaseDir.at(i).at(j).toIDLAngle();
402 :
403 :
404 :
405 :
406 :
407 :
408 :
409 :
410 :
411 :
412 :
413 : x.referenceDir.length(referenceDir.size());
414 : for (unsigned int i = 0; i < referenceDir.size(); i++) {
415 : x.referenceDir[i].length(referenceDir.at(i).size());
416 : }
417 :
418 : for (unsigned int i = 0; i < referenceDir.size() ; i++)
419 : for (unsigned int j = 0; j < referenceDir.at(i).size(); j++)
420 :
421 : x.referenceDir[i][j]= referenceDir.at(i).at(j).toIDLAngle();
422 :
423 :
424 :
425 :
426 :
427 :
428 :
429 :
430 :
431 : x.timeExists = timeExists;
432 :
433 :
434 :
435 : x.time = time.toIDLArrayTime();
436 :
437 :
438 :
439 :
440 :
441 :
442 :
443 : x.codeExists = codeExists;
444 :
445 :
446 :
447 :
448 : x.code = CORBA::string_dup(code.c_str());
449 :
450 :
451 :
452 :
453 :
454 :
455 :
456 :
457 : x.directionCodeExists = directionCodeExists;
458 :
459 :
460 :
461 :
462 : x.directionCode = directionCode;
463 :
464 :
465 :
466 :
467 :
468 :
469 :
470 :
471 : x.directionEquinoxExists = directionEquinoxExists;
472 :
473 :
474 :
475 : x.directionEquinox = directionEquinox.toIDLArrayTime();
476 :
477 :
478 :
479 :
480 :
481 :
482 :
483 : x.assocNatureExists = assocNatureExists;
484 :
485 :
486 :
487 :
488 : x.assocNature = CORBA::string_dup(assocNature.c_str());
489 :
490 :
491 :
492 :
493 :
494 :
495 :
496 :
497 :
498 :
499 :
500 :
501 : x.assocFieldIdExists = assocFieldIdExists;
502 :
503 :
504 :
505 :
506 : x.assocFieldId = assocFieldId.toIDLTag();
507 :
508 :
509 :
510 :
511 :
512 :
513 :
514 :
515 : x.ephemerisIdExists = ephemerisIdExists;
516 :
517 :
518 :
519 :
520 :
521 : x.ephemerisId = ephemerisId;
522 :
523 :
524 :
525 :
526 :
527 :
528 :
529 :
530 :
531 : x.sourceIdExists = sourceIdExists;
532 :
533 :
534 :
535 :
536 :
537 : x.sourceId = sourceId;
538 :
539 :
540 :
541 :
542 :
543 :
544 :
545 :
546 :
547 :
548 :
549 :
550 :
551 :
552 : }
553 : #endif
554 :
555 :
556 : #ifndef WITHOUT_ACS
557 : /**
558 : * Fill the values of this row from the IDL struct FieldRowIDL.
559 : * @param x The IDL struct containing the values used to fill this row.
560 : */
561 : void FieldRow::setFromIDL (FieldRowIDL x){
562 : try {
563 : // Fill the values from x.
564 :
565 :
566 :
567 :
568 :
569 :
570 : setFieldId(Tag (x.fieldId));
571 :
572 :
573 :
574 :
575 :
576 :
577 :
578 :
579 :
580 : setFieldName(string (x.fieldName));
581 :
582 :
583 :
584 :
585 :
586 :
587 :
588 :
589 :
590 : setNumPoly(x.numPoly);
591 :
592 :
593 :
594 :
595 :
596 :
597 :
598 :
599 :
600 : delayDir .clear();
601 :
602 : vector<Angle> v_aux_delayDir;
603 :
604 : for (unsigned int i = 0; i < x.delayDir.length(); ++i) {
605 : v_aux_delayDir.clear();
606 : for (unsigned int j = 0; j < x.delayDir[0].length(); ++j) {
607 :
608 : v_aux_delayDir.push_back(Angle (x.delayDir[i][j]));
609 :
610 : }
611 : delayDir.push_back(v_aux_delayDir);
612 : }
613 :
614 :
615 :
616 :
617 :
618 :
619 :
620 :
621 :
622 : phaseDir .clear();
623 :
624 : vector<Angle> v_aux_phaseDir;
625 :
626 : for (unsigned int i = 0; i < x.phaseDir.length(); ++i) {
627 : v_aux_phaseDir.clear();
628 : for (unsigned int j = 0; j < x.phaseDir[0].length(); ++j) {
629 :
630 : v_aux_phaseDir.push_back(Angle (x.phaseDir[i][j]));
631 :
632 : }
633 : phaseDir.push_back(v_aux_phaseDir);
634 : }
635 :
636 :
637 :
638 :
639 :
640 :
641 :
642 :
643 :
644 : referenceDir .clear();
645 :
646 : vector<Angle> v_aux_referenceDir;
647 :
648 : for (unsigned int i = 0; i < x.referenceDir.length(); ++i) {
649 : v_aux_referenceDir.clear();
650 : for (unsigned int j = 0; j < x.referenceDir[0].length(); ++j) {
651 :
652 : v_aux_referenceDir.push_back(Angle (x.referenceDir[i][j]));
653 :
654 : }
655 : referenceDir.push_back(v_aux_referenceDir);
656 : }
657 :
658 :
659 :
660 :
661 :
662 :
663 :
664 : timeExists = x.timeExists;
665 : if (x.timeExists) {
666 :
667 :
668 :
669 : setTime(ArrayTime (x.time));
670 :
671 :
672 :
673 : }
674 :
675 :
676 :
677 :
678 :
679 : codeExists = x.codeExists;
680 : if (x.codeExists) {
681 :
682 :
683 :
684 : setCode(string (x.code));
685 :
686 :
687 :
688 : }
689 :
690 :
691 :
692 :
693 :
694 : directionCodeExists = x.directionCodeExists;
695 : if (x.directionCodeExists) {
696 :
697 :
698 :
699 : setDirectionCode(x.directionCode);
700 :
701 :
702 :
703 : }
704 :
705 :
706 :
707 :
708 :
709 : directionEquinoxExists = x.directionEquinoxExists;
710 : if (x.directionEquinoxExists) {
711 :
712 :
713 :
714 : setDirectionEquinox(ArrayTime (x.directionEquinox));
715 :
716 :
717 :
718 : }
719 :
720 :
721 :
722 :
723 :
724 : assocNatureExists = x.assocNatureExists;
725 : if (x.assocNatureExists) {
726 :
727 :
728 :
729 : setAssocNature(string (x.assocNature));
730 :
731 :
732 :
733 : }
734 :
735 :
736 :
737 :
738 :
739 :
740 :
741 :
742 : assocFieldIdExists = x.assocFieldIdExists;
743 : if (x.assocFieldIdExists) {
744 :
745 :
746 :
747 : setAssocFieldId(Tag (x.assocFieldId));
748 :
749 :
750 :
751 : }
752 :
753 :
754 :
755 :
756 :
757 : ephemerisIdExists = x.ephemerisIdExists;
758 : if (x.ephemerisIdExists) {
759 :
760 :
761 :
762 : setEphemerisId(x.ephemerisId);
763 :
764 :
765 :
766 : }
767 :
768 :
769 :
770 :
771 :
772 : sourceIdExists = x.sourceIdExists;
773 : if (x.sourceIdExists) {
774 :
775 :
776 :
777 : setSourceId(x.sourceId);
778 :
779 :
780 :
781 : }
782 :
783 :
784 :
785 :
786 :
787 :
788 :
789 :
790 :
791 :
792 :
793 : } catch (const IllegalAccessException &err) {
794 : throw ConversionException (err.getMessage(),"Field");
795 : }
796 : }
797 : #endif
798 :
799 : /**
800 : * Return this row in the form of an XML string.
801 : * @return The values of this row as an XML string.
802 : */
803 0 : string FieldRow::toXML() const {
804 0 : string buf;
805 0 : buf.append("<row> \n");
806 :
807 :
808 :
809 :
810 :
811 :
812 0 : Parser::toXML(fieldId, "fieldId", buf);
813 :
814 :
815 :
816 :
817 :
818 :
819 :
820 0 : Parser::toXML(fieldName, "fieldName", buf);
821 :
822 :
823 :
824 :
825 :
826 :
827 :
828 0 : Parser::toXML(numPoly, "numPoly", buf);
829 :
830 :
831 :
832 :
833 :
834 :
835 :
836 0 : Parser::toXML(delayDir, "delayDir", buf);
837 :
838 :
839 :
840 :
841 :
842 :
843 :
844 0 : Parser::toXML(phaseDir, "phaseDir", buf);
845 :
846 :
847 :
848 :
849 :
850 :
851 :
852 0 : Parser::toXML(referenceDir, "referenceDir", buf);
853 :
854 :
855 :
856 :
857 :
858 :
859 0 : if (timeExists) {
860 :
861 :
862 0 : Parser::toXML(time, "time", buf);
863 :
864 :
865 : }
866 :
867 :
868 :
869 :
870 :
871 0 : if (codeExists) {
872 :
873 :
874 0 : Parser::toXML(code, "code", buf);
875 :
876 :
877 : }
878 :
879 :
880 :
881 :
882 :
883 0 : if (directionCodeExists) {
884 :
885 :
886 0 : buf.append(EnumerationParser::toXML("directionCode", directionCode));
887 :
888 :
889 : }
890 :
891 :
892 :
893 :
894 :
895 0 : if (directionEquinoxExists) {
896 :
897 :
898 0 : Parser::toXML(directionEquinox, "directionEquinox", buf);
899 :
900 :
901 : }
902 :
903 :
904 :
905 :
906 :
907 0 : if (assocNatureExists) {
908 :
909 :
910 0 : Parser::toXML(assocNature, "assocNature", buf);
911 :
912 :
913 : }
914 :
915 :
916 :
917 :
918 :
919 :
920 :
921 :
922 0 : if (assocFieldIdExists) {
923 :
924 :
925 0 : Parser::toXML(assocFieldId, "assocFieldId", buf);
926 :
927 :
928 : }
929 :
930 :
931 :
932 :
933 :
934 0 : if (ephemerisIdExists) {
935 :
936 :
937 0 : Parser::toXML(ephemerisId, "ephemerisId", buf);
938 :
939 :
940 : }
941 :
942 :
943 :
944 :
945 :
946 0 : if (sourceIdExists) {
947 :
948 :
949 0 : Parser::toXML(sourceId, "sourceId", buf);
950 :
951 :
952 : }
953 :
954 :
955 :
956 :
957 :
958 :
959 :
960 :
961 :
962 :
963 :
964 :
965 0 : buf.append("</row>\n");
966 0 : return buf;
967 0 : }
968 :
969 : /**
970 : * Fill the values of this row from an XML string
971 : * that was produced by the toXML() method.
972 : * @param x The XML string being used to set the values of this row.
973 : */
974 0 : void FieldRow::setFromXML (string rowDoc) {
975 0 : Parser row(rowDoc);
976 0 : string s = "";
977 : try {
978 :
979 :
980 :
981 :
982 :
983 0 : setFieldId(Parser::getTag("fieldId","Field",rowDoc));
984 :
985 :
986 :
987 :
988 :
989 :
990 :
991 0 : setFieldName(Parser::getString("fieldName","Field",rowDoc));
992 :
993 :
994 :
995 :
996 :
997 :
998 :
999 0 : setNumPoly(Parser::getInteger("numPoly","Field",rowDoc));
1000 :
1001 :
1002 :
1003 :
1004 :
1005 :
1006 :
1007 :
1008 0 : setDelayDir(Parser::get2DAngle("delayDir","Field",rowDoc));
1009 :
1010 :
1011 :
1012 :
1013 :
1014 :
1015 :
1016 :
1017 :
1018 0 : setPhaseDir(Parser::get2DAngle("phaseDir","Field",rowDoc));
1019 :
1020 :
1021 :
1022 :
1023 :
1024 :
1025 :
1026 :
1027 :
1028 0 : setReferenceDir(Parser::get2DAngle("referenceDir","Field",rowDoc));
1029 :
1030 :
1031 :
1032 :
1033 :
1034 :
1035 :
1036 0 : if (row.isStr("<time>")) {
1037 :
1038 0 : setTime(Parser::getArrayTime("time","Field",rowDoc));
1039 :
1040 : }
1041 :
1042 :
1043 :
1044 :
1045 :
1046 0 : if (row.isStr("<code>")) {
1047 :
1048 0 : setCode(Parser::getString("code","Field",rowDoc));
1049 :
1050 : }
1051 :
1052 :
1053 :
1054 :
1055 :
1056 0 : if (row.isStr("<directionCode>")) {
1057 :
1058 :
1059 :
1060 0 : directionCode = EnumerationParser::getDirectionReferenceCode("directionCode","Field",rowDoc);
1061 :
1062 :
1063 :
1064 0 : directionCodeExists = true;
1065 : }
1066 :
1067 :
1068 :
1069 :
1070 :
1071 0 : if (row.isStr("<directionEquinox>")) {
1072 :
1073 0 : setDirectionEquinox(Parser::getArrayTime("directionEquinox","Field",rowDoc));
1074 :
1075 : }
1076 :
1077 :
1078 :
1079 :
1080 :
1081 0 : if (row.isStr("<assocNature>")) {
1082 :
1083 0 : setAssocNature(Parser::getString("assocNature","Field",rowDoc));
1084 :
1085 : }
1086 :
1087 :
1088 :
1089 :
1090 :
1091 :
1092 :
1093 :
1094 0 : if (row.isStr("<assocFieldId>")) {
1095 :
1096 0 : setAssocFieldId(Parser::getTag("assocFieldId","Field",rowDoc));
1097 :
1098 : }
1099 :
1100 :
1101 :
1102 :
1103 :
1104 0 : if (row.isStr("<ephemerisId>")) {
1105 :
1106 0 : setEphemerisId(Parser::getInteger("ephemerisId","Field",rowDoc));
1107 :
1108 : }
1109 :
1110 :
1111 :
1112 :
1113 :
1114 0 : if (row.isStr("<sourceId>")) {
1115 :
1116 0 : setSourceId(Parser::getInteger("sourceId","Field",rowDoc));
1117 :
1118 : }
1119 :
1120 :
1121 :
1122 :
1123 :
1124 :
1125 :
1126 :
1127 :
1128 :
1129 :
1130 0 : } catch (const IllegalAccessException &err) {
1131 0 : throw ConversionException (err.getMessage(),"Field");
1132 0 : }
1133 0 : }
1134 :
1135 0 : void FieldRow::toBin(EndianOSStream& eoss) {
1136 :
1137 :
1138 :
1139 :
1140 :
1141 0 : fieldId.toBin(eoss);
1142 :
1143 :
1144 :
1145 :
1146 :
1147 :
1148 :
1149 0 : eoss.writeString(fieldName);
1150 :
1151 :
1152 :
1153 :
1154 :
1155 :
1156 :
1157 :
1158 0 : eoss.writeInt(numPoly);
1159 :
1160 :
1161 :
1162 :
1163 :
1164 :
1165 :
1166 0 : Angle::toBin(delayDir, eoss);
1167 :
1168 :
1169 :
1170 :
1171 :
1172 :
1173 0 : Angle::toBin(phaseDir, eoss);
1174 :
1175 :
1176 :
1177 :
1178 :
1179 :
1180 0 : Angle::toBin(referenceDir, eoss);
1181 :
1182 :
1183 :
1184 :
1185 :
1186 :
1187 0 : eoss.writeBoolean(timeExists);
1188 0 : if (timeExists) {
1189 :
1190 :
1191 :
1192 :
1193 0 : time.toBin(eoss);
1194 :
1195 :
1196 :
1197 : }
1198 :
1199 0 : eoss.writeBoolean(codeExists);
1200 0 : if (codeExists) {
1201 :
1202 :
1203 :
1204 :
1205 :
1206 0 : eoss.writeString(code);
1207 :
1208 :
1209 :
1210 :
1211 : }
1212 :
1213 0 : eoss.writeBoolean(directionCodeExists);
1214 0 : if (directionCodeExists) {
1215 :
1216 :
1217 :
1218 :
1219 :
1220 0 : eoss.writeString(CDirectionReferenceCode::name(directionCode));
1221 : /* eoss.writeInt(directionCode); */
1222 :
1223 :
1224 :
1225 :
1226 : }
1227 :
1228 0 : eoss.writeBoolean(directionEquinoxExists);
1229 0 : if (directionEquinoxExists) {
1230 :
1231 :
1232 :
1233 :
1234 0 : directionEquinox.toBin(eoss);
1235 :
1236 :
1237 :
1238 : }
1239 :
1240 0 : eoss.writeBoolean(assocNatureExists);
1241 0 : if (assocNatureExists) {
1242 :
1243 :
1244 :
1245 :
1246 :
1247 0 : eoss.writeString(assocNature);
1248 :
1249 :
1250 :
1251 :
1252 : }
1253 :
1254 0 : eoss.writeBoolean(ephemerisIdExists);
1255 0 : if (ephemerisIdExists) {
1256 :
1257 :
1258 :
1259 :
1260 :
1261 0 : eoss.writeInt(ephemerisId);
1262 :
1263 :
1264 :
1265 :
1266 : }
1267 :
1268 0 : eoss.writeBoolean(sourceIdExists);
1269 0 : if (sourceIdExists) {
1270 :
1271 :
1272 :
1273 :
1274 :
1275 0 : eoss.writeInt(sourceId);
1276 :
1277 :
1278 :
1279 :
1280 : }
1281 :
1282 0 : eoss.writeBoolean(assocFieldIdExists);
1283 0 : if (assocFieldIdExists) {
1284 :
1285 :
1286 :
1287 :
1288 0 : assocFieldId.toBin(eoss);
1289 :
1290 :
1291 :
1292 : }
1293 :
1294 0 : }
1295 :
1296 0 : void FieldRow::fieldIdFromBin(EndianIStream& eis) {
1297 :
1298 :
1299 :
1300 :
1301 0 : fieldId = Tag::fromBin(eis);
1302 :
1303 :
1304 :
1305 0 : }
1306 0 : void FieldRow::fieldNameFromBin(EndianIStream& eis) {
1307 :
1308 :
1309 :
1310 :
1311 :
1312 0 : fieldName = eis.readString();
1313 :
1314 :
1315 :
1316 :
1317 0 : }
1318 0 : void FieldRow::numPolyFromBin(EndianIStream& eis) {
1319 :
1320 :
1321 :
1322 :
1323 :
1324 0 : numPoly = eis.readInt();
1325 :
1326 :
1327 :
1328 :
1329 0 : }
1330 0 : void FieldRow::delayDirFromBin(EndianIStream& eis) {
1331 :
1332 :
1333 :
1334 :
1335 :
1336 :
1337 0 : delayDir = Angle::from2DBin(eis);
1338 :
1339 :
1340 :
1341 :
1342 :
1343 0 : }
1344 0 : void FieldRow::phaseDirFromBin(EndianIStream& eis) {
1345 :
1346 :
1347 :
1348 :
1349 :
1350 :
1351 0 : phaseDir = Angle::from2DBin(eis);
1352 :
1353 :
1354 :
1355 :
1356 :
1357 0 : }
1358 0 : void FieldRow::referenceDirFromBin(EndianIStream& eis) {
1359 :
1360 :
1361 :
1362 :
1363 :
1364 :
1365 0 : referenceDir = Angle::from2DBin(eis);
1366 :
1367 :
1368 :
1369 :
1370 :
1371 0 : }
1372 :
1373 0 : void FieldRow::timeFromBin(EndianIStream& eis) {
1374 :
1375 0 : timeExists = eis.readBoolean();
1376 0 : if (timeExists) {
1377 :
1378 :
1379 :
1380 :
1381 0 : time = ArrayTime::fromBin(eis);
1382 :
1383 :
1384 :
1385 : }
1386 :
1387 0 : }
1388 0 : void FieldRow::codeFromBin(EndianIStream& eis) {
1389 :
1390 0 : codeExists = eis.readBoolean();
1391 0 : if (codeExists) {
1392 :
1393 :
1394 :
1395 :
1396 :
1397 0 : code = eis.readString();
1398 :
1399 :
1400 :
1401 :
1402 : }
1403 :
1404 0 : }
1405 0 : void FieldRow::directionCodeFromBin(EndianIStream& eis) {
1406 :
1407 0 : directionCodeExists = eis.readBoolean();
1408 0 : if (directionCodeExists) {
1409 :
1410 :
1411 :
1412 :
1413 :
1414 0 : directionCode = CDirectionReferenceCode::literal(eis.readString());
1415 :
1416 :
1417 :
1418 :
1419 : }
1420 :
1421 0 : }
1422 0 : void FieldRow::directionEquinoxFromBin(EndianIStream& eis) {
1423 :
1424 0 : directionEquinoxExists = eis.readBoolean();
1425 0 : if (directionEquinoxExists) {
1426 :
1427 :
1428 :
1429 :
1430 0 : directionEquinox = ArrayTime::fromBin(eis);
1431 :
1432 :
1433 :
1434 : }
1435 :
1436 0 : }
1437 0 : void FieldRow::assocNatureFromBin(EndianIStream& eis) {
1438 :
1439 0 : assocNatureExists = eis.readBoolean();
1440 0 : if (assocNatureExists) {
1441 :
1442 :
1443 :
1444 :
1445 :
1446 0 : assocNature = eis.readString();
1447 :
1448 :
1449 :
1450 :
1451 : }
1452 :
1453 0 : }
1454 0 : void FieldRow::ephemerisIdFromBin(EndianIStream& eis) {
1455 :
1456 0 : ephemerisIdExists = eis.readBoolean();
1457 0 : if (ephemerisIdExists) {
1458 :
1459 :
1460 :
1461 :
1462 :
1463 0 : ephemerisId = eis.readInt();
1464 :
1465 :
1466 :
1467 :
1468 : }
1469 :
1470 0 : }
1471 0 : void FieldRow::sourceIdFromBin(EndianIStream& eis) {
1472 :
1473 0 : sourceIdExists = eis.readBoolean();
1474 0 : if (sourceIdExists) {
1475 :
1476 :
1477 :
1478 :
1479 :
1480 0 : sourceId = eis.readInt();
1481 :
1482 :
1483 :
1484 :
1485 : }
1486 :
1487 0 : }
1488 0 : void FieldRow::assocFieldIdFromBin(EndianIStream& eis) {
1489 :
1490 0 : assocFieldIdExists = eis.readBoolean();
1491 0 : if (assocFieldIdExists) {
1492 :
1493 :
1494 :
1495 :
1496 0 : assocFieldId = Tag::fromBin(eis);
1497 :
1498 :
1499 :
1500 : }
1501 :
1502 0 : }
1503 :
1504 :
1505 0 : FieldRow* FieldRow::fromBin(EndianIStream& eis, FieldTable& table, const vector<string>& attributesSeq) {
1506 0 : FieldRow* row = new FieldRow(table);
1507 :
1508 0 : map<string, FieldAttributeFromBin>::iterator iter ;
1509 0 : for (unsigned int i = 0; i < attributesSeq.size(); i++) {
1510 0 : iter = row->fromBinMethods.find(attributesSeq.at(i));
1511 0 : if (iter != row->fromBinMethods.end()) {
1512 0 : (row->*(row->fromBinMethods[ attributesSeq.at(i) ] ))(eis);
1513 : }
1514 : else {
1515 0 : BinaryAttributeReaderFunctor* functorP = table.getUnknownAttributeBinaryReader(attributesSeq.at(i));
1516 0 : if (functorP)
1517 0 : (*functorP)(eis);
1518 : else
1519 0 : throw ConversionException("There is not method to read an attribute '"+attributesSeq.at(i)+"'.", "FieldTable");
1520 : }
1521 :
1522 : }
1523 0 : return row;
1524 : }
1525 :
1526 : //
1527 : // A collection of methods to set the value of the attributes from their textual value in the XML representation
1528 : // of one row.
1529 : //
1530 :
1531 : // Convert a string into an Tag
1532 0 : void FieldRow::fieldIdFromText(const string & s) {
1533 :
1534 :
1535 0 : fieldId = ASDMValuesParser::parse<Tag>(s);
1536 :
1537 :
1538 0 : }
1539 :
1540 :
1541 : // Convert a string into an String
1542 0 : void FieldRow::fieldNameFromText(const string & s) {
1543 :
1544 :
1545 0 : fieldName = ASDMValuesParser::parse<string>(s);
1546 :
1547 :
1548 0 : }
1549 :
1550 :
1551 : // Convert a string into an int
1552 0 : void FieldRow::numPolyFromText(const string & s) {
1553 :
1554 :
1555 0 : numPoly = ASDMValuesParser::parse<int>(s);
1556 :
1557 :
1558 0 : }
1559 :
1560 :
1561 : // Convert a string into an Angle
1562 0 : void FieldRow::delayDirFromText(const string & s) {
1563 :
1564 :
1565 0 : delayDir = ASDMValuesParser::parse2D<Angle>(s);
1566 :
1567 :
1568 0 : }
1569 :
1570 :
1571 : // Convert a string into an Angle
1572 0 : void FieldRow::phaseDirFromText(const string & s) {
1573 :
1574 :
1575 0 : phaseDir = ASDMValuesParser::parse2D<Angle>(s);
1576 :
1577 :
1578 0 : }
1579 :
1580 :
1581 : // Convert a string into an Angle
1582 0 : void FieldRow::referenceDirFromText(const string & s) {
1583 :
1584 :
1585 0 : referenceDir = ASDMValuesParser::parse2D<Angle>(s);
1586 :
1587 :
1588 0 : }
1589 :
1590 :
1591 :
1592 : // Convert a string into an ArrayTime
1593 0 : void FieldRow::timeFromText(const string & s) {
1594 0 : timeExists = true;
1595 :
1596 :
1597 0 : time = ASDMValuesParser::parse<ArrayTime>(s);
1598 :
1599 :
1600 0 : }
1601 :
1602 :
1603 : // Convert a string into an String
1604 0 : void FieldRow::codeFromText(const string & s) {
1605 0 : codeExists = true;
1606 :
1607 :
1608 0 : code = ASDMValuesParser::parse<string>(s);
1609 :
1610 :
1611 0 : }
1612 :
1613 :
1614 : // Convert a string into an DirectionReferenceCode
1615 0 : void FieldRow::directionCodeFromText(const string & s) {
1616 0 : directionCodeExists = true;
1617 :
1618 :
1619 0 : directionCode = ASDMValuesParser::parse<DirectionReferenceCodeMod::DirectionReferenceCode>(s);
1620 :
1621 :
1622 0 : }
1623 :
1624 :
1625 : // Convert a string into an ArrayTime
1626 0 : void FieldRow::directionEquinoxFromText(const string & s) {
1627 0 : directionEquinoxExists = true;
1628 :
1629 :
1630 0 : directionEquinox = ASDMValuesParser::parse<ArrayTime>(s);
1631 :
1632 :
1633 0 : }
1634 :
1635 :
1636 : // Convert a string into an String
1637 0 : void FieldRow::assocNatureFromText(const string & s) {
1638 0 : assocNatureExists = true;
1639 :
1640 :
1641 0 : assocNature = ASDMValuesParser::parse<string>(s);
1642 :
1643 :
1644 0 : }
1645 :
1646 :
1647 : // Convert a string into an int
1648 0 : void FieldRow::ephemerisIdFromText(const string & s) {
1649 0 : ephemerisIdExists = true;
1650 :
1651 :
1652 0 : ephemerisId = ASDMValuesParser::parse<int>(s);
1653 :
1654 :
1655 0 : }
1656 :
1657 :
1658 : // Convert a string into an int
1659 0 : void FieldRow::sourceIdFromText(const string & s) {
1660 0 : sourceIdExists = true;
1661 :
1662 :
1663 0 : sourceId = ASDMValuesParser::parse<int>(s);
1664 :
1665 :
1666 0 : }
1667 :
1668 :
1669 : // Convert a string into an Tag
1670 0 : void FieldRow::assocFieldIdFromText(const string & s) {
1671 0 : assocFieldIdExists = true;
1672 :
1673 :
1674 0 : assocFieldId = ASDMValuesParser::parse<Tag>(s);
1675 :
1676 :
1677 0 : }
1678 :
1679 :
1680 :
1681 0 : void FieldRow::fromText(const std::string& attributeName, const std::string& t) {
1682 0 : map<string, FieldAttributeFromText>::iterator iter;
1683 0 : if ((iter = fromTextMethods.find(attributeName)) == fromTextMethods.end())
1684 0 : throw ConversionException("I do not know what to do with '"+attributeName+"' and its content '"+t+"' (while parsing an XML document)", "FieldTable");
1685 0 : (this->*(iter->second))(t);
1686 0 : }
1687 :
1688 : ////////////////////////////////////////////////
1689 : // Intrinsic Table Attributes getters/setters //
1690 : ////////////////////////////////////////////////
1691 :
1692 :
1693 :
1694 :
1695 : /**
1696 : * Get fieldId.
1697 : * @return fieldId as Tag
1698 : */
1699 0 : Tag FieldRow::getFieldId() const {
1700 :
1701 0 : return fieldId;
1702 : }
1703 :
1704 : /**
1705 : * Set fieldId with the specified Tag.
1706 : * @param fieldId The Tag value to which fieldId is to be set.
1707 :
1708 :
1709 :
1710 : * @throw IllegalAccessException If an attempt is made to change this field after is has been added to the table.
1711 :
1712 : */
1713 0 : void FieldRow::setFieldId (Tag fieldId) {
1714 :
1715 :
1716 0 : if (hasBeenAdded) {
1717 :
1718 0 : throw IllegalAccessException("fieldId", "Field");
1719 :
1720 : }
1721 :
1722 0 : this->fieldId = fieldId;
1723 :
1724 0 : }
1725 :
1726 :
1727 :
1728 :
1729 :
1730 :
1731 : /**
1732 : * Get fieldName.
1733 : * @return fieldName as std::string
1734 : */
1735 0 : std::string FieldRow::getFieldName() const {
1736 :
1737 0 : return fieldName;
1738 : }
1739 :
1740 : /**
1741 : * Set fieldName with the specified std::string.
1742 : * @param fieldName The std::string value to which fieldName is to be set.
1743 :
1744 :
1745 :
1746 : */
1747 0 : void FieldRow::setFieldName (std::string fieldName) {
1748 :
1749 :
1750 0 : if (hasBeenAdded) {
1751 :
1752 : }
1753 :
1754 0 : this->fieldName = fieldName;
1755 :
1756 0 : }
1757 :
1758 :
1759 :
1760 :
1761 :
1762 :
1763 : /**
1764 : * Get numPoly.
1765 : * @return numPoly as int
1766 : */
1767 0 : int FieldRow::getNumPoly() const {
1768 :
1769 0 : return numPoly;
1770 : }
1771 :
1772 : /**
1773 : * Set numPoly with the specified int.
1774 : * @param numPoly The int value to which numPoly is to be set.
1775 :
1776 :
1777 :
1778 : */
1779 0 : void FieldRow::setNumPoly (int numPoly) {
1780 :
1781 :
1782 0 : if (hasBeenAdded) {
1783 :
1784 : }
1785 :
1786 0 : this->numPoly = numPoly;
1787 :
1788 0 : }
1789 :
1790 :
1791 :
1792 :
1793 :
1794 :
1795 : /**
1796 : * Get delayDir.
1797 : * @return delayDir as std::vector<std::vector<Angle > >
1798 : */
1799 0 : std::vector<std::vector<Angle > > FieldRow::getDelayDir() const {
1800 :
1801 0 : return delayDir;
1802 : }
1803 :
1804 : /**
1805 : * Set delayDir with the specified std::vector<std::vector<Angle > >.
1806 : * @param delayDir The std::vector<std::vector<Angle > > value to which delayDir is to be set.
1807 :
1808 :
1809 :
1810 : */
1811 0 : void FieldRow::setDelayDir (std::vector<std::vector<Angle > > delayDir) {
1812 :
1813 :
1814 0 : if (hasBeenAdded) {
1815 :
1816 : }
1817 :
1818 0 : this->delayDir = delayDir;
1819 :
1820 0 : }
1821 :
1822 :
1823 :
1824 :
1825 :
1826 :
1827 : /**
1828 : * Get phaseDir.
1829 : * @return phaseDir as std::vector<std::vector<Angle > >
1830 : */
1831 0 : std::vector<std::vector<Angle > > FieldRow::getPhaseDir() const {
1832 :
1833 0 : return phaseDir;
1834 : }
1835 :
1836 : /**
1837 : * Set phaseDir with the specified std::vector<std::vector<Angle > >.
1838 : * @param phaseDir The std::vector<std::vector<Angle > > value to which phaseDir is to be set.
1839 :
1840 :
1841 :
1842 : */
1843 0 : void FieldRow::setPhaseDir (std::vector<std::vector<Angle > > phaseDir) {
1844 :
1845 :
1846 0 : if (hasBeenAdded) {
1847 :
1848 : }
1849 :
1850 0 : this->phaseDir = phaseDir;
1851 :
1852 0 : }
1853 :
1854 :
1855 :
1856 :
1857 :
1858 :
1859 : /**
1860 : * Get referenceDir.
1861 : * @return referenceDir as std::vector<std::vector<Angle > >
1862 : */
1863 0 : std::vector<std::vector<Angle > > FieldRow::getReferenceDir() const {
1864 :
1865 0 : return referenceDir;
1866 : }
1867 :
1868 : /**
1869 : * Set referenceDir with the specified std::vector<std::vector<Angle > >.
1870 : * @param referenceDir The std::vector<std::vector<Angle > > value to which referenceDir is to be set.
1871 :
1872 :
1873 :
1874 : */
1875 0 : void FieldRow::setReferenceDir (std::vector<std::vector<Angle > > referenceDir) {
1876 :
1877 :
1878 0 : if (hasBeenAdded) {
1879 :
1880 : }
1881 :
1882 0 : this->referenceDir = referenceDir;
1883 :
1884 0 : }
1885 :
1886 :
1887 :
1888 :
1889 : /**
1890 : * The attribute time is optional. Return true if this attribute exists.
1891 : * @return true if and only if the time attribute exists.
1892 : */
1893 0 : bool FieldRow::isTimeExists() const {
1894 0 : return timeExists;
1895 : }
1896 :
1897 :
1898 :
1899 : /**
1900 : * Get time, which is optional.
1901 : * @return time as ArrayTime
1902 : * @throw IllegalAccessException If time does not exist.
1903 : */
1904 0 : ArrayTime FieldRow::getTime() const {
1905 0 : if (!timeExists) {
1906 0 : throw IllegalAccessException("time", "Field");
1907 : }
1908 :
1909 0 : return time;
1910 : }
1911 :
1912 : /**
1913 : * Set time with the specified ArrayTime.
1914 : * @param time The ArrayTime value to which time is to be set.
1915 :
1916 :
1917 : */
1918 0 : void FieldRow::setTime (ArrayTime time) {
1919 :
1920 0 : this->time = time;
1921 :
1922 0 : timeExists = true;
1923 :
1924 0 : }
1925 :
1926 :
1927 : /**
1928 : * Mark time, which is an optional field, as non-existent.
1929 : */
1930 0 : void FieldRow::clearTime () {
1931 0 : timeExists = false;
1932 0 : }
1933 :
1934 :
1935 :
1936 : /**
1937 : * The attribute code is optional. Return true if this attribute exists.
1938 : * @return true if and only if the code attribute exists.
1939 : */
1940 0 : bool FieldRow::isCodeExists() const {
1941 0 : return codeExists;
1942 : }
1943 :
1944 :
1945 :
1946 : /**
1947 : * Get code, which is optional.
1948 : * @return code as std::string
1949 : * @throw IllegalAccessException If code does not exist.
1950 : */
1951 0 : std::string FieldRow::getCode() const {
1952 0 : if (!codeExists) {
1953 0 : throw IllegalAccessException("code", "Field");
1954 : }
1955 :
1956 0 : return code;
1957 : }
1958 :
1959 : /**
1960 : * Set code with the specified std::string.
1961 : * @param code The std::string value to which code is to be set.
1962 :
1963 :
1964 : */
1965 0 : void FieldRow::setCode (std::string code) {
1966 :
1967 0 : this->code = code;
1968 :
1969 0 : codeExists = true;
1970 :
1971 0 : }
1972 :
1973 :
1974 : /**
1975 : * Mark code, which is an optional field, as non-existent.
1976 : */
1977 0 : void FieldRow::clearCode () {
1978 0 : codeExists = false;
1979 0 : }
1980 :
1981 :
1982 :
1983 : /**
1984 : * The attribute directionCode is optional. Return true if this attribute exists.
1985 : * @return true if and only if the directionCode attribute exists.
1986 : */
1987 0 : bool FieldRow::isDirectionCodeExists() const {
1988 0 : return directionCodeExists;
1989 : }
1990 :
1991 :
1992 :
1993 : /**
1994 : * Get directionCode, which is optional.
1995 : * @return directionCode as DirectionReferenceCodeMod::DirectionReferenceCode
1996 : * @throw IllegalAccessException If directionCode does not exist.
1997 : */
1998 0 : DirectionReferenceCodeMod::DirectionReferenceCode FieldRow::getDirectionCode() const {
1999 0 : if (!directionCodeExists) {
2000 0 : throw IllegalAccessException("directionCode", "Field");
2001 : }
2002 :
2003 0 : return directionCode;
2004 : }
2005 :
2006 : /**
2007 : * Set directionCode with the specified DirectionReferenceCodeMod::DirectionReferenceCode.
2008 : * @param directionCode The DirectionReferenceCodeMod::DirectionReferenceCode value to which directionCode is to be set.
2009 :
2010 :
2011 : */
2012 0 : void FieldRow::setDirectionCode (DirectionReferenceCodeMod::DirectionReferenceCode directionCode) {
2013 :
2014 0 : this->directionCode = directionCode;
2015 :
2016 0 : directionCodeExists = true;
2017 :
2018 0 : }
2019 :
2020 :
2021 : /**
2022 : * Mark directionCode, which is an optional field, as non-existent.
2023 : */
2024 0 : void FieldRow::clearDirectionCode () {
2025 0 : directionCodeExists = false;
2026 0 : }
2027 :
2028 :
2029 :
2030 : /**
2031 : * The attribute directionEquinox is optional. Return true if this attribute exists.
2032 : * @return true if and only if the directionEquinox attribute exists.
2033 : */
2034 0 : bool FieldRow::isDirectionEquinoxExists() const {
2035 0 : return directionEquinoxExists;
2036 : }
2037 :
2038 :
2039 :
2040 : /**
2041 : * Get directionEquinox, which is optional.
2042 : * @return directionEquinox as ArrayTime
2043 : * @throw IllegalAccessException If directionEquinox does not exist.
2044 : */
2045 0 : ArrayTime FieldRow::getDirectionEquinox() const {
2046 0 : if (!directionEquinoxExists) {
2047 0 : throw IllegalAccessException("directionEquinox", "Field");
2048 : }
2049 :
2050 0 : return directionEquinox;
2051 : }
2052 :
2053 : /**
2054 : * Set directionEquinox with the specified ArrayTime.
2055 : * @param directionEquinox The ArrayTime value to which directionEquinox is to be set.
2056 :
2057 :
2058 : */
2059 0 : void FieldRow::setDirectionEquinox (ArrayTime directionEquinox) {
2060 :
2061 0 : this->directionEquinox = directionEquinox;
2062 :
2063 0 : directionEquinoxExists = true;
2064 :
2065 0 : }
2066 :
2067 :
2068 : /**
2069 : * Mark directionEquinox, which is an optional field, as non-existent.
2070 : */
2071 0 : void FieldRow::clearDirectionEquinox () {
2072 0 : directionEquinoxExists = false;
2073 0 : }
2074 :
2075 :
2076 :
2077 : /**
2078 : * The attribute assocNature is optional. Return true if this attribute exists.
2079 : * @return true if and only if the assocNature attribute exists.
2080 : */
2081 0 : bool FieldRow::isAssocNatureExists() const {
2082 0 : return assocNatureExists;
2083 : }
2084 :
2085 :
2086 :
2087 : /**
2088 : * Get assocNature, which is optional.
2089 : * @return assocNature as std::string
2090 : * @throw IllegalAccessException If assocNature does not exist.
2091 : */
2092 0 : std::string FieldRow::getAssocNature() const {
2093 0 : if (!assocNatureExists) {
2094 0 : throw IllegalAccessException("assocNature", "Field");
2095 : }
2096 :
2097 0 : return assocNature;
2098 : }
2099 :
2100 : /**
2101 : * Set assocNature with the specified std::string.
2102 : * @param assocNature The std::string value to which assocNature is to be set.
2103 :
2104 :
2105 : */
2106 0 : void FieldRow::setAssocNature (std::string assocNature) {
2107 :
2108 0 : this->assocNature = assocNature;
2109 :
2110 0 : assocNatureExists = true;
2111 :
2112 0 : }
2113 :
2114 :
2115 : /**
2116 : * Mark assocNature, which is an optional field, as non-existent.
2117 : */
2118 0 : void FieldRow::clearAssocNature () {
2119 0 : assocNatureExists = false;
2120 0 : }
2121 :
2122 :
2123 :
2124 : ///////////////////////////////////////////////
2125 : // Extrinsic Table Attributes getters/setters//
2126 : ///////////////////////////////////////////////
2127 :
2128 :
2129 : /**
2130 : * The attribute assocFieldId is optional. Return true if this attribute exists.
2131 : * @return true if and only if the assocFieldId attribute exists.
2132 : */
2133 0 : bool FieldRow::isAssocFieldIdExists() const {
2134 0 : return assocFieldIdExists;
2135 : }
2136 :
2137 :
2138 :
2139 : /**
2140 : * Get assocFieldId, which is optional.
2141 : * @return assocFieldId as Tag
2142 : * @throw IllegalAccessException If assocFieldId does not exist.
2143 : */
2144 0 : Tag FieldRow::getAssocFieldId() const {
2145 0 : if (!assocFieldIdExists) {
2146 0 : throw IllegalAccessException("assocFieldId", "Field");
2147 : }
2148 :
2149 0 : return assocFieldId;
2150 : }
2151 :
2152 : /**
2153 : * Set assocFieldId with the specified Tag.
2154 : * @param assocFieldId The Tag value to which assocFieldId is to be set.
2155 :
2156 :
2157 : */
2158 0 : void FieldRow::setAssocFieldId (Tag assocFieldId) {
2159 :
2160 0 : this->assocFieldId = assocFieldId;
2161 :
2162 0 : assocFieldIdExists = true;
2163 :
2164 0 : }
2165 :
2166 :
2167 : /**
2168 : * Mark assocFieldId, which is an optional field, as non-existent.
2169 : */
2170 0 : void FieldRow::clearAssocFieldId () {
2171 0 : assocFieldIdExists = false;
2172 0 : }
2173 :
2174 :
2175 :
2176 : /**
2177 : * The attribute ephemerisId is optional. Return true if this attribute exists.
2178 : * @return true if and only if the ephemerisId attribute exists.
2179 : */
2180 0 : bool FieldRow::isEphemerisIdExists() const {
2181 0 : return ephemerisIdExists;
2182 : }
2183 :
2184 :
2185 :
2186 : /**
2187 : * Get ephemerisId, which is optional.
2188 : * @return ephemerisId as int
2189 : * @throw IllegalAccessException If ephemerisId does not exist.
2190 : */
2191 0 : int FieldRow::getEphemerisId() const {
2192 0 : if (!ephemerisIdExists) {
2193 0 : throw IllegalAccessException("ephemerisId", "Field");
2194 : }
2195 :
2196 0 : return ephemerisId;
2197 : }
2198 :
2199 : /**
2200 : * Set ephemerisId with the specified int.
2201 : * @param ephemerisId The int value to which ephemerisId is to be set.
2202 :
2203 :
2204 : */
2205 0 : void FieldRow::setEphemerisId (int ephemerisId) {
2206 :
2207 0 : this->ephemerisId = ephemerisId;
2208 :
2209 0 : ephemerisIdExists = true;
2210 :
2211 0 : }
2212 :
2213 :
2214 : /**
2215 : * Mark ephemerisId, which is an optional field, as non-existent.
2216 : */
2217 0 : void FieldRow::clearEphemerisId () {
2218 0 : ephemerisIdExists = false;
2219 0 : }
2220 :
2221 :
2222 :
2223 : /**
2224 : * The attribute sourceId is optional. Return true if this attribute exists.
2225 : * @return true if and only if the sourceId attribute exists.
2226 : */
2227 0 : bool FieldRow::isSourceIdExists() const {
2228 0 : return sourceIdExists;
2229 : }
2230 :
2231 :
2232 :
2233 : /**
2234 : * Get sourceId, which is optional.
2235 : * @return sourceId as int
2236 : * @throw IllegalAccessException If sourceId does not exist.
2237 : */
2238 0 : int FieldRow::getSourceId() const {
2239 0 : if (!sourceIdExists) {
2240 0 : throw IllegalAccessException("sourceId", "Field");
2241 : }
2242 :
2243 0 : return sourceId;
2244 : }
2245 :
2246 : /**
2247 : * Set sourceId with the specified int.
2248 : * @param sourceId The int value to which sourceId is to be set.
2249 :
2250 :
2251 : */
2252 0 : void FieldRow::setSourceId (int sourceId) {
2253 :
2254 0 : this->sourceId = sourceId;
2255 :
2256 0 : sourceIdExists = true;
2257 :
2258 0 : }
2259 :
2260 :
2261 : /**
2262 : * Mark sourceId, which is an optional field, as non-existent.
2263 : */
2264 0 : void FieldRow::clearSourceId () {
2265 0 : sourceIdExists = false;
2266 0 : }
2267 :
2268 :
2269 :
2270 : //////////////////////////////////////
2271 : // Links Attributes getters/setters //
2272 : //////////////////////////////////////
2273 :
2274 :
2275 :
2276 :
2277 :
2278 :
2279 :
2280 :
2281 :
2282 :
2283 :
2284 :
2285 :
2286 :
2287 : // ===> Slice link from a row of Field table to a collection of row of Source table.
2288 :
2289 : /**
2290 : * Get the collection of row in the Source table having their attribut sourceId == this->sourceId
2291 : */
2292 0 : vector <SourceRow *> FieldRow::getSources() {
2293 :
2294 0 : if (sourceIdExists) {
2295 0 : return table.getContainer().getSource().getRowBySourceId(sourceId);
2296 : }
2297 : else
2298 0 : throw IllegalAccessException();
2299 :
2300 : }
2301 :
2302 :
2303 :
2304 :
2305 :
2306 :
2307 :
2308 :
2309 :
2310 : /**
2311 : * Returns the pointer to the row in the Field table having Field.assocFieldId == assocFieldId
2312 : * @return a FieldRow*
2313 : *
2314 :
2315 : * throws IllegalAccessException
2316 :
2317 : */
2318 0 : FieldRow* FieldRow::getFieldUsingAssocFieldId() {
2319 :
2320 0 : if (!assocFieldIdExists)
2321 0 : throw IllegalAccessException();
2322 :
2323 0 : return table.getContainer().getField().getRowByKey(assocFieldId);
2324 : }
2325 :
2326 :
2327 :
2328 :
2329 :
2330 : /**
2331 : * Create a FieldRow.
2332 : * <p>
2333 : * This constructor is private because only the
2334 : * table can create rows. All rows know the table
2335 : * to which they belong.
2336 : * @param table The table to which this row belongs.
2337 : */
2338 0 : FieldRow::FieldRow (FieldTable &t) : table(t) {
2339 0 : hasBeenAdded = false;
2340 :
2341 :
2342 :
2343 :
2344 :
2345 :
2346 :
2347 :
2348 :
2349 :
2350 :
2351 :
2352 :
2353 :
2354 :
2355 0 : timeExists = false;
2356 :
2357 :
2358 :
2359 0 : codeExists = false;
2360 :
2361 :
2362 :
2363 0 : directionCodeExists = false;
2364 :
2365 :
2366 :
2367 0 : directionEquinoxExists = false;
2368 :
2369 :
2370 :
2371 0 : assocNatureExists = false;
2372 :
2373 :
2374 :
2375 :
2376 0 : assocFieldIdExists = false;
2377 :
2378 :
2379 :
2380 0 : ephemerisIdExists = false;
2381 :
2382 :
2383 :
2384 0 : sourceIdExists = false;
2385 :
2386 :
2387 :
2388 :
2389 :
2390 :
2391 :
2392 :
2393 :
2394 :
2395 :
2396 :
2397 :
2398 :
2399 :
2400 :
2401 :
2402 :
2403 :
2404 :
2405 :
2406 :
2407 : // This attribute is scalar and has an enumeration type. Let's initialize it to some valid value (the 1st of the enumeration).
2408 0 : directionCode = CDirectionReferenceCode::from_int(0);
2409 :
2410 :
2411 :
2412 :
2413 :
2414 :
2415 :
2416 :
2417 0 : fromBinMethods["fieldId"] = &FieldRow::fieldIdFromBin;
2418 0 : fromBinMethods["fieldName"] = &FieldRow::fieldNameFromBin;
2419 0 : fromBinMethods["numPoly"] = &FieldRow::numPolyFromBin;
2420 0 : fromBinMethods["delayDir"] = &FieldRow::delayDirFromBin;
2421 0 : fromBinMethods["phaseDir"] = &FieldRow::phaseDirFromBin;
2422 0 : fromBinMethods["referenceDir"] = &FieldRow::referenceDirFromBin;
2423 :
2424 :
2425 0 : fromBinMethods["time"] = &FieldRow::timeFromBin;
2426 0 : fromBinMethods["code"] = &FieldRow::codeFromBin;
2427 0 : fromBinMethods["directionCode"] = &FieldRow::directionCodeFromBin;
2428 0 : fromBinMethods["directionEquinox"] = &FieldRow::directionEquinoxFromBin;
2429 0 : fromBinMethods["assocNature"] = &FieldRow::assocNatureFromBin;
2430 0 : fromBinMethods["ephemerisId"] = &FieldRow::ephemerisIdFromBin;
2431 0 : fromBinMethods["sourceId"] = &FieldRow::sourceIdFromBin;
2432 0 : fromBinMethods["assocFieldId"] = &FieldRow::assocFieldIdFromBin;
2433 :
2434 :
2435 :
2436 :
2437 :
2438 0 : fromTextMethods["fieldId"] = &FieldRow::fieldIdFromText;
2439 :
2440 :
2441 :
2442 0 : fromTextMethods["fieldName"] = &FieldRow::fieldNameFromText;
2443 :
2444 :
2445 :
2446 0 : fromTextMethods["numPoly"] = &FieldRow::numPolyFromText;
2447 :
2448 :
2449 :
2450 0 : fromTextMethods["delayDir"] = &FieldRow::delayDirFromText;
2451 :
2452 :
2453 :
2454 0 : fromTextMethods["phaseDir"] = &FieldRow::phaseDirFromText;
2455 :
2456 :
2457 :
2458 0 : fromTextMethods["referenceDir"] = &FieldRow::referenceDirFromText;
2459 :
2460 :
2461 :
2462 :
2463 :
2464 0 : fromTextMethods["time"] = &FieldRow::timeFromText;
2465 :
2466 :
2467 :
2468 0 : fromTextMethods["code"] = &FieldRow::codeFromText;
2469 :
2470 :
2471 :
2472 0 : fromTextMethods["directionCode"] = &FieldRow::directionCodeFromText;
2473 :
2474 :
2475 :
2476 0 : fromTextMethods["directionEquinox"] = &FieldRow::directionEquinoxFromText;
2477 :
2478 :
2479 :
2480 0 : fromTextMethods["assocNature"] = &FieldRow::assocNatureFromText;
2481 :
2482 :
2483 :
2484 0 : fromTextMethods["ephemerisId"] = &FieldRow::ephemerisIdFromText;
2485 :
2486 :
2487 :
2488 0 : fromTextMethods["sourceId"] = &FieldRow::sourceIdFromText;
2489 :
2490 :
2491 :
2492 0 : fromTextMethods["assocFieldId"] = &FieldRow::assocFieldIdFromText;
2493 :
2494 :
2495 0 : }
2496 :
2497 0 : FieldRow::FieldRow (FieldTable &t, FieldRow *row) : table(t) {
2498 0 : hasBeenAdded = false;
2499 :
2500 0 : if (row == 0) {
2501 :
2502 :
2503 :
2504 :
2505 :
2506 :
2507 :
2508 :
2509 :
2510 :
2511 :
2512 :
2513 :
2514 :
2515 :
2516 0 : timeExists = false;
2517 :
2518 :
2519 :
2520 0 : codeExists = false;
2521 :
2522 :
2523 :
2524 0 : directionCodeExists = false;
2525 :
2526 :
2527 :
2528 0 : directionEquinoxExists = false;
2529 :
2530 :
2531 :
2532 0 : assocNatureExists = false;
2533 :
2534 :
2535 :
2536 :
2537 0 : assocFieldIdExists = false;
2538 :
2539 :
2540 :
2541 0 : ephemerisIdExists = false;
2542 :
2543 :
2544 :
2545 0 : sourceIdExists = false;
2546 :
2547 :
2548 : }
2549 : else {
2550 :
2551 :
2552 0 : fieldId = row->fieldId;
2553 :
2554 :
2555 :
2556 :
2557 0 : fieldName = row->fieldName;
2558 :
2559 0 : numPoly = row->numPoly;
2560 :
2561 0 : delayDir = row->delayDir;
2562 :
2563 0 : phaseDir = row->phaseDir;
2564 :
2565 0 : referenceDir = row->referenceDir;
2566 :
2567 :
2568 :
2569 :
2570 0 : if (row->timeExists) {
2571 0 : time = row->time;
2572 0 : timeExists = true;
2573 : }
2574 : else
2575 0 : timeExists = false;
2576 :
2577 0 : if (row->codeExists) {
2578 0 : code = row->code;
2579 0 : codeExists = true;
2580 : }
2581 : else
2582 0 : codeExists = false;
2583 :
2584 0 : if (row->directionCodeExists) {
2585 0 : directionCode = row->directionCode;
2586 0 : directionCodeExists = true;
2587 : }
2588 : else
2589 0 : directionCodeExists = false;
2590 :
2591 0 : if (row->directionEquinoxExists) {
2592 0 : directionEquinox = row->directionEquinox;
2593 0 : directionEquinoxExists = true;
2594 : }
2595 : else
2596 0 : directionEquinoxExists = false;
2597 :
2598 0 : if (row->assocNatureExists) {
2599 0 : assocNature = row->assocNature;
2600 0 : assocNatureExists = true;
2601 : }
2602 : else
2603 0 : assocNatureExists = false;
2604 :
2605 0 : if (row->ephemerisIdExists) {
2606 0 : ephemerisId = row->ephemerisId;
2607 0 : ephemerisIdExists = true;
2608 : }
2609 : else
2610 0 : ephemerisIdExists = false;
2611 :
2612 0 : if (row->sourceIdExists) {
2613 0 : sourceId = row->sourceId;
2614 0 : sourceIdExists = true;
2615 : }
2616 : else
2617 0 : sourceIdExists = false;
2618 :
2619 0 : if (row->assocFieldIdExists) {
2620 0 : assocFieldId = row->assocFieldId;
2621 0 : assocFieldIdExists = true;
2622 : }
2623 : else
2624 0 : assocFieldIdExists = false;
2625 :
2626 : }
2627 :
2628 0 : fromBinMethods["fieldId"] = &FieldRow::fieldIdFromBin;
2629 0 : fromBinMethods["fieldName"] = &FieldRow::fieldNameFromBin;
2630 0 : fromBinMethods["numPoly"] = &FieldRow::numPolyFromBin;
2631 0 : fromBinMethods["delayDir"] = &FieldRow::delayDirFromBin;
2632 0 : fromBinMethods["phaseDir"] = &FieldRow::phaseDirFromBin;
2633 0 : fromBinMethods["referenceDir"] = &FieldRow::referenceDirFromBin;
2634 :
2635 :
2636 0 : fromBinMethods["time"] = &FieldRow::timeFromBin;
2637 0 : fromBinMethods["code"] = &FieldRow::codeFromBin;
2638 0 : fromBinMethods["directionCode"] = &FieldRow::directionCodeFromBin;
2639 0 : fromBinMethods["directionEquinox"] = &FieldRow::directionEquinoxFromBin;
2640 0 : fromBinMethods["assocNature"] = &FieldRow::assocNatureFromBin;
2641 0 : fromBinMethods["ephemerisId"] = &FieldRow::ephemerisIdFromBin;
2642 0 : fromBinMethods["sourceId"] = &FieldRow::sourceIdFromBin;
2643 0 : fromBinMethods["assocFieldId"] = &FieldRow::assocFieldIdFromBin;
2644 :
2645 0 : }
2646 :
2647 :
2648 0 : bool FieldRow::compareNoAutoInc(std::string fieldName, int numPoly, std::vector<std::vector<Angle > > delayDir, std::vector<std::vector<Angle > > phaseDir, std::vector<std::vector<Angle > > referenceDir) {
2649 : bool result;
2650 0 : result = true;
2651 :
2652 :
2653 :
2654 0 : result = result && (this->fieldName == fieldName);
2655 :
2656 0 : if (!result) return false;
2657 :
2658 :
2659 :
2660 :
2661 0 : result = result && (this->numPoly == numPoly);
2662 :
2663 0 : if (!result) return false;
2664 :
2665 :
2666 :
2667 :
2668 0 : result = result && (this->delayDir == delayDir);
2669 :
2670 0 : if (!result) return false;
2671 :
2672 :
2673 :
2674 :
2675 0 : result = result && (this->phaseDir == phaseDir);
2676 :
2677 0 : if (!result) return false;
2678 :
2679 :
2680 :
2681 :
2682 0 : result = result && (this->referenceDir == referenceDir);
2683 :
2684 0 : if (!result) return false;
2685 :
2686 :
2687 0 : return result;
2688 : }
2689 :
2690 :
2691 :
2692 0 : bool FieldRow::compareRequiredValue(std::string fieldName, int numPoly, std::vector<std::vector<Angle > > delayDir, std::vector<std::vector<Angle > > phaseDir, std::vector<std::vector<Angle > > referenceDir) {
2693 : bool result;
2694 0 : result = true;
2695 :
2696 :
2697 0 : if (!(this->fieldName == fieldName)) return false;
2698 :
2699 :
2700 :
2701 0 : if (!(this->numPoly == numPoly)) return false;
2702 :
2703 :
2704 :
2705 0 : if (!(this->delayDir == delayDir)) return false;
2706 :
2707 :
2708 :
2709 0 : if (!(this->phaseDir == phaseDir)) return false;
2710 :
2711 :
2712 :
2713 0 : if (!(this->referenceDir == referenceDir)) return false;
2714 :
2715 :
2716 0 : return result;
2717 : }
2718 :
2719 :
2720 : /**
2721 : * Return true if all required attributes of the value part are equal to their homologues
2722 : * in x and false otherwise.
2723 : *
2724 :
2725 : * @param x a pointer on the FieldRow whose required attributes of the value part
2726 :
2727 : * will be compared with those of this.
2728 : * @return a boolean.
2729 : */
2730 0 : bool FieldRow::equalByRequiredValue(FieldRow* x ) {
2731 :
2732 :
2733 0 : if (this->fieldName != x->fieldName) return false;
2734 :
2735 0 : if (this->numPoly != x->numPoly) return false;
2736 :
2737 0 : if (this->delayDir != x->delayDir) return false;
2738 :
2739 0 : if (this->phaseDir != x->phaseDir) return false;
2740 :
2741 0 : if (this->referenceDir != x->referenceDir) return false;
2742 :
2743 :
2744 0 : return true;
2745 : }
2746 :
2747 : /*
2748 : map<string, FieldAttributeFromBin> FieldRow::initFromBinMethods() {
2749 : map<string, FieldAttributeFromBin> result;
2750 :
2751 : result["fieldId"] = &FieldRow::fieldIdFromBin;
2752 : result["fieldName"] = &FieldRow::fieldNameFromBin;
2753 : result["numPoly"] = &FieldRow::numPolyFromBin;
2754 : result["delayDir"] = &FieldRow::delayDirFromBin;
2755 : result["phaseDir"] = &FieldRow::phaseDirFromBin;
2756 : result["referenceDir"] = &FieldRow::referenceDirFromBin;
2757 :
2758 :
2759 : result["time"] = &FieldRow::timeFromBin;
2760 : result["code"] = &FieldRow::codeFromBin;
2761 : result["directionCode"] = &FieldRow::directionCodeFromBin;
2762 : result["directionEquinox"] = &FieldRow::directionEquinoxFromBin;
2763 : result["assocNature"] = &FieldRow::assocNatureFromBin;
2764 : result["ephemerisId"] = &FieldRow::ephemerisIdFromBin;
2765 : result["sourceId"] = &FieldRow::sourceIdFromBin;
2766 : result["assocFieldId"] = &FieldRow::assocFieldIdFromBin;
2767 :
2768 :
2769 : return result;
2770 : }
2771 : */
2772 : } // End namespace asdm
2773 :
|