28 #include <QStringList>
30 #include <QTextStream>
33 #include <xercesc/util/PlatformUtils.hpp>
34 #include <xercesc/sax2/SAX2XMLReader.hpp>
35 #include <xercesc/sax2/XMLReaderFactory.hpp>
36 #if defined(XERCES_NEW_IOSTREAMS)
41 #include <xercesc/util/OutOfMemoryException.hpp>
60 fCurrentUserLineNo = 0;
72 fOdbTag.tag = QString(
"");
73 fOdbTag.odb_path = QString(
"");
113 const XMLCh *
const qname,
const Attributes &attrs)
122 if (attrs.getLength()) {}
125 QString qName = QString(XMLString::transcode(qname));
128 if (qName ==
"autoRunName") {
130 }
else if (qName ==
"line") {
132 }
else if (qName ==
"cmd_str") {
134 }
else if (qName ==
"comment") {
136 fAutoRunCmd.cmd =
"comment";
137 }
else if (qName ==
"alias") {
139 fAutoRunCmd.cmd =
"alias";
140 }
else if (qName ==
"ignore_alarms") {
141 fCmdKey = eIgnoreAlarms;
142 fAutoRunCmd.cmd =
"ignore_alarms";
143 }
else if (qName ==
"ignore_clients") {
144 fCmdKey = eIgnoreClients;
145 fAutoRunCmd.cmd =
"ignore_clients";
146 }
else if (qName ==
"setBPV") {
148 fAutoRunCmd.cmd =
"setBPV";
149 }
else if (qName ==
"odbTag") {
151 fAutoRunCmd.cmd =
"odbTag";
152 }
else if (qName ==
"setOdbData") {
153 fCmdKey = eSetOdbData;
154 fAutoRunCmd.cmd =
"setOdbData";
155 }
else if (qName ==
"setOdbDataArray") {
156 fCmdKey = eSetOdbDataArray;
157 fAutoRunCmd.cmd =
"setOdbDataArray";
158 }
else if (qName ==
"setTemp") {
160 fAutoRunCmd.cmd =
"setTemp";
161 fAutoRunCmd.noElements = 9;
162 }
else if (qName ==
"setTfl") {
164 fAutoRunCmd.cmd =
"setTfl";
165 }
else if (qName ==
"setSampleHV") {
166 fCmdKey = eSetSampleHV;
167 fAutoRunCmd.cmd =
"setSampleHV";
168 }
else if (qName ==
"setRA_HV") {
170 fAutoRunCmd.cmd =
"setRA_HV";
171 }
else if (qName ==
"setTransportHV") {
172 fCmdKey = eSetTransportHV;
173 fAutoRunCmd.cmd =
"setTransportHV";
174 }
else if (qName ==
"setHVOff") {
176 fAutoRunCmd.cmd =
"setHVOff";
177 }
else if (qName ==
"setFieldWEWL") {
178 fCmdKey = eSetFieldWEWL;
179 fAutoRunCmd.cmd =
"setFieldWEWL";
180 }
else if (qName ==
"setFieldWEWH") {
181 fCmdKey = eSetFieldWEWH;
182 fAutoRunCmd.cmd =
"setFieldWEWH";
183 }
else if (qName ==
"setFieldDanfysik") {
184 fCmdKey = eSetFieldDanfysik;
185 fAutoRunCmd.cmd =
"setFieldDanfysik";
186 }
else if (qName ==
"setField") {
188 fAutoRunCmd.cmd =
"setField";
189 }
else if (qName ==
"setSpinRot") {
190 fCmdKey = eSetSpinRot;
191 fAutoRunCmd.cmd =
"setSpinRot";
192 }
else if (qName ==
"setFOM") {
194 fAutoRunCmd.cmd =
"setFOM";
195 }
else if (qName ==
"setTitle") {
197 fAutoRunCmd.cmd =
"setTitle";
198 }
else if (qName ==
"setTOF") {
200 fAutoRunCmd.cmd =
"setTOF";
201 }
else if (qName ==
"setModInfo") {
202 fCmdKey = eSetModInfo;
203 fAutoRunCmd.cmd =
"setModInfo";
204 }
else if (qName ==
"setLEMSetup") {
205 fCmdKey = eSetLEMSetup;
206 fAutoRunCmd.cmd =
"setLEMSetup";
207 }
else if (qName ==
"setWait") {
209 fAutoRunCmd.cmd =
"setWait";
210 }
else if (qName ==
"setDump") {
212 fAutoRunCmd.cmd =
"setDump";
213 }
else if (qName ==
"runStart") {
215 fAutoRunCmd.cmd =
"runStart";
216 }
else if (qName ==
"runStop") {
218 fAutoRunCmd.cmd =
"runStop";
219 }
else if (qName ==
"warmUp") {
221 fAutoRunCmd.cmd =
"warmUp";
222 }
else if (qName ==
"degaussWEW") {
223 fCmdKey = eDegaussWEW;
224 fAutoRunCmd.cmd =
"degaussWEW";
225 }
else if (qName ==
"degaussDanfysik") {
226 fCmdKey = eDegaussDanfysik;
227 fAutoRunCmd.cmd =
"degaussDanfysik";
228 }
else if (qName ==
"degaussMagnet") {
230 fAutoRunCmd.cmd =
"degaussMagnet";
231 }
else if (qName ==
"degaussSpinRot") {
232 fCmdKey = eDegaussSpinRot;
233 fAutoRunCmd.cmd =
"degaussSpinRot";
234 }
else if (qName ==
"comment_line") {
236 }
else if (qName ==
"alias_key") {
238 }
else if (qName ==
"alias_value") {
240 }
else if (qName ==
"loop") {
243 fLoopInfoVector.push_back(loopInfo);
244 }
else if (qName ==
"loopList") {
246 }
else if (qName ==
"loopElement") {
248 }
else if (qName ==
"loopIterator") {
249 fCmdKey = eLoopIterator;
250 }
else if (qName ==
"loopStart") {
252 }
else if (qName ==
"loopStop") {
254 }
else if (qName ==
"loopStep") {
256 }
else if (qName ==
"loopSetTemp") {
257 fCmdKey = eLoopSetTemp;
258 fLoopInfoVector[fLoopNo-1].loopCmd.cmd =
"loopSetTemp";
259 fLoopInfoVector[fLoopNo-1].loopCmd.noElements = 0;
260 }
else if (qName ==
"loopTempTag") {
262 }
else if (qName ==
"loopSetSampleHV") {
263 fCmdKey = eLoopSetSampleHV;
264 fLoopInfoVector[fLoopNo-1].loopCmd.cmd =
"loopSetSampleHV";
265 fLoopInfoVector[fLoopNo-1].loopCmd.noElements = 0;
266 }
else if (qName ==
"loopSampleHVTag") {
267 fKey = eLoopSampleHVTag;
268 }
else if (qName ==
"loopSetFieldWEWL") {
269 fCmdKey = eLoopSetFieldWEWL;
270 fLoopInfoVector[fLoopNo-1].loopCmd.cmd =
"loopSetFieldWEWL";
271 fLoopInfoVector[fLoopNo-1].loopCmd.noElements = 0;
272 }
else if (qName ==
"loopSetFieldWEWH") {
273 fCmdKey = eLoopSetFieldWEWH;
274 fLoopInfoVector[fLoopNo-1].loopCmd.cmd =
"loopSetFieldWEWH";
275 fLoopInfoVector[fLoopNo-1].loopCmd.noElements = 0;
276 }
else if (qName ==
"loopSetFieldDanfysik") {
277 fCmdKey = eLoopSetFieldDanfysik;
278 fLoopInfoVector[fLoopNo-1].loopCmd.cmd =
"loopSetFieldDanfysik";
279 fLoopInfoVector[fLoopNo-1].loopCmd.noElements = 0;
280 }
else if (qName ==
"loopSetField") {
281 fCmdKey = eLoopSetField;
282 fLoopInfoVector[fLoopNo-1].loopCmd.cmd =
"loopSetField";
283 fLoopInfoVector[fLoopNo-1].loopCmd.noElements = 0;
284 }
else if (qName ==
"loopFieldTag") {
285 fKey = eLoopFieldTag;
286 }
else if (qName ==
"set_path") {
288 }
else if (qName ==
"set_index") {
290 }
else if (qName ==
"set_value") {
292 }
else if (qName ==
"read_path") {
294 }
else if (qName ==
"read_index") {
295 fKey = eOdbReadIndex;
296 }
else if (qName ==
"timeout") {
298 }
else if (qName ==
"tolerance") {
299 fKey = eOdbTolerance;
300 }
else if (qName ==
"tfl_pos") {
302 }
else if (qName ==
"tfl_mode") {
304 }
else if (qName ==
"temp") {
306 }
else if (qName ==
"deltaT") {
308 }
else if (qName ==
"ramp") {
310 }
else if (qName ==
"heaterRange") {
312 }
else if (qName ==
"stabilityTimeout") {
313 fKey = eStabilityTimeout;
314 }
else if (qName ==
"P_PID") {
316 }
else if (qName ==
"I_PID") {
318 }
else if (qName ==
"D_PID") {
320 }
else if (qName ==
"flow") {
322 }
else if (qName ==
"hv_value") {
324 }
else if (qName ==
"hv_left") {
326 }
else if (qName ==
"hv_right") {
328 }
else if (qName ==
"hv_top") {
330 }
else if (qName ==
"hv_bottom") {
332 }
else if (qName ==
"transportHvSettingFileName") {
333 fKey = eTransportHvSettingFileName;
334 }
else if (qName ==
"field_value") {
336 }
else if (qName ==
"field_unit") {
338 }
else if (qName ==
"title") {
340 }
else if (qName ==
"odb_sample") {
342 }
else if (qName ==
"odb_temp") {
344 }
else if (qName ==
"odb_field") {
346 }
else if (qName ==
"odb_transp") {
348 }
else if (qName ==
"odb_hv_samp") {
350 }
else if (qName ==
"odb_energy") {
352 }
else if (qName ==
"odb_ra_diff_lr") {
353 fKey = eOdb_ra_diff_lr;
354 }
else if (qName ==
"odb_ra_diff_tb") {
355 fKey = eOdb_ra_diff_tb;
356 }
else if (qName ==
"odb_spin_rot") {
357 fKey = eOdb_spin_rot;
358 }
else if (qName ==
"start") {
360 }
else if (qName ==
"stop") {
362 }
else if (qName ==
"units") {
364 }
else if (qName ==
"mod") {
366 }
else if (qName ==
"mod_date") {
368 }
else if (qName ==
"setup") {
370 }
else if (qName ==
"wait") {
372 }
else if (qName ==
"no_events") {
374 }
else if (qName ==
"no_dumps") {
376 }
else if (qName ==
"date") {
378 }
else if (qName ==
"time") {
380 }
else if (qName ==
"vent") {
382 }
else if (qName ==
"current") {
384 }
else if (qName ==
"angle") {
386 }
else if (qName ==
"no_degauss") {
388 }
else if (qName ==
"chamber") {
390 }
else if (qName ==
"label") {
392 }
else if (qName ==
"state") {
415 fFlnAutoRunSeq = QString(XMLString::transcode(chars));
418 fCurrentUserLineNo = QString(XMLString::transcode(chars)).toInt();
424 if (fCmdKey == eComment) {
427 fAutoRunCmd.lineNo = fCurrentUserLineNo;
430 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
437 if (fCmdKey == eIgnoreAlarms) {
440 fAutoRunCmd.lineNo = fCurrentUserLineNo;
443 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
446 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
453 if (fCmdKey == eIgnoreClients) {
456 fAutoRunCmd.lineNo = fCurrentUserLineNo;
459 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
462 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
469 if (fCmdKey == eAlias) {
472 fAutoRunCmd.lineNo = fCurrentUserLineNo;
475 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
478 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
479 fAutoRunCmd.noElements++;
482 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
483 fAutoRunCmd.noElements++;
490 if (fCmdKey == eBPV) {
493 fAutoRunCmd.lineNo = fCurrentUserLineNo;
496 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
499 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
500 fAutoRunCmd.noElements++;
503 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
504 fAutoRunCmd.noElements++;
511 if (fCmdKey == eOdbTag) {
514 fAutoRunCmd.lineNo = fCurrentUserLineNo;
517 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
520 fOdbTag.tag = QString(XMLString::transcode(chars));
523 fOdbTag.odb_path = QString(XMLString::transcode(chars));
526 fOdbTag.idx = QString(XMLString::transcode(chars)).toInt();
533 if (fCmdKey == eDegaussWEW) {
536 fAutoRunCmd.lineNo = fCurrentUserLineNo;
539 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
546 if (fCmdKey == eDegaussDanfysik) {
549 fAutoRunCmd.lineNo = fCurrentUserLineNo;
552 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
559 if (fCmdKey == eDegauss) {
562 fAutoRunCmd.lineNo = fCurrentUserLineNo;
565 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
572 if (fCmdKey == eDegaussSpinRot) {
575 fAutoRunCmd.lineNo = fCurrentUserLineNo;
578 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
585 if (fCmdKey == eSetOdbData) {
588 fAutoRunCmd.lineNo = fCurrentUserLineNo;
591 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
594 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
595 fAutoRunCmd.noElements++;
598 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
599 fAutoRunCmd.noElements++;
602 fAutoRunCmd.param[2] = QString(XMLString::transcode(chars));
603 fAutoRunCmd.noElements++;
606 fAutoRunCmd.param[3] = QString(XMLString::transcode(chars));
607 fAutoRunCmd.noElements++;
610 fAutoRunCmd.param[4] = QString(XMLString::transcode(chars));
611 fAutoRunCmd.noElements++;
614 fAutoRunCmd.param[5] = QString(XMLString::transcode(chars));
615 fAutoRunCmd.noElements++;
618 fAutoRunCmd.param[6] = QString(XMLString::transcode(chars));
619 fAutoRunCmd.noElements++;
626 if (fCmdKey == eSetOdbDataArray) {
629 fAutoRunCmd.lineNo = fCurrentUserLineNo;
632 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
635 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
636 fAutoRunCmd.noElements++;
639 fAutoRunCmd.param[fAutoRunCmd.noElements++] = QString(XMLString::transcode(chars));
646 if (fCmdKey == eSetTfl) {
649 fAutoRunCmd.lineNo = fCurrentUserLineNo;
652 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
655 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
656 fAutoRunCmd.noElements++;
659 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
660 fAutoRunCmd.noElements++;
667 if (fCmdKey == eSetTemp) {
670 fAutoRunCmd.lineNo = fCurrentUserLineNo;
673 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
676 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
679 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
681 case eStabilityTimeout:
682 fAutoRunCmd.param[2] = QString(XMLString::transcode(chars));
685 fAutoRunCmd.param[3] = QString(XMLString::transcode(chars));
688 fAutoRunCmd.param[4] = QString(XMLString::transcode(chars));
691 fAutoRunCmd.param[5] = QString(XMLString::transcode(chars));
694 fAutoRunCmd.param[6] = QString(XMLString::transcode(chars));
697 fAutoRunCmd.param[7] = QString(XMLString::transcode(chars));
700 fAutoRunCmd.param[8] = QString(XMLString::transcode(chars));
707 if (fCmdKey == eSetSampleHV) {
710 fAutoRunCmd.lineNo = fCurrentUserLineNo;
713 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
716 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
717 fAutoRunCmd.noElements++;
724 if (fCmdKey == eSetRA_HV) {
727 fAutoRunCmd.lineNo = fCurrentUserLineNo;
730 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
733 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
734 fAutoRunCmd.noElements++;
737 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
738 fAutoRunCmd.noElements++;
741 fAutoRunCmd.param[2] = QString(XMLString::transcode(chars));
742 fAutoRunCmd.noElements++;
745 fAutoRunCmd.param[3] = QString(XMLString::transcode(chars));
746 fAutoRunCmd.noElements++;
753 if (fCmdKey == eSetTransportHV) {
756 fAutoRunCmd.lineNo = fCurrentUserLineNo;
759 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
761 case eTransportHvSettingFileName:
762 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
763 fAutoRunCmd.noElements++;
770 if (fCmdKey == eSetHvOff) {
773 fAutoRunCmd.lineNo = fCurrentUserLineNo;
776 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
779 str = QString(XMLString::transcode(chars));
780 if (!str.contains(
"mc", Qt::CaseInsensitive) && !str.contains(
"tc", Qt::CaseInsensitive) &&
781 !str.contains(
"sc", Qt::CaseInsensitive)) {
782 QString err = QString(
"PSAX2AutoRunParseHandler::characters: found chamber name '%1' which is not supported").arg(str);
783 internalFatalError(err);
785 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
786 fAutoRunCmd.noElements++;
793 if (fCmdKey == eSetFieldWEWL) {
796 fAutoRunCmd.lineNo = fCurrentUserLineNo;
799 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
802 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
803 fAutoRunCmd.noElements++;
806 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
807 fAutoRunCmd.noElements++;
813 if (fCmdKey == eSetFieldWEWH) {
816 fAutoRunCmd.lineNo = fCurrentUserLineNo;
819 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
822 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
823 fAutoRunCmd.noElements++;
826 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
827 fAutoRunCmd.noElements++;
833 if (fCmdKey == eSetFieldDanfysik) {
836 fAutoRunCmd.lineNo = fCurrentUserLineNo;
839 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
842 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
843 fAutoRunCmd.noElements++;
846 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
847 fAutoRunCmd.noElements++;
853 if (fCmdKey == eSetField) {
856 fAutoRunCmd.lineNo = fCurrentUserLineNo;
859 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
862 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
863 fAutoRunCmd.noElements++;
866 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
867 fAutoRunCmd.noElements++;
873 if (fCmdKey == eSetSpinRot) {
876 fAutoRunCmd.lineNo = fCurrentUserLineNo;
879 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
882 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
883 fAutoRunCmd.noElements++;
886 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
887 fAutoRunCmd.noElements++;
894 if (fCmdKey == eSetFOM) {
897 fAutoRunCmd.lineNo = fCurrentUserLineNo;
900 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
903 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
904 fAutoRunCmd.noElements++;
911 if (fCmdKey == eSetTitle) {
914 fAutoRunCmd.lineNo = fCurrentUserLineNo;
917 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
920 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
921 fAutoRunCmd.noElements++;
924 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
925 fAutoRunCmd.noElements++;
928 fAutoRunCmd.param[2] = QString(XMLString::transcode(chars));
929 fAutoRunCmd.noElements++;
932 fAutoRunCmd.param[3] = QString(XMLString::transcode(chars));
933 fAutoRunCmd.noElements++;
936 fAutoRunCmd.param[4] = QString(XMLString::transcode(chars));
937 fAutoRunCmd.noElements++;
940 fAutoRunCmd.param[5] = QString(XMLString::transcode(chars));
941 fAutoRunCmd.noElements++;
944 fAutoRunCmd.param[6] = QString(XMLString::transcode(chars));
945 fAutoRunCmd.noElements++;
947 case eOdb_ra_diff_lr:
948 fAutoRunCmd.param[7] = QString(XMLString::transcode(chars));
949 fAutoRunCmd.noElements++;
951 case eOdb_ra_diff_tb:
952 fAutoRunCmd.param[8] = QString(XMLString::transcode(chars));
953 fAutoRunCmd.noElements++;
956 fAutoRunCmd.param[9] = QString(XMLString::transcode(chars));
957 fAutoRunCmd.noElements++;
964 if (fCmdKey == eSetTOF) {
967 fAutoRunCmd.lineNo = fCurrentUserLineNo;
970 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
973 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
974 fAutoRunCmd.noElements++;
977 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
978 fAutoRunCmd.noElements++;
985 if (fCmdKey == eSetModInfo) {
988 fAutoRunCmd.lineNo = fCurrentUserLineNo;
991 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
994 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
995 fAutoRunCmd.noElements++;
998 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
999 fAutoRunCmd.noElements++;
1006 if (fCmdKey == eSetLEMSetup) {
1009 fAutoRunCmd.lineNo = fCurrentUserLineNo;
1012 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
1015 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
1016 fAutoRunCmd.noElements++;
1023 if (fCmdKey == eSetWait) {
1026 fAutoRunCmd.lineNo = fCurrentUserLineNo;
1029 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
1032 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
1033 fAutoRunCmd.noElements++;
1040 if (fCmdKey == eSetDump) {
1043 fAutoRunCmd.lineNo = fCurrentUserLineNo;
1046 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
1049 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
1050 fAutoRunCmd.noElements++;
1057 if (fCmdKey == eRunStart) {
1060 fAutoRunCmd.lineNo = fCurrentUserLineNo;
1063 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
1066 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
1067 fAutoRunCmd.noElements++;
1070 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
1071 fAutoRunCmd.noElements++;
1072 if (fAutoRunCmd.param[1].toLower() !=
"sec") {
1073 QString err = QString(
"PSAX2AutoRunParseHandler::characters: found units '%1' in START command. Currently only 'sec' are supported!").arg(fAutoRunCmd.param[1].toLower());
1074 internalFatalError(err);
1082 if (fCmdKey == eRunStop) {
1085 fAutoRunCmd.lineNo = fCurrentUserLineNo;
1088 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
1091 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
1092 fAutoRunCmd.noElements++;
1095 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
1096 fAutoRunCmd.noElements++;
1097 if (fAutoRunCmd.param[1].toLower() !=
"sec") {
1098 QString err = QString(
"PSAX2AutoRunParseHandler::characters: found units '%1' in STOP command. Currently only 'sec' are supported!").arg(fAutoRunCmd.param[1].toLower());
1099 internalFatalError(err);
1107 if (fCmdKey == eWarmUp) {
1110 fAutoRunCmd.lineNo = fCurrentUserLineNo;
1113 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
1116 fAutoRunCmd.param[0] = QString(XMLString::transcode(chars));
1117 fAutoRunCmd.noElements++;
1120 fAutoRunCmd.param[1] = QString(XMLString::transcode(chars));
1121 fAutoRunCmd.noElements++;
1124 fAutoRunCmd.param[2] = QString(XMLString::transcode(chars));
1125 fAutoRunCmd.noElements++;
1132 if (fCmdKey == eLoopList) {
1137 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1138 internalFatalError(err);
1142 fLoopInfoVector[fLoopNo-1].list.push_back(QString(XMLString::transcode(chars)).toDouble());
1149 if (fCmdKey == eLoopIterator) {
1152 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1153 internalFatalError(err);
1159 fLoopInfoVector[fLoopNo-1].iterator[0] = QString(XMLString::transcode(chars)).toDouble();
1162 fLoopInfoVector[fLoopNo-1].iterator[1] = QString(XMLString::transcode(chars)).toDouble();
1165 fLoopInfoVector[fLoopNo-1].iterator[2] = QString(XMLString::transcode(chars)).toDouble();
1172 if (fCmdKey == eLoopSetTemp) {
1175 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1176 internalFatalError(err);
1182 fLoopInfoVector[fLoopNo-1].loopCmd.lineNo = fCurrentUserLineNo;
1185 fLoopInfoVector[fLoopNo-1].loopCmd.param[0] = QString(XMLString::transcode(chars));
1186 fLoopInfoVector[fLoopNo-1].loopCmd.noElements++;
1189 fLoopInfoVector[fLoopNo-1].loopCmd.param[1] = QString(XMLString::transcode(chars));
1190 fLoopInfoVector[fLoopNo-1].loopCmd.noElements++;
1192 case eStabilityTimeout:
1193 fLoopInfoVector[fLoopNo-1].loopCmd.param[2] = QString(XMLString::transcode(chars));
1194 fLoopInfoVector[fLoopNo-1].loopCmd.noElements++;
1197 fLoopInfoVector[fLoopNo-1].loopCmd.param[3] = QString(XMLString::transcode(chars));
1198 fLoopInfoVector[fLoopNo-1].loopCmd.noElements++;
1205 if (fCmdKey == eLoopSetSampleHV) {
1208 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1209 internalFatalError(err);
1215 fLoopInfoVector[fLoopNo-1].loopCmd.lineNo = fCurrentUserLineNo;
1218 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
1220 case eLoopSampleHVTag:
1221 fLoopInfoVector[fLoopNo-1].loopCmd.param[0] = QString(XMLString::transcode(chars));
1222 fLoopInfoVector[fLoopNo-1].loopCmd.noElements++;
1229 if (fCmdKey == eLoopSetFieldWEWL) {
1232 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1233 internalFatalError(err);
1239 fLoopInfoVector[fLoopNo-1].loopCmd.lineNo = fCurrentUserLineNo;
1242 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
1245 fLoopInfoVector[fLoopNo-1].loopCmd.param[0] = QString(XMLString::transcode(chars));
1246 fLoopInfoVector[fLoopNo-1].loopCmd.noElements++;
1249 fLoopInfoVector[fLoopNo-1].loopCmd.param[1] = QString(XMLString::transcode(chars));
1250 fLoopInfoVector[fLoopNo-1].loopCmd.noElements++;
1257 if (fCmdKey == eLoopSetFieldWEWH) {
1260 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1261 internalFatalError(err);
1267 fLoopInfoVector[fLoopNo-1].loopCmd.lineNo = fCurrentUserLineNo;
1270 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
1273 fLoopInfoVector[fLoopNo-1].loopCmd.param[0] = QString(XMLString::transcode(chars));
1274 fLoopInfoVector[fLoopNo-1].loopCmd.noElements++;
1277 fLoopInfoVector[fLoopNo-1].loopCmd.param[1] = QString(XMLString::transcode(chars));
1278 fLoopInfoVector[fLoopNo-1].loopCmd.noElements++;
1285 if (fCmdKey == eLoopSetFieldDanfysik) {
1288 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1289 internalFatalError(err);
1295 fLoopInfoVector[fLoopNo-1].loopCmd.lineNo = fCurrentUserLineNo;
1298 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
1301 fLoopInfoVector[fLoopNo-1].loopCmd.param[0] = QString(XMLString::transcode(chars));
1302 fLoopInfoVector[fLoopNo-1].loopCmd.noElements++;
1305 fLoopInfoVector[fLoopNo-1].loopCmd.param[1] = QString(XMLString::transcode(chars));
1306 fLoopInfoVector[fLoopNo-1].loopCmd.noElements++;
1313 if (fCmdKey == eLoopSetField) {
1316 QString err(
"PSAX2AutoRunParseHandler::characters: negative loop fall back!");
1317 internalFatalError(err);
1323 fLoopInfoVector[fLoopNo-1].loopCmd.lineNo = fCurrentUserLineNo;
1326 fAutoRunCmd.cmdString = QString(XMLString::transcode(chars));
1329 fLoopInfoVector[fLoopNo-1].loopCmd.param[0] = QString(XMLString::transcode(chars));
1330 fLoopInfoVector[fLoopNo-1].loopCmd.noElements++;
1333 fLoopInfoVector[fLoopNo-1].loopCmd.param[1] = QString(XMLString::transcode(chars));
1334 fLoopInfoVector[fLoopNo-1].loopCmd.noElements++;
1353 const XMLCh *
const qname)
1361 QString qName = QString(XMLString::transcode(qname));
1365 if (qName ==
"odbTag") {
1366 if ((fOdbTag.tag ==
"") || (fOdbTag.odb_path ==
"")) {
1368 QString err(
"PSAX2AutoRunParseHandler::endElement: ODB tag not complete");
1369 internalFatalError(err);
1373 fArp->fOdbTagVector->push_back(fOdbTag);
1376 if ((qName ==
"comment") || (qName ==
"alias") || (qName ==
"ignore_alarms") || (qName ==
"ignore_clients") || (qName ==
"odbTag") ||
1377 (qName ==
"setBPV") || (qName ==
"setTfl") || (qName ==
"setTemp") || (qName ==
"setSampleHV") || (qName ==
"setRA_HV") ||
1378 (qName ==
"setTransportHV") || (qName ==
"setFieldWEWL") || (qName ==
"setFieldWEWH") || (qName ==
"setFieldDanfysik") ||
1379 (qName ==
"setField") || (qName ==
"setSpinRot") || (qName ==
"setTitle") || (qName ==
"setTOF") || (qName ==
"setModInfo") ||
1380 (qName ==
"setLEMSetup") || (qName ==
"setWait") || (qName ==
"setDump") ||
1381 (qName ==
"runStart") || (qName ==
"runStop") || (qName ==
"warmUp") ||
1382 (qName ==
"degaussDanfysik") || (qName ==
"degaussWEW") || (qName ==
"degaussMagnet") || (qName ==
"degaussSpinRot") ||
1383 (qName ==
"setFOM") || (qName ==
"setOdbData") || (qName ==
"setOdbDataArray") || (qName ==
"setHVOff")) {
1385 if (qName ==
"setOdbData")
1386 CheckOdbSetDataParamsStructure();
1389 fAutoRunCmdVector->push_back(fAutoRunCmd);
1391 fLoopInfoVector[fLoopNo-1].cmd.push_back(fAutoRunCmd);
1395 if (qName ==
"loopIterator") {
1396 int no_elements = -1;
1398 if (fLoopInfoVector[fLoopNo-1].iterator[2] == 0.0) {
1400 QString err(
"PSAX2AutoRunParseHandler::endElement: loop step iterator == 0!");
1401 internalFatalError(err);
1405 no_elements = (int)round(round(fLoopInfoVector[fLoopNo-1].iterator[1] -
1406 fLoopInfoVector[fLoopNo-1].iterator[0]) / fLoopInfoVector[fLoopNo-1].iterator[2])+1;
1408 for (
int i=0; i<no_elements; i++)
1409 fLoopInfoVector[fLoopNo-1].list.push_back(fLoopInfoVector[fLoopNo-1].iterator[0] +
1410 i*fLoopInfoVector[fLoopNo-1].iterator[2]);
1414 if (qName ==
"loop") {
1418 expandedLoopCmd.
lineNo = fLoopInfoVector[fLoopNo-1].loopCmd.lineNo;
1419 expandedLoopCmd.
noElements = fLoopInfoVector[fLoopNo-1].loopCmd.noElements;
1420 for (
int i=1; i<fLoopInfoVector[fLoopNo-1].loopCmd.noElements; i++)
1421 expandedLoopCmd.
param[i] = fLoopInfoVector[fLoopNo-1].loopCmd.param[i];
1424 if (fLoopInfoVector[fLoopNo-1].loopCmd.cmd ==
"loopSetTemp") {
1425 expandedLoopCmd.
cmd =
"setTemp";
1426 }
else if (fLoopInfoVector[fLoopNo-1].loopCmd.cmd ==
"loopSetSampleHV") {
1427 expandedLoopCmd.
cmd =
"setSampleHV";
1428 }
else if (fLoopInfoVector[fLoopNo-1].loopCmd.cmd ==
"loopSetFieldWEWL") {
1429 expandedLoopCmd.
cmd =
"setFieldWEWL";
1430 }
else if (fLoopInfoVector[fLoopNo-1].loopCmd.cmd ==
"loopSetFieldWEWH") {
1431 expandedLoopCmd.
cmd =
"setFieldWEWH";
1432 }
else if (fLoopInfoVector[fLoopNo-1].loopCmd.cmd ==
"loopSetFieldDanfysik") {
1433 expandedLoopCmd.
cmd =
"setFieldDanfysik";
1434 }
else if (fLoopInfoVector[fLoopNo-1].loopCmd.cmd ==
"loopSetField") {
1435 expandedLoopCmd.
cmd =
"setField";
1438 QString err(
"PSAX2AutoRunParseHandler::endElement: syntactically incorrect command!");
1439 internalFatalError(err);
1445 PXMLLoopListVector::Iterator listIter;
1446 PAutoRunCmdVector::Iterator cmdIter;
1448 for (listIter = fLoopInfoVector[fLoopNo-1].list.begin();
1449 listIter != fLoopInfoVector[fLoopNo-1].list.end(); ++listIter) {
1451 expandedLoopCmd.
param[0] = QString(
"%1").arg(*listIter);
1452 fLoopInfoVector[fLoopNo-1].expandedCmd.push_back(expandedLoopCmd);
1455 for (cmdIter = fLoopInfoVector[fLoopNo-1].cmd.begin();
1456 cmdIter != fLoopInfoVector[fLoopNo-1].cmd.end(); ++cmdIter) {
1457 fLoopInfoVector[fLoopNo-1].expandedCmd.push_back(*cmdIter);
1465 QString err(
"PSAX2AutoRunParseHandler::endElement: negative loop fall back!");
1466 internalFatalError(err);
1470 PAutoRunCmdVector::Iterator iter;
1472 QString lastLoopVal(
"");
1473 for (iter = fLoopInfoVector[0].expandedCmd.begin();
1474 iter != fLoopInfoVector[0].expandedCmd.end(); ++iter) {
1476 if (iter->cmd ==
"setSampleHV") {
1477 iter->cmdString = QString(
"SAMPLE_HV ");
1479 if (!iter->param[i].isEmpty())
1480 iter->cmdString += iter->param[i] +
", ";
1483 iter->cmdString.truncate(iter->cmdString.length()-2);
1485 iter->loopVal = iter->param[0];
1486 lastLoopVal = iter->param[0];
1487 }
else if (iter->cmd ==
"setTemp") {
1488 iter->cmdString = QString(
"TEMP ");
1490 if (!iter->param[i].isEmpty())
1491 iter->cmdString += iter->param[i] +
", ";
1494 iter->cmdString.truncate(iter->cmdString.length()-2);
1496 iter->loopVal = iter->param[0];
1497 lastLoopVal = iter->param[0];
1498 }
else if (iter->cmd ==
"setFieldWEWL") {
1499 iter->cmdString = QString(
"FIELD_WEWL ");
1501 if (!iter->param[i].isEmpty())
1502 iter->cmdString += iter->param[i] +
", ";
1505 iter->cmdString.truncate(iter->cmdString.length()-2);
1507 iter->loopVal = iter->param[0];
1508 lastLoopVal = iter->param[0];
1509 }
else if (iter->cmd ==
"setFieldWEWH") {
1510 iter->cmdString = QString(
"FIELD_WEWH ");
1512 if (!iter->param[i].isEmpty())
1513 iter->cmdString += iter->param[i] +
", ";
1516 iter->cmdString.truncate(iter->cmdString.length()-2);
1518 iter->loopVal = iter->param[0];
1519 lastLoopVal = iter->param[0];
1520 }
else if (iter->cmd ==
"setFieldDanfysik") {
1521 iter->cmdString = QString(
"FIELD_DANFYSIK ");
1523 if (!iter->param[i].isEmpty())
1524 iter->cmdString += iter->param[i] +
", ";
1527 iter->cmdString.truncate(iter->cmdString.length()-2);
1529 iter->loopVal = iter->param[0];
1530 lastLoopVal = iter->param[0];
1531 }
else if (iter->cmd ==
"setField") {
1532 iter->cmdString = QString(
"FIELD ");
1534 if (!iter->param[i].isEmpty())
1535 iter->cmdString += iter->param[i] +
", ";
1538 iter->cmdString.truncate(iter->cmdString.length()-2);
1540 iter->loopVal = iter->param[0];
1541 lastLoopVal = iter->param[0];
1543 iter->loopVal = lastLoopVal;
1547 fAutoRunCmdVector->push_back(*iter);
1550 fLoopInfoVector.clear();
1552 for (iter = fLoopInfoVector[fLoopNo].expandedCmd.begin();
1553 iter != fLoopInfoVector[fLoopNo].expandedCmd.end(); ++iter) {
1554 fLoopInfoVector[fLoopNo-1].cmd.push_back(*iter);
1558 if (fLoopInfoVector.size() > 0)
1559 fLoopInfoVector.pop_back();
1587 err.
lineNo = fCurrentUserLineNo;
1588 err.
errorMsg = QString(XMLString::transcode(exc.getMessage()));
1592 p = fArp->GetXMLParseErrorVector();
1610 err.
lineNo = fCurrentUserLineNo;
1611 err.
errorMsg = QString(XMLString::transcode(exc.getMessage()));
1615 p = fArp->GetXMLParseErrorVector();
1633 err.
lineNo = fCurrentUserLineNo;
1634 err.
errorMsg = QString(XMLString::transcode(exc.getMessage()));
1638 p = fArp->GetXMLParseErrorVector();
1656 err.
lineNo = fCurrentUserLineNo;
1661 p = fArp->GetXMLParseErrorVector();
1673 fAutoRunCmd.cmd =
"";
1674 fAutoRunCmd.lineNo = -1;
1675 fAutoRunCmd.noElements = 0;
1677 fAutoRunCmd.param[i] =
"";
1678 fAutoRunCmd.loopVal =
"";
1690 QString err(
"PSAX2AutoRunParseHandler::CheckOdbSetDataParamsStructure: ");
1702 switch (fAutoRunCmd.noElements) {
1704 if ((fAutoRunCmd.param[0].length() == 0) || (fAutoRunCmd.param[2].length() == 0)) {
1707 err += QString(
"if only 2 values are given, they have to be set_path and set_value!");
1711 if ((fAutoRunCmd.param[0].length() == 0) || (fAutoRunCmd.param[1].length() == 0) ||
1712 (fAutoRunCmd.param[2].length() == 0)) {
1715 err += QString(
"if only 3 values are given, they have to be set_path, set_index, and set_value!");
1719 if ((fAutoRunCmd.param[1].length() != 0) || (fAutoRunCmd.param[4].length() != 0)) {
1722 err += QString(
"if 5 values are given, they have to be: set_path, set_value, read_path, timeout, tolerance!");
1726 if ((fAutoRunCmd.param[1].length() != 0) && (fAutoRunCmd.param[4].length() != 0)) {
1729 err += QString(
"if 6 values are given, they have to be: set_path, set_value, read_path, timeout, tolerance, and (set_index or read_index) !");
1736 err += QString(
"ODB_SET_DATA parameter error! Please check the manual");
1741 internalFatalError(err);
1762 fInputFileName(userAutoRunSeqFln),
1763 fAutoRunXMLSchemaPath(schemaPath),
1764 fXMLFileName(xmlFln),
1765 fAutoRunCmdVector(arcv),
1766 fOdbTagVector(odbtagv)
1796 QString offset =
"";
1798 QStringList runSeqXML;
1803 if (!file.exists()) {
1811 if (file.open(QIODevice::ReadOnly)) {
1812 QTextStream stream( &file );
1814 while ( !stream.atEnd() ) {
1815 line = stream.readLine();
1825 QString key(
""), value(
"");
1827 for (QStringList::Iterator it = runSeq.begin(); it != runSeq.end(); ++it) {
1830 if (str.startsWith(
"ALIAS")) {
1831 key = str.section(
' ', 1, 1);
1832 value = str.section(
' ', 2);
1833 if ((key.length() == 0) || (value.length() == 0)) {
1834 QString err = QString(
"**ERROR** Invalid ALIAS command!");
1845 runSeqXML += QString(
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
1846 runSeqXML += QString(
"<autoRun xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"");
1847 runSeqXML += QString(
" xsi:noNamespaceSchemaLocation=\"file:")+
fAutoRunXMLSchemaPath+QString(
"\">");
1848 runSeqXML += QString(
"<autoRunName>%1</autoRunName>").arg(
fInputFileName);
1852 for (QStringList::Iterator it = runSeq.begin(); it != runSeq.end(); ++it) {
1855 str = str.trimmed();
1856 str = str.simplified();
1861 if (str.startsWith(
"%"))
1863 else if (str.startsWith(
"ALIAS"))
1865 else if (str.startsWith(
"IGNORE_ALARMS"))
1867 else if (str.startsWith(
"IGNORE_CLIENTS"))
1869 else if (str.startsWith(
"BPV"))
1871 else if (str.startsWith(
"FIELD_WEWL"))
1873 else if (str.startsWith(
"FIELD_WEWH"))
1875 else if (str.startsWith(
"FIELD_DANFYSIK"))
1877 else if (str.startsWith(
"FIELD "))
1879 else if (str.startsWith(
"FOM"))
1881 else if (str.startsWith(
"LEM_SETUP"))
1883 else if (str.startsWith(
"MODERATOR"))
1885 else if (str.startsWith(
"SAMPLE_HV"))
1887 else if (str.startsWith(
"RA_HV"))
1889 else if (str.startsWith(
"TRANSPORT_HV"))
1891 else if (str.startsWith(
"HV_OFF"))
1893 else if (str.startsWith(
"ODB_TAG"))
1895 else if (str.startsWith(
"ODB_SET_DATA"))
1896 if (str.startsWith(
"ODB_SET_DATA_ARRAY")) {
1901 else if (str.startsWith(
"SPIN_ROT"))
1903 else if (str.startsWith(
"START"))
1905 else if (str.startsWith(
"STOP"))
1907 else if (str.startsWith(
"TFL"))
1909 else if (str.startsWith(
"TEMP"))
1911 else if (str.startsWith(
"TITLE"))
1913 else if (str.startsWith(
"TOF"))
1915 else if (str.startsWith(
"WAIT"))
1917 else if (str.startsWith(
"WARMUP"))
1919 else if (str.startsWith(
"DUMP"))
1921 else if (str.startsWith(
"DEGAUSS_WEW"))
1923 else if (str.startsWith(
"DEGAUSS_DANFYSIK"))
1925 else if (str.startsWith(
"DEGAUSS_MAGNET"))
1927 else if (str.startsWith(
"DEGAUSS_SPIN_ROT"))
1929 else if (str.startsWith(
"LOOP_START")) {
1933 for (
int i=0; i<loop_no; i++)
1936 else if (str.startsWith(
"LOOP_LIST"))
1938 else if (str.startsWith(
"LOOP_ITERATOR"))
1940 else if (str.startsWith(
"LOOP_TEMP"))
1942 else if (str.startsWith(
"LOOP_SAMPLE_HV"))
1944 else if (str.startsWith(
"LOOP_FIELD_WEWL"))
1946 else if (str.startsWith(
"LOOP_FIELD_WEWH"))
1948 else if (str.startsWith(
"LOOP_FIELD_DANFYSIK"))
1950 else if (str.startsWith(
"LOOP_FIELD "))
1952 else if (str.startsWith(
"LOOP_END")) {
1955 for (
int i=0; i<loop_no; i++)
1965 runSeqXML += QString(
"</autoRun>");
1969 if (fileOut.open( QIODevice::WriteOnly )) {
1970 QTextStream stream( &fileOut );
1971 for ( QStringList::Iterator it = runSeqXML.begin(); it != runSeqXML.end(); ++it )
1972 stream << *it <<
"\n";
1992 QString result = str;
1993 QStringList tokens = result.split(QRegExp(
"[\\s,\\[\\]]"), QString::SkipEmptyParts);
1995 QList<QString> keys =
fAlias.keys();
1996 QList<QString>::iterator it;
1997 QString key(
""), sKey(
""), sAlias(
"");
1999 for (it = keys.begin(); it != keys.end(); ++it) {
2001 for (
int i=0; i<tokens.count(); i++) {
2002 if (key == tokens[i]) {
2004 sAlias =
" "+
fAlias[key];
2005 result.replace(sKey, sAlias);
2008 idx1 = result.indexOf(
"\"[");
2010 idx2 = result.indexOf(
"]", idx1);
2011 for (
int i=idx1; i<=idx2; i++)
2012 result[i] = result[i+1];
2036 xml += offset + QString(
"<autoRunCmd>");
2037 xml += offset + QString(
" <alias>");
2038 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2039 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2040 xml += offset + QString(
" <alias_key>%1</alias_key>").arg(str.section(
' ', 1, 1));
2041 xml += offset + QString(
" <alias_value>%1</alias_value>").arg(str.section(
' ', 2, 2));
2042 xml += offset + QString(
" </alias>");
2043 xml += offset + QString(
"</autoRunCmd>");
2059 xml += offset + QString(
"<autoRunCmd>");
2060 xml += offset + QString(
" <ignore_alarms>");
2061 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2062 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2063 xml += offset + QString(
" <state>%1</state>").arg(str.section(
' ', 1, 1).toLower());
2064 xml += offset + QString(
" </ignore_alarms>");
2065 xml += offset + QString(
"</autoRunCmd>");
2081 xml += offset + QString(
"<autoRunCmd>");
2082 xml += offset + QString(
" <ignore_clients>");
2083 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2084 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2085 xml += offset + QString(
" <state>%1</state>").arg(str.section(
' ', 1, 1).toLower());
2086 xml += offset + QString(
" </ignore_clients>");
2087 xml += offset + QString(
"</autoRunCmd>");
2103 xml += offset + QString(
"<autoRunCmd>");
2104 xml += offset + QString(
" <setBPV>");
2105 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2106 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2107 if (str.contains(
"X"))
2108 xml += offset + QString(
" <label>X</label>");
2109 else if (str.contains(
"Y"))
2110 xml += offset + QString(
" <label>Y</label>");
2112 xml += offset + QString(
" <label>?</label>");
2113 xml += offset + QString(
" <state>%1</state>").arg(str.section(
' ', 1, 1).toLower());
2114 xml += offset + QString(
" </setBPV>");
2115 xml += offset + QString(
"</autoRunCmd>");
2131 QString comment = str;
2132 comment.replace(
"<",
" less-than ");
2133 comment.replace(
">",
" greater-than ");
2135 xml += offset + QString(
"<autoRunCmd>");
2136 xml += offset + QString(
" <comment>");
2137 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2138 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(comment);
2139 xml += offset + QString(
" </comment>");
2140 xml += offset + QString(
"</autoRunCmd>");
2158 xml += offset + QString(
"<autoRunCmd>");
2159 xml += offset + QString(
" <setDump>");
2160 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2161 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2162 xml += offset + QString(
" <no_dumps>%1</no_dumps>").arg(line.section(
' ', 1, 1));
2163 xml += offset + QString(
" </setDump>");
2164 xml += offset + QString(
"</autoRunCmd>");
2182 xml += offset + QString(
"<autoRunCmd>");
2183 xml += offset + QString(
" <setFieldWEWL>");
2184 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2185 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2186 xml += offset + QString(
" <field_value>%1</field_value>").arg(line.section(
' ', 1, 1));
2188 unit = line.section(
' ', 2, 2);
2189 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2190 QString err = QString(
"**ERROR** Wrong units in FIELD_WEWL cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2195 xml += offset + QString(
" <field_unit>G</field_unit>");
2197 xml += offset + QString(
" <field_unit>A</field_unit>");
2198 xml += offset + QString(
" </setFieldWEWL>");
2199 xml += offset + QString(
"</autoRunCmd>");
2217 xml += offset + QString(
"<autoRunCmd>");
2218 xml += offset + QString(
" <setFieldWEWH>");
2219 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2220 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2221 xml += offset + QString(
" <field_value>%1</field_value>").arg(line.section(
' ', 1, 1));
2223 unit = line.section(
' ', 2, 2);
2224 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2225 QString err = QString(
"**ERROR** Wrong units in FIELD_WEWH cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2230 xml += offset + QString(
" <field_unit>G</field_unit>");
2232 xml += offset + QString(
" <field_unit>A</field_unit>");
2233 xml += offset + QString(
" </setFieldWEWH>");
2234 xml += offset + QString(
"</autoRunCmd>");
2252 xml += offset + QString(
"<autoRunCmd>");
2253 xml += offset + QString(
" <setFieldDanfysik>");
2254 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2255 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2256 xml += offset + QString(
" <field_value>%1</field_value>").arg(line.section(
' ', 1, 1));
2258 unit = line.section(
' ', 2, 2);
2259 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2260 QString err = QString(
"**ERROR** Wrong units in FIELD_DANFYSIK cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2265 xml += offset + QString(
" <field_unit>G</field_unit>");
2267 xml += offset + QString(
" <field_unit>A</field_unit>");
2268 xml += offset + QString(
" </setFieldDanfysik>");
2269 xml += offset + QString(
"</autoRunCmd>");
2287 xml += offset + QString(
"<autoRunCmd>");
2288 xml += offset + QString(
" <setField>");
2289 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2290 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2291 xml += offset + QString(
" <field_value>%1</field_value>").arg(line.section(
' ', 1, 1));
2293 unit = line.section(
' ', 2, 2);
2294 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2295 QString err = QString(
"**ERROR** Wrong units in FIELD cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2300 xml += offset + QString(
" <field_unit>G</field_unit>");
2302 xml += offset + QString(
" <field_unit>A</field_unit>");
2303 xml += offset + QString(
" </setField>");
2304 xml += offset + QString(
"</autoRunCmd>");
2322 xml += offset + QString(
"<autoRunCmd>");
2323 xml += offset + QString(
" <setFOM>");
2324 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2325 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2326 xml += offset + QString(
" <current>%1</current>").arg(line.section(
' ', 1, 1).remove(
","));
2327 xml += offset + QString(
" </setFOM>");
2328 xml += offset + QString(
"</autoRunCmd>");
2346 xml += offset + QString(
"<autoRunCmd>");
2347 xml += offset + QString(
" <setLEMSetup>");
2348 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2349 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2350 xml += offset + QString(
" <setup>%1</setup>").arg(line.section(
' ', 1));
2351 xml += offset + QString(
" </setLEMSetup>");
2352 xml += offset + QString(
"</autoRunCmd>");
2368 xml += offset + QString(
"<autoRunCmd>");
2369 xml += offset + QString(
" <loop>");
2370 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2390 xml += offset + QString(
"<loopList>");
2391 workStr = str.section(
'[', 1).trimmed();
2393 while (!value.isEmpty()) {
2394 value = workStr.section(
',',i,i);
2396 if (!value.trimmed().isEmpty()) {
2397 value = value.trimmed().remove(
"]");
2398 xml += offset + QString(
" <loopElement>%1</loopElement>").arg(value);
2402 xml += offset + QString(
"</loopList>");
2422 xml += offset + QString(
"<loopIterator>");
2423 workStr = str.section(
'[', 1).trimmed();
2425 while (!value.isEmpty()) {
2426 value = workStr.section(
',',i,i);
2428 if (!value.trimmed().isEmpty()) {
2429 value = value.trimmed().remove(
"]");
2432 xml += offset + QString(
" <loopStart>%1</loopStart>").arg(value);
2435 xml += offset + QString(
" <loopStop>%1</loopStop>").arg(value);
2438 xml += offset + QString(
" <loopStep>%1</loopStep>").arg(value);
2446 xml += offset + QString(
"</loopIterator>");
2466 xml += offset + QString(
"<loopSetTemp>");
2467 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2468 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2469 workStr = line.section(
' ', 1, 1);
2470 workStr.remove(
",");
2471 xml += offset + QString(
" <loopTempTag>%1</loopTempTag>").arg(workStr);
2472 xml += offset + QString(
" <deltaT>%1</deltaT>").arg(line.section(
',', 1, 1).trimmed());
2473 xml += offset + QString(
" <stabilityTimeout>%1</stabilityTimeout>").arg(line.section(
',', 2, 2).trimmed());
2474 workStr = line.section(
',', 3, 3);
2476 if (workStr.remove(
",").trimmed().length()>0) {
2477 xml += offset + QString(
" <ramp>%1</ramp>").arg(workStr.remove(
",").trimmed());
2479 xml += offset + QString(
"</loopSetTemp>");
2497 xml += offset + QString(
"<loopSetSampleHV>");
2498 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2499 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2500 xml += offset + QString(
" <loopSampleHVTag>%1</loopSampleHVTag>").arg(line.section(
' ', 1, 1));
2501 xml += offset + QString(
"</loopSetSampleHV>");
2519 xml += offset + QString(
"<loopSetFieldWEWL>");
2520 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2521 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2522 xml += offset + QString(
" <loopFieldTag>%1</loopFieldTag>").arg(line.section(
' ', 1, 1));
2524 unit = line.section(
' ', 2, 2);
2525 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2526 QString err = QString(
"**ERROR** Wrong units in LOOP_FIELD_WEWL cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2531 xml += offset + QString(
" <field_unit>G</field_unit>");
2533 xml += offset + QString(
" <field_unit>A</field_unit>");
2534 xml += offset + QString(
"</loopSetFieldWEWL>");
2552 xml += offset + QString(
"<loopSetFieldWEWH>");
2553 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2554 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2555 xml += offset + QString(
" <loopFieldTag>%1</loopFieldTag>").arg(line.section(
' ', 1, 1));
2557 unit = line.section(
' ', 2, 2);
2558 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2559 QString err = QString(
"**ERROR** Wrong units in LOOP_FIELD_WEWH cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2564 xml += offset + QString(
" <field_unit>G</field_unit>");
2566 xml += offset + QString(
" <field_unit>A</field_unit>");
2567 xml += offset + QString(
"</loopSetFieldWEWH>");
2585 xml += offset + QString(
"<loopSetFieldDanfysik>");
2586 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2587 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2588 xml += offset + QString(
" <loopFieldTag>%1</loopFieldTag>").arg(line.section(
' ', 1, 1));
2590 unit = line.section(
' ', 2, 2);
2591 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2592 QString err = QString(
"**ERROR** Wrong units in LOOP_FIELD_DANFYSIK cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2597 xml += offset + QString(
" <field_unit>G</field_unit>");
2599 xml += offset + QString(
" <field_unit>A</field_unit>");
2600 xml += offset + QString(
"</loopSetFieldDanfysik>");
2618 xml += offset + QString(
"<loopSetField>");
2619 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2620 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2621 xml += offset + QString(
" <loopFieldTag>%1</loopFieldTag>").arg(line.section(
' ', 1, 1));
2623 unit = line.section(
' ', 2, 2);
2624 if ((unit !=
"A") && (unit !=
"G") && (unit !=
"")) {
2625 QString err = QString(
"**ERROR** Wrong units in LOOP_FIELD cmd, Found '%1', allowed 'G', 'A', or nothing which is identical to 'A'.").arg(unit);
2630 xml += offset + QString(
" <field_unit>G</field_unit>");
2632 xml += offset + QString(
" <field_unit>A</field_unit>");
2633 xml += offset + QString(
"</loopSetField>");
2648 xml += offset + QString(
" </loop>");
2649 xml += offset + QString(
"</autoRunCmd>");
2669 xml += offset + QString(
"<autoRunCmd>");
2670 xml += offset + QString(
" <setModInfo>");
2671 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2672 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2673 workStr = line.section(
' ', 1, 1);
2674 workStr.remove(
",");
2675 xml += offset + QString(
" <mod>%1</mod>").arg(workStr);
2676 xml += offset + QString(
" <mod_date>%1</mod_date>").arg(line.section(
' ', 2));
2677 xml += offset + QString(
" </setModInfo>");
2678 xml += offset + QString(
"</autoRunCmd>");
2696 line.remove(
"ODB_SET_DATA ");
2698 QStringList tokens = line.split(QRegExp(
"[,]"));
2700 if ((tokens.count() != 2) && (tokens.count() != 5)) {
2701 QString err = QString(
"**ERROR** Invalid ODB_SET_DATA command! Given number of parameters have to be 2 or 5 found %1").arg(tokens.count());
2706 xml += offset + QString(
"<autoRunCmd>");
2707 xml += offset + QString(
" <setOdbData>");
2708 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2709 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2712 if (tokens.count() == 2) {
2713 int idx1 = tokens[0].indexOf(
"["), idx2;
2716 xml += offset + QString(
" <set_path>%1</set_path>").arg(tokens[0].
remove(
'"').trimmed());
2721 xml += offset + QString(
" <set_path>%1</set_path>").arg(sec.remove(
'"').trimmed());
2723 idx2 = tokens[0].indexOf(
"]", idx1);
2724 xml += offset + QString(
" <set_index>%1</set_index>").arg(tokens[0].mid(idx1+1,idx2-idx1-1));
2727 xml += offset + QString(
" <set_value>%1</set_value>").arg(tokens[1].
remove(
'"').trimmed());
2728 }
else if (tokens.count() == 5) {
2729 int idx1 = tokens[0].indexOf(
"["), idx2;
2732 xml += offset + QString(
" <set_path>%1</set_path>").arg(tokens[0].
remove(
'"').trimmed());
2737 xml += offset + QString(
" <set_path>%1</set_path>").arg(sec.remove(
'"').trimmed());
2739 idx2 = tokens[0].indexOf(
"]", idx1);
2740 xml += offset + QString(
" <set_index>%1</set_index>").arg(tokens[0].mid(idx1+1,idx2-idx1-1));
2743 xml += offset + QString(
" <set_value>%1</set_value>").arg(tokens[1].
remove(
'"').trimmed());
2746 idx1 = tokens[2].indexOf(
"[");
2749 xml += offset + QString(
" <read_path>%1</read_path>").arg(tokens[2].
remove(
'"').trimmed());
2754 xml += offset + QString(
" <read_path>%1</read_path>").arg(sec.remove(
'"').trimmed());
2756 idx2 = tokens[2].indexOf(
"]", idx1);
2757 xml += offset + QString(
" <read_index>%1</read_index>").arg(tokens[2].mid(idx1+1,idx2-idx1-1));
2761 xml += offset + QString(
" <timeout>%1</timeout>").arg(tokens[3].trimmed());
2764 xml += offset + QString(
" <tolerance>%1</tolerance>").arg(tokens[4].trimmed());
2766 QString err = QString(
"**ERROR** Invalid ODB_SET_DATA command! Given number of parameters have to be 2 or 5 found %1").arg(tokens.count());
2771 xml += offset + QString(
" </setOdbData>");
2772 xml += offset + QString(
"</autoRunCmd>");
2791 xml += offset + QString(
"<autoRunCmd>");
2792 xml += offset + QString(
" <setOdbDataArray>");
2793 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2794 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2796 sec = line.section(
",", 0, 0);
2797 sec.remove(
"ODB_SET_DATA_ARRAY ");
2798 xml += offset + QString(
" <set_path>%1</set_path>").arg(sec.remove(
'"').trimmed());
2802 bool done =
false, ok;
2804 sec = str.section(
",", i, i);
2805 sec = sec.trimmed();
2806 if (sec.length() == 0) {
2811 xml += offset + QString(
" <set_value>%1</set_value>").arg(sec);
2814 QString err = QString(
"**ERROR** Invalid ODB_SET_DATA_ARRAY command! Currently only float arrays are supported.");
2821 xml += offset + QString(
" </setOdbDataArray>");
2822 xml += offset + QString(
"</autoRunCmd>");
2842 QString path = line.section(
' ', 2);
2843 int pos = path.indexOf(
"[");
2848 QString idxStr(
"-1");
2850 QString sstr = line.section(
' ', 2);
2851 int pos2 = sstr.indexOf(
"]");
2852 sstr.truncate(pos2);
2853 idxStr = sstr.right(pos2-pos-1);
2856 xml += offset + QString(
"<autoRunCmd>");
2857 xml += offset + QString(
" <odbTag>");
2858 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2859 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2860 xml += offset + QString(
" <label>%1</label>").arg(line.section(
' ', 1, 1));
2861 xml += offset + QString(
" <read_path>%1</read_path>").arg(path);
2862 xml += offset + QString(
" <read_index>%1</read_index>").arg(idxStr);
2863 xml += offset + QString(
" </odbTag>");
2864 xml += offset + QString(
"</autoRunCmd>");
2882 xml += offset + QString(
"<autoRunCmd>");
2883 xml += offset + QString(
" <setSampleHV>");
2884 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2885 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2886 xml += offset + QString(
" <hv_value>%1</hv_value>").arg(line.section(
' ', 1, 1));
2887 xml += offset + QString(
" </setSampleHV>");
2888 xml += offset + QString(
"</autoRunCmd>");
2913 tokens = str.split(
",", QString::SkipEmptyParts);
2914 if ((tokens.count() != 2) && (tokens.count() != 4)) {
2915 QString err = QString(
"**ERROR** Invalid HV_RA command! Found %1 HV values: '%2' (2 or 4 required).").arg(tokens.count()).arg(str);
2920 xml += offset + QString(
"<autoRunCmd>");
2921 xml += offset + QString(
" <setRA_HV>");
2922 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2923 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2924 workStr = line.section(
' ', 1, 1);
2925 workStr = workStr.section(
',', 0, 0);
2926 workStr.remove(
",");
2927 xml += offset + QString(
" <hv_left>%1</hv_left>").arg(workStr.trimmed());
2928 workStr = str.section(
',', 1, 1);
2929 xml += offset + QString(
" <hv_right>%1</hv_right>").arg(workStr.trimmed());
2930 workStr = str.section(
',', 2, 2);
2931 if (!workStr.isNull()) {
2932 xml += offset + QString(
" <hv_top>%1</hv_top>").arg(workStr.trimmed());
2933 workStr = str.section(
',', 3, 3);
2934 xml += offset + QString(
" <hv_bottom>%1</hv_bottom>").arg(workStr.trimmed());
2936 xml += offset + QString(
" </setRA_HV>");
2937 xml += offset + QString(
"</autoRunCmd>");
2955 xml += offset + QString(
"<autoRunCmd>");
2956 xml += offset + QString(
" <setTransportHV>");
2957 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2958 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2959 xml += offset + QString(
" <transportHvSettingFileName>%1</transportHvSettingFileName>").arg(line.remove(
"TRANSPORT_HV "));
2960 xml += offset + QString(
" </setTransportHV>");
2961 xml += offset + QString(
"</autoRunCmd>");
2979 xml += offset + QString(
"<autoRunCmd>");
2980 xml += offset + QString(
" <setHVOff>");
2981 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
2982 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
2983 xml += offset + QString(
" <chamber>%1</chamber>").arg(line.remove(
"HV_OFF "));
2984 xml += offset + QString(
" </setHVOff>");
2985 xml += offset + QString(
"</autoRunCmd>");
3006 arg = line.section(
' ', 1, 1);
3007 if (!arg.contains(
"off")) {
3009 float fval = arg.toFloat(&ok);
3011 QString err = QString(
"**ERROR** Invalid SPIN_ROT command! Argument is neither \"off\", nor a number between -90.0..+90.0.");
3015 if ((fval < -90.0) || (fval > 90.0)) {
3016 QString err = QString(
"**ERROR** Invalid SPIN_ROT command! Argument is out of range (-90.0..+90.0), found %1.").arg(fval);
3022 xml += offset + QString(
"<autoRunCmd>");
3023 xml += offset + QString(
" <setSpinRot>");
3024 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3025 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3026 xml += offset + QString(
" <angle>%1</angle>").arg(line.section(
' ', 1, 1));
3027 QString noDegauss = line.section(
' ', 2, 2);
3028 if (arg.contains(
"off") && (noDegauss.indexOf(
"ndg", 0, Qt::CaseInsensitive) == 0)) {
3029 QString err = QString(
"**ERROR** Invalid SPIN_ROT command! You cannot combine 'off' with 'ndg'").arg(noDegauss);
3033 if (!noDegauss.isEmpty()) {
3034 if (noDegauss.indexOf(
"ndg", 0, Qt::CaseInsensitive) == 0) {
3035 xml += offset + QString(
" <no_degauss>%1</no_degauss>").arg(noDegauss);
3037 QString err = QString(
"**ERROR** Invalid SPIN_ROT command! Unkown 2nd argument '%1'. Allowed would be 'ndg'").arg(noDegauss);
3042 xml += offset + QString(
" </setSpinRot>");
3043 xml += offset + QString(
"</autoRunCmd>");
3063 xml += offset + QString(
"<autoRunCmd>");
3064 xml += offset + QString(
" <runStart>");
3065 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3066 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3067 xml += offset + QString(
" <no_events>%1</no_events>").arg((
int)line.section(
' ', 1, 1).toDouble());
3068 units = line.section(
' ', 2, 2);
3069 if (!units.isEmpty()) {
3070 xml += offset + QString(
" <units>%1</units>").arg(units);
3072 xml += offset + QString(
" </runStart>");
3073 xml += offset + QString(
"</autoRunCmd>");
3092 xml += offset + QString(
"<autoRunCmd>");
3093 xml += offset + QString(
" <runStop>");
3094 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3095 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3096 xml += offset + QString(
" <no_events>%1</no_events>").arg((
int)line.section(
' ', 1, 1).toDouble());
3097 units = line.section(
' ', 2, 2);
3098 if (!units.isEmpty()) {
3099 xml += offset + QString(
" <units>%1</units>").arg(units);
3101 xml += offset + QString(
" </runStop>");
3102 xml += offset + QString(
"</autoRunCmd>");
3121 xml += offset + QString(
"<autoRunCmd>");
3122 xml += offset + QString(
" <setTfl>");
3123 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3124 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3125 workStr = line.section(
' ', 1, 1);
3126 workStr = workStr.section(
',', 0, 0);
3127 workStr.remove(
",");
3128 xml += offset + QString(
" <tfl_pos>%1</tfl_pos>").arg(workStr);
3129 workStr = line.section(
',', 1, 1);
3130 workStr.remove(
",");
3131 xml += offset + QString(
" <tfl_mode>%1</tfl_mode>").arg(workStr.trimmed());
3132 xml += offset + QString(
" </setTfl>");
3133 xml += offset + QString(
"</autoRunCmd>");
3153 xml += offset + QString(
"<autoRunCmd>");
3154 xml += offset + QString(
" <setTemp>");
3155 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3156 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3157 workStr = line.section(
' ', 1, 1);
3158 workStr = workStr.section(
',', 0, 0);
3159 workStr.remove(
",");
3160 xml += offset + QString(
" <temp>%1</temp>").arg(workStr);
3161 workStr = line.section(
',', 1);
3162 if (workStr.contains(
",")>0) {
3163 workStr = line.section(
',', 1, 1);
3164 workStr.remove(
",");
3165 xml += offset + QString(
" <deltaT>%1</deltaT>").arg(workStr.trimmed());
3166 workStr = line.section(
',', 2, 2);
3167 workStr.remove(
",");
3168 xml += offset + QString(
" <stabilityTimeout>%1</stabilityTimeout>").arg(workStr.trimmed());
3169 workStr = line.section(
',', 3, 3);
3171 if (workStr.remove(
",").trimmed().length()>0) {
3172 xml += offset + QString(
" <ramp>%1</ramp>").arg(workStr.remove(
",").trimmed());
3174 workStr = line.section(
',', 4, 4);
3176 if (workStr.remove(
",").trimmed().length()>0) {
3177 xml += offset + QString(
" <heaterRange>%1</heaterRange>").arg(workStr.remove(
",").trimmed());
3179 workStr = line.section(
',', 5, 5);
3181 if (workStr.remove(
",").trimmed().length()>0) {
3182 xml += offset + QString(
" <P_PID>%1</P_PID>").arg(workStr.remove(
",").trimmed());
3184 workStr = line.section(
',', 6, 6);
3186 if (workStr.remove(
",").trimmed().length()>0) {
3187 xml += offset + QString(
" <I_PID>%1</I_PID>").arg(workStr.remove(
",").trimmed());
3189 workStr = line.section(
',', 7, 7);
3191 if (workStr.remove(
",").trimmed().length()>0) {
3192 xml += offset + QString(
" <D_PID>%1</D_PID>").arg(workStr.remove(
",").trimmed());
3194 workStr = line.section(
',', 8, 8);
3196 if (workStr.remove(
",").trimmed().length()>0) {
3197 xml += offset + QString(
" <flow>%1</flow>").arg(workStr.remove(
",").trimmed());
3200 xml += offset + QString(
" <deltaT>%1</deltaT>").arg(workStr.trimmed());
3202 xml += offset + QString(
" </setTemp>");
3203 xml += offset + QString(
"</autoRunCmd>");
3223 xml += offset + QString(
"<autoRunCmd>");
3224 xml += offset + QString(
" <setTitle>");
3225 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3226 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3227 xml += offset + QString(
" <title>%1</title>").arg(line.section(
' ', 1));
3229 if (line.contains(
"ODB_SAMPLE")>0)
3230 xml += offset + QString(
" <odb_sample>true</odb_sample>");
3232 xml += offset + QString(
" <odb_sample>false</odb_sample>");
3233 if (line.contains(
"ODB_TEMP")>0)
3234 xml += offset + QString(
" <odb_temp>true</odb_temp>");
3236 xml += offset + QString(
" <odb_temp>false</odb_temp>");
3237 if (line.contains(
"ODB_FIELD")>0)
3238 xml += offset + QString(
" <odb_field>true</odb_field>");
3240 xml += offset + QString(
" <odb_field>false</odb_field>");
3241 if (line.contains(
"ODB_TRANSP")>0)
3242 xml += offset + QString(
" <odb_transp>true</odb_transp>");
3244 xml += offset + QString(
" <odb_transp>false</odb_transp>");
3245 if (line.contains(
"ODB_HV_SAMP")>0)
3246 xml += offset + QString(
" <odb_hv_samp>true</odb_hv_samp>");
3248 xml += offset + QString(
" <odb_hv_samp>false</odb_hv_samp>");
3249 if (line.contains(
"ODB_ENERGY")>0)
3250 xml += offset + QString(
" <odb_energy>true</odb_energy>");
3252 xml += offset + QString(
" <odb_energy>false</odb_energy>");
3253 if (line.contains(
"ODB_RA_DIFF_LR")>0)
3254 xml += offset + QString(
" <odb_ra_diff_lr>true</odb_ra_diff_lr>");
3256 xml += offset + QString(
" <odb_ra_diff_lr>false</odb_ra_diff_lr>");
3257 if (line.contains(
"ODB_RA_DIFF_TB")>0)
3258 xml += offset + QString(
" <odb_ra_diff_tb>true</odb_ra_diff_tb>");
3260 xml += offset + QString(
" <odb_ra_diff_tb>false</odb_ra_diff_tb>");
3261 if (line.contains(
"ODB_SPIN_ROT")>0)
3262 xml += offset + QString(
" <odb_spin_rot>true</odb_spin_rot>");
3264 xml += offset + QString(
" <odb_spin_rot>false</odb_spin_rot>");
3265 xml += offset + QString(
" </setTitle>");
3266 xml += offset + QString(
"</autoRunCmd>");
3286 xml += offset + QString(
"<autoRunCmd>");
3287 xml += offset + QString(
" <setTOF>");
3288 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3289 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3290 workStr = line.section(
' ', 1, 1);
3291 workStr = workStr.section(
',', 0, 0);
3292 workStr.remove(
",");
3293 xml += offset + QString(
" <start>%1</start>").arg(workStr);
3294 xml += offset + QString(
" <stop>%1</stop>").arg(line.section(
',', 1, 1).trimmed());
3295 xml += offset + QString(
" </setTOF>");
3296 xml += offset + QString(
"</autoRunCmd>");
3314 xml += offset + QString(
"<autoRunCmd>");
3315 xml += offset + QString(
" <setWait>");
3316 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3317 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3318 xml += offset + QString(
" <wait>%1</wait>").arg(line.section(
' ', 1, 1, QString::SectionSkipEmpty));
3319 xml += offset + QString(
" </setWait>");
3320 xml += offset + QString(
"</autoRunCmd>");
3338 xml += offset + QString(
"<autoRunCmd>");
3339 xml += offset + QString(
" <warmUp>");
3340 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3341 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3342 xml += offset + QString(
" <date>%1</date>").arg(line.section(
' ', 1, 1).remove(
",").trimmed());
3343 xml += offset + QString(
" <time>%1</time>").arg(line.section(
',', 1, 1).trimmed());
3344 if (line.indexOf(
"vent") == -1) {
3345 xml += offset + QString(
" <vent>0</vent>");
3347 xml += offset + QString(
" <vent>1</vent>");
3349 xml += offset + QString(
" </warmUp>");
3350 xml += offset + QString(
"</autoRunCmd>");
3366 xml += offset + QString(
"<autoRunCmd>");
3367 xml += offset + QString(
" <degaussWEW>");
3368 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3369 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3370 xml += offset + QString(
" </degaussWEW>");
3371 xml += offset + QString(
"</autoRunCmd>");
3387 xml += offset + QString(
"<autoRunCmd>");
3388 xml += offset + QString(
" <degaussDanfysik>");
3389 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3390 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3391 xml += offset + QString(
" </degaussDanfysik>");
3392 xml += offset + QString(
"</autoRunCmd>");
3408 xml += offset + QString(
"<autoRunCmd>");
3409 xml += offset + QString(
" <degaussMagnet>");
3410 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3411 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3412 xml += offset + QString(
" </degaussMagnet>");
3413 xml += offset + QString(
"</autoRunCmd>");
3429 xml += offset + QString(
"<autoRunCmd>");
3430 xml += offset + QString(
" <degaussSpinRot>");
3431 xml += offset + QString(
" <line>%1</line>").arg(lineNo);
3432 xml += offset + QString(
" <cmd_str>%1</cmd_str>").arg(str);
3433 xml += offset + QString(
" </degaussSpinRot>");
3434 xml += offset + QString(
"</autoRunCmd>");
3449 XMLPlatformUtils::Initialize();
3450 }
catch (
const XMLException &toCatch) {
3451 errorMsg = QString(
"XML xerces Error during initialization! Message:\n") +
3452 QString(XMLString::transcode(toCatch.getMessage()));
3457 SAX2XMLReader *parser = XMLReaderFactory::createXMLReader();
3459 parser->setFeature(XMLUni::fgSAX2CoreNameSpaces,
true);
3460 parser->setFeature(XMLUni::fgXercesSchema,
true);
3461 parser->setFeature(XMLUni::fgXercesSchemaFullChecking,
true);
3463 parser->setFeature(XMLUni::fgSAX2CoreValidation,
true);
3464 parser->setFeature(XMLUni::fgXercesDynamic,
true);
3468 parser->setContentHandler(&handler);
3469 parser->setErrorHandler(&handler);
3474 }
catch(
const OutOfMemoryException&) {
3475 errorMsg = QString(
"XML xerces: Out of Memory Exception!");
3477 }
catch(
const XMLException &e) {
3478 errorMsg = QString(
"Error during parsing in '") +
fXMLFileName +
3479 QString(
"', Exception message:\n") +
3480 QString(XMLString::transcode(e.getMessage()));
3483 errorMsg = QString(
"");
3494 XMLPlatformUtils::Terminate();
3497 PXMLParseErrorVector::iterator it;
void ConvertLoopTemp(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertField(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertLoopFieldDanfysik(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertComment(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertDump(QString &str, int lineNo, QString &offset, QStringList &xml)
int lineNo
line number in the user auto run seqence where the error occured
QMap< QString, QString > fAlias
keep all alias
#define LAR_XML_INIT_ERROR
XML init error tag.
#define LAR_XML_ERROR
XML error tag (parsing)
void ConvertWait(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertLoopField(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertSpinRot(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertTemp(QString &str, int lineNo, QString &offset, QStringList &xml)
void internalFatalError(QString &msg)
~PSAX2AutoRunParseHandler()
void ConvertTitle(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertFieldDanfysik(QString &str, int lineNo, QString &offset, QStringList &xml)
QVector< XMLParseError > PXMLParseErrorVector
void error(const SAXParseException &exc)
int noElements
number of parameters used for this command
void ConvertWarmUp(QString &str, int lineNo, QString &offset, QStringList &xml)
QString param[LAR_MAX_PARAM]
parameter list of the command
void ParseError(int noOfErrors, int idx, int errorNo, int line, QString errorMsg)
void ConvertBPV(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertFieldWEWL(QString &str, int lineNo, QString &offset, QStringList &xml)
#define LAR_INPUT_FILE_READ_ERROR
file read error tag
QString fXMLFileName
file name of the XML auto run sequence
void ConvertFOM(QString &str, int lineNo, QString &offset, QStringList &xml)
QString CheckForAlias(QString &str)
#define LAR_XML_EXCEPTION
XML exception error tag.
void ConvertDegaussDanfysik(QString &str, int lineNo, QString &offset, QStringList &xml)
QVector< AutoRunCmd > PAutoRunCmdVector
int errorCode
error code number defined in lemAutoRun.h
void ConvertSampleHV(QString &str, int lineNo, QString &offset, QStringList &xml)
void warning(const SAXParseException &exc)
void ConvertHVOff(QString &str, int lineNo, QString &offset, QStringList &xml)
void characters(const XMLCh *const chars, const XMLSize_t length)
int lineNo
line number from where in the user auto run sequence the command originates
#define LAR_INVALID_CMD
invalid cmd error tag
PAutoRunCmdVector * GetAutoRunCmdVector()
QString fInputFileName
file name of the user auto run sequence
void startElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const Attributes &attrs)
void ConvertIgnoreAlarms(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertTfl(QString &str, int lineNo, QString &offset, QStringList &xml)
PAutoRunParser::ConvertTfl.
void ConvertLoopFieldWEWL(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertFieldWEWH(QString &str, int lineNo, QString &offset, QStringList &xml)
int fParseErrorCounter
the number parse errors encountered before giving up
#define LAR_XML_OUT_OF_MEMORY
XML out of memory error tag.
#define LAR_XML_FATAL
XML fatal error tag (parsing)
PSAX2AutoRunParseHandler(PAutoRunParser *arp)
void ConvertModerator(QString &str, int lineNo, QString &offset, QStringList &xml)
void fatalError(const SAXParseException &exc)
#define LAR_INPUT_FILE_NOT_EXISTING
file does not exist error tag
void ConvertOdbTag(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertLoopFieldWEWH(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertDegaussSpinRot(QString &str, int lineNo, QString &offset, QStringList &xml)
PXMLParseErrorVector * fXMLParseErrorVector
vector holding all the parse error information
QString fAutoRunXMLSchemaPath
file name of the XML-schema
void ConvertDegaussWEW(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertOdbSetData(QString &str, int lineNo, QString &offset, QStringList &xml)
#define LAR_XML_WARNING
XML warning tag (parsing)
void ConvertTransportHV(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertLoopList(QString &str, QString &offset, QStringList &xml)
void CheckOdbSetDataParamsStructure()
QVector< OdbTag > POdbTagVector
QString cmd
command name string
void ConvertRA_HV(QString &str, int lineNo, QString &offset, QStringList &xml)
PAutoRunParser(QString userAutoRunSeqFln, QString &schemaPath, QString &xmlFln, PAutoRunCmdVector *arcv, POdbTagVector *odbtagv)
void ConvertLoopEnd(QString &offset, QStringList &xml)
#define LAR_XML_UNEXPECTED_EXCEPTION
XML unexpected exception error tag.
void ConvertLoopIterator(QString &str, QString &offset, QStringList &xml)
void ConvertIgnoreClients(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertAlias(QString &str, int lineNo, QString &offset, QStringList &xml)
#define LAR_OUTPUT_FILE_WRITE_ERROR
output file write error tag
QString errorMsg
'clear text' error message. At the moment mostly comming from xerces
void ConvertStop(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertLEMSetup(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertStart(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertDegauss(QString &str, int lineNo, QString &offset, QStringList &xml)
void endElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname)
void ConvertLoopStart(int lineNo, QString &offset, QStringList &xml)
void ConvertTOF(QString &str, int lineNo, QString &offset, QStringList &xml)
void ConvertLoopSampleHV(QString &str, int lineNo, QString &offset, QStringList &xml)
#define LAR_MAX_PARAM
maximum number of parameters for an auto run cmd
void ConvertOdbSetDataArray(QString &str, int lineNo, QString &offset, QStringList &xml)