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 SwitchCycleRow.cpp
32 : */
33 :
34 : #include <vector>
35 : #include <set>
36 :
37 : #include <alma/ASDM/ASDM.h>
38 : #include <alma/ASDM/SwitchCycleRow.h>
39 : #include <alma/ASDM/SwitchCycleTable.h>
40 :
41 :
42 : using asdm::ASDM;
43 : using asdm::SwitchCycleRow;
44 : using asdm::SwitchCycleTable;
45 :
46 :
47 : #include <alma/ASDM/Parser.h>
48 :
49 : #include <alma/ASDM/EnumerationParser.h>
50 : #include <alma/ASDM/ASDMValuesParser.h>
51 :
52 : #include <alma/ASDM/InvalidArgumentException.h>
53 :
54 : using namespace std;
55 :
56 : namespace asdm {
57 184 : SwitchCycleRow::~SwitchCycleRow() {
58 184 : }
59 :
60 : /**
61 : * Return the table to which this row belongs.
62 : */
63 0 : SwitchCycleTable &SwitchCycleRow::getTable() const {
64 0 : return table;
65 : }
66 :
67 0 : bool SwitchCycleRow::isAdded() const {
68 0 : return hasBeenAdded;
69 : }
70 :
71 92 : void SwitchCycleRow::isAdded(bool added) {
72 92 : hasBeenAdded = added;
73 92 : }
74 :
75 : #ifndef WITHOUT_ACS
76 : using asdmIDL::SwitchCycleRowIDL;
77 : #endif
78 :
79 : #ifndef WITHOUT_ACS
80 : /**
81 : * Return this row in the form of an IDL struct.
82 : * @return The values of this row as a SwitchCycleRowIDL struct.
83 : */
84 : SwitchCycleRowIDL *SwitchCycleRow::toIDL() const {
85 : SwitchCycleRowIDL *x = new SwitchCycleRowIDL ();
86 :
87 : // Fill the IDL structure.
88 :
89 :
90 :
91 :
92 :
93 :
94 :
95 : x->switchCycleId = switchCycleId.toIDLTag();
96 :
97 :
98 :
99 :
100 :
101 :
102 :
103 :
104 :
105 :
106 : x->numStep = numStep;
107 :
108 :
109 :
110 :
111 :
112 :
113 :
114 :
115 :
116 :
117 : x->weightArray.length(weightArray.size());
118 : for (unsigned int i = 0; i < weightArray.size(); ++i) {
119 :
120 :
121 : x->weightArray[i] = weightArray.at(i);
122 :
123 :
124 : }
125 :
126 :
127 :
128 :
129 :
130 :
131 :
132 :
133 :
134 : x->dirOffsetArray.length(dirOffsetArray.size());
135 : for (unsigned int i = 0; i < dirOffsetArray.size(); i++) {
136 : x->dirOffsetArray[i].length(dirOffsetArray.at(i).size());
137 : }
138 :
139 : for (unsigned int i = 0; i < dirOffsetArray.size() ; i++)
140 : for (unsigned int j = 0; j < dirOffsetArray.at(i).size(); j++)
141 :
142 : x->dirOffsetArray[i][j]= dirOffsetArray.at(i).at(j).toIDLAngle();
143 :
144 :
145 :
146 :
147 :
148 :
149 :
150 :
151 :
152 :
153 :
154 : x->freqOffsetArray.length(freqOffsetArray.size());
155 : for (unsigned int i = 0; i < freqOffsetArray.size(); ++i) {
156 :
157 : x->freqOffsetArray[i] = freqOffsetArray.at(i).toIDLFrequency();
158 :
159 : }
160 :
161 :
162 :
163 :
164 :
165 :
166 :
167 :
168 :
169 : x->stepDurationArray.length(stepDurationArray.size());
170 : for (unsigned int i = 0; i < stepDurationArray.size(); ++i) {
171 :
172 : x->stepDurationArray[i] = stepDurationArray.at(i).toIDLInterval();
173 :
174 : }
175 :
176 :
177 :
178 :
179 :
180 :
181 :
182 : x->directionCodeExists = directionCodeExists;
183 :
184 :
185 :
186 :
187 : x->directionCode = directionCode;
188 :
189 :
190 :
191 :
192 :
193 :
194 :
195 :
196 : x->directionEquinoxExists = directionEquinoxExists;
197 :
198 :
199 :
200 : x->directionEquinox = directionEquinox.toIDLArrayTime();
201 :
202 :
203 :
204 :
205 :
206 :
207 :
208 :
209 : return x;
210 :
211 : }
212 :
213 : void SwitchCycleRow::toIDL(asdmIDL::SwitchCycleRowIDL& x) const {
214 : // Set the x's fields.
215 :
216 :
217 :
218 :
219 :
220 :
221 :
222 : x.switchCycleId = switchCycleId.toIDLTag();
223 :
224 :
225 :
226 :
227 :
228 :
229 :
230 :
231 :
232 :
233 : x.numStep = numStep;
234 :
235 :
236 :
237 :
238 :
239 :
240 :
241 :
242 :
243 :
244 : x.weightArray.length(weightArray.size());
245 : for (unsigned int i = 0; i < weightArray.size(); ++i) {
246 :
247 :
248 : x.weightArray[i] = weightArray.at(i);
249 :
250 :
251 : }
252 :
253 :
254 :
255 :
256 :
257 :
258 :
259 :
260 :
261 : x.dirOffsetArray.length(dirOffsetArray.size());
262 : for (unsigned int i = 0; i < dirOffsetArray.size(); i++) {
263 : x.dirOffsetArray[i].length(dirOffsetArray.at(i).size());
264 : }
265 :
266 : for (unsigned int i = 0; i < dirOffsetArray.size() ; i++)
267 : for (unsigned int j = 0; j < dirOffsetArray.at(i).size(); j++)
268 :
269 : x.dirOffsetArray[i][j]= dirOffsetArray.at(i).at(j).toIDLAngle();
270 :
271 :
272 :
273 :
274 :
275 :
276 :
277 :
278 :
279 :
280 :
281 : x.freqOffsetArray.length(freqOffsetArray.size());
282 : for (unsigned int i = 0; i < freqOffsetArray.size(); ++i) {
283 :
284 : x.freqOffsetArray[i] = freqOffsetArray.at(i).toIDLFrequency();
285 :
286 : }
287 :
288 :
289 :
290 :
291 :
292 :
293 :
294 :
295 :
296 : x.stepDurationArray.length(stepDurationArray.size());
297 : for (unsigned int i = 0; i < stepDurationArray.size(); ++i) {
298 :
299 : x.stepDurationArray[i] = stepDurationArray.at(i).toIDLInterval();
300 :
301 : }
302 :
303 :
304 :
305 :
306 :
307 :
308 :
309 : x.directionCodeExists = directionCodeExists;
310 :
311 :
312 :
313 :
314 : x.directionCode = directionCode;
315 :
316 :
317 :
318 :
319 :
320 :
321 :
322 :
323 : x.directionEquinoxExists = directionEquinoxExists;
324 :
325 :
326 :
327 : x.directionEquinox = directionEquinox.toIDLArrayTime();
328 :
329 :
330 :
331 :
332 :
333 :
334 :
335 :
336 : }
337 : #endif
338 :
339 :
340 : #ifndef WITHOUT_ACS
341 : /**
342 : * Fill the values of this row from the IDL struct SwitchCycleRowIDL.
343 : * @param x The IDL struct containing the values used to fill this row.
344 : */
345 : void SwitchCycleRow::setFromIDL (SwitchCycleRowIDL x){
346 : try {
347 : // Fill the values from x.
348 :
349 :
350 :
351 :
352 :
353 :
354 : setSwitchCycleId(Tag (x.switchCycleId));
355 :
356 :
357 :
358 :
359 :
360 :
361 :
362 :
363 :
364 : setNumStep(x.numStep);
365 :
366 :
367 :
368 :
369 :
370 :
371 :
372 :
373 :
374 : weightArray .clear();
375 : for (unsigned int i = 0; i <x.weightArray.length(); ++i) {
376 :
377 : weightArray.push_back(x.weightArray[i]);
378 :
379 : }
380 :
381 :
382 :
383 :
384 :
385 :
386 :
387 :
388 :
389 : dirOffsetArray .clear();
390 :
391 : vector<Angle> v_aux_dirOffsetArray;
392 :
393 : for (unsigned int i = 0; i < x.dirOffsetArray.length(); ++i) {
394 : v_aux_dirOffsetArray.clear();
395 : for (unsigned int j = 0; j < x.dirOffsetArray[0].length(); ++j) {
396 :
397 : v_aux_dirOffsetArray.push_back(Angle (x.dirOffsetArray[i][j]));
398 :
399 : }
400 : dirOffsetArray.push_back(v_aux_dirOffsetArray);
401 : }
402 :
403 :
404 :
405 :
406 :
407 :
408 :
409 :
410 :
411 : freqOffsetArray .clear();
412 : for (unsigned int i = 0; i <x.freqOffsetArray.length(); ++i) {
413 :
414 : freqOffsetArray.push_back(Frequency (x.freqOffsetArray[i]));
415 :
416 : }
417 :
418 :
419 :
420 :
421 :
422 :
423 :
424 :
425 :
426 : stepDurationArray .clear();
427 : for (unsigned int i = 0; i <x.stepDurationArray.length(); ++i) {
428 :
429 : stepDurationArray.push_back(Interval (x.stepDurationArray[i]));
430 :
431 : }
432 :
433 :
434 :
435 :
436 :
437 :
438 :
439 : directionCodeExists = x.directionCodeExists;
440 : if (x.directionCodeExists) {
441 :
442 :
443 :
444 : setDirectionCode(x.directionCode);
445 :
446 :
447 :
448 : }
449 :
450 :
451 :
452 :
453 :
454 : directionEquinoxExists = x.directionEquinoxExists;
455 : if (x.directionEquinoxExists) {
456 :
457 :
458 :
459 : setDirectionEquinox(ArrayTime (x.directionEquinox));
460 :
461 :
462 :
463 : }
464 :
465 :
466 :
467 :
468 :
469 :
470 : } catch (const IllegalAccessException &err) {
471 : throw ConversionException (err.getMessage(),"SwitchCycle");
472 : }
473 : }
474 : #endif
475 :
476 : /**
477 : * Return this row in the form of an XML string.
478 : * @return The values of this row as an XML string.
479 : */
480 13 : string SwitchCycleRow::toXML() const {
481 13 : string buf;
482 13 : buf.append("<row> \n");
483 :
484 :
485 :
486 :
487 :
488 :
489 13 : Parser::toXML(switchCycleId, "switchCycleId", buf);
490 :
491 :
492 :
493 :
494 :
495 :
496 :
497 13 : Parser::toXML(numStep, "numStep", buf);
498 :
499 :
500 :
501 :
502 :
503 :
504 :
505 13 : Parser::toXML(weightArray, "weightArray", buf);
506 :
507 :
508 :
509 :
510 :
511 :
512 :
513 13 : Parser::toXML(dirOffsetArray, "dirOffsetArray", buf);
514 :
515 :
516 :
517 :
518 :
519 :
520 :
521 13 : Parser::toXML(freqOffsetArray, "freqOffsetArray", buf);
522 :
523 :
524 :
525 :
526 :
527 :
528 :
529 13 : Parser::toXML(stepDurationArray, "stepDurationArray", buf);
530 :
531 :
532 :
533 :
534 :
535 :
536 13 : if (directionCodeExists) {
537 :
538 :
539 0 : buf.append(EnumerationParser::toXML("directionCode", directionCode));
540 :
541 :
542 : }
543 :
544 :
545 :
546 :
547 :
548 13 : if (directionEquinoxExists) {
549 :
550 :
551 0 : Parser::toXML(directionEquinox, "directionEquinox", buf);
552 :
553 :
554 : }
555 :
556 :
557 :
558 :
559 :
560 :
561 :
562 13 : buf.append("</row>\n");
563 13 : return buf;
564 0 : }
565 :
566 : /**
567 : * Fill the values of this row from an XML string
568 : * that was produced by the toXML() method.
569 : * @param x The XML string being used to set the values of this row.
570 : */
571 78 : void SwitchCycleRow::setFromXML (string rowDoc) {
572 78 : Parser row(rowDoc);
573 78 : string s = "";
574 : try {
575 :
576 :
577 :
578 :
579 :
580 78 : setSwitchCycleId(Parser::getTag("switchCycleId","SwitchCycle",rowDoc));
581 :
582 :
583 :
584 :
585 :
586 :
587 :
588 78 : setNumStep(Parser::getInteger("numStep","SwitchCycle",rowDoc));
589 :
590 :
591 :
592 :
593 :
594 :
595 :
596 :
597 78 : setWeightArray(Parser::get1DFloat("weightArray","SwitchCycle",rowDoc));
598 :
599 :
600 :
601 :
602 :
603 :
604 :
605 :
606 :
607 78 : setDirOffsetArray(Parser::get2DAngle("dirOffsetArray","SwitchCycle",rowDoc));
608 :
609 :
610 :
611 :
612 :
613 :
614 :
615 :
616 :
617 78 : setFreqOffsetArray(Parser::get1DFrequency("freqOffsetArray","SwitchCycle",rowDoc));
618 :
619 :
620 :
621 :
622 :
623 :
624 :
625 :
626 :
627 78 : setStepDurationArray(Parser::get1DInterval("stepDurationArray","SwitchCycle",rowDoc));
628 :
629 :
630 :
631 :
632 :
633 :
634 :
635 78 : if (row.isStr("<directionCode>")) {
636 :
637 :
638 :
639 0 : directionCode = EnumerationParser::getDirectionReferenceCode("directionCode","SwitchCycle",rowDoc);
640 :
641 :
642 :
643 0 : directionCodeExists = true;
644 : }
645 :
646 :
647 :
648 :
649 :
650 78 : if (row.isStr("<directionEquinox>")) {
651 :
652 0 : setDirectionEquinox(Parser::getArrayTime("directionEquinox","SwitchCycle",rowDoc));
653 :
654 : }
655 :
656 :
657 :
658 :
659 :
660 :
661 0 : } catch (const IllegalAccessException &err) {
662 0 : throw ConversionException (err.getMessage(),"SwitchCycle");
663 0 : }
664 78 : }
665 :
666 0 : void SwitchCycleRow::toBin(EndianOSStream& eoss) {
667 :
668 :
669 :
670 :
671 :
672 0 : switchCycleId.toBin(eoss);
673 :
674 :
675 :
676 :
677 :
678 :
679 :
680 0 : eoss.writeInt(numStep);
681 :
682 :
683 :
684 :
685 :
686 :
687 :
688 :
689 :
690 0 : eoss.writeInt((int) weightArray.size());
691 0 : for (unsigned int i = 0; i < weightArray.size(); i++)
692 :
693 0 : eoss.writeFloat(weightArray.at(i));
694 :
695 :
696 :
697 :
698 :
699 :
700 :
701 :
702 :
703 0 : Angle::toBin(dirOffsetArray, eoss);
704 :
705 :
706 :
707 :
708 :
709 :
710 0 : Frequency::toBin(freqOffsetArray, eoss);
711 :
712 :
713 :
714 :
715 :
716 :
717 0 : Interval::toBin(stepDurationArray, eoss);
718 :
719 :
720 :
721 :
722 :
723 :
724 0 : eoss.writeBoolean(directionCodeExists);
725 0 : if (directionCodeExists) {
726 :
727 :
728 :
729 :
730 :
731 0 : eoss.writeString(CDirectionReferenceCode::name(directionCode));
732 : /* eoss.writeInt(directionCode); */
733 :
734 :
735 :
736 :
737 : }
738 :
739 0 : eoss.writeBoolean(directionEquinoxExists);
740 0 : if (directionEquinoxExists) {
741 :
742 :
743 :
744 :
745 0 : directionEquinox.toBin(eoss);
746 :
747 :
748 :
749 : }
750 :
751 0 : }
752 :
753 0 : void SwitchCycleRow::switchCycleIdFromBin(EndianIStream& eis) {
754 :
755 :
756 :
757 :
758 0 : switchCycleId = Tag::fromBin(eis);
759 :
760 :
761 :
762 0 : }
763 0 : void SwitchCycleRow::numStepFromBin(EndianIStream& eis) {
764 :
765 :
766 :
767 :
768 :
769 0 : numStep = eis.readInt();
770 :
771 :
772 :
773 :
774 0 : }
775 0 : void SwitchCycleRow::weightArrayFromBin(EndianIStream& eis) {
776 :
777 :
778 :
779 :
780 :
781 :
782 0 : weightArray.clear();
783 :
784 0 : unsigned int weightArrayDim1 = eis.readInt();
785 0 : for (unsigned int i = 0 ; i < weightArrayDim1; i++)
786 :
787 0 : weightArray.push_back(eis.readFloat());
788 :
789 :
790 :
791 :
792 :
793 :
794 0 : }
795 0 : void SwitchCycleRow::dirOffsetArrayFromBin(EndianIStream& eis) {
796 :
797 :
798 :
799 :
800 :
801 :
802 0 : dirOffsetArray = Angle::from2DBin(eis);
803 :
804 :
805 :
806 :
807 :
808 0 : }
809 0 : void SwitchCycleRow::freqOffsetArrayFromBin(EndianIStream& eis) {
810 :
811 :
812 :
813 :
814 :
815 :
816 0 : freqOffsetArray = Frequency::from1DBin(eis);
817 :
818 :
819 :
820 :
821 :
822 0 : }
823 0 : void SwitchCycleRow::stepDurationArrayFromBin(EndianIStream& eis) {
824 :
825 :
826 :
827 :
828 :
829 :
830 0 : stepDurationArray = Interval::from1DBin(eis);
831 :
832 :
833 :
834 :
835 :
836 0 : }
837 :
838 0 : void SwitchCycleRow::directionCodeFromBin(EndianIStream& eis) {
839 :
840 0 : directionCodeExists = eis.readBoolean();
841 0 : if (directionCodeExists) {
842 :
843 :
844 :
845 :
846 :
847 0 : directionCode = CDirectionReferenceCode::literal(eis.readString());
848 :
849 :
850 :
851 :
852 : }
853 :
854 0 : }
855 0 : void SwitchCycleRow::directionEquinoxFromBin(EndianIStream& eis) {
856 :
857 0 : directionEquinoxExists = eis.readBoolean();
858 0 : if (directionEquinoxExists) {
859 :
860 :
861 :
862 :
863 0 : directionEquinox = ArrayTime::fromBin(eis);
864 :
865 :
866 :
867 : }
868 :
869 0 : }
870 :
871 :
872 0 : SwitchCycleRow* SwitchCycleRow::fromBin(EndianIStream& eis, SwitchCycleTable& table, const vector<string>& attributesSeq) {
873 0 : SwitchCycleRow* row = new SwitchCycleRow(table);
874 :
875 0 : map<string, SwitchCycleAttributeFromBin>::iterator iter ;
876 0 : for (unsigned int i = 0; i < attributesSeq.size(); i++) {
877 0 : iter = row->fromBinMethods.find(attributesSeq.at(i));
878 0 : if (iter != row->fromBinMethods.end()) {
879 0 : (row->*(row->fromBinMethods[ attributesSeq.at(i) ] ))(eis);
880 : }
881 : else {
882 0 : BinaryAttributeReaderFunctor* functorP = table.getUnknownAttributeBinaryReader(attributesSeq.at(i));
883 0 : if (functorP)
884 0 : (*functorP)(eis);
885 : else
886 0 : throw ConversionException("There is not method to read an attribute '"+attributesSeq.at(i)+"'.", "SwitchCycleTable");
887 : }
888 :
889 : }
890 0 : return row;
891 : }
892 :
893 : //
894 : // A collection of methods to set the value of the attributes from their textual value in the XML representation
895 : // of one row.
896 : //
897 :
898 : // Convert a string into an Tag
899 0 : void SwitchCycleRow::switchCycleIdFromText(const string & s) {
900 :
901 :
902 0 : switchCycleId = ASDMValuesParser::parse<Tag>(s);
903 :
904 :
905 0 : }
906 :
907 :
908 : // Convert a string into an int
909 0 : void SwitchCycleRow::numStepFromText(const string & s) {
910 :
911 :
912 0 : numStep = ASDMValuesParser::parse<int>(s);
913 :
914 :
915 0 : }
916 :
917 :
918 : // Convert a string into an float
919 0 : void SwitchCycleRow::weightArrayFromText(const string & s) {
920 :
921 :
922 0 : weightArray = ASDMValuesParser::parse1D<float>(s);
923 :
924 :
925 0 : }
926 :
927 :
928 : // Convert a string into an Angle
929 0 : void SwitchCycleRow::dirOffsetArrayFromText(const string & s) {
930 :
931 :
932 0 : dirOffsetArray = ASDMValuesParser::parse2D<Angle>(s);
933 :
934 :
935 0 : }
936 :
937 :
938 : // Convert a string into an Frequency
939 0 : void SwitchCycleRow::freqOffsetArrayFromText(const string & s) {
940 :
941 :
942 0 : freqOffsetArray = ASDMValuesParser::parse1D<Frequency>(s);
943 :
944 :
945 0 : }
946 :
947 :
948 : // Convert a string into an Interval
949 0 : void SwitchCycleRow::stepDurationArrayFromText(const string & s) {
950 :
951 :
952 0 : stepDurationArray = ASDMValuesParser::parse1D<Interval>(s);
953 :
954 :
955 0 : }
956 :
957 :
958 :
959 : // Convert a string into an DirectionReferenceCode
960 0 : void SwitchCycleRow::directionCodeFromText(const string & s) {
961 0 : directionCodeExists = true;
962 :
963 :
964 0 : directionCode = ASDMValuesParser::parse<DirectionReferenceCodeMod::DirectionReferenceCode>(s);
965 :
966 :
967 0 : }
968 :
969 :
970 : // Convert a string into an ArrayTime
971 0 : void SwitchCycleRow::directionEquinoxFromText(const string & s) {
972 0 : directionEquinoxExists = true;
973 :
974 :
975 0 : directionEquinox = ASDMValuesParser::parse<ArrayTime>(s);
976 :
977 :
978 0 : }
979 :
980 :
981 :
982 0 : void SwitchCycleRow::fromText(const std::string& attributeName, const std::string& t) {
983 0 : map<string, SwitchCycleAttributeFromText>::iterator iter;
984 0 : if ((iter = fromTextMethods.find(attributeName)) == fromTextMethods.end())
985 0 : throw ConversionException("I do not know what to do with '"+attributeName+"' and its content '"+t+"' (while parsing an XML document)", "SwitchCycleTable");
986 0 : (this->*(iter->second))(t);
987 0 : }
988 :
989 : ////////////////////////////////////////////////
990 : // Intrinsic Table Attributes getters/setters //
991 : ////////////////////////////////////////////////
992 :
993 :
994 :
995 :
996 : /**
997 : * Get switchCycleId.
998 : * @return switchCycleId as Tag
999 : */
1000 92 : Tag SwitchCycleRow::getSwitchCycleId() const {
1001 :
1002 92 : return switchCycleId;
1003 : }
1004 :
1005 : /**
1006 : * Set switchCycleId with the specified Tag.
1007 : * @param switchCycleId The Tag value to which switchCycleId is to be set.
1008 :
1009 :
1010 :
1011 : * @throw IllegalAccessException If an attempt is made to change this field after is has been added to the table.
1012 :
1013 : */
1014 92 : void SwitchCycleRow::setSwitchCycleId (Tag switchCycleId) {
1015 :
1016 :
1017 92 : if (hasBeenAdded) {
1018 :
1019 0 : throw IllegalAccessException("switchCycleId", "SwitchCycle");
1020 :
1021 : }
1022 :
1023 92 : this->switchCycleId = switchCycleId;
1024 :
1025 92 : }
1026 :
1027 :
1028 :
1029 :
1030 :
1031 :
1032 : /**
1033 : * Get numStep.
1034 : * @return numStep as int
1035 : */
1036 2099 : int SwitchCycleRow::getNumStep() const {
1037 :
1038 2099 : return numStep;
1039 : }
1040 :
1041 : /**
1042 : * Set numStep with the specified int.
1043 : * @param numStep The int value to which numStep is to be set.
1044 :
1045 :
1046 :
1047 : */
1048 92 : void SwitchCycleRow::setNumStep (int numStep) {
1049 :
1050 :
1051 92 : if (hasBeenAdded) {
1052 :
1053 : }
1054 :
1055 92 : this->numStep = numStep;
1056 :
1057 92 : }
1058 :
1059 :
1060 :
1061 :
1062 :
1063 :
1064 : /**
1065 : * Get weightArray.
1066 : * @return weightArray as std::vector<float >
1067 : */
1068 14 : std::vector<float > SwitchCycleRow::getWeightArray() const {
1069 :
1070 14 : return weightArray;
1071 : }
1072 :
1073 : /**
1074 : * Set weightArray with the specified std::vector<float >.
1075 : * @param weightArray The std::vector<float > value to which weightArray is to be set.
1076 :
1077 :
1078 :
1079 : */
1080 92 : void SwitchCycleRow::setWeightArray (std::vector<float > weightArray) {
1081 :
1082 :
1083 92 : if (hasBeenAdded) {
1084 :
1085 : }
1086 :
1087 92 : this->weightArray = weightArray;
1088 :
1089 92 : }
1090 :
1091 :
1092 :
1093 :
1094 :
1095 :
1096 : /**
1097 : * Get dirOffsetArray.
1098 : * @return dirOffsetArray as std::vector<std::vector<Angle > >
1099 : */
1100 14 : std::vector<std::vector<Angle > > SwitchCycleRow::getDirOffsetArray() const {
1101 :
1102 14 : return dirOffsetArray;
1103 : }
1104 :
1105 : /**
1106 : * Set dirOffsetArray with the specified std::vector<std::vector<Angle > >.
1107 : * @param dirOffsetArray The std::vector<std::vector<Angle > > value to which dirOffsetArray is to be set.
1108 :
1109 :
1110 :
1111 : */
1112 92 : void SwitchCycleRow::setDirOffsetArray (std::vector<std::vector<Angle > > dirOffsetArray) {
1113 :
1114 :
1115 92 : if (hasBeenAdded) {
1116 :
1117 : }
1118 :
1119 92 : this->dirOffsetArray = dirOffsetArray;
1120 :
1121 92 : }
1122 :
1123 :
1124 :
1125 :
1126 :
1127 :
1128 : /**
1129 : * Get freqOffsetArray.
1130 : * @return freqOffsetArray as std::vector<Frequency >
1131 : */
1132 14 : std::vector<Frequency > SwitchCycleRow::getFreqOffsetArray() const {
1133 :
1134 14 : return freqOffsetArray;
1135 : }
1136 :
1137 : /**
1138 : * Set freqOffsetArray with the specified std::vector<Frequency >.
1139 : * @param freqOffsetArray The std::vector<Frequency > value to which freqOffsetArray is to be set.
1140 :
1141 :
1142 :
1143 : */
1144 92 : void SwitchCycleRow::setFreqOffsetArray (std::vector<Frequency > freqOffsetArray) {
1145 :
1146 :
1147 92 : if (hasBeenAdded) {
1148 :
1149 : }
1150 :
1151 92 : this->freqOffsetArray = freqOffsetArray;
1152 :
1153 92 : }
1154 :
1155 :
1156 :
1157 :
1158 :
1159 :
1160 : /**
1161 : * Get stepDurationArray.
1162 : * @return stepDurationArray as std::vector<Interval >
1163 : */
1164 14 : std::vector<Interval > SwitchCycleRow::getStepDurationArray() const {
1165 :
1166 14 : return stepDurationArray;
1167 : }
1168 :
1169 : /**
1170 : * Set stepDurationArray with the specified std::vector<Interval >.
1171 : * @param stepDurationArray The std::vector<Interval > value to which stepDurationArray is to be set.
1172 :
1173 :
1174 :
1175 : */
1176 92 : void SwitchCycleRow::setStepDurationArray (std::vector<Interval > stepDurationArray) {
1177 :
1178 :
1179 92 : if (hasBeenAdded) {
1180 :
1181 : }
1182 :
1183 92 : this->stepDurationArray = stepDurationArray;
1184 :
1185 92 : }
1186 :
1187 :
1188 :
1189 :
1190 : /**
1191 : * The attribute directionCode is optional. Return true if this attribute exists.
1192 : * @return true if and only if the directionCode attribute exists.
1193 : */
1194 0 : bool SwitchCycleRow::isDirectionCodeExists() const {
1195 0 : return directionCodeExists;
1196 : }
1197 :
1198 :
1199 :
1200 : /**
1201 : * Get directionCode, which is optional.
1202 : * @return directionCode as DirectionReferenceCodeMod::DirectionReferenceCode
1203 : * @throw IllegalAccessException If directionCode does not exist.
1204 : */
1205 0 : DirectionReferenceCodeMod::DirectionReferenceCode SwitchCycleRow::getDirectionCode() const {
1206 0 : if (!directionCodeExists) {
1207 0 : throw IllegalAccessException("directionCode", "SwitchCycle");
1208 : }
1209 :
1210 0 : return directionCode;
1211 : }
1212 :
1213 : /**
1214 : * Set directionCode with the specified DirectionReferenceCodeMod::DirectionReferenceCode.
1215 : * @param directionCode The DirectionReferenceCodeMod::DirectionReferenceCode value to which directionCode is to be set.
1216 :
1217 :
1218 : */
1219 0 : void SwitchCycleRow::setDirectionCode (DirectionReferenceCodeMod::DirectionReferenceCode directionCode) {
1220 :
1221 0 : this->directionCode = directionCode;
1222 :
1223 0 : directionCodeExists = true;
1224 :
1225 0 : }
1226 :
1227 :
1228 : /**
1229 : * Mark directionCode, which is an optional field, as non-existent.
1230 : */
1231 0 : void SwitchCycleRow::clearDirectionCode () {
1232 0 : directionCodeExists = false;
1233 0 : }
1234 :
1235 :
1236 :
1237 : /**
1238 : * The attribute directionEquinox is optional. Return true if this attribute exists.
1239 : * @return true if and only if the directionEquinox attribute exists.
1240 : */
1241 0 : bool SwitchCycleRow::isDirectionEquinoxExists() const {
1242 0 : return directionEquinoxExists;
1243 : }
1244 :
1245 :
1246 :
1247 : /**
1248 : * Get directionEquinox, which is optional.
1249 : * @return directionEquinox as ArrayTime
1250 : * @throw IllegalAccessException If directionEquinox does not exist.
1251 : */
1252 0 : ArrayTime SwitchCycleRow::getDirectionEquinox() const {
1253 0 : if (!directionEquinoxExists) {
1254 0 : throw IllegalAccessException("directionEquinox", "SwitchCycle");
1255 : }
1256 :
1257 0 : return directionEquinox;
1258 : }
1259 :
1260 : /**
1261 : * Set directionEquinox with the specified ArrayTime.
1262 : * @param directionEquinox The ArrayTime value to which directionEquinox is to be set.
1263 :
1264 :
1265 : */
1266 0 : void SwitchCycleRow::setDirectionEquinox (ArrayTime directionEquinox) {
1267 :
1268 0 : this->directionEquinox = directionEquinox;
1269 :
1270 0 : directionEquinoxExists = true;
1271 :
1272 0 : }
1273 :
1274 :
1275 : /**
1276 : * Mark directionEquinox, which is an optional field, as non-existent.
1277 : */
1278 0 : void SwitchCycleRow::clearDirectionEquinox () {
1279 0 : directionEquinoxExists = false;
1280 0 : }
1281 :
1282 :
1283 :
1284 : ///////////////////////////////////////////////
1285 : // Extrinsic Table Attributes getters/setters//
1286 : ///////////////////////////////////////////////
1287 :
1288 :
1289 : //////////////////////////////////////
1290 : // Links Attributes getters/setters //
1291 : //////////////////////////////////////
1292 :
1293 :
1294 : /**
1295 : * Create a SwitchCycleRow.
1296 : * <p>
1297 : * This constructor is private because only the
1298 : * table can create rows. All rows know the table
1299 : * to which they belong.
1300 : * @param table The table to which this row belongs.
1301 : */
1302 92 : SwitchCycleRow::SwitchCycleRow (SwitchCycleTable &t) : table(t) {
1303 92 : hasBeenAdded = false;
1304 :
1305 :
1306 :
1307 :
1308 :
1309 :
1310 :
1311 :
1312 :
1313 :
1314 :
1315 :
1316 :
1317 :
1318 :
1319 92 : directionCodeExists = false;
1320 :
1321 :
1322 :
1323 92 : directionEquinoxExists = false;
1324 :
1325 :
1326 :
1327 :
1328 :
1329 :
1330 :
1331 :
1332 :
1333 :
1334 :
1335 :
1336 :
1337 :
1338 :
1339 :
1340 :
1341 :
1342 :
1343 : // This attribute is scalar and has an enumeration type. Let's initialize it to some valid value (the 1st of the enumeration).
1344 92 : directionCode = CDirectionReferenceCode::from_int(0);
1345 :
1346 :
1347 :
1348 :
1349 :
1350 :
1351 92 : fromBinMethods["switchCycleId"] = &SwitchCycleRow::switchCycleIdFromBin;
1352 92 : fromBinMethods["numStep"] = &SwitchCycleRow::numStepFromBin;
1353 92 : fromBinMethods["weightArray"] = &SwitchCycleRow::weightArrayFromBin;
1354 92 : fromBinMethods["dirOffsetArray"] = &SwitchCycleRow::dirOffsetArrayFromBin;
1355 92 : fromBinMethods["freqOffsetArray"] = &SwitchCycleRow::freqOffsetArrayFromBin;
1356 92 : fromBinMethods["stepDurationArray"] = &SwitchCycleRow::stepDurationArrayFromBin;
1357 :
1358 :
1359 92 : fromBinMethods["directionCode"] = &SwitchCycleRow::directionCodeFromBin;
1360 92 : fromBinMethods["directionEquinox"] = &SwitchCycleRow::directionEquinoxFromBin;
1361 :
1362 :
1363 :
1364 :
1365 :
1366 92 : fromTextMethods["switchCycleId"] = &SwitchCycleRow::switchCycleIdFromText;
1367 :
1368 :
1369 :
1370 92 : fromTextMethods["numStep"] = &SwitchCycleRow::numStepFromText;
1371 :
1372 :
1373 :
1374 92 : fromTextMethods["weightArray"] = &SwitchCycleRow::weightArrayFromText;
1375 :
1376 :
1377 :
1378 92 : fromTextMethods["dirOffsetArray"] = &SwitchCycleRow::dirOffsetArrayFromText;
1379 :
1380 :
1381 :
1382 92 : fromTextMethods["freqOffsetArray"] = &SwitchCycleRow::freqOffsetArrayFromText;
1383 :
1384 :
1385 :
1386 92 : fromTextMethods["stepDurationArray"] = &SwitchCycleRow::stepDurationArrayFromText;
1387 :
1388 :
1389 :
1390 :
1391 :
1392 92 : fromTextMethods["directionCode"] = &SwitchCycleRow::directionCodeFromText;
1393 :
1394 :
1395 :
1396 92 : fromTextMethods["directionEquinox"] = &SwitchCycleRow::directionEquinoxFromText;
1397 :
1398 :
1399 92 : }
1400 :
1401 0 : SwitchCycleRow::SwitchCycleRow (SwitchCycleTable &t, SwitchCycleRow *row) : table(t) {
1402 0 : hasBeenAdded = false;
1403 :
1404 0 : if (row == 0) {
1405 :
1406 :
1407 :
1408 :
1409 :
1410 :
1411 :
1412 :
1413 :
1414 :
1415 :
1416 :
1417 :
1418 :
1419 :
1420 0 : directionCodeExists = false;
1421 :
1422 :
1423 :
1424 0 : directionEquinoxExists = false;
1425 :
1426 :
1427 :
1428 : }
1429 : else {
1430 :
1431 :
1432 0 : switchCycleId = row->switchCycleId;
1433 :
1434 :
1435 :
1436 :
1437 0 : numStep = row->numStep;
1438 :
1439 0 : weightArray = row->weightArray;
1440 :
1441 0 : dirOffsetArray = row->dirOffsetArray;
1442 :
1443 0 : freqOffsetArray = row->freqOffsetArray;
1444 :
1445 0 : stepDurationArray = row->stepDurationArray;
1446 :
1447 :
1448 :
1449 :
1450 0 : if (row->directionCodeExists) {
1451 0 : directionCode = row->directionCode;
1452 0 : directionCodeExists = true;
1453 : }
1454 : else
1455 0 : directionCodeExists = false;
1456 :
1457 0 : if (row->directionEquinoxExists) {
1458 0 : directionEquinox = row->directionEquinox;
1459 0 : directionEquinoxExists = true;
1460 : }
1461 : else
1462 0 : directionEquinoxExists = false;
1463 :
1464 : }
1465 :
1466 0 : fromBinMethods["switchCycleId"] = &SwitchCycleRow::switchCycleIdFromBin;
1467 0 : fromBinMethods["numStep"] = &SwitchCycleRow::numStepFromBin;
1468 0 : fromBinMethods["weightArray"] = &SwitchCycleRow::weightArrayFromBin;
1469 0 : fromBinMethods["dirOffsetArray"] = &SwitchCycleRow::dirOffsetArrayFromBin;
1470 0 : fromBinMethods["freqOffsetArray"] = &SwitchCycleRow::freqOffsetArrayFromBin;
1471 0 : fromBinMethods["stepDurationArray"] = &SwitchCycleRow::stepDurationArrayFromBin;
1472 :
1473 :
1474 0 : fromBinMethods["directionCode"] = &SwitchCycleRow::directionCodeFromBin;
1475 0 : fromBinMethods["directionEquinox"] = &SwitchCycleRow::directionEquinoxFromBin;
1476 :
1477 0 : }
1478 :
1479 :
1480 0 : bool SwitchCycleRow::compareNoAutoInc(int numStep, std::vector<float > weightArray, std::vector<std::vector<Angle > > dirOffsetArray, std::vector<Frequency > freqOffsetArray, std::vector<Interval > stepDurationArray) {
1481 : bool result;
1482 0 : result = true;
1483 :
1484 :
1485 :
1486 0 : result = result && (this->numStep == numStep);
1487 :
1488 0 : if (!result) return false;
1489 :
1490 :
1491 :
1492 :
1493 0 : result = result && (this->weightArray == weightArray);
1494 :
1495 0 : if (!result) return false;
1496 :
1497 :
1498 :
1499 :
1500 0 : result = result && (this->dirOffsetArray == dirOffsetArray);
1501 :
1502 0 : if (!result) return false;
1503 :
1504 :
1505 :
1506 :
1507 0 : result = result && (this->freqOffsetArray == freqOffsetArray);
1508 :
1509 0 : if (!result) return false;
1510 :
1511 :
1512 :
1513 :
1514 0 : result = result && (this->stepDurationArray == stepDurationArray);
1515 :
1516 0 : if (!result) return false;
1517 :
1518 :
1519 0 : return result;
1520 : }
1521 :
1522 :
1523 :
1524 0 : bool SwitchCycleRow::compareRequiredValue(int numStep, std::vector<float > weightArray, std::vector<std::vector<Angle > > dirOffsetArray, std::vector<Frequency > freqOffsetArray, std::vector<Interval > stepDurationArray) {
1525 : bool result;
1526 0 : result = true;
1527 :
1528 :
1529 0 : if (!(this->numStep == numStep)) return false;
1530 :
1531 :
1532 :
1533 0 : if (!(this->weightArray == weightArray)) return false;
1534 :
1535 :
1536 :
1537 0 : if (!(this->dirOffsetArray == dirOffsetArray)) return false;
1538 :
1539 :
1540 :
1541 0 : if (!(this->freqOffsetArray == freqOffsetArray)) return false;
1542 :
1543 :
1544 :
1545 0 : if (!(this->stepDurationArray == stepDurationArray)) return false;
1546 :
1547 :
1548 0 : return result;
1549 : }
1550 :
1551 :
1552 : /**
1553 : * Return true if all required attributes of the value part are equal to their homologues
1554 : * in x and false otherwise.
1555 : *
1556 :
1557 : * @param x a pointer on the SwitchCycleRow whose required attributes of the value part
1558 :
1559 : * will be compared with those of this.
1560 : * @return a boolean.
1561 : */
1562 0 : bool SwitchCycleRow::equalByRequiredValue(SwitchCycleRow* x ) {
1563 :
1564 :
1565 0 : if (this->numStep != x->numStep) return false;
1566 :
1567 0 : if (this->weightArray != x->weightArray) return false;
1568 :
1569 0 : if (this->dirOffsetArray != x->dirOffsetArray) return false;
1570 :
1571 0 : if (this->freqOffsetArray != x->freqOffsetArray) return false;
1572 :
1573 0 : if (this->stepDurationArray != x->stepDurationArray) return false;
1574 :
1575 :
1576 0 : return true;
1577 : }
1578 :
1579 : /*
1580 : map<string, SwitchCycleAttributeFromBin> SwitchCycleRow::initFromBinMethods() {
1581 : map<string, SwitchCycleAttributeFromBin> result;
1582 :
1583 : result["switchCycleId"] = &SwitchCycleRow::switchCycleIdFromBin;
1584 : result["numStep"] = &SwitchCycleRow::numStepFromBin;
1585 : result["weightArray"] = &SwitchCycleRow::weightArrayFromBin;
1586 : result["dirOffsetArray"] = &SwitchCycleRow::dirOffsetArrayFromBin;
1587 : result["freqOffsetArray"] = &SwitchCycleRow::freqOffsetArrayFromBin;
1588 : result["stepDurationArray"] = &SwitchCycleRow::stepDurationArrayFromBin;
1589 :
1590 :
1591 : result["directionCode"] = &SwitchCycleRow::directionCodeFromBin;
1592 : result["directionEquinox"] = &SwitchCycleRow::directionEquinoxFromBin;
1593 :
1594 :
1595 : return result;
1596 : }
1597 : */
1598 : } // End namespace asdm
1599 :
|