062241ade5
git-svn-id: svn://10.65.10.50/branches/R_10_00@23153 c028cbd2-c16b-5b4b-a496-9718f37d4682
245 lines
6.9 KiB
C++
Executable File
245 lines
6.9 KiB
C++
Executable File
#ifndef __PREFIX_H
|
|
#define __PREFIX_H
|
|
|
|
#ifndef __EXTCTYPE_H
|
|
#include <extctype.h>
|
|
#endif
|
|
|
|
#ifndef __RECTYPES_H
|
|
#include <rectypes.h>
|
|
#endif
|
|
|
|
#ifndef __ASSOC_H
|
|
#include <assoc.h>
|
|
#endif
|
|
|
|
class TFile_info;
|
|
class TRecord_info;
|
|
class TTrec;
|
|
|
|
typedef int TIsam_handle;
|
|
|
|
class TFile_manager : public TObject
|
|
{
|
|
TArray _fileinfo;
|
|
TArray _recinfo;
|
|
int _max_open_files;
|
|
|
|
protected:
|
|
TFile_info& fileinfo(TIsam_handle handle) const;
|
|
TRecord_info& recinfo(int logicnum) const;
|
|
|
|
bool close_oldest();
|
|
|
|
public:
|
|
TIsam_handle open(int& logicnum, TFilename& name, bool excl, bool idx);
|
|
int close(TIsam_handle& name);
|
|
void destroy_info(int logicnum);
|
|
|
|
void lock_record(TIsam_handle num, TRecnotype rec);
|
|
void unlock_record(TIsam_handle num, TRecnotype rec);
|
|
|
|
const TFilename& get_filename(TIsam_handle num) const;
|
|
const FileDes& get_filedes(TIsam_handle num) const;
|
|
TToken_string & get_relation(int fromlogic, int tologic) const;
|
|
const RecDes& get_recdes(int logicnum) const;
|
|
TIsam_handle get_handle(TFilename& name);
|
|
const RecDes& update_recdes(int logicnum);
|
|
TDirtype get_dirtype(int logicnum);
|
|
bool add_recdes(int logicnum, TTrec& rec, TToken_string& keys);
|
|
|
|
TCodeb_handle get_handle(TIsam_handle name, int key);
|
|
int get_reclen(int logicnum);
|
|
|
|
void notify_change(TIsam_handle name);
|
|
long last_change(TIsam_handle name) const;
|
|
|
|
int close_closeable();
|
|
void close_all();
|
|
void open_all();
|
|
|
|
TFile_manager();
|
|
virtual ~TFile_manager() { }
|
|
};
|
|
|
|
// @doc EXTERNAL
|
|
|
|
// @class TFirm | Classe contenente le informazioni sulla ditta correntemente in uso
|
|
//
|
|
// @base public | TObject
|
|
class TFirm : public TAssoc_array
|
|
{
|
|
public:
|
|
bool read(long code);
|
|
TFirm& operator=(long code) { read(code); return *this; }
|
|
|
|
const TString& get(const char* attr) const;
|
|
long get_long(const char* attr) const;
|
|
|
|
long codice() const;
|
|
const TString& codice_valuta() const;
|
|
const TString& ragione_sociale() const;
|
|
|
|
virtual bool ok() const { return codice() > 0L; }
|
|
|
|
TFirm(long code = -1L);
|
|
virtual ~TFirm() { }
|
|
};
|
|
|
|
// @doc EXTERNAL
|
|
|
|
// @class TPrefix | Classe contenente le informazioni sulla ditta correntemente in uso
|
|
//
|
|
// @base public | TObject
|
|
class TPrefix : public TObject
|
|
|
|
// @author:(INTERNAL) Alex
|
|
{
|
|
// @access:(INTERNAL) Private Member
|
|
|
|
// @cmember:(INTERNAL) Contenuto di Study in Campo.ini
|
|
TFilename _prefix;
|
|
|
|
// @cmember:(INTERNAL) Livello degli archivi
|
|
unsigned int _filelevel, _stdlevel;
|
|
// @cmember:(INTERNAL) Numero di files esitenti
|
|
int _items;
|
|
|
|
TFile_manager _manager;
|
|
|
|
TFirm* _firm;
|
|
|
|
|
|
// @access Private Member
|
|
private:
|
|
int closeall(bool changestudy, TBit_array& excl, TBit_array& toclose) const;
|
|
void openall(bool changestudy, TBit_array& excl, int oldmax, TBit_array& toopen) const;
|
|
|
|
// @access Protected Member
|
|
protected:
|
|
// @cmember Verifica l'effettiva esistenza della directory <p s> sotto
|
|
// la directory dati
|
|
bool test(const char* s) const ;
|
|
|
|
// @access Public Member
|
|
public:
|
|
// @cmember Setta la ditta corrente
|
|
void set(const char* name = NULL, bool force = FALSE, TFilelock mode = _manulock);
|
|
// @cmember Controlla l'esistenza di un codice ditta
|
|
bool exist(long codditta) const;
|
|
// @cmember Controlla l'esistenza di un codice ditta e che non sia in uso
|
|
bool test(long codditta) const;
|
|
// @cmember Ritorna il codice della ditta corrente
|
|
long get_codditta() const ;
|
|
// @cmember Setta il codice della ditta corrente
|
|
bool set_codditta(long codditta, bool force = FALSE);
|
|
// @cmember Ritorna lo studio corrente
|
|
const char* get_studio() const;
|
|
// @cmember Setta lo studio corrente
|
|
bool set_studio(const char* study, long firm = 0);
|
|
// @cmember Ritorna il contenuto della variabile <p _prefix>
|
|
const char* name() const
|
|
{ return _prefix;}
|
|
// @cmember Ritorna il livello degli archivi
|
|
unsigned int filelevel() const
|
|
{return _filelevel;}
|
|
|
|
// @cmember Ritorna il livello standard degli archivi
|
|
unsigned int get_stdlevel() const { return _stdlevel; }
|
|
void set_stdlevel(unsigned int sl) { _stdlevel = sl; }
|
|
|
|
// @cmember Ritorna il numero di archivi
|
|
int items() const
|
|
{ return _items; }
|
|
// @cmember Ritorna la descrizione del file passato
|
|
const char* description(const char* cod) const;
|
|
// @cmember Ritorna la descrizione del file passato
|
|
const char* description(int cod) const;
|
|
// @cmember Controlla che la ditta attiva sia una ditta (e non es. dati comuni)
|
|
bool is_firm() const
|
|
{ return _prefix.len() == 6 && (_prefix[5] == 'A' || _prefix[5] == 'a'); }
|
|
// @cmember Controlla che siano attivi i dati comuni (e non una ditta)
|
|
bool is_com() const
|
|
{ return !is_firm();}
|
|
// @cmember Crea gli archivi dii una nuova ditta
|
|
bool build_firm_data(long codditta, bool flagcom = FALSE);
|
|
// @cmember Riapre tutti gli archivi della ditta attiva
|
|
void reopen() const ;
|
|
|
|
TIsam_handle open_isamfile(int& logicnum, TFilename& name, bool excl = FALSE, bool idx = TRUE)
|
|
{ return _manager.open(logicnum, name, excl, idx); }
|
|
|
|
int close_isamfile(TIsam_handle& name)
|
|
{ return _manager.close(name); }
|
|
|
|
void lock_record(TIsam_handle num, TRecnotype rec);
|
|
void unlock_record(TIsam_handle num, TRecnotype rec);
|
|
|
|
int close_closeable_isamfiles()
|
|
{ return _manager.close_closeable(); }
|
|
|
|
TDirtype get_dirtype(TIsam_handle name)
|
|
{ return _manager.get_dirtype(name); }
|
|
|
|
int get_handle(TIsam_handle name, int key = 0)
|
|
{ return _manager.get_handle(name, key); }
|
|
|
|
TIsam_handle get_handle(TFilename& name)
|
|
{ return _manager.get_handle(name); }
|
|
|
|
const RecDes& get_recdes(int logicnum) const
|
|
{ return _manager.get_recdes(logicnum); }
|
|
|
|
TToken_string & get_relation(int fromlogic, int tologic) const
|
|
{ return _manager.get_relation(fromlogic, tologic); }
|
|
|
|
bool add_recdes(int logicnum, TTrec& rec, TToken_string& keys)
|
|
{ return _manager.add_recdes(logicnum, rec, keys); }
|
|
|
|
const RecDes& update_recdes(int logicnum)
|
|
{ return _manager.update_recdes(logicnum); }
|
|
|
|
int get_reclen(int logicnum)
|
|
{ return _manager.get_reclen(logicnum); }
|
|
|
|
const FileDes& get_filedes(TIsam_handle name) const
|
|
{ return _manager.get_filedes(name); }
|
|
|
|
const TFilename& get_filename(TIsam_handle name) const
|
|
{ return _manager.get_filename(name); }
|
|
|
|
void notify_change(TIsam_handle name)
|
|
{ _manager.notify_change(name); }
|
|
|
|
long last_change(TIsam_handle name) const
|
|
{ return _manager.last_change(name); }
|
|
|
|
void destroy_info(int logicnum)
|
|
{ _manager.destroy_info(logicnum); }
|
|
|
|
const TFirm& firm();
|
|
static int firms(TString_array& codes);
|
|
static int firms(TPointer_array& codes); // calls above method!
|
|
static int firms(TArray& data); // calls above method!
|
|
|
|
// @cmember Costruttore
|
|
TPrefix();
|
|
// @cmember Distruttore
|
|
virtual ~TPrefix();
|
|
};
|
|
|
|
|
|
const char* firm2dir(long codditta);
|
|
int safely_close_closeable_isamfiles();
|
|
|
|
TPrefix& prefix_init();
|
|
bool prefix_valid();
|
|
TPrefix& prefix();
|
|
void prefix_destroy();
|
|
|
|
const TString& logic2table(int logic_num);
|
|
int table2logic(const TString& name);
|
|
|
|
#endif // __PREFIX_H
|
|
|