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