#ifndef __VE7700_H #define __VE7700_H #ifndef __CONFIG_H #include #endif #ifndef __DICTION_H #include #endif #ifndef __ISAM_H #include #endif #ifndef __ODBCRECSET_H #include #endif #ifndef __PROGIND_H class TProgind; #endif class TGalileo_log; class TCache_tp; class TGalileo_transfer : public TObject { TString _query_header; TGalileo_log* _log; TConfig _config; TRecordset* _recset; bool _write_enabled; TODBC_recordset* _outset; TCache_tp* _tab; protected: const TString& build_insert_query(const char* table, const char* f, const char* v) const; TRecordset& create_recordset(const char* query); long odbc_exec(const char* command); const TString& decode_value(const char* tab, const TString& field_value); const TString& decode_field(const char* tab, const char* recset_field); TGalileo_transfer(); virtual bool trasferisci() pure; public: void init(const char* rh, const char* qh, TGalileo_log* log); const TString& title() const; TConfig& config() { return _config; } const TString& query_header() const { return _query_header; } void log(const char* msg, int sev = 0) const; bool log_error(const char* msg); bool log_cancelled(); const TRecordset& recordset() const; TRecordset& recordset(); const TString& get_str(const char* campo) const; // Get string from current recordset const TString& get_real_str(const char* campo) const; // Get eventually empty string from numeric field long get_long(const char* campo) const; bool write_enabled() const { return _write_enabled; } bool test_write(TIsamfile& file, bool re = false); bool test_rewrite(TIsamfile& file) { return test_write(file, true); } virtual ~TGalileo_transfer(); }; // Classe candidata alla libreria class TGalileo_iterator { TGalileo_transfer* _pt; TProgind* _pi; TRecnotype _rec; public: bool ok() const; bool cancelled() const; TGalileo_iterator& operator=(TRecnotype n); TGalileo_iterator& operator++(); operator int() const { return ok(); } TGalileo_iterator(TGalileo_transfer* pt); ~TGalileo_iterator(); }; /////////////////////////////////////////////////////////// // Cache generica per il trasferimento DDT di Pack /////////////////////////////////////////////////////////// class TCache_tp : public TCache { TGalileo_transfer* _pt; protected: void log(const char* msg, int sev) const { _pt->log(msg, sev); } bool test_write(TIsamfile& file) const { return _pt->test_write(file); } const TRecordset& recordset() const { return _pt->recordset(); } TConfig& config() const { return _pt->config(); } const TString& query_header() const { return _pt->query_header(); } public: const TString& get_str(const char* campo) const { return _pt->get_str(campo); } const TString& get_real_str(const char* campo) const { return _pt->get_real_str(campo); } long get_long(const char* campo) const { return _pt->get_long(campo); } virtual const TString& decode(const TToken_string& tokens) pure; TCache_tp(TGalileo_transfer* pt) : _pt(pt) {} }; /////////////////////////////////////////////////////////// // Trasferimenti veri e propri /////////////////////////////////////////////////////////// class TGalileo_clifo : public TGalileo_transfer { TDate _data; TFilename _path; TAssoc_array _keys; protected: int cancella_clifo(TLocalisamfile& clifo) const; long get_next_key(const char tipocf) const; long get_codcf(const char tipocf, const char* ricalt) const; bool aggiorna_record(TIsamfile& file, const TString_array& lista_campi); public: virtual bool trasferisci(); virtual bool dump(); void set_data_limite(const TDate& data) { _data = data; } void set_path(const TString& path) { _path = path; } const TAssoc_array & keys() const { return _keys;} TGalileo_clifo(); ~TGalileo_clifo(); }; class TGalileo_articoli : public TGalileo_transfer { TDate _data; TFilename _path; TAssoc_array _keys_articoli; TAssoc_array _keys_umart; long _ditta ; TString _cms, _can; protected: int cancella_articolo(TLocalisamfile& clifo) const; bool aggiorna_record(TIsamfile& file, const TString_array& lista_campi); public: virtual bool trasferisci(); virtual bool trasferisci_costi(const TString & ditta, const TString & cms, const TString & can); virtual bool dump(); const TAssoc_array & keys_articoli() const { return _keys_articoli;} const TAssoc_array & keys_umart() const { return _keys_umart;} void set_data_limite(const TDate& data) { _data = data; } void set_path(const TString& path) { _path = path; } TGalileo_articoli(); ~TGalileo_articoli(); }; class TCache_art; class TCache_umart; class TDocumento; #endif