Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | Related Pages

hk_column.h

00001 // ****************************************************************************
00002 // copyright (c) 2000-2004 Horst Knorr <hk_classes@knoda.org>  
00003 // This file is part of the hk_classes library.
00004 // This file may be distributed and/or modified under the terms of the
00005 // GNU Library Public License version 2 as published by the Free Software
00006 // Foundation and appearing in the file COPYING included in the
00007 // packaging of this file.
00008 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
00009 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00010 // ****************************************************************************
00011 #ifndef HK_COLUMN
00012 #define HK_COLUMN
00013 #include "hk_class.h"
00014 #include <list>
00015 using namespace std;
00016 
00017 class hk_datasource;
00018 class hk_dsdatavisible;
00034 class hk_column:public hk_class
00035 
00036 {
00037     friend class hk_datasource;
00038     friend class hk_dsdatavisible;
00039     public:
00043         hk_string    name(void) const;
00047         void    set_name(const hk_string& n);
00048 
00054         bool    is_readonly(void) const;
00058         void    set_readonly(bool r);
00059 
00093         enum enum_columntype {textcolumn,auto_inccolumn,smallintegercolumn,integercolumn,smallfloatingcolumn,floatingcolumn,datecolumn,datetimecolumn,timecolumn,timestampcolumn,binarycolumn,memocolumn,boolcolumn,othercolumn};
00094 
00100         enum_columntype     columntype(void) const;
00105         void    set_columntype(enum_columntype f);
00109         long    size(void);
00113         void    set_size(long s);
00117         hk_string   columntype_name(void);
00121         bool    is_primary(void);
00125         bool    set_primary(bool i);
00129         bool    is_notnull(void);
00130 
00134         hk_string    get_delimiter(void);
00135 
00139         bool    set_notnull(bool i);
00143         bool    has_changed(void);
00148         hk_string   asstring(bool as_locale=true);
00152         void    set_asstring(const hk_string&, bool registerchange=true);
00153         void    set_asstring(const hk_string& s,bool registerchange,bool is_locale);
00159         const   char*   transformed_asstring(void);
00160         const   char*   transformed_asstring_at(unsigned long position);
00165         hk_string   changed_data_asstring(bool as_locale=true);
00171         void    set_asbinary(const struct_raw_data* rd);
00176         const   struct_raw_data* asbinary(void);
00180         const   struct_raw_data* asbinary_at(unsigned long a);
00181 
00185         void    set_asbool(bool b);
00189         bool    asbool(void);
00190         bool    asbool_at(unsigned long a);
00191         bool    changed_data_asbool(void);
00192 
00193 
00197         void set_asinteger(long int, bool registerchange=true);
00198         long int asinteger(void);
00199         long int asinteger_at(unsigned long );
00200         long int changed_data_asinteger(void);
00201 
00205         void set_asdouble(double, bool registerchange=true);
00206         double asdouble(void);
00207         double asdouble_at(unsigned long );
00208         double changed_data_asdouble(void);
00209 
00213         unsigned int    fieldnumber(void);
00214 
00220         hk_string   asstring_at(unsigned long a,bool as_locale=true);
00221 
00222         bool is_nullvalue(void);
00223         bool changed_data_is_nullvalue(void);
00224         bool is_nullvalue_at(unsigned long a);
00225         void set_asnullvalue(bool registerchange=true);
00226 
00237         unsigned int find(unsigned int from,unsigned int to,const hk_string& searchtext,bool wholephrase=false,bool casesensitive=false,bool backwards=false);
00243         unsigned int find(const hk_string& searchtext,bool wholephrase=false,bool casesensitive=false,bool backwards=false);
00247         bool is_findstring(unsigned int pos,const hk_string& searchtext,bool wholephrase=false,bool casesensitive=false);
00248 
00252         const   struct_raw_data*    changed_data(void);
00253 
00258         const   struct_raw_data*    transformed_changed_data(void);
00263         void    reset_changed_data(void);
00264 
00270         void set_boolvalues(const hk_string& TRUESTRING, const hk_string& FALSESTRING);
00271         hk_string bool_truevalue(void);
00272         hk_string bool_falsevalue(void);
00277         void set_dateformat(const hk_string& df){p_dateformat=df;}
00282         void set_timeformat(const hk_string& tf){p_timeformat=tf;}
00287         void set_datetimeformat(const hk_string& dtf){p_datetimeformat=dtf;}
00291         bool save_to_file(const hk_string& filename);
00296         bool load_from_file(const hk_string& filename);
00297 
00298         void save_columndefinition(ostream&);
00299         void load_columndefinition(const hk_string& );
00300         hk_datasource* datasource(void);
00305         void    set_allow_autoincwrite(bool r);
00306         bool    allow_autoincwrite(void);
00312         bool in_definitionmode(void);
00317 hk_string curval_asstring(void);
00322 double curval_asdouble(void);
00327 long int curval_asinteger(void);
00332 bool      curval_asbool(void);
00333 
00334 void set_definitionmode(bool def);
00335 
00336     protected:
00337         hk_column(hk_datasource* ds, const hk_string& TRUESTRING,const hk_string& FALSESTRING);
00338         virtual ~hk_column();
00339         virtual bool        driver_specific_asstring(const hk_string& d);
00340         virtual hk_string driver_specific_asstring_at(unsigned long a);
00341         virtual const char* driver_specific_transformed_asstring_at(unsigned long ){return "";}
00342         virtual const struct_raw_data* driver_specific_asbinary_at(unsigned long a);
00343         virtual bool        driver_specific_asbinary(const char* b);
00344         virtual void        driver_specific_asbool(bool b);
00345         virtual bool        driver_specific_asbool_at(unsigned long a);
00346         virtual bool        driver_specific_is_nullvalue_at(unsigned long);
00347         virtual void data_has_changed(void);
00348         void datavisible_add(hk_dsdatavisible*);
00349         void datavisible_remove(hk_dsdatavisible*);
00350         hk_datasource*  p_datasource;
00351         unsigned int    p_fieldnr;
00352         bool        p_readonly;
00353         bool        p_driver_specific_delimit_bool;
00354         unsigned long   p_driver_specific_data_size;
00355         char*       p_driver_specific_data;
00356         char*       p_original_new_data;          // where datachanges are stored temporarily
00357         unsigned long   p_original_new_data_size;
00358         hk_string   p_sqltextdelimiter;
00359         hk_string   p_sqlnulldelimiter;
00360         hk_string   p_new_data_asstring;
00361         hk_string   p_true;
00362         hk_string   p_false;
00363         hk_string   p_dateformat;
00364         hk_string   p_timeformat;
00365         hk_string   p_datetimeformat;
00366         hk_string   p_driverspecific_dateformat;
00367         hk_string   p_driverspecific_timeformat;
00368         hk_string   p_driverspecific_datetimeformat;
00369         hk_string   p_driverspecific_timestampformat;
00370         hk_string   p_driverspecific_locale;
00371         int         p_driverspecific_digits;
00372 
00373     private:
00374        void before_alter_table();
00375         hk_string       p_columnname,p_originalcolumnname;
00376         enum_columntype p_columntype,p_originalcolumntype;
00377         long        p_size,p_originalsize;
00378         bool        p_primary_index,p_originalprimary_index;
00379         bool        p_notnull,p_originalnotnull;
00380         bool        p_has_changed;
00381         bool        p_allow_autoincwrite;
00382         struct_raw_data p_binary;
00383         struct_raw_data p_changed_data_struct;
00384         struct_raw_data p_transformed_changed_data_struct;
00385         list<hk_dsdatavisible*> p_datavisibles;
00386         void set_has_changed();
00387         void set_has_not_changed();
00388         bool p_definitionmode;
00389 
00390 } ;
00391 #endif

Generated on Tue Mar 22 20:01:12 2005 for Databaseconnectionclasses by  doxygen 1.4.1