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

rdbModel::Column Class Reference

#include <Column.h>

List of all members.

Public Types

enum  CONTENTS {
  CONTENTSunspecified = 0, CONTENTSserviceName = 1, CONTENTSusername = 2, CONTENTSinsertTime = 3,
  CONTENTSupdateTime = 4
}
 Hints to program in case FROM field is FROMprogram. More...
enum  CONTENTS {
  CONTENTSunspecified = 0, CONTENTSserviceName = 1, CONTENTSusername = 2, CONTENTSinsertTime = 3,
  CONTENTSupdateTime = 4
}
 Hints to program in case FROM field is FROMprogram. More...
enum  FROM {
  FROMdefault = 1, FROMautoIncrement, FROMnow, FROMprogram,
  FROMendUser
}
enum  FROM {
  FROMdefault = 1, FROMautoIncrement, FROMnow, FROMprogram,
  FROMendUser
}

Public Member Functions

Visitor::VisitorState accept (Visitor *v)
Visitor::VisitorState accept (Visitor *v)
 Column (Table *myTable=0)
 Column (Table *myTable=0)
const std::string & getComment () const
const std::string & getComment () const
CONTENTS getContentsType () const
CONTENTS getContentsType () const
DatatypegetDatatype () const
DatatypegetDatatype () const
const std::string & getDefault () const
const std::string & getDefault () const
EnumgetEnum () const
EnumgetEnum () const
const std::string & getName () const
const std::string & getName () const
FROM getSourceType () const
FROM getSourceType () const
const std::string & getTableName () const
const std::string & getTableName () const
bool interpret (const std::string &interpType, std::string &val)
bool interpret (const std::string &interpType, std::string &val)
bool isAutoIncrement () const
bool isAutoIncrement () const
bool isCompatible (const Column *otherCol) const
 Return true if otherCol and this have compatible datatypes.
bool isCompatible (const Column *otherCol) const
 Return true if otherCol and this have compatible datatypes.
bool isPrimaryKey () const
bool isPrimaryKey () const
bool nullAllowed () const
 Returns true if column may take on value NULL.
bool nullAllowed () const
 Returns true if column may take on value NULL.
bool okValue (const std::string &val, bool set=true) const
bool okValue (const std::string &val, bool set=true) const
bool stickyInsert () const
bool stickyInsert () const
 ~Column ()
 ~Column ()

Private Attributes

std::string m_comment
CONTENTS m_contents
std::string m_default
FROM m_from
bool m_isPrimaryKey
 Is this column a primary key?
Tablem_myTable
Tablem_myTable
std::string m_name
bool m_null
 Can this field have the value NULL?
bool m_stickyInsert
Datatypem_type
Datatypem_type

Friends

class rdbModel::XercesBuilder


Detailed Description

rdbModel representation of a(n SQL-like) table description


Member Enumeration Documentation

enum rdbModel::Column::CONTENTS
 

Hints to program in case FROM field is FROMprogram.

Enumeration values:
CONTENTSunspecified 
CONTENTSserviceName 
CONTENTSusername 
CONTENTSinsertTime 
CONTENTSupdateTime 
00039                   {
00040       CONTENTSunspecified = 0,
00041       CONTENTSserviceName = 1,
00042       CONTENTSusername    = 2,
00043       CONTENTSinsertTime   = 3,
00044       CONTENTSupdateTime = 4
00045 
00046     };

enum rdbModel::Column::CONTENTS
 

Hints to program in case FROM field is FROMprogram.

Enumeration values:
CONTENTSunspecified 
CONTENTSserviceName 
CONTENTSusername 
CONTENTSinsertTime 
CONTENTSupdateTime 
00039                   {
00040       CONTENTSunspecified = 0,
00041       CONTENTSserviceName = 1,
00042       CONTENTSusername    = 2,
00043       CONTENTSinsertTime   = 3,
00044       CONTENTSupdateTime = 4
00045 
00046     };

enum rdbModel::Column::FROM
 

Source of value. Note timestamp with value current time should be indicated by contents value CONTENTSupdateTime or (if only upon insert) CONTENTS enterTime

Enumeration values:
FROMdefault 
FROMautoIncrement 
FROMnow 
FROMprogram 
FROMendUser 
00030               {
00031       FROMdefault = 1,          // enduser can override default, however
00032       FROMautoIncrement,
00033       FROMnow,                  // datatype must be timestamp - deprecated
00034       FROMprogram,
00035       FROMendUser
00036     };

enum rdbModel::Column::FROM
 

Source of value. Note timestamp with value current time should be indicated by contents value CONTENTSupdateTime or (if only upon insert) CONTENTS enterTime

Enumeration values:
FROMdefault 
FROMautoIncrement 
FROMnow 
FROMprogram 
FROMendUser 
00030               {
00031       FROMdefault = 1,          // enduser can override default, however
00032       FROMautoIncrement,
00033       FROMnow,                  // datatype must be timestamp - deprecated
00034       FROMprogram,
00035       FROMendUser
00036     };


Constructor & Destructor Documentation

rdbModel::Column::Column Table myTable = 0  )  [inline]
 

00048                              : m_myTable(myTable), m_type(0), 
00049                                m_isPrimaryKey(false) {
00050       m_contents = CONTENTSunspecified;
00051       m_default = std::string("");};

rdbModel::Column::~Column  ) 
 

00011                   {
00012     delete m_type;
00013   }

rdbModel::Column::Column Table myTable = 0  )  [inline]
 

00048                              : m_myTable(myTable), m_type(0), 
00049                                m_isPrimaryKey(false) {
00050       m_contents = CONTENTSunspecified;
00051       m_default = std::string("");};

rdbModel::Column::~Column  ) 
 


Member Function Documentation

Visitor::VisitorState rdbModel::Column::accept Visitor v  ) 
 

Visitor::VisitorState rdbModel::Column::accept Visitor v  ) 
 

00058                                                {
00059 
00060     Visitor::VisitorState state = v->visitColumn(this);
00061     if (state == Visitor::VBRANCHDONE) return Visitor::VCONTINUE;
00062     return state;
00063   }

const std::string& rdbModel::Column::getComment  )  const [inline]
 

00057 {return m_comment;};

const std::string& rdbModel::Column::getComment  )  const [inline]
 

00057 {return m_comment;};

CONTENTS rdbModel::Column::getContentsType  )  const [inline]
 

00089 {return m_contents;}

CONTENTS rdbModel::Column::getContentsType  )  const [inline]
 

00089 {return m_contents;}

Datatype* rdbModel::Column::getDatatype  )  const [inline]
 

00063 {return m_type;};

Datatype* rdbModel::Column::getDatatype  )  const [inline]
 

00063 {return m_type;};

const std::string& rdbModel::Column::getDefault  )  const [inline]
 

00059 {return m_default;}

const std::string& rdbModel::Column::getDefault  )  const [inline]
 

00059 {return m_default;}

Enum* rdbModel::Column::getEnum  )  const
 

Return pointer to Enum object associated with this column (if none, return null pointer).

Enum * rdbModel::Column::getEnum  )  const
 

Return pointer to Enum object associated with this column (if none, return null pointer).

00015 {return m_type->getEnum();}

const std::string& rdbModel::Column::getName  )  const [inline]
 

00056 {return m_name; };

const std::string& rdbModel::Column::getName  )  const [inline]
 

00056 {return m_name; };

FROM rdbModel::Column::getSourceType  )  const [inline]
 

00088 {return m_from;}

FROM rdbModel::Column::getSourceType  )  const [inline]
 

00088 {return m_from;}

const std::string& rdbModel::Column::getTableName  )  const
 

const std::string & rdbModel::Column::getTableName  )  const
 

00017                                               {
00018     return m_myTable->getName();
00019   }

bool rdbModel::Column::interpret const std::string &  interpType,
std::string &  val
 

Handle special literal values, depending loosely on column datatype. Most Column objects won't do any interpretation, but, for example, timestamp-like columns may substitute for "NOW" Return true if any substitution was done

bool rdbModel::Column::interpret const std::string &  interpType,
std::string &  val
 

Handle special literal values, depending loosely on column datatype. Most Column objects won't do any interpretation, but, for example, timestamp-like columns may substitute for "NOW" Return true if any substitution was done

00041                                                                     {
00042     // Currently only interpretation is for timestamp-like columns.
00043     // Value of interpType must be "time" and val must be "NOW".
00044     // In this case, substitute ascii current time
00045     if (interpType.compare(std::string("time")) != 0) return false;
00046 
00047     Datatype::TYPES dtype = m_type->getType();
00048     if ((dtype != Datatype::TYPEdatetime) && 
00049         (dtype != Datatype::TYPEtimestamp)) {
00050       return false;
00051     }
00052     if (val.compare(std::string("NOW")) != 0) return false;
00053 
00054     val = facilities::Timestamp().getString();
00055     return true;
00056   }

bool rdbModel::Column::isAutoIncrement  )  const
 

bool rdbModel::Column::isAutoIncrement  )  const
 

00037                                      {
00038     return (m_from == FROMautoIncrement);
00039   }

bool rdbModel::Column::isCompatible const Column otherCol  )  const
 

Return true if otherCol and this have compatible datatypes.

bool rdbModel::Column::isCompatible const Column otherCol  )  const
 

Return true if otherCol and this have compatible datatypes.

00032                                                         {
00033     return m_type->isCompatible(otherCol->m_type);
00034   }

bool rdbModel::Column::isPrimaryKey  )  const [inline]
 

00084 {return m_isPrimaryKey;}

bool rdbModel::Column::isPrimaryKey  )  const [inline]
 

00084 {return m_isPrimaryKey;}

bool rdbModel::Column::nullAllowed  )  const [inline]
 

Returns true if column may take on value NULL.

00080 { return m_null;}

bool rdbModel::Column::nullAllowed  )  const [inline]
 

Returns true if column may take on value NULL.

00080 { return m_null;}

bool rdbModel::Column::okValue const std::string &  val,
bool  set = true
const
 

See if supplied value meets constraints of column definition

  • val std::string representation of value to be checked
  • set true if value is to be written to column; false if just being used, e.g. in "where" clause

bool rdbModel::Column::okValue const std::string &  val,
bool  set = true
const
 

See if supplied value meets constraints of column definition

  • val std::string representation of value to be checked
  • set true if value is to be written to column; false if just being used, e.g. in "where" clause
00021                                                            {
00022     // auto increment and datetime values are established by rdbms
00023     if (set) {
00024 
00025       if ( (m_from == FROMautoIncrement) || 
00026            (m_from == FROMnow)) return false;
00027     }
00028 
00029     return m_type->okValue(val);
00030   }

bool rdbModel::Column::stickyInsert  )  const [inline]
 

00082 { return m_stickyInsert;}

bool rdbModel::Column::stickyInsert  )  const [inline]
 

00082 { return m_stickyInsert;}


Friends And Related Function Documentation

rdbModel::XercesBuilder [friend]
 


Member Data Documentation

std::string rdbModel::Column::m_comment [private]
 

CONTENTS rdbModel::Column::m_contents [private]
 

std::string rdbModel::Column::m_default [private]
 

FROM rdbModel::Column::m_from [private]
 

bool rdbModel::Column::m_isPrimaryKey [private]
 

Is this column a primary key?

Table* rdbModel::Column::m_myTable [private]
 

Table* rdbModel::Column::m_myTable [private]
 

std::string rdbModel::Column::m_name [private]
 

bool rdbModel::Column::m_null [private]
 

Can this field have the value NULL?

bool rdbModel::Column::m_stickyInsert [private]
 

For multi-insert, does this column normally keep same value for all the inserts?

Datatype* rdbModel::Column::m_type [private]
 

Datatype* rdbModel::Column::m_type [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 19:22:03 2011 for BOSS6.5.5 by  doxygen 1.3.9.1