1 #ifndef GUI_OBJUTILS___MACRO_BIODATA_ITER__HPP
2 #define GUI_OBJUTILS___MACRO_BIODATA_ITER__HPP
64 #include <unordered_map>
93 virtual bool IsEnd(
void )
const = 0;
139 virtual void SetToDelete(
bool intent) { m_DeleteObject = intent; }
150 bool GetChoiceType(
const string& field_name,
string& choice_type)
const;
156 virtual const vector<string>&
GetTaxnames()
const {
return m_Taxnames; }
158 objects::CSeq_entry_Handle
GetSEH()
const {
return m_Seh; }
164 const objects::CSeq_submit&
GetSeqSubmit(
void )
const {
return *m_SeqSubmit; }
165 void SetSeqSubmit(
const objects::CSeq_submit& submit) { m_SeqSubmit.Reset(&submit); }
172 void SetTableToApply(
const string&
file_name,
size_t match_col,
173 const string&
delimiter,
bool merge_de,
bool split_firstcol,
bool convert_multi,
bool merge_firstcols,
bool multiple_sp_only);
174 const string& GetTableName()
const;
178 bool FindInTable(
const vector<string>& strs,
bool case_sensitive =
true);
180 string GetUnMatchedTableEntries(
int& count);
190 bool TopLevelObject()
const;
191 objects::CObject_id::TId& MaxFeatureId();
193 void SetHugeContext(
const shared_ptr<CHugeMacroContext>& context);
202 mutable bool m_Completed{
false };
208 bool m_HugeData{
false };
224 : m_Name(
file_name), m_NrCols(0), m_SplitFlags(0){}
226 bool SetTableToApply(
const string&
file_name,
size_t match_col);
231 using TIndex = unordered_map<string, unsigned>;
238 bool m_SplitFirstCol{
false };
239 bool m_ConvertMulti{
false };
240 bool m_MergeFirstCols{
false };
241 bool m_MultipleSpaceOnly{
false };
249 void x_InitAndCheck(
const string&
file_name,
size_t col);
250 bool x_CacheColFromTable(
size_t col);
269 virtual bool IsEnd(
void)
const;
289 void SetCreateGeneralIdFlag();
300 bool m_CreateGeneralId{
false };
331 const objects::SAnnotSelector& sel,
const SFeatInterval& feat_interval);
336 virtual bool IsEnd(
void)
const;
354 void x_StepToNextFeat();
379 virtual bool IsEnd(
void)
const;
401 void SetCollDateType(
bool ambiguous) { m_CollDateType = (ambiguous) ? eAmbiguous_True : eAmbiguous_False; }
414 const objects::CBioSource* x_GetBioSource();
433 virtual bool IsEnd(
void)
const;
479 bool m_Processed{
false };
519 virtual bool IsEnd(
void)
const;
535 string x_GetDescription(
const string& descr_name)
const;
537 string x_GetSeqId()
const;
562 virtual bool IsEnd(
void)
const;
580 const objects::CMolInfo* x_GetMolInfo();
599 virtual bool IsEnd(
void)
const;
638 void x_StepToNextStructComment();
661 const objects::CUser_object* x_GetDBLink();
684 const objects::CUser_object* x_GetAutodefOptions();
701 virtual bool IsEnd(
void)
const;
714 virtual objects::CBioseq_Handle
GetBioseqHandle(
void)
const {
return objects::CBioseq_Handle(); }
734 static CMacroBioData_SeqIter* s_MakeSeqIterator(
const objects::CSeq_entry_Handle& entry, objects::CSeq_inst::EMol mol_type);
738 virtual bool IsEnd(
void)
const;
801 virtual bool IsEnd(
void)
const;
814 virtual objects::CBioseq_Handle
GetBioseqHandle(
void)
const {
return objects::CBioseq_Handle(); }
838 virtual bool IsEnd(
void)
const;
851 virtual objects::CBioseq_Handle
GetBioseqHandle(
void)
const {
return objects::CBioseq_Handle(); }
User-defined methods of the data storage class.
User-defined methods of the data storage class.
string GetValueFromTable(const CSeq_table &table, string column_name, size_t row)
CMacroBioData_AutodefOptsIter - iterates over all AutodefOptions in the seq-entry.
CMacroBioData_BioSourceIter - iterates over all biosource descriptors and features in the seq-entry.
CMacroBioData_DBLinkIter - iterates over all DBlinks in the seq-entry.
CMacroBioData_FeatIntervalIter - iterates over features within [|(left, right]|) intervals.
CMacroBioData_FeatIterBase - iterates over any type of features.
CMacroBioData_MolInfoIter - iterates over all molinfos in the seq-entry.
CMacroBioData_PubdescIter - iterates over all publication descriptors and features in the seq-entry.
CMacroBioData_SeqAlignIter - iterates over sequence alignments.
CMacroBioData_SeqIter- iterates over sequences (na and aa)
CMacroBioData_SeqSetIter- iterates over sets.
CMacroBioData_SeqdescIter- iterates over all types of sequence descriptors.
CMacroBioData_TSEntryIterBase - iterator pointing to the top seq-entry.
CMacroBioData_UserObjectIter - iterates over all user objects in the seq-entry.
implements special composite command, which does not call to its internal commands when run the very ...
IMacroBioDataIter - common interface of all iterators used in the editing macros The type of the iter...
shared_ptr< objects::edit::CRemoteUpdater > m_RemoteUpdater
CMacroBioData_SeqSetIter(const objects::CSeq_entry_Handle &entry)
TPmidLookupMap m_PmidLookupMap
CMacroBioData_TSEntryIter(const objects::CSeq_entry_Handle &entry)
CConstRef< objects::CBioseq_set > m_OrigSeqSet
virtual ~CMacroBioData_MolInfoIter()
CConstRef< objects::CSeqdesc > m_FirstSeqdesc
virtual bool IsEnd(void) const =0
CConstRef< objects::CSeq_align > m_OrigSeqalign
objects::CBioseq_CI m_SeqIter
CRef< objects::CPubdesc > m_EditedPubdesc
void SetHugeDataMode(bool value)
objects::CAutoDefOptions m_AutodefOptions
objects::CSeq_entry_CI m_SeqSetIter
TDOILookupMap & SetDOILookupMap()
objects::CAlign_CI m_AlignIter
vector< pair< string, bool > > TPresent
true value for a key indicates that was present in the record
bool IsHugeDataMode() const
virtual bool IsDescriptor() const
CMacroBioData_PubdescIter & operator=(const CMacroBioData_PubdescIter &)
virtual bool IsDescriptor() const =0
objects::CSeqdesc_CI m_DescIter
objects::CBioseq_CI m_SeqIter
STableToApply(const string &file_name)
virtual ~CMacroBioData_BioSourceIter()
virtual bool IsDescriptor() const
virtual bool IsFeature() const
bool IntendToDelete() const
CMacroBioData_FeatIterBase(const CMacroBioData_FeatIterBase &)
virtual ~CMacroBioData_TSEntryIter()
CRef< objects::CSeq_feat > m_EditedFeat
const TPmidLookupMap & GetPmidLookupMap() const
virtual objects::CBioseq_Handle GetBioseqHandle(void) const =0
CConstRef< objects::CSeq_entry > m_OrigTSE
virtual bool IsDescriptor() const
objects::CSeq_entry_CI m_SeqSetIter
> provides context information
list< SResolvedField > TObs
CMacroBioData_TSEntryIter(const CMacroBioData_TSEntryIter &)
CMacroBioData_FeatIterBase(const objects::CSeq_entry_Handle &entry, const objects::SAnnotSelector &sel)
CMacroBioData_AutodefOptsIter(const objects::CSeq_entry_Handle &entry)
TDOILookupMap m_DOILookupMap
virtual bool IsFeature() const
vector< string > TTableValues
CMacroBioData_FeatIntervalIter & operator=(const CMacroBioData_FeatIntervalIter &)
CConstRef< objects::CSeq_feat > m_FirstFeat
const objects::CAutoDefOptions & GetAutodefOptions() const
virtual ~IMacroBioDataIter()
SFeatInterval m_FeatInterval
CMacroBioData_UserObjectIter & operator=(const CMacroBioData_UserObjectIter &)
~CMacroBioData_DBLinkIter()
CMacroBioData_SeqSetIter & operator=(const CMacroBioData_SeqSetIter &)
CConstRef< objects::CSeq_feat > m_FirstFeat
CRef< objects::CSeq_entry > m_EditedTSE
CMacroBioData_BioSourceIter & operator=(const CMacroBioData_BioSourceIter &)
virtual bool IsFeature() const
objects::CFeat_CI m_FeatIter
void SetCollDateType(bool ambiguous)
CMacroBioData_StructCommentIter & operator=(const CMacroBioData_StructCommentIter &)
CMacroBioData_SeqAlignIter(const objects::CSeq_entry_Handle &entry)
CRef< objects::CBioseq > m_EditedSeq
virtual bool IsDescriptor() const
CRef< objects::CMolInfo > m_EditedMolinfo
shared_ptr< CDoiLookupWithCache > m_DOIUpdater
virtual objects::CBioseq_Handle GetBioseqHandle(void) const
CMacroBioData_SeqdescIter & operator=(const CMacroBioData_SeqdescIter &)
CMacroBioData_UserObjectIter(const CMacroBioData_UserObjectIter &)
CMacroBioData_MolInfoIter & operator=(const CMacroBioData_MolInfoIter &)
virtual ~CMacroBioData_SeqAlignIter()
CConstRef< objects::CSeq_feat > m_OrigFeat
CMacroBioData_StructCommentIter(const CMacroBioData_StructCommentIter &)
objects::CSeq_entry_Handle GetSEH() const
const objects::CSubmit_block & GetOrigSubmitBlock() const
virtual void BuildEditedObject()=0
Creates a copy of the object that will be edited.
CMacroBioData_PubdescIter(const CMacroBioData_PubdescIter &)
const objects::CSeq_submit & GetSeqSubmit(void) const
virtual bool IsBegin(void)=0
CMacroBioData_MolInfoIter(const objects::CSeq_entry_Handle &entry)
virtual bool IsDescriptor() const
virtual void RunDeleteCommand(CMacroCmdComposite *cmd_composite)=0
Constructs and executes the delete command.
CMacroBioData_FeatIterBase(const objects::CBioseq_Handle &bsh, const objects::SAnnotSelector &sel, const objects::CSeq_loc &loc)
CConstRef< objects::CSeqdesc > m_OrigSeqdesc
CMacroBioData_BioSourceIter(const objects::CSeq_entry_Handle &entry)
virtual bool IsDescriptor() const
CMacroBioData_TSEntryIter & operator=(const CMacroBioData_TSEntryIter &)
ISOJTALookupMap & SetISOJTALookupMap()
virtual IMacroBioDataIter & Begin(void)=0
CMacroBioData_SeqAlignIter(const CMacroBioData_SeqAlignIter &)
SFeatInterval(const TSeqRange &range, bool left=true, bool right=true)
CMacroBioData_FeatIntervalIter(const CMacroBioData_FeatIntervalIter &)
objects::CBioseq_CI m_SeqIter
CMacroBioData_SeqdescIter(const objects::CSeq_entry_Handle &entry)
CRef< objects::CSeqdesc > m_EditedSeqdesc
unordered_map< string, unsigned > TIndex
virtual bool IsFeature() const
CConstRef< objects::CMolInfo > m_OrigMolinfo
CRef< objects::CSeq_entry > m_EditedEntry
objects::CSeqdesc_CI m_PubDescrIter
CConstRef< objects::CMolInfo > m_FirstMolinfo
CRef< CSubmitblockIter > m_SubmitBlockIter
CMacroBioData_AutodefOptsIter & operator=(const CMacroBioData_AutodefOptsIter &)
virtual void RunDeleteCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the delete command.
CConstRef< objects::CBioSource > m_OrigSource
> provides context information
void SetSeqSubmit(const objects::CSeq_submit &submit)
shared_ptr< CHugeMacroContext > m_MacroContext
CMacroBioData_DBLinkIter(const objects::CSeq_entry_Handle &entry)
CMacroBioData_SeqSetIter(const CMacroBioData_SeqSetIter &)
objects::CSeq_entry_CI m_SeqSetIter
> provides context information
virtual objects::CBioseq_Handle GetBioseqHandle(void) const
objects::CSeq_entry_CI m_EntryIter
virtual const vector< string > & GetTaxnames() const
map< objects::CBioseq_Handle, set< objects::CSeq_feat_Handle > > m_ProductToCDS
virtual bool IsFeature() const
ECollDateType m_CollDateType
virtual void x_SetDefaultObjectInfo()=0
Initializes member variable m_CurIterOI.
CMacroBioData_SeqdescIter(const CMacroBioData_SeqdescIter &)
bool m_Modified
indicates whether the edited object has been modified. When it's TRUE, call RunEditCommand()
virtual ~CMacroBioData_FeatIntervalIter()
CMacroBioData_SeqAlignIter & operator=(const CMacroBioData_SeqAlignIter &)
virtual ~CMacroBioData_FeatIterBase()
TPresent m_State
to report values of the matching field that are present in the table, but not present in the data
CConstRef< objects::CUser_object > m_FirstUserObj
string m_Delimiter
< number of actual columns in the table
list< pair< size_t, TTableValues > > m_TableValues
objects::CFeat_CI m_PubFeatIter
virtual objects::CBioseq_Handle GetBioseqHandle(void) const
virtual IMacroBioDataIter & Next(void)=0
CRef< objects::CSeq_feat > m_EditedFeat
virtual bool IsDescriptor() const
CMacroBioData_FeatIterBase & operator=(const CMacroBioData_FeatIterBase &)
virtual SConstScopedObject GetScopedObject() const =0
Dereferences the underlying iterator.
virtual ~CMacroBioData_PubdescIter()
CMacroBioData_SeqIter(const objects::CSeq_entry_Handle &entry)
CMacroBioData_SeqIter(const CMacroBioData_SeqIter &)
virtual size_t GetCount() const
virtual ~CMacroBioData_SeqdescIter()
CObjectInfo GetEditedObject()
CConstRef< objects::CSeq_submit > m_SeqSubmit
objects::CBioseq_CI m_SeqIter
TIndex::const_iterator m_CurrentPos
virtual void SetToDelete(bool intent)
virtual bool IsFeature() const =0
bool GetCreateGeneralIdFlag() const
shared_ptr< CISOJTALookupWithCache > m_ISOJTAUpdater
CConstRef< objects::CPubdesc > m_OrigPubdesc
ECollDateType GetCollDateType() const
CMacroBioData_AutodefOptsIter(const CMacroBioData_AutodefOptsIter &)
CMacroBioData_PubdescIter(const objects::CSeq_entry_Handle &entry)
objects::CFeat_CI m_SrcFeatIter
virtual void RunEditCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the editing command.
virtual string GetBestDescr() const =0
Used for logging.
CConstRef< objects::CBioseq > m_OrigSeq
CMacroBioData_DBLinkIter(const CMacroBioData_DBLinkIter &)
TPmidLookupMap & SetPmidLookupMap()
ISOJTALookupMap m_ISOJTALookupMap
objects::CSeqdesc_CI m_SrcDescrIter
CRef< objects::CBioSource > m_EditedSource
CRef< objects::CSeq_align > m_EditedSeqalign
virtual bool IsFeature() const
CConstRef< objects::CBioSource > m_FirstSource
CRef< objects::CBioseq_set > m_EditedSeqSet
STableToApply m_TableToApply
virtual void RunEditCommand(CMacroCmdComposite *cmd_composite)=0
Constructs and executes the editing command.
CMacroBioData_DBLinkIter & operator=(const CMacroBioData_DBLinkIter &)
IMacroBioDataIter(const objects::CSeq_entry_Handle &entry)
virtual ~CMacroBioData_SeqSetIter()
CMacroBioData_BioSourceIter(const CMacroBioData_BioSourceIter &)
CConstRef< objects::CPubdesc > m_FirstPubdesc
bool IsSetSeqSubmit(void) const
objects::CFeat_CI m_FeatIter
CMacroBioData_UserObjectIter(const objects::CSeq_entry_Handle &entry)
CMacroBioData_SeqIter & operator=(const CMacroBioData_SeqIter &)
void SetOutputStream(CNcbiOstream *str)
CMacroBioData_FeatIntervalIter(const objects::CBioseq_Handle &bsh, const objects::SAnnotSelector &sel, const SFeatInterval &feat_interval)
CConstRef< objects::CSeq_feat > m_OrigFeat
virtual bool IsFeature() const
TIndex m_Index
stores the match_field value and the row number where that value appears in the table
CNcbiOstream & GetOutputStream() const
objects::CAutoDefOptions & SetAutodefOptions()
objects::CSubmit_block & GetEditedSubmitBlock() const
~CMacroBioData_StructCommentIter()
CMacroBioData_MolInfoIter(const CMacroBioData_MolInfoIter &)
CConstRef< objects::CUser_object > m_OrigUserObj
virtual ~CMacroBioData_UserObjectIter()
bool m_DeleteObject
indicates the intention to delete the underlying object
virtual ~CMacroBioData_SeqIter()
CRef< objects::CUser_object > m_EditedUserObj
~CMacroBioData_AutodefOptsIter()
vector< string > m_Taxnames
bool IsSetOutputStream() const
CMacroBioData_StructCommentIter(const objects::CSeq_entry_Handle &entry)
objects::CSeq_entry_Handle m_Seh
bool HasBeenCompleted() const
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
IO_PREFIX::ostream CNcbiOstream
Portable alias for ostream.
int TSplitFlags
Bitwise OR of ESplitFlags.
#define NCBI_GUIOBJUTILS_EXPORT
Defines to provide correct exporting from DLLs in Windows.
range(_Ty, _Ty) -> range< _Ty >
Portable reference counted smart and weak pointers using CWeakRef, CRef, CObject and CObjectEx.
static const char delimiter[]
static const char * str(char *buf, int n)