00001
00002
00003
00004
00005 #include "openFields.h"
00006 #include <cstdio>
00007 #include "ocString.h"
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 basicField::basicField()
00022 :m_bIsNull(false),m_bIsEditable(false),m_strTable(""),
00023 m_strName(""),m_strFormatMask(""),m_strServerMask(""),
00024 m_strFormatted(""),m_fieldType(noType),m_iSize(0)
00025 {
00026 ;
00027 }
00028 basicField::basicField
00029 ( bool isNull, bool isEditable, string name, string table )
00030 :m_bIsNull(isNull),m_bIsEditable(isEditable),m_strTable(table),
00031 m_strName(name),m_strFormatMask(""),m_strServerMask(""),
00032 m_strFormatted(""),m_fieldType(noType),m_iSize(0)
00033 {
00034 ;
00035 }
00036
00037
00038 basicField::~basicField()
00039 {
00040 ;
00041 }
00042
00043 basicField & basicField::operator = ( basicField & input )
00044 {
00045 m_bIsNull=input.m_bIsNull;
00046 m_bIsEditable=input.m_bIsEditable;
00047 m_strTable=input.m_strTable;
00048 m_strName=input.m_strName;
00049 m_strFormatMask=input.m_strFormatMask;
00050 m_strServerMask = input.m_strServerMask;
00051 m_fieldType=input.m_fieldType;
00052 m_iSize = input.m_iSize;
00053 return *this;
00054 }
00055
00056 basicField & basicField::setNull( bool bNull )
00057 {
00058 m_bIsNull=bNull;
00059 return *this;
00060 }
00061 basicField & basicField::setIsEditable( bool bEditable )
00062 {
00063 m_bIsEditable=bEditable;
00064 return *this;
00065 }
00066 basicField & basicField::setName( string strName )
00067 {
00068 m_strName=strName;
00069 return *this;
00070 }
00071 basicField & basicField::setTable( string strTable )
00072 {
00073 m_strTable=strTable;
00074 return *this;
00075 }
00076 basicField & basicField::setFormatMask( string strFormatMask )
00077 {
00078 m_strFormatMask=strFormatMask;
00079 return *this;
00080 }
00081 basicField & basicField::setSvrFormatMask( string strFormatMask )
00082 {
00083 m_strServerMask=strFormatMask;
00084 return *this;
00085 }
00086 basicField & basicField::setSize( int iSize )
00087 {
00088 m_iSize = iSize;
00089 return *this;
00090 }
00091
00092 bool basicField::isNull( void )
00093 {
00094 return m_bIsNull;
00095 }
00096 bool basicField::isEditable( void )
00097 {
00098 return m_bIsEditable;
00099 }
00100 int basicField::getSize( void )
00101 {
00102 return m_iSize;
00103 }
00104 string & basicField::getName( void )
00105 {
00106 return m_strName;
00107 }
00108 string & basicField::getTable( void )
00109 {
00110 return m_strTable;
00111 }
00112 fieldTypes basicField::getType( void )
00113 {
00114 return m_fieldType;
00115 }
00116
00117 string & basicField::format()
00118 {
00119 return m_strFormatMask;
00120 }
00121 string & basicField::svrFormat()
00122 {
00123 return m_strServerMask;
00124 }
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141 shortField::shortField
00142 ( short value, bool isNull, bool isEditable, string name, string table )
00143 :basicField(isNull, isEditable, name, table),m_field(value)
00144 {
00145 m_strFormatMask = "%d";
00146 m_strServerMask = "%d";
00147 m_fieldType = shortType;
00148 }
00149 shortField:: ~shortField(){;}
00150
00151
00152 shortField & shortField::operator = ( shortField & input )
00153 {
00154 basicField::operator = (input);
00155 m_field = input.get();
00156 return *this;
00157 }
00158
00159
00160 short & shortField::get( void )
00161 {
00162 return m_field;
00163 }
00164 void shortField::set( short input )
00165 {
00166 m_field = input;
00167 m_bIsNull = false;
00168 }
00169
00170
00171 string & shortField::format()
00172 {
00173
00174 char temp[64];
00175
00176 sprintf( temp, m_strFormatMask.c_str(), m_field);
00177 m_strFormatted = temp;
00178 return m_strFormatted;
00179 }
00180 string & shortField::svrFormat()
00181 {
00182
00183 char temp[64];
00184
00185 sprintf( temp, m_strServerMask.c_str(), m_field);
00186 m_strFormatted = temp;
00187 return m_strFormatted;
00188 }
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206 longField::longField
00207 ( long value, bool isNull, bool isEditable, string name, string table )
00208 :basicField(isNull, isEditable, name, table),m_field(value)
00209 {
00210 m_strFormatMask = "%ld";
00211 m_strServerMask = "%ld";
00212 m_fieldType = longType;
00213 }
00214
00215 longField::~longField(){;}
00216
00217
00218
00219 longField & longField::operator = ( longField & input )
00220 {
00221 basicField::operator = (input);
00222 m_field = input.get();
00223 return *this;
00224 }
00225
00226
00227 long & longField::get( void )
00228 {
00229 return m_field;
00230 }
00231 void longField::set( long input )
00232 {
00233 m_field = input;
00234 m_bIsNull = false;
00235 }
00236
00237
00238 string & longField::format()
00239 {
00240 if( m_bIsNull )
00241 {
00242 m_strFormatted="";
00243 }
00244 else
00245 {
00246
00247 char temp[64];
00248
00249 sprintf( temp, m_strFormatMask.c_str(), m_field);
00250 m_strFormatted = temp;
00251 }
00252 return m_strFormatted;
00253 }
00254 string & longField::svrFormat()
00255 {
00256 if( m_bIsNull )
00257 {
00258 m_strFormatted="NULL";
00259 }
00260 else
00261 {
00262
00263 char temp[64];
00264
00265 sprintf( temp, m_strServerMask.c_str(), m_field);
00266 m_strFormatted = temp;
00267 }
00268 return m_strFormatted;
00269 }
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287 longlongField::longlongField
00288 ( long long value, bool isNull, bool isEditable, string name, string table )
00289 :basicField(isNull, isEditable, name, table),m_field(value)
00290 {
00291 m_strFormatMask = "%lld";
00292 m_strServerMask = "%lld";
00293 m_fieldType = longlongType;
00294 }
00295
00296 longlongField::~longlongField(){;}
00297
00298
00299
00300 longlongField & longlongField::operator = ( longlongField & input )
00301 {
00302 basicField::operator = (input);
00303 m_field = input.get();
00304 return *this;
00305 }
00306
00307
00308 long long & longlongField::get( void )
00309 {
00310 return m_field;
00311 }
00312 void longlongField::set( long long input )
00313 {
00314 m_field = input;
00315 m_bIsNull = false;
00316 }
00317
00318
00319 string & longlongField::format()
00320 {
00321 if( m_bIsNull )
00322 {
00323 m_strFormatted="";
00324 }
00325 else
00326 {
00327
00328 char temp[64];
00329
00330 sprintf( temp, m_strFormatMask.c_str(), m_field);
00331 m_strFormatted = temp;
00332 }
00333 return m_strFormatted;
00334 }
00335 string & longlongField::svrFormat()
00336 {
00337 if( m_bIsNull )
00338 {
00339 m_strFormatted="NULL";
00340 }
00341 else
00342 {
00343
00344 char temp[64];
00345
00346 sprintf( temp, m_strServerMask.c_str(), m_field);
00347 m_strFormatted = temp;
00348 }
00349 return m_strFormatted;
00350 }
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373 doubleField::doubleField( double value, bool isNull, bool isEditable, string
00374 name, string table )
00375 :basicField(isNull, isEditable, name, table),m_field(value)
00376 {
00377 m_strFormatMask = "%g";
00378 m_strServerMask = "%f";
00379 m_fieldType = doubleType;
00380 }
00381 doubleField::~doubleField(){;}
00382
00383
00384 doubleField & doubleField::operator = ( doubleField & input )
00385 {
00386 basicField::operator = (input);
00387 m_field = input.get();
00388 return *this;
00389 }
00390
00391
00392 double & doubleField::get( void )
00393 {
00394 return m_field;
00395 }
00396 void doubleField::set( double input )
00397 {
00398 m_field = input;
00399 m_bIsNull = false;
00400 }
00401
00402
00403 string & doubleField::format()
00404 {
00405 if( m_bIsNull )
00406 {
00407 m_strFormatted="";
00408 }
00409 else
00410 {
00411
00412 char temp[64];
00413
00414 sprintf( temp, m_strFormatMask.c_str(), m_field);
00415 m_strFormatted = temp;
00416 }
00417 return m_strFormatted;
00418 }
00419 string & doubleField::svrFormat()
00420 {
00421 if( m_bIsNull )
00422 {
00423 m_strFormatted="NULL";
00424 }
00425 else
00426 {
00427
00428 char temp[64];
00429
00430 sprintf( temp, m_strServerMask.c_str(), m_field);
00431 m_strFormatted = temp;
00432 }
00433 return m_strFormatted;
00434 }
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445 floatField::floatField( float value, bool isNull, bool isEditable, string
00446 name, string table )
00447 :basicField(isNull, isEditable, name, table),m_field(value)
00448 {
00449 m_strFormatMask = "%f";
00450 m_strServerMask = "%g";
00451 m_fieldType = floatType;
00452 }
00453
00454 floatField::~floatField(){;}
00455
00456
00457 floatField & floatField::operator = ( floatField & input )
00458 {
00459 basicField::operator = (input);
00460 m_field = input.get();
00461 return *this;
00462 }
00463
00464
00465 float & floatField::get( void )
00466 {
00467 return m_field;
00468 }
00469
00470 void floatField::set( float input )
00471 {
00472 m_field = input;
00473 m_bIsNull = false;
00474 }
00475
00476
00477 string & floatField::format()
00478 {
00479 if( m_bIsNull )
00480 {
00481 m_strFormatted="";
00482 }
00483 else
00484 {
00485
00486 char temp[64];
00487
00488 sprintf( temp, m_strFormatMask.c_str(), m_field);
00489 m_strFormatted = temp;
00490 }
00491 return m_strFormatted;
00492 }
00493 string & floatField::svrFormat()
00494 {
00495 if( m_bIsNull )
00496 {
00497 m_strFormatted="NULL";
00498 }
00499 else
00500 {
00501
00502 char temp[64];
00503
00504 sprintf( temp, m_strServerMask.c_str(), m_field);
00505 m_strFormatted = temp;
00506 }
00507 return m_strFormatted;
00508 }
00509
00510
00511
00512
00513
00514
00515
00516
00517 stringField::stringField( string value, bool isNull, bool isEditable, string
00518 name, string table )
00519 :basicField(isNull, isEditable, name, table),m_field(value)
00520 {
00521 m_strFormatMask = "%s";
00522 m_strServerMask = "'%s'";
00523 m_fieldType = stringType;
00524 }
00525
00526 stringField::~stringField(){;}
00527
00528
00529 stringField & stringField::operator = ( stringField & input )
00530 {
00531 basicField::operator = (input);
00532 m_field = input.get();
00533 return *this;
00534 }
00535
00536
00537 string & stringField::get( void )
00538 {
00539 return m_field;
00540 }
00541 void stringField::set( string input )
00542 {
00543 m_field = input;
00544 m_bIsNull = false;
00545 }
00546
00547
00548 string & stringField::format()
00549 {
00550 if( m_bIsNull )
00551 {
00552 m_strFormatted="";
00553 }
00554 else
00555 {
00556
00557 char * temp = new char[ m_field.size() + m_strFormatMask.size() + 1 ];
00558
00559 sprintf( temp, m_strFormatMask.c_str(), m_field.c_str() );
00560 m_strFormatted = temp;
00561 delete [] temp;
00562 }
00563 return m_strFormatted;
00564 }
00565 string & stringField::svrFormat()
00566 {
00567 if( m_bIsNull )
00568 {
00569 m_strFormatted="NULL";
00570 }
00571 else
00572 {
00573 int fieldLen = m_field.size();
00574 string strTemp("");
00575
00576 for( int i=0; i<fieldLen; i++ )
00577 {
00578 char ch = m_field[i];
00579 strTemp += ch;
00580 if( ch == '\'' )
00581 {
00582 strTemp += "'";
00583 }
00584 }
00585 fieldLen = strTemp.size();
00586
00587 char * temp = new char[ fieldLen + m_strFormatMask.size() + 1 ];
00588
00589 sprintf( temp, m_strServerMask.c_str(), strTemp.c_str() );
00590 m_strFormatted = temp;
00591 delete [] temp;
00592 }
00593 return m_strFormatted;
00594 }
00595
00596
00597
00598
00599
00600
00601
00602
00603 currencyField::currencyField( currency value, bool isNull, bool isEditable,
00604 string name, string table )
00605 :basicField(isNull, isEditable, name, table),m_field(value)
00606 {
00607 m_strFormatMask = "%.2f";
00608 m_strServerMask = "%.2f";
00609 m_fieldType = currencyType;
00610 }
00611
00612 currencyField::~currencyField(){;}
00613
00614
00615 currencyField & currencyField::operator = ( currencyField & input )
00616 {
00617 basicField::operator = (input);
00618 m_field.amount = input.get().amount;
00619 return *this;
00620 }
00621
00622 currency & currencyField::get( void )
00623 {
00624 return m_field;
00625 }
00626 void currencyField::set( currency input)
00627 {
00628 m_field.amount = input.amount;
00629 m_bIsNull = false;
00630 }
00631
00632 string & currencyField::format()
00633 {
00634 if( m_bIsNull )
00635 {
00636 m_strFormatted="";
00637 }
00638 else
00639 {
00640
00641 char temp[64];
00642
00643 sprintf( temp, m_strFormatMask.c_str(), m_field);
00644 m_strFormatted = temp;
00645 }
00646 return m_strFormatted;
00647 }
00648 string & currencyField::svrFormat()
00649 {
00650 if( m_bIsNull )
00651 {
00652 m_strFormatted="NULL";
00653 }
00654 else
00655 {
00656
00657 char temp[64];
00658
00659 sprintf( temp, m_strServerMask.c_str(), m_field);
00660 m_strFormatted = temp;
00661 }
00662 return m_strFormatted;
00663 }
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678
00679
00680
00681 dateTimeField::dateTimeField( tm value, bool isNull, bool isEditable,
00682 string name, string table )
00683 :basicField(isNull, isEditable, name, table),m_field(value)
00684 {
00685 m_strFormatMask = "%m/%d/%Y %H:%M:%S";
00686 m_strServerMask = "%m/%d/%Y %H:%M:%S";
00687 m_fieldType = dateTimeType;
00688 }
00689 dateTimeField::~dateTimeField(){;}
00690
00691
00692 dateTimeField & dateTimeField::operator = ( dateTimeField & input )
00693 {
00694 basicField::operator = (input);
00695 m_field = input.get();
00696 return *this;
00697 }
00698
00699
00700 tm & dateTimeField::get( void )
00701 {
00702 return m_field;
00703 }
00704 void dateTimeField::set( tm input )
00705 {
00706 m_field = input;
00707 m_bIsNull = false;
00708 }
00709
00710
00711 string & dateTimeField::format()
00712 {
00713 if( m_bIsNull )
00714 {
00715 m_strFormatted="";
00716 }
00717 else
00718 {
00719
00720 char temp[64];
00721
00722 strftime( temp, sizeof(temp), m_strFormatMask.c_str(), &m_field );
00723 m_strFormatted = temp;
00724 }
00725 return m_strFormatted;
00726 }
00727 string & dateTimeField::svrFormat()
00728 {
00729 if( m_bIsNull )
00730 {
00731 m_strFormatted="NULL";
00732 }
00733 else
00734 {
00735
00736 char temp[64];
00737
00738 strftime( temp, sizeof(temp), m_strServerMask.c_str(), &m_field );
00739 m_strFormatted = "'";
00740 m_strFormatted += temp;
00741 m_strFormatted += "'";
00742 }
00743 return m_strFormatted;
00744 }
00745
00746
00747
00748 boolField::boolField
00749 ( bool value, bool isNull, bool isEditable,
00750 string name, string table )
00751 :basicField(isNull, isEditable, name, table),m_field(value)
00752 {
00753 m_strFormatMask = "Yes|No";
00754 m_strServerMask = "true|false";
00755 m_fieldType = boolType;
00756 }
00757 boolField::~boolField(){;}
00758
00759
00760 boolField & boolField::operator = ( boolField & input )
00761 {
00762 basicField::operator = (input);
00763 m_field = input.get();
00764 return *this;
00765 }
00766
00767 bool & boolField::get( void )
00768 {
00769 return m_field;
00770 }
00771 void boolField::set( bool input )
00772 {
00773 m_field = input;
00774 m_bIsNull = false;
00775 }
00776
00777 string & boolField::format()
00778 {
00779 if( m_bIsNull )
00780 {
00781 m_strFormatted="";
00782 }
00783 else
00784 {
00785
00786 string strTrue, strFalse;
00787 string::size_type idx = m_strFormatMask.find('|');
00788 if( idx != string::npos )
00789 {
00790 strTrue = m_strFormatMask.substr(0, idx);
00791 strFalse = m_strFormatMask.substr(idx+1);
00792 m_strFormatted = m_field?strTrue:strFalse;
00793 }
00794 }
00795 return m_strFormatted;
00796 }
00797 string & boolField::svrFormat()
00798 {
00799 if( m_bIsNull )
00800 {
00801 m_strFormatted="NULL";
00802 }
00803 else
00804 {
00805
00806 string strTrue, strFalse;
00807 string::size_type idx = m_strServerMask.find('|');
00808 if( idx != string::npos )
00809 {
00810 strTrue = m_strServerMask.substr(0, idx);
00811 strFalse = m_strServerMask.substr(idx+1);
00812 m_strFormatted = m_field?strTrue:strFalse;
00813 }
00814 }
00815 return m_strFormatted;
00816 }
00817
00818