Databaseconnectionclasses  0.5.3
hk_column.h
1 // ****************************************************************************
2 // copyright (c) 2000-2005 Horst Knorr <hk_classes@knoda.org>
3 // This file is part of the hk_classes library.
4 // This file may be distributed and/or modified under the terms of the
5 // GNU Library Public License version 2 as published by the Free Software
6 // Foundation and appearing in the file COPYING included in the
7 // packaging of this file.
8 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
9 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
10 // ****************************************************************************
11 #ifndef HK_COLUMN
12 #define HK_COLUMN
13 #include "hk_class.h"
14 #include <list>
15 using namespace std;
16 
17 class hk_datasource;
18 class hk_dsdatavisible;
34 class hk_column:public hk_class
35 
36 {
37  friend class hk_datasource;
38  friend class hk_dsdatavisible;
39  public:
43  hk_string name(void) const;
47  void set_name(const hk_string& n);
48 
54  bool is_readonly(void) const;
58  void set_readonly(bool r);
59 
93  enum enum_columntype {textcolumn,auto_inccolumn,smallintegercolumn,integercolumn,smallfloatingcolumn,floatingcolumn,datecolumn,datetimecolumn,timecolumn,timestampcolumn,binarycolumn,memocolumn,boolcolumn,othercolumn};
94 
100  enum_columntype columntype(void) const;
105  void set_columntype(enum_columntype f);
109  long size(void);
113  void set_size(long s);
117  hk_string columntype_name(void);
121  bool is_primary(void);
125  bool set_primary(bool i);
129  bool is_notnull(void);
130 
134  hk_string get_delimiter(void);
135 
139  bool set_notnull(bool i);
143  bool has_changed(void);
148  hk_string asstring(bool as_locale=true);
152  void set_asstring(const hk_string& s, bool registerchange=true);
153  void set_asstring(const hk_string& s,bool registerchange,bool is_locale);
159  const char* transformed_asstring(void);
160  const char* transformed_asstring_at(unsigned long position);
165  hk_string changed_data_asstring(bool as_locale=true);
171  void set_asbinary(const struct_raw_data* rd);
176  const struct_raw_data* asbinary(void);
180  const struct_raw_data* asbinary_at(unsigned long a);
181 
185  void set_asbool(bool b);
189  bool asbool(void);
190  bool asbool_at(unsigned long a);
191  bool changed_data_asbool(void);
192 
193 
197  void set_asinteger(long int s, bool registerchange=true);
198  long int asinteger(void);
199  long int asinteger_at(unsigned long );
200  long int changed_data_asinteger(void);
201 
205  void set_asdouble(double s, bool registerchange=true);
206  double asdouble(void);
207  double asdouble_at(unsigned long );
208  double changed_data_asdouble(void);
209 
213  unsigned int fieldnumber(void);
214 
220  hk_string asstring_at(unsigned long a,bool as_locale=true);
221 
222  bool is_nullvalue(void);
223  bool changed_data_is_nullvalue(void);
224  bool is_nullvalue_at(unsigned long a);
225  void set_asnullvalue(bool registerchange=true);
226 
227  long int count(unsigned int from,unsigned int to);
228  double sum(unsigned int from,unsigned int to);
229  long int count();
230  double sum();
231 
242  unsigned int find(unsigned int from,unsigned int to,const hk_string& searchtext,bool wholephrase=false,bool casesensitive=false,bool backwards=false);
248  unsigned int find(const hk_string& searchtext,bool wholephrase=false,bool casesensitive=false,bool backwards=false);
252  bool is_findstring(unsigned int pos,const hk_string& searchtext,bool wholephrase=false,bool casesensitive=false);
253 
257  const struct_raw_data* changed_data(void);
258 
263  const struct_raw_data* transformed_changed_data(void);
268  void reset_changed_data(void);
269 
275  void set_boolvalues(const hk_string& TRUESTRING, const hk_string& FALSESTRING);
276  hk_string bool_truevalue(void);
277  hk_string bool_falsevalue(void);
282  void set_dateformat(const hk_string& df){p_dateformat=df;}
283  hk_string dateformat(void) const {return p_dateformat;}
288  void set_timeformat(const hk_string& tf){p_timeformat=tf;}
289  hk_string timeformat(void) const{return p_timeformat;}
294  void set_datetimeformat(const hk_string& dtf){p_datetimeformat=dtf;}
295  hk_string datetimeformat(void) const{return p_datetimeformat;}
299  bool save_to_file(const hk_string& filename);
304  bool load_from_file(const hk_string& filename);
305 
306  void save_columndefinition(ostream&);
307  void load_columndefinition(xmlNodePtr );
308  hk_datasource* datasource(void);
313  void set_allow_autoincwrite(bool r);
314  bool allow_autoincwrite(void);
320  bool in_definitionmode(void);
325 hk_string curval_asstring(void);
330 double curval_asdouble(void);
335 long int curval_asinteger(void);
340 bool curval_asbool(void);
341 
342 void set_definitionmode(bool def);
343 
344 hk_string tableorigin(void);
345 
346  protected:
347  hk_column(hk_datasource* ds, const hk_string& TRUESTRING,const hk_string& FALSESTRING);
348  virtual ~hk_column();
349  virtual bool driver_specific_asstring(const hk_string& d);
350  virtual hk_string driver_specific_asstring_at(unsigned long a);
351  virtual const char* driver_specific_transformed_asstring_at(unsigned long ){return "";}
352  virtual const struct_raw_data* driver_specific_asbinary_at(unsigned long a);
353  virtual bool driver_specific_asbinary(const char* b);
354  virtual void driver_specific_asbool(bool b);
355  virtual bool driver_specific_asbool_at(unsigned long a);
356  virtual bool driver_specific_is_nullvalue_at(unsigned long);
357  virtual void data_has_changed(void);
358  void datavisible_add(hk_dsdatavisible*);
359  void datavisible_remove(hk_dsdatavisible*);
360  hk_datasource* p_datasource;
361  unsigned int p_fieldnr;
362  bool p_readonly;
363  bool p_driver_specific_delimit_bool;
364  unsigned long p_driver_specific_data_size;
365  char* p_driver_specific_data;
366  char* p_original_new_data; // where datachanges are stored temporarily
367  unsigned long p_original_new_data_size;
368  hk_string p_sqltextdelimiter;
369  hk_string p_sqlnulldelimiter;
370  hk_string p_new_data_asstring;
371  hk_string p_true;
372  hk_string p_false;
373  hk_string p_dateformat;
374  hk_string p_timeformat;
375  hk_string p_datetimeformat;
376  hk_string p_driverspecific_dateformat;
377  hk_string p_driverspecific_timeformat;
378  hk_string p_driverspecific_datetimeformat;
379  hk_string p_driverspecific_timestampformat;
380  hk_string p_driverspecific_locale;
381  int p_driverspecific_digits;
382  private:
383  void before_alter_table();
384  hk_string p_columnname,p_originalcolumnname, p_tableorigin;
385  enum_columntype p_columntype,p_originalcolumntype;
386  long p_size,p_originalsize;
387  bool p_primary_index,p_originalprimary_index;
388  bool p_notnull,p_originalnotnull;
389  bool p_has_changed;
390  bool p_allow_autoincwrite;
391  bool p_table_origin_already_set;
392  struct_raw_data p_binary;
393  struct_raw_data p_changed_data_struct;
394  struct_raw_data p_transformed_changed_data_struct;
395  list<hk_dsdatavisible*> p_datavisibles;
396  void set_has_changed();
397  void set_has_not_changed();
398  bool p_definitionmode;
399 
400 } ;
401 #endif
basic class for all other defined classes.
Definition: hk_class.h:52
enum_columntype
Definition: hk_column.h:93
void set_size(unsigned int x, unsigned int y, unsigned int w, unsigned int h, bool registerchange=true)
Definition: hk_visible.cpp:159
void set_datetimeformat(const hk_string &dtf)
Definition: hk_column.h:294
Definition: hk_definitions.h:122
represents a resultquery or a table of a database.
Definition: hk_datasource.h:45
base class for visible widgets with data connection
Definition: hk_dsdatavisible.h:32
void set_dateformat(const hk_string &df)
Definition: hk_column.h:282
represents one column of a datasource.
Definition: hk_column.h:34
void set_timeformat(const hk_string &tf)
Definition: hk_column.h:288