diff --git a/data-access/engine/src/common/src/fitsfiles.cpp b/data-access/engine/src/common/src/fitsfiles.cpp index 798b5912375e957170579e242895c063f582bef9..bd35e89484ca779559baadbabaa4d4ffe3b1871c 100644 --- a/data-access/engine/src/common/src/fitsfiles.cpp +++ b/data-access/engine/src/common/src/fitsfiles.cpp @@ -362,6 +362,18 @@ string fitsfiles::append_card_if_not_in_header(string header, const vector<fits_ // deprecated +// NOT: checks only for _exact_ match on card-key: 'xxxxx____=' ? 'yyyyy____=' +bool is_in_header(string& hdr, string& card) +{ + for(int offset=0; offset<hdr.size(); offset+=80) + { + string hdr_card_key{ hdr.substr(offset,10) }; + + if(0 == card.substr(0,10).compare(hdr_card_key)) return true; + } + return false; +} + void append_cards(string& hdr, vector<string> cards) { LOG_trace(__func__); @@ -374,7 +386,8 @@ void append_cards(string& hdr, vector<string> cards) { if(end_card.compare(hdr.substr(hdr_len-80 ,80)) == 0) hdr.erase(hdr_len-80,80); - for(long unsigned int i=0; i<cards.size(); i++) hdr += cards[i]; + for(long unsigned int i=0; i<cards.size(); i++) + if( !is_in_header(hdr, cards[i]) ) hdr += cards[i]; hdr += end_card; } @@ -408,7 +421,6 @@ vector<fitsfiles::Hdu> fitsfiles::fname2hdrstr( bool extra_cards_given = (extra_cards.size() > 0); if(extra_cards_given) { - // FIXME check for duplicates before appending append_cards(header_str, extra_cards); } diff --git a/data-access/engine/src/vlkb-obscore/src/database/database.cpp b/data-access/engine/src/vlkb-obscore/src/database/database.cpp index dbb2b6d11da85ddfce371d23e897409ef1320d5b..7fdf3d5917a1f4bece168dd779276841d65fda69 100644 --- a/data-access/engine/src/vlkb-obscore/src/database/database.cpp +++ b/data-access/engine/src/vlkb-obscore/src/database/database.cpp @@ -322,6 +322,7 @@ void database::dbAddSurvey(int sid, const string groups, { // FIXME add check that any of cards RESTFREQ RESTFRQ RESTWAV exist:Add only if not! + // current append in fname2hdrstr checks only for _exact_ match on card-key: 'xxxxx____=' ? 'yyyyy____=' ostringstream restfrq; restfrq.setf(ios::fixed, ios::floatfield);