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 PointingRow.cpp
32 : */
33 :
34 : #include <vector>
35 : #include <set>
36 :
37 : #include <alma/ASDM/ASDM.h>
38 : #include <alma/ASDM/PointingRow.h>
39 : #include <alma/ASDM/PointingTable.h>
40 :
41 : #include <alma/ASDM/PointingModelTable.h>
42 : #include <alma/ASDM/PointingModelRow.h>
43 :
44 : #include <alma/ASDM/AntennaTable.h>
45 : #include <alma/ASDM/AntennaRow.h>
46 :
47 :
48 : using asdm::ASDM;
49 : using asdm::PointingRow;
50 : using asdm::PointingTable;
51 :
52 : using asdm::PointingModelTable;
53 : using asdm::PointingModelRow;
54 :
55 : using asdm::AntennaTable;
56 : using asdm::AntennaRow;
57 :
58 :
59 : #include <alma/ASDM/Parser.h>
60 :
61 : #include <alma/ASDM/EnumerationParser.h>
62 : #include <alma/ASDM/ASDMValuesParser.h>
63 :
64 : #include <alma/ASDM/InvalidArgumentException.h>
65 :
66 : using namespace std;
67 :
68 : namespace asdm {
69 167438 : PointingRow::~PointingRow() {
70 167438 : }
71 :
72 : /**
73 : * Return the table to which this row belongs.
74 : */
75 0 : PointingTable &PointingRow::getTable() const {
76 0 : return table;
77 : }
78 :
79 0 : bool PointingRow::isAdded() const {
80 0 : return hasBeenAdded;
81 : }
82 :
83 83719 : void PointingRow::isAdded(bool added) {
84 83719 : hasBeenAdded = added;
85 83719 : }
86 :
87 : #ifndef WITHOUT_ACS
88 : using asdmIDL::PointingRowIDL;
89 : #endif
90 :
91 : #ifndef WITHOUT_ACS
92 : /**
93 : * Return this row in the form of an IDL struct.
94 : * @return The values of this row as a PointingRowIDL struct.
95 : */
96 : PointingRowIDL *PointingRow::toIDL() const {
97 : PointingRowIDL *x = new PointingRowIDL ();
98 :
99 : // Fill the IDL structure.
100 :
101 :
102 :
103 :
104 :
105 :
106 :
107 : x->timeInterval = timeInterval.toIDLArrayTimeInterval();
108 :
109 :
110 :
111 :
112 :
113 :
114 :
115 :
116 :
117 :
118 : x->numSample = numSample;
119 :
120 :
121 :
122 :
123 :
124 :
125 :
126 :
127 :
128 :
129 : x->encoder.length(encoder.size());
130 : for (unsigned int i = 0; i < encoder.size(); i++) {
131 : x->encoder[i].length(encoder.at(i).size());
132 : }
133 :
134 : for (unsigned int i = 0; i < encoder.size() ; i++)
135 : for (unsigned int j = 0; j < encoder.at(i).size(); j++)
136 :
137 : x->encoder[i][j]= encoder.at(i).at(j).toIDLAngle();
138 :
139 :
140 :
141 :
142 :
143 :
144 :
145 :
146 :
147 :
148 :
149 :
150 : x->pointingTracking = pointingTracking;
151 :
152 :
153 :
154 :
155 :
156 :
157 :
158 :
159 :
160 :
161 :
162 : x->usePolynomials = usePolynomials;
163 :
164 :
165 :
166 :
167 :
168 :
169 :
170 :
171 :
172 :
173 : x->timeOrigin = timeOrigin.toIDLArrayTime();
174 :
175 :
176 :
177 :
178 :
179 :
180 :
181 :
182 :
183 :
184 : x->numTerm = numTerm;
185 :
186 :
187 :
188 :
189 :
190 :
191 :
192 :
193 :
194 :
195 : x->pointingDirection.length(pointingDirection.size());
196 : for (unsigned int i = 0; i < pointingDirection.size(); i++) {
197 : x->pointingDirection[i].length(pointingDirection.at(i).size());
198 : }
199 :
200 : for (unsigned int i = 0; i < pointingDirection.size() ; i++)
201 : for (unsigned int j = 0; j < pointingDirection.at(i).size(); j++)
202 :
203 : x->pointingDirection[i][j]= pointingDirection.at(i).at(j).toIDLAngle();
204 :
205 :
206 :
207 :
208 :
209 :
210 :
211 :
212 :
213 :
214 :
215 : x->target.length(target.size());
216 : for (unsigned int i = 0; i < target.size(); i++) {
217 : x->target[i].length(target.at(i).size());
218 : }
219 :
220 : for (unsigned int i = 0; i < target.size() ; i++)
221 : for (unsigned int j = 0; j < target.at(i).size(); j++)
222 :
223 : x->target[i][j]= target.at(i).at(j).toIDLAngle();
224 :
225 :
226 :
227 :
228 :
229 :
230 :
231 :
232 :
233 :
234 :
235 : x->offset.length(offset.size());
236 : for (unsigned int i = 0; i < offset.size(); i++) {
237 : x->offset[i].length(offset.at(i).size());
238 : }
239 :
240 : for (unsigned int i = 0; i < offset.size() ; i++)
241 : for (unsigned int j = 0; j < offset.at(i).size(); j++)
242 :
243 : x->offset[i][j]= offset.at(i).at(j).toIDLAngle();
244 :
245 :
246 :
247 :
248 :
249 :
250 :
251 :
252 :
253 : x->overTheTopExists = overTheTopExists;
254 :
255 :
256 :
257 :
258 : x->overTheTop = overTheTop;
259 :
260 :
261 :
262 :
263 :
264 :
265 :
266 :
267 : x->sourceOffsetExists = sourceOffsetExists;
268 :
269 :
270 :
271 : x->sourceOffset.length(sourceOffset.size());
272 : for (unsigned int i = 0; i < sourceOffset.size(); i++) {
273 : x->sourceOffset[i].length(sourceOffset.at(i).size());
274 : }
275 :
276 : for (unsigned int i = 0; i < sourceOffset.size() ; i++)
277 : for (unsigned int j = 0; j < sourceOffset.at(i).size(); j++)
278 :
279 : x->sourceOffset[i][j]= sourceOffset.at(i).at(j).toIDLAngle();
280 :
281 :
282 :
283 :
284 :
285 :
286 :
287 :
288 :
289 : x->sourceOffsetReferenceCodeExists = sourceOffsetReferenceCodeExists;
290 :
291 :
292 :
293 :
294 : x->sourceOffsetReferenceCode = sourceOffsetReferenceCode;
295 :
296 :
297 :
298 :
299 :
300 :
301 :
302 :
303 : x->sourceOffsetEquinoxExists = sourceOffsetEquinoxExists;
304 :
305 :
306 :
307 : x->sourceOffsetEquinox = sourceOffsetEquinox.toIDLArrayTime();
308 :
309 :
310 :
311 :
312 :
313 :
314 :
315 : x->sampledTimeIntervalExists = sampledTimeIntervalExists;
316 :
317 :
318 :
319 : x->sampledTimeInterval.length(sampledTimeInterval.size());
320 : for (unsigned int i = 0; i < sampledTimeInterval.size(); ++i) {
321 :
322 : x->sampledTimeInterval[i] = sampledTimeInterval.at(i).toIDLArrayTimeInterval();
323 :
324 : }
325 :
326 :
327 :
328 :
329 :
330 :
331 :
332 : x->atmosphericCorrectionExists = atmosphericCorrectionExists;
333 :
334 :
335 :
336 : x->atmosphericCorrection.length(atmosphericCorrection.size());
337 : for (unsigned int i = 0; i < atmosphericCorrection.size(); i++) {
338 : x->atmosphericCorrection[i].length(atmosphericCorrection.at(i).size());
339 : }
340 :
341 : for (unsigned int i = 0; i < atmosphericCorrection.size() ; i++)
342 : for (unsigned int j = 0; j < atmosphericCorrection.at(i).size(); j++)
343 :
344 : x->atmosphericCorrection[i][j]= atmosphericCorrection.at(i).at(j).toIDLAngle();
345 :
346 :
347 :
348 :
349 :
350 :
351 :
352 :
353 :
354 :
355 :
356 :
357 :
358 :
359 :
360 : x->antennaId = antennaId.toIDLTag();
361 :
362 :
363 :
364 :
365 :
366 :
367 :
368 :
369 :
370 :
371 :
372 : x->pointingModelId = pointingModelId;
373 :
374 :
375 :
376 :
377 :
378 :
379 :
380 :
381 :
382 :
383 :
384 :
385 : return x;
386 :
387 : }
388 :
389 : void PointingRow::toIDL(asdmIDL::PointingRowIDL& x) const {
390 : // Set the x's fields.
391 :
392 :
393 :
394 :
395 :
396 :
397 :
398 : x.timeInterval = timeInterval.toIDLArrayTimeInterval();
399 :
400 :
401 :
402 :
403 :
404 :
405 :
406 :
407 :
408 :
409 : x.numSample = numSample;
410 :
411 :
412 :
413 :
414 :
415 :
416 :
417 :
418 :
419 :
420 : x.encoder.length(encoder.size());
421 : for (unsigned int i = 0; i < encoder.size(); i++) {
422 : x.encoder[i].length(encoder.at(i).size());
423 : }
424 :
425 : for (unsigned int i = 0; i < encoder.size() ; i++)
426 : for (unsigned int j = 0; j < encoder.at(i).size(); j++)
427 :
428 : x.encoder[i][j]= encoder.at(i).at(j).toIDLAngle();
429 :
430 :
431 :
432 :
433 :
434 :
435 :
436 :
437 :
438 :
439 :
440 :
441 : x.pointingTracking = pointingTracking;
442 :
443 :
444 :
445 :
446 :
447 :
448 :
449 :
450 :
451 :
452 :
453 : x.usePolynomials = usePolynomials;
454 :
455 :
456 :
457 :
458 :
459 :
460 :
461 :
462 :
463 :
464 : x.timeOrigin = timeOrigin.toIDLArrayTime();
465 :
466 :
467 :
468 :
469 :
470 :
471 :
472 :
473 :
474 :
475 : x.numTerm = numTerm;
476 :
477 :
478 :
479 :
480 :
481 :
482 :
483 :
484 :
485 :
486 : x.pointingDirection.length(pointingDirection.size());
487 : for (unsigned int i = 0; i < pointingDirection.size(); i++) {
488 : x.pointingDirection[i].length(pointingDirection.at(i).size());
489 : }
490 :
491 : for (unsigned int i = 0; i < pointingDirection.size() ; i++)
492 : for (unsigned int j = 0; j < pointingDirection.at(i).size(); j++)
493 :
494 : x.pointingDirection[i][j]= pointingDirection.at(i).at(j).toIDLAngle();
495 :
496 :
497 :
498 :
499 :
500 :
501 :
502 :
503 :
504 :
505 :
506 : x.target.length(target.size());
507 : for (unsigned int i = 0; i < target.size(); i++) {
508 : x.target[i].length(target.at(i).size());
509 : }
510 :
511 : for (unsigned int i = 0; i < target.size() ; i++)
512 : for (unsigned int j = 0; j < target.at(i).size(); j++)
513 :
514 : x.target[i][j]= target.at(i).at(j).toIDLAngle();
515 :
516 :
517 :
518 :
519 :
520 :
521 :
522 :
523 :
524 :
525 :
526 : x.offset.length(offset.size());
527 : for (unsigned int i = 0; i < offset.size(); i++) {
528 : x.offset[i].length(offset.at(i).size());
529 : }
530 :
531 : for (unsigned int i = 0; i < offset.size() ; i++)
532 : for (unsigned int j = 0; j < offset.at(i).size(); j++)
533 :
534 : x.offset[i][j]= offset.at(i).at(j).toIDLAngle();
535 :
536 :
537 :
538 :
539 :
540 :
541 :
542 :
543 :
544 : x.overTheTopExists = overTheTopExists;
545 :
546 :
547 :
548 :
549 : x.overTheTop = overTheTop;
550 :
551 :
552 :
553 :
554 :
555 :
556 :
557 :
558 : x.sourceOffsetExists = sourceOffsetExists;
559 :
560 :
561 :
562 : x.sourceOffset.length(sourceOffset.size());
563 : for (unsigned int i = 0; i < sourceOffset.size(); i++) {
564 : x.sourceOffset[i].length(sourceOffset.at(i).size());
565 : }
566 :
567 : for (unsigned int i = 0; i < sourceOffset.size() ; i++)
568 : for (unsigned int j = 0; j < sourceOffset.at(i).size(); j++)
569 :
570 : x.sourceOffset[i][j]= sourceOffset.at(i).at(j).toIDLAngle();
571 :
572 :
573 :
574 :
575 :
576 :
577 :
578 :
579 :
580 : x.sourceOffsetReferenceCodeExists = sourceOffsetReferenceCodeExists;
581 :
582 :
583 :
584 :
585 : x.sourceOffsetReferenceCode = sourceOffsetReferenceCode;
586 :
587 :
588 :
589 :
590 :
591 :
592 :
593 :
594 : x.sourceOffsetEquinoxExists = sourceOffsetEquinoxExists;
595 :
596 :
597 :
598 : x.sourceOffsetEquinox = sourceOffsetEquinox.toIDLArrayTime();
599 :
600 :
601 :
602 :
603 :
604 :
605 :
606 : x.sampledTimeIntervalExists = sampledTimeIntervalExists;
607 :
608 :
609 :
610 : x.sampledTimeInterval.length(sampledTimeInterval.size());
611 : for (unsigned int i = 0; i < sampledTimeInterval.size(); ++i) {
612 :
613 : x.sampledTimeInterval[i] = sampledTimeInterval.at(i).toIDLArrayTimeInterval();
614 :
615 : }
616 :
617 :
618 :
619 :
620 :
621 :
622 :
623 : x.atmosphericCorrectionExists = atmosphericCorrectionExists;
624 :
625 :
626 :
627 : x.atmosphericCorrection.length(atmosphericCorrection.size());
628 : for (unsigned int i = 0; i < atmosphericCorrection.size(); i++) {
629 : x.atmosphericCorrection[i].length(atmosphericCorrection.at(i).size());
630 : }
631 :
632 : for (unsigned int i = 0; i < atmosphericCorrection.size() ; i++)
633 : for (unsigned int j = 0; j < atmosphericCorrection.at(i).size(); j++)
634 :
635 : x.atmosphericCorrection[i][j]= atmosphericCorrection.at(i).at(j).toIDLAngle();
636 :
637 :
638 :
639 :
640 :
641 :
642 :
643 :
644 :
645 :
646 :
647 :
648 :
649 :
650 :
651 : x.antennaId = antennaId.toIDLTag();
652 :
653 :
654 :
655 :
656 :
657 :
658 :
659 :
660 :
661 :
662 :
663 : x.pointingModelId = pointingModelId;
664 :
665 :
666 :
667 :
668 :
669 :
670 :
671 :
672 :
673 :
674 :
675 :
676 : }
677 : #endif
678 :
679 :
680 : #ifndef WITHOUT_ACS
681 : /**
682 : * Fill the values of this row from the IDL struct PointingRowIDL.
683 : * @param x The IDL struct containing the values used to fill this row.
684 : */
685 : void PointingRow::setFromIDL (PointingRowIDL x){
686 : try {
687 : // Fill the values from x.
688 :
689 :
690 :
691 :
692 :
693 :
694 : setTimeInterval(ArrayTimeInterval (x.timeInterval));
695 :
696 :
697 :
698 :
699 :
700 :
701 :
702 :
703 :
704 : setNumSample(x.numSample);
705 :
706 :
707 :
708 :
709 :
710 :
711 :
712 :
713 :
714 : encoder .clear();
715 :
716 : vector<Angle> v_aux_encoder;
717 :
718 : for (unsigned int i = 0; i < x.encoder.length(); ++i) {
719 : v_aux_encoder.clear();
720 : for (unsigned int j = 0; j < x.encoder[0].length(); ++j) {
721 :
722 : v_aux_encoder.push_back(Angle (x.encoder[i][j]));
723 :
724 : }
725 : encoder.push_back(v_aux_encoder);
726 : }
727 :
728 :
729 :
730 :
731 :
732 :
733 :
734 :
735 :
736 : setPointingTracking(x.pointingTracking);
737 :
738 :
739 :
740 :
741 :
742 :
743 :
744 :
745 :
746 : setUsePolynomials(x.usePolynomials);
747 :
748 :
749 :
750 :
751 :
752 :
753 :
754 :
755 :
756 : setTimeOrigin(ArrayTime (x.timeOrigin));
757 :
758 :
759 :
760 :
761 :
762 :
763 :
764 :
765 :
766 : setNumTerm(x.numTerm);
767 :
768 :
769 :
770 :
771 :
772 :
773 :
774 :
775 :
776 : pointingDirection .clear();
777 :
778 : vector<Angle> v_aux_pointingDirection;
779 :
780 : for (unsigned int i = 0; i < x.pointingDirection.length(); ++i) {
781 : v_aux_pointingDirection.clear();
782 : for (unsigned int j = 0; j < x.pointingDirection[0].length(); ++j) {
783 :
784 : v_aux_pointingDirection.push_back(Angle (x.pointingDirection[i][j]));
785 :
786 : }
787 : pointingDirection.push_back(v_aux_pointingDirection);
788 : }
789 :
790 :
791 :
792 :
793 :
794 :
795 :
796 :
797 :
798 : target .clear();
799 :
800 : vector<Angle> v_aux_target;
801 :
802 : for (unsigned int i = 0; i < x.target.length(); ++i) {
803 : v_aux_target.clear();
804 : for (unsigned int j = 0; j < x.target[0].length(); ++j) {
805 :
806 : v_aux_target.push_back(Angle (x.target[i][j]));
807 :
808 : }
809 : target.push_back(v_aux_target);
810 : }
811 :
812 :
813 :
814 :
815 :
816 :
817 :
818 :
819 :
820 : offset .clear();
821 :
822 : vector<Angle> v_aux_offset;
823 :
824 : for (unsigned int i = 0; i < x.offset.length(); ++i) {
825 : v_aux_offset.clear();
826 : for (unsigned int j = 0; j < x.offset[0].length(); ++j) {
827 :
828 : v_aux_offset.push_back(Angle (x.offset[i][j]));
829 :
830 : }
831 : offset.push_back(v_aux_offset);
832 : }
833 :
834 :
835 :
836 :
837 :
838 :
839 :
840 : overTheTopExists = x.overTheTopExists;
841 : if (x.overTheTopExists) {
842 :
843 :
844 :
845 : setOverTheTop(x.overTheTop);
846 :
847 :
848 :
849 : }
850 :
851 :
852 :
853 :
854 :
855 : sourceOffsetExists = x.sourceOffsetExists;
856 : if (x.sourceOffsetExists) {
857 :
858 :
859 :
860 : sourceOffset .clear();
861 :
862 : vector<Angle> v_aux_sourceOffset;
863 :
864 : for (unsigned int i = 0; i < x.sourceOffset.length(); ++i) {
865 : v_aux_sourceOffset.clear();
866 : for (unsigned int j = 0; j < x.sourceOffset[0].length(); ++j) {
867 :
868 : v_aux_sourceOffset.push_back(Angle (x.sourceOffset[i][j]));
869 :
870 : }
871 : sourceOffset.push_back(v_aux_sourceOffset);
872 : }
873 :
874 :
875 :
876 : }
877 :
878 :
879 :
880 :
881 :
882 : sourceOffsetReferenceCodeExists = x.sourceOffsetReferenceCodeExists;
883 : if (x.sourceOffsetReferenceCodeExists) {
884 :
885 :
886 :
887 : setSourceOffsetReferenceCode(x.sourceOffsetReferenceCode);
888 :
889 :
890 :
891 : }
892 :
893 :
894 :
895 :
896 :
897 : sourceOffsetEquinoxExists = x.sourceOffsetEquinoxExists;
898 : if (x.sourceOffsetEquinoxExists) {
899 :
900 :
901 :
902 : setSourceOffsetEquinox(ArrayTime (x.sourceOffsetEquinox));
903 :
904 :
905 :
906 : }
907 :
908 :
909 :
910 :
911 :
912 : sampledTimeIntervalExists = x.sampledTimeIntervalExists;
913 : if (x.sampledTimeIntervalExists) {
914 :
915 :
916 :
917 : sampledTimeInterval .clear();
918 : for (unsigned int i = 0; i <x.sampledTimeInterval.length(); ++i) {
919 :
920 : sampledTimeInterval.push_back(ArrayTimeInterval (x.sampledTimeInterval[i]));
921 :
922 : }
923 :
924 :
925 :
926 : }
927 :
928 :
929 :
930 :
931 :
932 : atmosphericCorrectionExists = x.atmosphericCorrectionExists;
933 : if (x.atmosphericCorrectionExists) {
934 :
935 :
936 :
937 : atmosphericCorrection .clear();
938 :
939 : vector<Angle> v_aux_atmosphericCorrection;
940 :
941 : for (unsigned int i = 0; i < x.atmosphericCorrection.length(); ++i) {
942 : v_aux_atmosphericCorrection.clear();
943 : for (unsigned int j = 0; j < x.atmosphericCorrection[0].length(); ++j) {
944 :
945 : v_aux_atmosphericCorrection.push_back(Angle (x.atmosphericCorrection[i][j]));
946 :
947 : }
948 : atmosphericCorrection.push_back(v_aux_atmosphericCorrection);
949 : }
950 :
951 :
952 :
953 : }
954 :
955 :
956 :
957 :
958 :
959 :
960 :
961 :
962 :
963 :
964 : setAntennaId(Tag (x.antennaId));
965 :
966 :
967 :
968 :
969 :
970 :
971 :
972 :
973 :
974 : setPointingModelId(x.pointingModelId);
975 :
976 :
977 :
978 :
979 :
980 :
981 :
982 :
983 :
984 :
985 :
986 : } catch (const IllegalAccessException &err) {
987 : throw ConversionException (err.getMessage(),"Pointing");
988 : }
989 : }
990 : #endif
991 :
992 : /**
993 : * Return this row in the form of an XML string.
994 : * @return The values of this row as an XML string.
995 : */
996 0 : string PointingRow::toXML() const {
997 0 : string buf;
998 0 : buf.append("<row> \n");
999 :
1000 :
1001 :
1002 :
1003 :
1004 :
1005 0 : Parser::toXML(timeInterval, "timeInterval", buf);
1006 :
1007 :
1008 :
1009 :
1010 :
1011 :
1012 :
1013 0 : Parser::toXML(numSample, "numSample", buf);
1014 :
1015 :
1016 :
1017 :
1018 :
1019 :
1020 :
1021 0 : Parser::toXML(encoder, "encoder", buf);
1022 :
1023 :
1024 :
1025 :
1026 :
1027 :
1028 :
1029 0 : Parser::toXML(pointingTracking, "pointingTracking", buf);
1030 :
1031 :
1032 :
1033 :
1034 :
1035 :
1036 :
1037 0 : Parser::toXML(usePolynomials, "usePolynomials", buf);
1038 :
1039 :
1040 :
1041 :
1042 :
1043 :
1044 :
1045 0 : Parser::toXML(timeOrigin, "timeOrigin", buf);
1046 :
1047 :
1048 :
1049 :
1050 :
1051 :
1052 :
1053 0 : Parser::toXML(numTerm, "numTerm", buf);
1054 :
1055 :
1056 :
1057 :
1058 :
1059 :
1060 :
1061 0 : Parser::toXML(pointingDirection, "pointingDirection", buf);
1062 :
1063 :
1064 :
1065 :
1066 :
1067 :
1068 :
1069 0 : Parser::toXML(target, "target", buf);
1070 :
1071 :
1072 :
1073 :
1074 :
1075 :
1076 :
1077 0 : Parser::toXML(offset, "offset", buf);
1078 :
1079 :
1080 :
1081 :
1082 :
1083 :
1084 0 : if (overTheTopExists) {
1085 :
1086 :
1087 0 : Parser::toXML(overTheTop, "overTheTop", buf);
1088 :
1089 :
1090 : }
1091 :
1092 :
1093 :
1094 :
1095 :
1096 0 : if (sourceOffsetExists) {
1097 :
1098 :
1099 0 : Parser::toXML(sourceOffset, "sourceOffset", buf);
1100 :
1101 :
1102 : }
1103 :
1104 :
1105 :
1106 :
1107 :
1108 0 : if (sourceOffsetReferenceCodeExists) {
1109 :
1110 :
1111 0 : buf.append(EnumerationParser::toXML("sourceOffsetReferenceCode", sourceOffsetReferenceCode));
1112 :
1113 :
1114 : }
1115 :
1116 :
1117 :
1118 :
1119 :
1120 0 : if (sourceOffsetEquinoxExists) {
1121 :
1122 :
1123 0 : Parser::toXML(sourceOffsetEquinox, "sourceOffsetEquinox", buf);
1124 :
1125 :
1126 : }
1127 :
1128 :
1129 :
1130 :
1131 :
1132 0 : if (sampledTimeIntervalExists) {
1133 :
1134 :
1135 0 : Parser::toXML(sampledTimeInterval, "sampledTimeInterval", buf);
1136 :
1137 :
1138 : }
1139 :
1140 :
1141 :
1142 :
1143 :
1144 0 : if (atmosphericCorrectionExists) {
1145 :
1146 :
1147 0 : Parser::toXML(atmosphericCorrection, "atmosphericCorrection", buf);
1148 :
1149 :
1150 : }
1151 :
1152 :
1153 :
1154 :
1155 :
1156 :
1157 :
1158 :
1159 :
1160 0 : Parser::toXML(antennaId, "antennaId", buf);
1161 :
1162 :
1163 :
1164 :
1165 :
1166 :
1167 :
1168 0 : Parser::toXML(pointingModelId, "pointingModelId", buf);
1169 :
1170 :
1171 :
1172 :
1173 :
1174 :
1175 :
1176 :
1177 :
1178 :
1179 :
1180 0 : buf.append("</row>\n");
1181 0 : return buf;
1182 0 : }
1183 :
1184 : /**
1185 : * Fill the values of this row from an XML string
1186 : * that was produced by the toXML() method.
1187 : * @param x The XML string being used to set the values of this row.
1188 : */
1189 0 : void PointingRow::setFromXML (string rowDoc) {
1190 0 : Parser row(rowDoc);
1191 0 : string s = "";
1192 : try {
1193 :
1194 :
1195 :
1196 :
1197 :
1198 0 : setTimeInterval(Parser::getArrayTimeInterval("timeInterval","Pointing",rowDoc));
1199 :
1200 :
1201 :
1202 :
1203 :
1204 :
1205 :
1206 0 : setNumSample(Parser::getInteger("numSample","Pointing",rowDoc));
1207 :
1208 :
1209 :
1210 :
1211 :
1212 :
1213 :
1214 :
1215 0 : setEncoder(Parser::get2DAngle("encoder","Pointing",rowDoc));
1216 :
1217 :
1218 :
1219 :
1220 :
1221 :
1222 :
1223 :
1224 0 : setPointingTracking(Parser::getBoolean("pointingTracking","Pointing",rowDoc));
1225 :
1226 :
1227 :
1228 :
1229 :
1230 :
1231 :
1232 0 : setUsePolynomials(Parser::getBoolean("usePolynomials","Pointing",rowDoc));
1233 :
1234 :
1235 :
1236 :
1237 :
1238 :
1239 :
1240 0 : setTimeOrigin(Parser::getArrayTime("timeOrigin","Pointing",rowDoc));
1241 :
1242 :
1243 :
1244 :
1245 :
1246 :
1247 :
1248 0 : setNumTerm(Parser::getInteger("numTerm","Pointing",rowDoc));
1249 :
1250 :
1251 :
1252 :
1253 :
1254 :
1255 :
1256 :
1257 0 : setPointingDirection(Parser::get2DAngle("pointingDirection","Pointing",rowDoc));
1258 :
1259 :
1260 :
1261 :
1262 :
1263 :
1264 :
1265 :
1266 :
1267 0 : setTarget(Parser::get2DAngle("target","Pointing",rowDoc));
1268 :
1269 :
1270 :
1271 :
1272 :
1273 :
1274 :
1275 :
1276 :
1277 0 : setOffset(Parser::get2DAngle("offset","Pointing",rowDoc));
1278 :
1279 :
1280 :
1281 :
1282 :
1283 :
1284 :
1285 0 : if (row.isStr("<overTheTop>")) {
1286 :
1287 0 : setOverTheTop(Parser::getBoolean("overTheTop","Pointing",rowDoc));
1288 :
1289 : }
1290 :
1291 :
1292 :
1293 :
1294 :
1295 0 : if (row.isStr("<sourceOffset>")) {
1296 :
1297 :
1298 0 : setSourceOffset(Parser::get2DAngle("sourceOffset","Pointing",rowDoc));
1299 :
1300 :
1301 : }
1302 :
1303 :
1304 :
1305 :
1306 :
1307 0 : if (row.isStr("<sourceOffsetReferenceCode>")) {
1308 :
1309 :
1310 :
1311 0 : sourceOffsetReferenceCode = EnumerationParser::getDirectionReferenceCode("sourceOffsetReferenceCode","Pointing",rowDoc);
1312 :
1313 :
1314 :
1315 0 : sourceOffsetReferenceCodeExists = true;
1316 : }
1317 :
1318 :
1319 :
1320 :
1321 :
1322 0 : if (row.isStr("<sourceOffsetEquinox>")) {
1323 :
1324 0 : setSourceOffsetEquinox(Parser::getArrayTime("sourceOffsetEquinox","Pointing",rowDoc));
1325 :
1326 : }
1327 :
1328 :
1329 :
1330 :
1331 :
1332 0 : if (row.isStr("<sampledTimeInterval>")) {
1333 :
1334 :
1335 0 : setSampledTimeInterval(Parser::get1DArrayTimeInterval("sampledTimeInterval","Pointing",rowDoc));
1336 :
1337 :
1338 : }
1339 :
1340 :
1341 :
1342 :
1343 :
1344 0 : if (row.isStr("<atmosphericCorrection>")) {
1345 :
1346 :
1347 0 : setAtmosphericCorrection(Parser::get2DAngle("atmosphericCorrection","Pointing",rowDoc));
1348 :
1349 :
1350 : }
1351 :
1352 :
1353 :
1354 :
1355 :
1356 :
1357 :
1358 :
1359 :
1360 0 : setAntennaId(Parser::getTag("antennaId","Antenna",rowDoc));
1361 :
1362 :
1363 :
1364 :
1365 :
1366 :
1367 :
1368 0 : setPointingModelId(Parser::getInteger("pointingModelId","Pointing",rowDoc));
1369 :
1370 :
1371 :
1372 :
1373 :
1374 :
1375 :
1376 :
1377 :
1378 :
1379 0 : } catch (const IllegalAccessException &err) {
1380 0 : throw ConversionException (err.getMessage(),"Pointing");
1381 0 : }
1382 0 : }
1383 :
1384 191 : void PointingRow::toBin(EndianOSStream& eoss) {
1385 :
1386 :
1387 :
1388 :
1389 :
1390 191 : antennaId.toBin(eoss);
1391 :
1392 :
1393 :
1394 :
1395 :
1396 :
1397 191 : timeInterval.toBin(eoss);
1398 :
1399 :
1400 :
1401 :
1402 :
1403 :
1404 :
1405 191 : eoss.writeInt(numSample);
1406 :
1407 :
1408 :
1409 :
1410 :
1411 :
1412 :
1413 191 : Angle::toBin(encoder, eoss);
1414 :
1415 :
1416 :
1417 :
1418 :
1419 :
1420 :
1421 191 : eoss.writeBoolean(pointingTracking);
1422 :
1423 :
1424 :
1425 :
1426 :
1427 :
1428 :
1429 :
1430 191 : eoss.writeBoolean(usePolynomials);
1431 :
1432 :
1433 :
1434 :
1435 :
1436 :
1437 :
1438 191 : timeOrigin.toBin(eoss);
1439 :
1440 :
1441 :
1442 :
1443 :
1444 :
1445 :
1446 191 : eoss.writeInt(numTerm);
1447 :
1448 :
1449 :
1450 :
1451 :
1452 :
1453 :
1454 191 : Angle::toBin(pointingDirection, eoss);
1455 :
1456 :
1457 :
1458 :
1459 :
1460 :
1461 191 : Angle::toBin(target, eoss);
1462 :
1463 :
1464 :
1465 :
1466 :
1467 :
1468 191 : Angle::toBin(offset, eoss);
1469 :
1470 :
1471 :
1472 :
1473 :
1474 :
1475 :
1476 191 : eoss.writeInt(pointingModelId);
1477 :
1478 :
1479 :
1480 :
1481 :
1482 :
1483 :
1484 191 : eoss.writeBoolean(overTheTopExists);
1485 191 : if (overTheTopExists) {
1486 :
1487 :
1488 :
1489 :
1490 :
1491 0 : eoss.writeBoolean(overTheTop);
1492 :
1493 :
1494 :
1495 :
1496 : }
1497 :
1498 191 : eoss.writeBoolean(sourceOffsetExists);
1499 191 : if (sourceOffsetExists) {
1500 :
1501 :
1502 :
1503 :
1504 0 : Angle::toBin(sourceOffset, eoss);
1505 :
1506 :
1507 :
1508 : }
1509 :
1510 191 : eoss.writeBoolean(sourceOffsetReferenceCodeExists);
1511 191 : if (sourceOffsetReferenceCodeExists) {
1512 :
1513 :
1514 :
1515 :
1516 :
1517 0 : eoss.writeString(CDirectionReferenceCode::name(sourceOffsetReferenceCode));
1518 : /* eoss.writeInt(sourceOffsetReferenceCode); */
1519 :
1520 :
1521 :
1522 :
1523 : }
1524 :
1525 191 : eoss.writeBoolean(sourceOffsetEquinoxExists);
1526 191 : if (sourceOffsetEquinoxExists) {
1527 :
1528 :
1529 :
1530 :
1531 0 : sourceOffsetEquinox.toBin(eoss);
1532 :
1533 :
1534 :
1535 : }
1536 :
1537 191 : eoss.writeBoolean(sampledTimeIntervalExists);
1538 191 : if (sampledTimeIntervalExists) {
1539 :
1540 :
1541 :
1542 :
1543 0 : ArrayTimeInterval::toBin(sampledTimeInterval, eoss);
1544 :
1545 :
1546 :
1547 : }
1548 :
1549 191 : eoss.writeBoolean(atmosphericCorrectionExists);
1550 191 : if (atmosphericCorrectionExists) {
1551 :
1552 :
1553 :
1554 :
1555 0 : Angle::toBin(atmosphericCorrection, eoss);
1556 :
1557 :
1558 :
1559 : }
1560 :
1561 191 : }
1562 :
1563 83528 : void PointingRow::antennaIdFromBin(EndianIStream& eis) {
1564 :
1565 :
1566 :
1567 :
1568 83528 : antennaId = Tag::fromBin(eis);
1569 :
1570 :
1571 :
1572 83528 : }
1573 83528 : void PointingRow::timeIntervalFromBin(EndianIStream& eis) {
1574 :
1575 :
1576 :
1577 :
1578 83528 : timeInterval = ArrayTimeInterval::fromBin(eis);
1579 :
1580 :
1581 :
1582 83528 : }
1583 83528 : void PointingRow::numSampleFromBin(EndianIStream& eis) {
1584 :
1585 :
1586 :
1587 :
1588 :
1589 83528 : numSample = eis.readInt();
1590 :
1591 :
1592 :
1593 :
1594 83528 : }
1595 83528 : void PointingRow::encoderFromBin(EndianIStream& eis) {
1596 :
1597 :
1598 :
1599 :
1600 :
1601 :
1602 83528 : encoder = Angle::from2DBin(eis);
1603 :
1604 :
1605 :
1606 :
1607 :
1608 83528 : }
1609 83528 : void PointingRow::pointingTrackingFromBin(EndianIStream& eis) {
1610 :
1611 :
1612 :
1613 :
1614 :
1615 83528 : pointingTracking = eis.readBoolean();
1616 :
1617 :
1618 :
1619 :
1620 83528 : }
1621 83528 : void PointingRow::usePolynomialsFromBin(EndianIStream& eis) {
1622 :
1623 :
1624 :
1625 :
1626 :
1627 83528 : usePolynomials = eis.readBoolean();
1628 :
1629 :
1630 :
1631 :
1632 83528 : }
1633 83528 : void PointingRow::timeOriginFromBin(EndianIStream& eis) {
1634 :
1635 :
1636 :
1637 :
1638 83528 : timeOrigin = ArrayTime::fromBin(eis);
1639 :
1640 :
1641 :
1642 83528 : }
1643 83528 : void PointingRow::numTermFromBin(EndianIStream& eis) {
1644 :
1645 :
1646 :
1647 :
1648 :
1649 83528 : numTerm = eis.readInt();
1650 :
1651 :
1652 :
1653 :
1654 83528 : }
1655 83528 : void PointingRow::pointingDirectionFromBin(EndianIStream& eis) {
1656 :
1657 :
1658 :
1659 :
1660 :
1661 :
1662 83528 : pointingDirection = Angle::from2DBin(eis);
1663 :
1664 :
1665 :
1666 :
1667 :
1668 83528 : }
1669 83528 : void PointingRow::targetFromBin(EndianIStream& eis) {
1670 :
1671 :
1672 :
1673 :
1674 :
1675 :
1676 83528 : target = Angle::from2DBin(eis);
1677 :
1678 :
1679 :
1680 :
1681 :
1682 83528 : }
1683 83528 : void PointingRow::offsetFromBin(EndianIStream& eis) {
1684 :
1685 :
1686 :
1687 :
1688 :
1689 :
1690 83528 : offset = Angle::from2DBin(eis);
1691 :
1692 :
1693 :
1694 :
1695 :
1696 83528 : }
1697 83528 : void PointingRow::pointingModelIdFromBin(EndianIStream& eis) {
1698 :
1699 :
1700 :
1701 :
1702 :
1703 83528 : pointingModelId = eis.readInt();
1704 :
1705 :
1706 :
1707 :
1708 83528 : }
1709 :
1710 83528 : void PointingRow::overTheTopFromBin(EndianIStream& eis) {
1711 :
1712 83528 : overTheTopExists = eis.readBoolean();
1713 83528 : if (overTheTopExists) {
1714 :
1715 :
1716 :
1717 :
1718 :
1719 0 : overTheTop = eis.readBoolean();
1720 :
1721 :
1722 :
1723 :
1724 : }
1725 :
1726 83528 : }
1727 83528 : void PointingRow::sourceOffsetFromBin(EndianIStream& eis) {
1728 :
1729 83528 : sourceOffsetExists = eis.readBoolean();
1730 83528 : if (sourceOffsetExists) {
1731 :
1732 :
1733 :
1734 :
1735 :
1736 :
1737 83496 : sourceOffset = Angle::from2DBin(eis);
1738 :
1739 :
1740 :
1741 :
1742 :
1743 : }
1744 :
1745 83528 : }
1746 83528 : void PointingRow::sourceOffsetReferenceCodeFromBin(EndianIStream& eis) {
1747 :
1748 83528 : sourceOffsetReferenceCodeExists = eis.readBoolean();
1749 83528 : if (sourceOffsetReferenceCodeExists) {
1750 :
1751 :
1752 :
1753 :
1754 :
1755 0 : sourceOffsetReferenceCode = CDirectionReferenceCode::literal(eis.readString());
1756 :
1757 :
1758 :
1759 :
1760 : }
1761 :
1762 83528 : }
1763 83528 : void PointingRow::sourceOffsetEquinoxFromBin(EndianIStream& eis) {
1764 :
1765 83528 : sourceOffsetEquinoxExists = eis.readBoolean();
1766 83528 : if (sourceOffsetEquinoxExists) {
1767 :
1768 :
1769 :
1770 :
1771 0 : sourceOffsetEquinox = ArrayTime::fromBin(eis);
1772 :
1773 :
1774 :
1775 : }
1776 :
1777 83528 : }
1778 83528 : void PointingRow::sampledTimeIntervalFromBin(EndianIStream& eis) {
1779 :
1780 83528 : sampledTimeIntervalExists = eis.readBoolean();
1781 83528 : if (sampledTimeIntervalExists) {
1782 :
1783 :
1784 :
1785 :
1786 :
1787 :
1788 4 : sampledTimeInterval = ArrayTimeInterval::from1DBin(eis);
1789 :
1790 :
1791 :
1792 :
1793 :
1794 : }
1795 :
1796 83528 : }
1797 83480 : void PointingRow::atmosphericCorrectionFromBin(EndianIStream& eis) {
1798 :
1799 83480 : atmosphericCorrectionExists = eis.readBoolean();
1800 83480 : if (atmosphericCorrectionExists) {
1801 :
1802 :
1803 :
1804 :
1805 :
1806 :
1807 83448 : atmosphericCorrection = Angle::from2DBin(eis);
1808 :
1809 :
1810 :
1811 :
1812 :
1813 : }
1814 :
1815 83480 : }
1816 :
1817 :
1818 83528 : PointingRow* PointingRow::fromBin(EndianIStream& eis, PointingTable& table, const vector<string>& attributesSeq) {
1819 83528 : PointingRow* row = new PointingRow(table);
1820 :
1821 83528 : map<string, PointingAttributeFromBin>::iterator iter ;
1822 1586984 : for (unsigned int i = 0; i < attributesSeq.size(); i++) {
1823 1503456 : iter = row->fromBinMethods.find(attributesSeq.at(i));
1824 1503456 : if (iter != row->fromBinMethods.end()) {
1825 1503456 : (row->*(row->fromBinMethods[ attributesSeq.at(i) ] ))(eis);
1826 : }
1827 : else {
1828 0 : BinaryAttributeReaderFunctor* functorP = table.getUnknownAttributeBinaryReader(attributesSeq.at(i));
1829 0 : if (functorP)
1830 0 : (*functorP)(eis);
1831 : else
1832 0 : throw ConversionException("There is not method to read an attribute '"+attributesSeq.at(i)+"'.", "PointingTable");
1833 : }
1834 :
1835 : }
1836 83528 : return row;
1837 : }
1838 :
1839 : //
1840 : // A collection of methods to set the value of the attributes from their textual value in the XML representation
1841 : // of one row.
1842 : //
1843 :
1844 : // Convert a string into an Tag
1845 0 : void PointingRow::antennaIdFromText(const string & s) {
1846 :
1847 :
1848 0 : antennaId = ASDMValuesParser::parse<Tag>(s);
1849 :
1850 :
1851 0 : }
1852 :
1853 :
1854 : // Convert a string into an ArrayTimeInterval
1855 0 : void PointingRow::timeIntervalFromText(const string & s) {
1856 :
1857 :
1858 0 : timeInterval = ASDMValuesParser::parse<ArrayTimeInterval>(s);
1859 :
1860 :
1861 0 : }
1862 :
1863 :
1864 : // Convert a string into an int
1865 0 : void PointingRow::numSampleFromText(const string & s) {
1866 :
1867 :
1868 0 : numSample = ASDMValuesParser::parse<int>(s);
1869 :
1870 :
1871 0 : }
1872 :
1873 :
1874 : // Convert a string into an Angle
1875 0 : void PointingRow::encoderFromText(const string & s) {
1876 :
1877 :
1878 0 : encoder = ASDMValuesParser::parse2D<Angle>(s);
1879 :
1880 :
1881 0 : }
1882 :
1883 :
1884 : // Convert a string into an boolean
1885 0 : void PointingRow::pointingTrackingFromText(const string & s) {
1886 :
1887 :
1888 0 : pointingTracking = ASDMValuesParser::parse<bool>(s);
1889 :
1890 :
1891 0 : }
1892 :
1893 :
1894 : // Convert a string into an boolean
1895 0 : void PointingRow::usePolynomialsFromText(const string & s) {
1896 :
1897 :
1898 0 : usePolynomials = ASDMValuesParser::parse<bool>(s);
1899 :
1900 :
1901 0 : }
1902 :
1903 :
1904 : // Convert a string into an ArrayTime
1905 0 : void PointingRow::timeOriginFromText(const string & s) {
1906 :
1907 :
1908 0 : timeOrigin = ASDMValuesParser::parse<ArrayTime>(s);
1909 :
1910 :
1911 0 : }
1912 :
1913 :
1914 : // Convert a string into an int
1915 0 : void PointingRow::numTermFromText(const string & s) {
1916 :
1917 :
1918 0 : numTerm = ASDMValuesParser::parse<int>(s);
1919 :
1920 :
1921 0 : }
1922 :
1923 :
1924 : // Convert a string into an Angle
1925 0 : void PointingRow::pointingDirectionFromText(const string & s) {
1926 :
1927 :
1928 0 : pointingDirection = ASDMValuesParser::parse2D<Angle>(s);
1929 :
1930 :
1931 0 : }
1932 :
1933 :
1934 : // Convert a string into an Angle
1935 0 : void PointingRow::targetFromText(const string & s) {
1936 :
1937 :
1938 0 : target = ASDMValuesParser::parse2D<Angle>(s);
1939 :
1940 :
1941 0 : }
1942 :
1943 :
1944 : // Convert a string into an Angle
1945 0 : void PointingRow::offsetFromText(const string & s) {
1946 :
1947 :
1948 0 : offset = ASDMValuesParser::parse2D<Angle>(s);
1949 :
1950 :
1951 0 : }
1952 :
1953 :
1954 : // Convert a string into an int
1955 0 : void PointingRow::pointingModelIdFromText(const string & s) {
1956 :
1957 :
1958 0 : pointingModelId = ASDMValuesParser::parse<int>(s);
1959 :
1960 :
1961 0 : }
1962 :
1963 :
1964 :
1965 : // Convert a string into an boolean
1966 0 : void PointingRow::overTheTopFromText(const string & s) {
1967 0 : overTheTopExists = true;
1968 :
1969 :
1970 0 : overTheTop = ASDMValuesParser::parse<bool>(s);
1971 :
1972 :
1973 0 : }
1974 :
1975 :
1976 : // Convert a string into an Angle
1977 0 : void PointingRow::sourceOffsetFromText(const string & s) {
1978 0 : sourceOffsetExists = true;
1979 :
1980 :
1981 0 : sourceOffset = ASDMValuesParser::parse2D<Angle>(s);
1982 :
1983 :
1984 0 : }
1985 :
1986 :
1987 : // Convert a string into an DirectionReferenceCode
1988 0 : void PointingRow::sourceOffsetReferenceCodeFromText(const string & s) {
1989 0 : sourceOffsetReferenceCodeExists = true;
1990 :
1991 :
1992 0 : sourceOffsetReferenceCode = ASDMValuesParser::parse<DirectionReferenceCodeMod::DirectionReferenceCode>(s);
1993 :
1994 :
1995 0 : }
1996 :
1997 :
1998 : // Convert a string into an ArrayTime
1999 0 : void PointingRow::sourceOffsetEquinoxFromText(const string & s) {
2000 0 : sourceOffsetEquinoxExists = true;
2001 :
2002 :
2003 0 : sourceOffsetEquinox = ASDMValuesParser::parse<ArrayTime>(s);
2004 :
2005 :
2006 0 : }
2007 :
2008 :
2009 : // Convert a string into an ArrayTimeInterval
2010 0 : void PointingRow::sampledTimeIntervalFromText(const string & s) {
2011 0 : sampledTimeIntervalExists = true;
2012 :
2013 :
2014 0 : sampledTimeInterval = ASDMValuesParser::parse1D<ArrayTimeInterval>(s);
2015 :
2016 :
2017 0 : }
2018 :
2019 :
2020 : // Convert a string into an Angle
2021 0 : void PointingRow::atmosphericCorrectionFromText(const string & s) {
2022 0 : atmosphericCorrectionExists = true;
2023 :
2024 :
2025 0 : atmosphericCorrection = ASDMValuesParser::parse2D<Angle>(s);
2026 :
2027 :
2028 0 : }
2029 :
2030 :
2031 :
2032 0 : void PointingRow::fromText(const std::string& attributeName, const std::string& t) {
2033 0 : map<string, PointingAttributeFromText>::iterator iter;
2034 0 : if ((iter = fromTextMethods.find(attributeName)) == fromTextMethods.end())
2035 0 : throw ConversionException("I do not know what to do with '"+attributeName+"' and its content '"+t+"' (while parsing an XML document)", "PointingTable");
2036 0 : (this->*(iter->second))(t);
2037 0 : }
2038 :
2039 : ////////////////////////////////////////////////
2040 : // Intrinsic Table Attributes getters/setters //
2041 : ////////////////////////////////////////////////
2042 :
2043 :
2044 :
2045 :
2046 : /**
2047 : * Get timeInterval.
2048 : * @return timeInterval as ArrayTimeInterval
2049 : */
2050 1546327 : ArrayTimeInterval PointingRow::getTimeInterval() const {
2051 :
2052 1546327 : return timeInterval;
2053 : }
2054 :
2055 : /**
2056 : * Set timeInterval with the specified ArrayTimeInterval.
2057 : * @param timeInterval The ArrayTimeInterval value to which timeInterval is to be set.
2058 :
2059 :
2060 :
2061 : * @throw IllegalAccessException If an attempt is made to change this field after is has been added to the table.
2062 :
2063 : */
2064 191 : void PointingRow::setTimeInterval (ArrayTimeInterval timeInterval) {
2065 :
2066 :
2067 191 : if (hasBeenAdded) {
2068 :
2069 0 : throw IllegalAccessException("timeInterval", "Pointing");
2070 :
2071 : }
2072 :
2073 191 : this->timeInterval = timeInterval;
2074 :
2075 191 : }
2076 :
2077 :
2078 :
2079 :
2080 :
2081 :
2082 : /**
2083 : * Get numSample.
2084 : * @return numSample as int
2085 : */
2086 110762 : int PointingRow::getNumSample() const {
2087 :
2088 110762 : return numSample;
2089 : }
2090 :
2091 : /**
2092 : * Set numSample with the specified int.
2093 : * @param numSample The int value to which numSample is to be set.
2094 :
2095 :
2096 :
2097 : */
2098 191 : void PointingRow::setNumSample (int numSample) {
2099 :
2100 :
2101 191 : if (hasBeenAdded) {
2102 :
2103 : }
2104 :
2105 191 : this->numSample = numSample;
2106 :
2107 191 : }
2108 :
2109 :
2110 :
2111 :
2112 :
2113 :
2114 : /**
2115 : * Get encoder.
2116 : * @return encoder as std::vector<std::vector<Angle > >
2117 : */
2118 36922 : std::vector<std::vector<Angle > > PointingRow::getEncoder() const {
2119 :
2120 36922 : return encoder;
2121 : }
2122 :
2123 : /**
2124 : * Set encoder with the specified std::vector<std::vector<Angle > >.
2125 : * @param encoder The std::vector<std::vector<Angle > > value to which encoder is to be set.
2126 :
2127 :
2128 :
2129 : */
2130 191 : void PointingRow::setEncoder (std::vector<std::vector<Angle > > encoder) {
2131 :
2132 :
2133 191 : if (hasBeenAdded) {
2134 :
2135 : }
2136 :
2137 191 : this->encoder = encoder;
2138 :
2139 191 : }
2140 :
2141 :
2142 :
2143 :
2144 :
2145 :
2146 : /**
2147 : * Get pointingTracking.
2148 : * @return pointingTracking as bool
2149 : */
2150 36922 : bool PointingRow::getPointingTracking() const {
2151 :
2152 36922 : return pointingTracking;
2153 : }
2154 :
2155 : /**
2156 : * Set pointingTracking with the specified bool.
2157 : * @param pointingTracking The bool value to which pointingTracking is to be set.
2158 :
2159 :
2160 :
2161 : */
2162 191 : void PointingRow::setPointingTracking (bool pointingTracking) {
2163 :
2164 :
2165 191 : if (hasBeenAdded) {
2166 :
2167 : }
2168 :
2169 191 : this->pointingTracking = pointingTracking;
2170 :
2171 191 : }
2172 :
2173 :
2174 :
2175 :
2176 :
2177 :
2178 : /**
2179 : * Get usePolynomials.
2180 : * @return usePolynomials as bool
2181 : */
2182 36922 : bool PointingRow::getUsePolynomials() const {
2183 :
2184 36922 : return usePolynomials;
2185 : }
2186 :
2187 : /**
2188 : * Set usePolynomials with the specified bool.
2189 : * @param usePolynomials The bool value to which usePolynomials is to be set.
2190 :
2191 :
2192 :
2193 : */
2194 191 : void PointingRow::setUsePolynomials (bool usePolynomials) {
2195 :
2196 :
2197 191 : if (hasBeenAdded) {
2198 :
2199 : }
2200 :
2201 191 : this->usePolynomials = usePolynomials;
2202 :
2203 191 : }
2204 :
2205 :
2206 :
2207 :
2208 :
2209 :
2210 : /**
2211 : * Get timeOrigin.
2212 : * @return timeOrigin as ArrayTime
2213 : */
2214 0 : ArrayTime PointingRow::getTimeOrigin() const {
2215 :
2216 0 : return timeOrigin;
2217 : }
2218 :
2219 : /**
2220 : * Set timeOrigin with the specified ArrayTime.
2221 : * @param timeOrigin The ArrayTime value to which timeOrigin is to be set.
2222 :
2223 :
2224 :
2225 : */
2226 191 : void PointingRow::setTimeOrigin (ArrayTime timeOrigin) {
2227 :
2228 :
2229 191 : if (hasBeenAdded) {
2230 :
2231 : }
2232 :
2233 191 : this->timeOrigin = timeOrigin;
2234 :
2235 191 : }
2236 :
2237 :
2238 :
2239 :
2240 :
2241 :
2242 : /**
2243 : * Get numTerm.
2244 : * @return numTerm as int
2245 : */
2246 0 : int PointingRow::getNumTerm() const {
2247 :
2248 0 : return numTerm;
2249 : }
2250 :
2251 : /**
2252 : * Set numTerm with the specified int.
2253 : * @param numTerm The int value to which numTerm is to be set.
2254 :
2255 :
2256 :
2257 : */
2258 191 : void PointingRow::setNumTerm (int numTerm) {
2259 :
2260 :
2261 191 : if (hasBeenAdded) {
2262 :
2263 : }
2264 :
2265 191 : this->numTerm = numTerm;
2266 :
2267 191 : }
2268 :
2269 :
2270 :
2271 :
2272 :
2273 :
2274 : /**
2275 : * Get pointingDirection.
2276 : * @return pointingDirection as std::vector<std::vector<Angle > >
2277 : */
2278 36922 : std::vector<std::vector<Angle > > PointingRow::getPointingDirection() const {
2279 :
2280 36922 : return pointingDirection;
2281 : }
2282 :
2283 : /**
2284 : * Set pointingDirection with the specified std::vector<std::vector<Angle > >.
2285 : * @param pointingDirection The std::vector<std::vector<Angle > > value to which pointingDirection is to be set.
2286 :
2287 :
2288 :
2289 : */
2290 191 : void PointingRow::setPointingDirection (std::vector<std::vector<Angle > > pointingDirection) {
2291 :
2292 :
2293 191 : if (hasBeenAdded) {
2294 :
2295 : }
2296 :
2297 191 : this->pointingDirection = pointingDirection;
2298 :
2299 191 : }
2300 :
2301 :
2302 :
2303 :
2304 :
2305 :
2306 : /**
2307 : * Get target.
2308 : * @return target as std::vector<std::vector<Angle > >
2309 : */
2310 36922 : std::vector<std::vector<Angle > > PointingRow::getTarget() const {
2311 :
2312 36922 : return target;
2313 : }
2314 :
2315 : /**
2316 : * Set target with the specified std::vector<std::vector<Angle > >.
2317 : * @param target The std::vector<std::vector<Angle > > value to which target is to be set.
2318 :
2319 :
2320 :
2321 : */
2322 191 : void PointingRow::setTarget (std::vector<std::vector<Angle > > target) {
2323 :
2324 :
2325 191 : if (hasBeenAdded) {
2326 :
2327 : }
2328 :
2329 191 : this->target = target;
2330 :
2331 191 : }
2332 :
2333 :
2334 :
2335 :
2336 :
2337 :
2338 : /**
2339 : * Get offset.
2340 : * @return offset as std::vector<std::vector<Angle > >
2341 : */
2342 36922 : std::vector<std::vector<Angle > > PointingRow::getOffset() const {
2343 :
2344 36922 : return offset;
2345 : }
2346 :
2347 : /**
2348 : * Set offset with the specified std::vector<std::vector<Angle > >.
2349 : * @param offset The std::vector<std::vector<Angle > > value to which offset is to be set.
2350 :
2351 :
2352 :
2353 : */
2354 191 : void PointingRow::setOffset (std::vector<std::vector<Angle > > offset) {
2355 :
2356 :
2357 191 : if (hasBeenAdded) {
2358 :
2359 : }
2360 :
2361 191 : this->offset = offset;
2362 :
2363 191 : }
2364 :
2365 :
2366 :
2367 :
2368 : /**
2369 : * The attribute overTheTop is optional. Return true if this attribute exists.
2370 : * @return true if and only if the overTheTop attribute exists.
2371 : */
2372 73844 : bool PointingRow::isOverTheTopExists() const {
2373 73844 : return overTheTopExists;
2374 : }
2375 :
2376 :
2377 :
2378 : /**
2379 : * Get overTheTop, which is optional.
2380 : * @return overTheTop as bool
2381 : * @throw IllegalAccessException If overTheTop does not exist.
2382 : */
2383 0 : bool PointingRow::getOverTheTop() const {
2384 0 : if (!overTheTopExists) {
2385 0 : throw IllegalAccessException("overTheTop", "Pointing");
2386 : }
2387 :
2388 0 : return overTheTop;
2389 : }
2390 :
2391 : /**
2392 : * Set overTheTop with the specified bool.
2393 : * @param overTheTop The bool value to which overTheTop is to be set.
2394 :
2395 :
2396 : */
2397 0 : void PointingRow::setOverTheTop (bool overTheTop) {
2398 :
2399 0 : this->overTheTop = overTheTop;
2400 :
2401 0 : overTheTopExists = true;
2402 :
2403 0 : }
2404 :
2405 :
2406 : /**
2407 : * Mark overTheTop, which is an optional field, as non-existent.
2408 : */
2409 0 : void PointingRow::clearOverTheTop () {
2410 0 : overTheTopExists = false;
2411 0 : }
2412 :
2413 :
2414 :
2415 : /**
2416 : * The attribute sourceOffset is optional. Return true if this attribute exists.
2417 : * @return true if and only if the sourceOffset attribute exists.
2418 : */
2419 0 : bool PointingRow::isSourceOffsetExists() const {
2420 0 : return sourceOffsetExists;
2421 : }
2422 :
2423 :
2424 :
2425 : /**
2426 : * Get sourceOffset, which is optional.
2427 : * @return sourceOffset as std::vector<std::vector<Angle > >
2428 : * @throw IllegalAccessException If sourceOffset does not exist.
2429 : */
2430 0 : std::vector<std::vector<Angle > > PointingRow::getSourceOffset() const {
2431 0 : if (!sourceOffsetExists) {
2432 0 : throw IllegalAccessException("sourceOffset", "Pointing");
2433 : }
2434 :
2435 0 : return sourceOffset;
2436 : }
2437 :
2438 : /**
2439 : * Set sourceOffset with the specified std::vector<std::vector<Angle > >.
2440 : * @param sourceOffset The std::vector<std::vector<Angle > > value to which sourceOffset is to be set.
2441 :
2442 :
2443 : */
2444 0 : void PointingRow::setSourceOffset (std::vector<std::vector<Angle > > sourceOffset) {
2445 :
2446 0 : this->sourceOffset = sourceOffset;
2447 :
2448 0 : sourceOffsetExists = true;
2449 :
2450 0 : }
2451 :
2452 :
2453 : /**
2454 : * Mark sourceOffset, which is an optional field, as non-existent.
2455 : */
2456 0 : void PointingRow::clearSourceOffset () {
2457 0 : sourceOffsetExists = false;
2458 0 : }
2459 :
2460 :
2461 :
2462 : /**
2463 : * The attribute sourceOffsetReferenceCode is optional. Return true if this attribute exists.
2464 : * @return true if and only if the sourceOffsetReferenceCode attribute exists.
2465 : */
2466 0 : bool PointingRow::isSourceOffsetReferenceCodeExists() const {
2467 0 : return sourceOffsetReferenceCodeExists;
2468 : }
2469 :
2470 :
2471 :
2472 : /**
2473 : * Get sourceOffsetReferenceCode, which is optional.
2474 : * @return sourceOffsetReferenceCode as DirectionReferenceCodeMod::DirectionReferenceCode
2475 : * @throw IllegalAccessException If sourceOffsetReferenceCode does not exist.
2476 : */
2477 0 : DirectionReferenceCodeMod::DirectionReferenceCode PointingRow::getSourceOffsetReferenceCode() const {
2478 0 : if (!sourceOffsetReferenceCodeExists) {
2479 0 : throw IllegalAccessException("sourceOffsetReferenceCode", "Pointing");
2480 : }
2481 :
2482 0 : return sourceOffsetReferenceCode;
2483 : }
2484 :
2485 : /**
2486 : * Set sourceOffsetReferenceCode with the specified DirectionReferenceCodeMod::DirectionReferenceCode.
2487 : * @param sourceOffsetReferenceCode The DirectionReferenceCodeMod::DirectionReferenceCode value to which sourceOffsetReferenceCode is to be set.
2488 :
2489 :
2490 : */
2491 0 : void PointingRow::setSourceOffsetReferenceCode (DirectionReferenceCodeMod::DirectionReferenceCode sourceOffsetReferenceCode) {
2492 :
2493 0 : this->sourceOffsetReferenceCode = sourceOffsetReferenceCode;
2494 :
2495 0 : sourceOffsetReferenceCodeExists = true;
2496 :
2497 0 : }
2498 :
2499 :
2500 : /**
2501 : * Mark sourceOffsetReferenceCode, which is an optional field, as non-existent.
2502 : */
2503 0 : void PointingRow::clearSourceOffsetReferenceCode () {
2504 0 : sourceOffsetReferenceCodeExists = false;
2505 0 : }
2506 :
2507 :
2508 :
2509 : /**
2510 : * The attribute sourceOffsetEquinox is optional. Return true if this attribute exists.
2511 : * @return true if and only if the sourceOffsetEquinox attribute exists.
2512 : */
2513 0 : bool PointingRow::isSourceOffsetEquinoxExists() const {
2514 0 : return sourceOffsetEquinoxExists;
2515 : }
2516 :
2517 :
2518 :
2519 : /**
2520 : * Get sourceOffsetEquinox, which is optional.
2521 : * @return sourceOffsetEquinox as ArrayTime
2522 : * @throw IllegalAccessException If sourceOffsetEquinox does not exist.
2523 : */
2524 0 : ArrayTime PointingRow::getSourceOffsetEquinox() const {
2525 0 : if (!sourceOffsetEquinoxExists) {
2526 0 : throw IllegalAccessException("sourceOffsetEquinox", "Pointing");
2527 : }
2528 :
2529 0 : return sourceOffsetEquinox;
2530 : }
2531 :
2532 : /**
2533 : * Set sourceOffsetEquinox with the specified ArrayTime.
2534 : * @param sourceOffsetEquinox The ArrayTime value to which sourceOffsetEquinox is to be set.
2535 :
2536 :
2537 : */
2538 0 : void PointingRow::setSourceOffsetEquinox (ArrayTime sourceOffsetEquinox) {
2539 :
2540 0 : this->sourceOffsetEquinox = sourceOffsetEquinox;
2541 :
2542 0 : sourceOffsetEquinoxExists = true;
2543 :
2544 0 : }
2545 :
2546 :
2547 : /**
2548 : * Mark sourceOffsetEquinox, which is an optional field, as non-existent.
2549 : */
2550 0 : void PointingRow::clearSourceOffsetEquinox () {
2551 0 : sourceOffsetEquinoxExists = false;
2552 0 : }
2553 :
2554 :
2555 :
2556 : /**
2557 : * The attribute sampledTimeInterval is optional. Return true if this attribute exists.
2558 : * @return true if and only if the sampledTimeInterval attribute exists.
2559 : */
2560 18863328 : bool PointingRow::isSampledTimeIntervalExists() const {
2561 18863328 : return sampledTimeIntervalExists;
2562 : }
2563 :
2564 :
2565 :
2566 : /**
2567 : * Get sampledTimeInterval, which is optional.
2568 : * @return sampledTimeInterval as std::vector<ArrayTimeInterval >
2569 : * @throw IllegalAccessException If sampledTimeInterval does not exist.
2570 : */
2571 12 : std::vector<ArrayTimeInterval > PointingRow::getSampledTimeInterval() const {
2572 12 : if (!sampledTimeIntervalExists) {
2573 0 : throw IllegalAccessException("sampledTimeInterval", "Pointing");
2574 : }
2575 :
2576 12 : return sampledTimeInterval;
2577 : }
2578 :
2579 : /**
2580 : * Set sampledTimeInterval with the specified std::vector<ArrayTimeInterval >.
2581 : * @param sampledTimeInterval The std::vector<ArrayTimeInterval > value to which sampledTimeInterval is to be set.
2582 :
2583 :
2584 : */
2585 0 : void PointingRow::setSampledTimeInterval (std::vector<ArrayTimeInterval > sampledTimeInterval) {
2586 :
2587 0 : this->sampledTimeInterval = sampledTimeInterval;
2588 :
2589 0 : sampledTimeIntervalExists = true;
2590 :
2591 0 : }
2592 :
2593 :
2594 : /**
2595 : * Mark sampledTimeInterval, which is an optional field, as non-existent.
2596 : */
2597 0 : void PointingRow::clearSampledTimeInterval () {
2598 0 : sampledTimeIntervalExists = false;
2599 0 : }
2600 :
2601 :
2602 :
2603 : /**
2604 : * The attribute atmosphericCorrection is optional. Return true if this attribute exists.
2605 : * @return true if and only if the atmosphericCorrection attribute exists.
2606 : */
2607 0 : bool PointingRow::isAtmosphericCorrectionExists() const {
2608 0 : return atmosphericCorrectionExists;
2609 : }
2610 :
2611 :
2612 :
2613 : /**
2614 : * Get atmosphericCorrection, which is optional.
2615 : * @return atmosphericCorrection as std::vector<std::vector<Angle > >
2616 : * @throw IllegalAccessException If atmosphericCorrection does not exist.
2617 : */
2618 0 : std::vector<std::vector<Angle > > PointingRow::getAtmosphericCorrection() const {
2619 0 : if (!atmosphericCorrectionExists) {
2620 0 : throw IllegalAccessException("atmosphericCorrection", "Pointing");
2621 : }
2622 :
2623 0 : return atmosphericCorrection;
2624 : }
2625 :
2626 : /**
2627 : * Set atmosphericCorrection with the specified std::vector<std::vector<Angle > >.
2628 : * @param atmosphericCorrection The std::vector<std::vector<Angle > > value to which atmosphericCorrection is to be set.
2629 :
2630 :
2631 : */
2632 0 : void PointingRow::setAtmosphericCorrection (std::vector<std::vector<Angle > > atmosphericCorrection) {
2633 :
2634 0 : this->atmosphericCorrection = atmosphericCorrection;
2635 :
2636 0 : atmosphericCorrectionExists = true;
2637 :
2638 0 : }
2639 :
2640 :
2641 : /**
2642 : * Mark atmosphericCorrection, which is an optional field, as non-existent.
2643 : */
2644 0 : void PointingRow::clearAtmosphericCorrection () {
2645 0 : atmosphericCorrectionExists = false;
2646 0 : }
2647 :
2648 :
2649 :
2650 : ///////////////////////////////////////////////
2651 : // Extrinsic Table Attributes getters/setters//
2652 : ///////////////////////////////////////////////
2653 :
2654 :
2655 :
2656 :
2657 : /**
2658 : * Get antennaId.
2659 : * @return antennaId as Tag
2660 : */
2661 74035 : Tag PointingRow::getAntennaId() const {
2662 :
2663 74035 : return antennaId;
2664 : }
2665 :
2666 : /**
2667 : * Set antennaId with the specified Tag.
2668 : * @param antennaId The Tag value to which antennaId is to be set.
2669 :
2670 :
2671 :
2672 : * @throw IllegalAccessException If an attempt is made to change this field after is has been added to the table.
2673 :
2674 : */
2675 191 : void PointingRow::setAntennaId (Tag antennaId) {
2676 :
2677 :
2678 191 : if (hasBeenAdded) {
2679 :
2680 0 : throw IllegalAccessException("antennaId", "Pointing");
2681 :
2682 : }
2683 :
2684 191 : this->antennaId = antennaId;
2685 :
2686 191 : }
2687 :
2688 :
2689 :
2690 :
2691 :
2692 :
2693 : /**
2694 : * Get pointingModelId.
2695 : * @return pointingModelId as int
2696 : */
2697 0 : int PointingRow::getPointingModelId() const {
2698 :
2699 0 : return pointingModelId;
2700 : }
2701 :
2702 : /**
2703 : * Set pointingModelId with the specified int.
2704 : * @param pointingModelId The int value to which pointingModelId is to be set.
2705 :
2706 :
2707 :
2708 : */
2709 191 : void PointingRow::setPointingModelId (int pointingModelId) {
2710 :
2711 :
2712 191 : if (hasBeenAdded) {
2713 :
2714 : }
2715 :
2716 191 : this->pointingModelId = pointingModelId;
2717 :
2718 191 : }
2719 :
2720 :
2721 :
2722 :
2723 : //////////////////////////////////////
2724 : // Links Attributes getters/setters //
2725 : //////////////////////////////////////
2726 :
2727 :
2728 :
2729 :
2730 :
2731 :
2732 : // ===> Slice link from a row of Pointing table to a collection of row of PointingModel table.
2733 :
2734 : /**
2735 : * Get the collection of row in the PointingModel table having their attribut pointingModelId == this->pointingModelId
2736 : */
2737 0 : vector <PointingModelRow *> PointingRow::getPointingModels() {
2738 :
2739 0 : return table.getContainer().getPointingModel().getRowByPointingModelId(pointingModelId);
2740 :
2741 : }
2742 :
2743 :
2744 :
2745 :
2746 :
2747 :
2748 :
2749 :
2750 :
2751 : /**
2752 : * Returns the pointer to the row in the Antenna table having Antenna.antennaId == antennaId
2753 : * @return a AntennaRow*
2754 : *
2755 :
2756 : */
2757 0 : AntennaRow* PointingRow::getAntennaUsingAntennaId() {
2758 :
2759 0 : return table.getContainer().getAntenna().getRowByKey(antennaId);
2760 : }
2761 :
2762 :
2763 :
2764 :
2765 :
2766 : /**
2767 : * Create a PointingRow.
2768 : * <p>
2769 : * This constructor is private because only the
2770 : * table can create rows. All rows know the table
2771 : * to which they belong.
2772 : * @param table The table to which this row belongs.
2773 : */
2774 83719 : PointingRow::PointingRow (PointingTable &t) : table(t) {
2775 83719 : hasBeenAdded = false;
2776 :
2777 :
2778 :
2779 :
2780 :
2781 :
2782 :
2783 :
2784 :
2785 :
2786 :
2787 :
2788 :
2789 :
2790 :
2791 :
2792 :
2793 :
2794 :
2795 :
2796 :
2797 :
2798 :
2799 83719 : overTheTopExists = false;
2800 :
2801 :
2802 :
2803 83719 : sourceOffsetExists = false;
2804 :
2805 :
2806 :
2807 83719 : sourceOffsetReferenceCodeExists = false;
2808 :
2809 :
2810 :
2811 83719 : sourceOffsetEquinoxExists = false;
2812 :
2813 :
2814 :
2815 83719 : sampledTimeIntervalExists = false;
2816 :
2817 :
2818 :
2819 83719 : atmosphericCorrectionExists = false;
2820 :
2821 :
2822 :
2823 :
2824 :
2825 :
2826 :
2827 :
2828 :
2829 :
2830 :
2831 :
2832 :
2833 :
2834 :
2835 :
2836 :
2837 :
2838 :
2839 :
2840 :
2841 :
2842 :
2843 :
2844 :
2845 :
2846 :
2847 :
2848 :
2849 :
2850 :
2851 :
2852 :
2853 :
2854 :
2855 : // This attribute is scalar and has an enumeration type. Let's initialize it to some valid value (the 1st of the enumeration).
2856 83719 : sourceOffsetReferenceCode = CDirectionReferenceCode::from_int(0);
2857 :
2858 :
2859 :
2860 :
2861 :
2862 :
2863 :
2864 :
2865 :
2866 :
2867 83719 : fromBinMethods["antennaId"] = &PointingRow::antennaIdFromBin;
2868 83719 : fromBinMethods["timeInterval"] = &PointingRow::timeIntervalFromBin;
2869 83719 : fromBinMethods["numSample"] = &PointingRow::numSampleFromBin;
2870 83719 : fromBinMethods["encoder"] = &PointingRow::encoderFromBin;
2871 83719 : fromBinMethods["pointingTracking"] = &PointingRow::pointingTrackingFromBin;
2872 83719 : fromBinMethods["usePolynomials"] = &PointingRow::usePolynomialsFromBin;
2873 83719 : fromBinMethods["timeOrigin"] = &PointingRow::timeOriginFromBin;
2874 83719 : fromBinMethods["numTerm"] = &PointingRow::numTermFromBin;
2875 83719 : fromBinMethods["pointingDirection"] = &PointingRow::pointingDirectionFromBin;
2876 83719 : fromBinMethods["target"] = &PointingRow::targetFromBin;
2877 83719 : fromBinMethods["offset"] = &PointingRow::offsetFromBin;
2878 83719 : fromBinMethods["pointingModelId"] = &PointingRow::pointingModelIdFromBin;
2879 :
2880 :
2881 83719 : fromBinMethods["overTheTop"] = &PointingRow::overTheTopFromBin;
2882 83719 : fromBinMethods["sourceOffset"] = &PointingRow::sourceOffsetFromBin;
2883 83719 : fromBinMethods["sourceOffsetReferenceCode"] = &PointingRow::sourceOffsetReferenceCodeFromBin;
2884 83719 : fromBinMethods["sourceOffsetEquinox"] = &PointingRow::sourceOffsetEquinoxFromBin;
2885 83719 : fromBinMethods["sampledTimeInterval"] = &PointingRow::sampledTimeIntervalFromBin;
2886 83719 : fromBinMethods["atmosphericCorrection"] = &PointingRow::atmosphericCorrectionFromBin;
2887 :
2888 :
2889 :
2890 :
2891 :
2892 83719 : fromTextMethods["antennaId"] = &PointingRow::antennaIdFromText;
2893 :
2894 :
2895 :
2896 83719 : fromTextMethods["timeInterval"] = &PointingRow::timeIntervalFromText;
2897 :
2898 :
2899 :
2900 83719 : fromTextMethods["numSample"] = &PointingRow::numSampleFromText;
2901 :
2902 :
2903 :
2904 83719 : fromTextMethods["encoder"] = &PointingRow::encoderFromText;
2905 :
2906 :
2907 :
2908 83719 : fromTextMethods["pointingTracking"] = &PointingRow::pointingTrackingFromText;
2909 :
2910 :
2911 :
2912 83719 : fromTextMethods["usePolynomials"] = &PointingRow::usePolynomialsFromText;
2913 :
2914 :
2915 :
2916 83719 : fromTextMethods["timeOrigin"] = &PointingRow::timeOriginFromText;
2917 :
2918 :
2919 :
2920 83719 : fromTextMethods["numTerm"] = &PointingRow::numTermFromText;
2921 :
2922 :
2923 :
2924 83719 : fromTextMethods["pointingDirection"] = &PointingRow::pointingDirectionFromText;
2925 :
2926 :
2927 :
2928 83719 : fromTextMethods["target"] = &PointingRow::targetFromText;
2929 :
2930 :
2931 :
2932 83719 : fromTextMethods["offset"] = &PointingRow::offsetFromText;
2933 :
2934 :
2935 :
2936 83719 : fromTextMethods["pointingModelId"] = &PointingRow::pointingModelIdFromText;
2937 :
2938 :
2939 :
2940 :
2941 :
2942 83719 : fromTextMethods["overTheTop"] = &PointingRow::overTheTopFromText;
2943 :
2944 :
2945 :
2946 83719 : fromTextMethods["sourceOffset"] = &PointingRow::sourceOffsetFromText;
2947 :
2948 :
2949 :
2950 83719 : fromTextMethods["sourceOffsetReferenceCode"] = &PointingRow::sourceOffsetReferenceCodeFromText;
2951 :
2952 :
2953 :
2954 83719 : fromTextMethods["sourceOffsetEquinox"] = &PointingRow::sourceOffsetEquinoxFromText;
2955 :
2956 :
2957 :
2958 83719 : fromTextMethods["sampledTimeInterval"] = &PointingRow::sampledTimeIntervalFromText;
2959 :
2960 :
2961 :
2962 83719 : fromTextMethods["atmosphericCorrection"] = &PointingRow::atmosphericCorrectionFromText;
2963 :
2964 :
2965 83719 : }
2966 :
2967 0 : PointingRow::PointingRow (PointingTable &t, PointingRow *row) : table(t) {
2968 0 : hasBeenAdded = false;
2969 :
2970 0 : if (row == 0) {
2971 :
2972 :
2973 :
2974 :
2975 :
2976 :
2977 :
2978 :
2979 :
2980 :
2981 :
2982 :
2983 :
2984 :
2985 :
2986 :
2987 :
2988 :
2989 :
2990 :
2991 :
2992 :
2993 :
2994 0 : overTheTopExists = false;
2995 :
2996 :
2997 :
2998 0 : sourceOffsetExists = false;
2999 :
3000 :
3001 :
3002 0 : sourceOffsetReferenceCodeExists = false;
3003 :
3004 :
3005 :
3006 0 : sourceOffsetEquinoxExists = false;
3007 :
3008 :
3009 :
3010 0 : sampledTimeIntervalExists = false;
3011 :
3012 :
3013 :
3014 0 : atmosphericCorrectionExists = false;
3015 :
3016 :
3017 :
3018 :
3019 :
3020 :
3021 :
3022 : }
3023 : else {
3024 :
3025 :
3026 0 : antennaId = row->antennaId;
3027 :
3028 0 : timeInterval = row->timeInterval;
3029 :
3030 :
3031 :
3032 :
3033 0 : numSample = row->numSample;
3034 :
3035 0 : encoder = row->encoder;
3036 :
3037 0 : pointingTracking = row->pointingTracking;
3038 :
3039 0 : usePolynomials = row->usePolynomials;
3040 :
3041 0 : timeOrigin = row->timeOrigin;
3042 :
3043 0 : numTerm = row->numTerm;
3044 :
3045 0 : pointingDirection = row->pointingDirection;
3046 :
3047 0 : target = row->target;
3048 :
3049 0 : offset = row->offset;
3050 :
3051 0 : pointingModelId = row->pointingModelId;
3052 :
3053 :
3054 :
3055 :
3056 0 : if (row->overTheTopExists) {
3057 0 : overTheTop = row->overTheTop;
3058 0 : overTheTopExists = true;
3059 : }
3060 : else
3061 0 : overTheTopExists = false;
3062 :
3063 0 : if (row->sourceOffsetExists) {
3064 0 : sourceOffset = row->sourceOffset;
3065 0 : sourceOffsetExists = true;
3066 : }
3067 : else
3068 0 : sourceOffsetExists = false;
3069 :
3070 0 : if (row->sourceOffsetReferenceCodeExists) {
3071 0 : sourceOffsetReferenceCode = row->sourceOffsetReferenceCode;
3072 0 : sourceOffsetReferenceCodeExists = true;
3073 : }
3074 : else
3075 0 : sourceOffsetReferenceCodeExists = false;
3076 :
3077 0 : if (row->sourceOffsetEquinoxExists) {
3078 0 : sourceOffsetEquinox = row->sourceOffsetEquinox;
3079 0 : sourceOffsetEquinoxExists = true;
3080 : }
3081 : else
3082 0 : sourceOffsetEquinoxExists = false;
3083 :
3084 0 : if (row->sampledTimeIntervalExists) {
3085 0 : sampledTimeInterval = row->sampledTimeInterval;
3086 0 : sampledTimeIntervalExists = true;
3087 : }
3088 : else
3089 0 : sampledTimeIntervalExists = false;
3090 :
3091 0 : if (row->atmosphericCorrectionExists) {
3092 0 : atmosphericCorrection = row->atmosphericCorrection;
3093 0 : atmosphericCorrectionExists = true;
3094 : }
3095 : else
3096 0 : atmosphericCorrectionExists = false;
3097 :
3098 : }
3099 :
3100 0 : fromBinMethods["antennaId"] = &PointingRow::antennaIdFromBin;
3101 0 : fromBinMethods["timeInterval"] = &PointingRow::timeIntervalFromBin;
3102 0 : fromBinMethods["numSample"] = &PointingRow::numSampleFromBin;
3103 0 : fromBinMethods["encoder"] = &PointingRow::encoderFromBin;
3104 0 : fromBinMethods["pointingTracking"] = &PointingRow::pointingTrackingFromBin;
3105 0 : fromBinMethods["usePolynomials"] = &PointingRow::usePolynomialsFromBin;
3106 0 : fromBinMethods["timeOrigin"] = &PointingRow::timeOriginFromBin;
3107 0 : fromBinMethods["numTerm"] = &PointingRow::numTermFromBin;
3108 0 : fromBinMethods["pointingDirection"] = &PointingRow::pointingDirectionFromBin;
3109 0 : fromBinMethods["target"] = &PointingRow::targetFromBin;
3110 0 : fromBinMethods["offset"] = &PointingRow::offsetFromBin;
3111 0 : fromBinMethods["pointingModelId"] = &PointingRow::pointingModelIdFromBin;
3112 :
3113 :
3114 0 : fromBinMethods["overTheTop"] = &PointingRow::overTheTopFromBin;
3115 0 : fromBinMethods["sourceOffset"] = &PointingRow::sourceOffsetFromBin;
3116 0 : fromBinMethods["sourceOffsetReferenceCode"] = &PointingRow::sourceOffsetReferenceCodeFromBin;
3117 0 : fromBinMethods["sourceOffsetEquinox"] = &PointingRow::sourceOffsetEquinoxFromBin;
3118 0 : fromBinMethods["sampledTimeInterval"] = &PointingRow::sampledTimeIntervalFromBin;
3119 0 : fromBinMethods["atmosphericCorrection"] = &PointingRow::atmosphericCorrectionFromBin;
3120 :
3121 0 : }
3122 :
3123 :
3124 0 : bool PointingRow::compareNoAutoInc(Tag antennaId, ArrayTimeInterval timeInterval, int numSample, std::vector<std::vector<Angle > > encoder, bool pointingTracking, bool usePolynomials, ArrayTime timeOrigin, int numTerm, std::vector<std::vector<Angle > > pointingDirection, std::vector<std::vector<Angle > > target, std::vector<std::vector<Angle > > offset, int pointingModelId) {
3125 : bool result;
3126 0 : result = true;
3127 :
3128 :
3129 :
3130 0 : result = result && (this->antennaId == antennaId);
3131 :
3132 0 : if (!result) return false;
3133 :
3134 :
3135 :
3136 :
3137 0 : result = result && (this->timeInterval.overlaps(timeInterval));
3138 :
3139 0 : if (!result) return false;
3140 :
3141 :
3142 :
3143 :
3144 0 : result = result && (this->numSample == numSample);
3145 :
3146 0 : if (!result) return false;
3147 :
3148 :
3149 :
3150 :
3151 0 : result = result && (this->encoder == encoder);
3152 :
3153 0 : if (!result) return false;
3154 :
3155 :
3156 :
3157 :
3158 0 : result = result && (this->pointingTracking == pointingTracking);
3159 :
3160 0 : if (!result) return false;
3161 :
3162 :
3163 :
3164 :
3165 0 : result = result && (this->usePolynomials == usePolynomials);
3166 :
3167 0 : if (!result) return false;
3168 :
3169 :
3170 :
3171 :
3172 0 : result = result && (this->timeOrigin == timeOrigin);
3173 :
3174 0 : if (!result) return false;
3175 :
3176 :
3177 :
3178 :
3179 0 : result = result && (this->numTerm == numTerm);
3180 :
3181 0 : if (!result) return false;
3182 :
3183 :
3184 :
3185 :
3186 0 : result = result && (this->pointingDirection == pointingDirection);
3187 :
3188 0 : if (!result) return false;
3189 :
3190 :
3191 :
3192 :
3193 0 : result = result && (this->target == target);
3194 :
3195 0 : if (!result) return false;
3196 :
3197 :
3198 :
3199 :
3200 0 : result = result && (this->offset == offset);
3201 :
3202 0 : if (!result) return false;
3203 :
3204 :
3205 :
3206 :
3207 0 : result = result && (this->pointingModelId == pointingModelId);
3208 :
3209 0 : if (!result) return false;
3210 :
3211 :
3212 0 : return result;
3213 : }
3214 :
3215 :
3216 :
3217 0 : bool PointingRow::compareRequiredValue(int numSample, std::vector<std::vector<Angle > > encoder, bool pointingTracking, bool usePolynomials, ArrayTime timeOrigin, int numTerm, std::vector<std::vector<Angle > > pointingDirection, std::vector<std::vector<Angle > > target, std::vector<std::vector<Angle > > offset, int pointingModelId) {
3218 : bool result;
3219 0 : result = true;
3220 :
3221 :
3222 0 : if (!(this->numSample == numSample)) return false;
3223 :
3224 :
3225 :
3226 0 : if (!(this->encoder == encoder)) return false;
3227 :
3228 :
3229 :
3230 0 : if (!(this->pointingTracking == pointingTracking)) return false;
3231 :
3232 :
3233 :
3234 0 : if (!(this->usePolynomials == usePolynomials)) return false;
3235 :
3236 :
3237 :
3238 0 : if (!(this->timeOrigin == timeOrigin)) return false;
3239 :
3240 :
3241 :
3242 0 : if (!(this->numTerm == numTerm)) return false;
3243 :
3244 :
3245 :
3246 0 : if (!(this->pointingDirection == pointingDirection)) return false;
3247 :
3248 :
3249 :
3250 0 : if (!(this->target == target)) return false;
3251 :
3252 :
3253 :
3254 0 : if (!(this->offset == offset)) return false;
3255 :
3256 :
3257 :
3258 0 : if (!(this->pointingModelId == pointingModelId)) return false;
3259 :
3260 :
3261 0 : return result;
3262 : }
3263 :
3264 :
3265 : /**
3266 : * Return true if all required attributes of the value part are equal to their homologues
3267 : * in x and false otherwise.
3268 : *
3269 :
3270 : * @param x a pointer on the PointingRow whose required attributes of the value part
3271 :
3272 : * will be compared with those of this.
3273 : * @return a boolean.
3274 : */
3275 0 : bool PointingRow::equalByRequiredValue(PointingRow* x ) {
3276 :
3277 :
3278 0 : if (this->numSample != x->numSample) return false;
3279 :
3280 0 : if (this->encoder != x->encoder) return false;
3281 :
3282 0 : if (this->pointingTracking != x->pointingTracking) return false;
3283 :
3284 0 : if (this->usePolynomials != x->usePolynomials) return false;
3285 :
3286 0 : if (this->timeOrigin != x->timeOrigin) return false;
3287 :
3288 0 : if (this->numTerm != x->numTerm) return false;
3289 :
3290 0 : if (this->pointingDirection != x->pointingDirection) return false;
3291 :
3292 0 : if (this->target != x->target) return false;
3293 :
3294 0 : if (this->offset != x->offset) return false;
3295 :
3296 0 : if (this->pointingModelId != x->pointingModelId) return false;
3297 :
3298 :
3299 0 : return true;
3300 : }
3301 :
3302 : /*
3303 : map<string, PointingAttributeFromBin> PointingRow::initFromBinMethods() {
3304 : map<string, PointingAttributeFromBin> result;
3305 :
3306 : result["antennaId"] = &PointingRow::antennaIdFromBin;
3307 : result["timeInterval"] = &PointingRow::timeIntervalFromBin;
3308 : result["numSample"] = &PointingRow::numSampleFromBin;
3309 : result["encoder"] = &PointingRow::encoderFromBin;
3310 : result["pointingTracking"] = &PointingRow::pointingTrackingFromBin;
3311 : result["usePolynomials"] = &PointingRow::usePolynomialsFromBin;
3312 : result["timeOrigin"] = &PointingRow::timeOriginFromBin;
3313 : result["numTerm"] = &PointingRow::numTermFromBin;
3314 : result["pointingDirection"] = &PointingRow::pointingDirectionFromBin;
3315 : result["target"] = &PointingRow::targetFromBin;
3316 : result["offset"] = &PointingRow::offsetFromBin;
3317 : result["pointingModelId"] = &PointingRow::pointingModelIdFromBin;
3318 :
3319 :
3320 : result["overTheTop"] = &PointingRow::overTheTopFromBin;
3321 : result["sourceOffset"] = &PointingRow::sourceOffsetFromBin;
3322 : result["sourceOffsetReferenceCode"] = &PointingRow::sourceOffsetReferenceCodeFromBin;
3323 : result["sourceOffsetEquinox"] = &PointingRow::sourceOffsetEquinoxFromBin;
3324 : result["sampledTimeInterval"] = &PointingRow::sampledTimeIntervalFromBin;
3325 : result["atmosphericCorrection"] = &PointingRow::atmosphericCorrectionFromBin;
3326 :
3327 :
3328 : return result;
3329 : }
3330 : */
3331 : } // End namespace asdm
3332 :
|