TerraLib 4.1
E:/Projetos_Primeiro_Semestre_2012/TerraView/terralib/src/terralib/kernel/TeAttribute.h
Go to the documentation of this file.
00001 /************************************************************************************
00002 TerraLib - a library for developing GIS applications.
00003 Copyright © 2001-2007 INPE and Tecgraf/PUC-Rio.
00004 
00005 This code is part of the TerraLib library.
00006 This library is free software; you can redistribute it and/or
00007 modify it under the terms of the GNU Lesser General Public
00008 License as published by the Free Software Foundation; either
00009 version 2.1 of the License, or (at your option) any later version.
00010 
00011 You should have received a copy of the GNU Lesser General Public
00012 License along with this library.
00013 
00014 The authors reassure the license terms regarding the warranties.
00015 They specifically disclaim any warranties, including, but not limited to,
00016 the implied warranties of merchantability and fitness for a particular purpose.
00017 The library provided hereunder is on an "as is" basis, and the authors have no
00018 obligation to provide maintenance, support, updates, enhancements, or modifications.
00019 In no event shall INPE and Tecgraf / PUC-Rio be held liable to any party for direct,
00020 indirect, special, incidental, or consequential damages arising out of the use
00021 of this library and its documentation.
00022 *************************************************************************************/
00026 #ifndef  __TERRALIB_INTERNAL_ATTRIBUTE_H
00027 #define  __TERRALIB_INTERNAL_ATTRIBUTE_H
00028 
00029 #include "TeDefines.h"
00030 #include "TeDataTypes.h"
00031 #include "TeTime.h"
00032 
00038 enum TeMeasurementScale 
00039 { ORDINAL, NOMINAL, RATIO, INTERVAL, CYCLIC, PROBABILITY, FUZZY };
00040 
00044 struct TL_DLL TeAttributeRep
00045 {
00046            string                           name_;                
00047            TeAttrDataType  type_;                      
00048            int                                         numChar_;   
00049            int                                         decimals_; 
00050            bool                             isPrimaryKey_;        
00051            bool                             isAutoNumber_;        
00052            bool            null_;                                 
00053            string                           defaultValue_;        
00054            int                                         epsgCode_;            
00055 
00057            TeAttributeRep():
00058                       name_(""),
00059                       type_(TeSTRING),
00060                       numChar_(0),
00061                       decimals_(0),
00062                       isPrimaryKey_(false),
00063                       isAutoNumber_(false),
00064                       null_(true),
00065                       defaultValue_(""),
00066                       epsgCode_(-1)
00067                       {}
00068 
00070            TeAttributeRep(const string& name):
00071                       name_(name),
00072                       type_(TeSTRING),
00073                       numChar_(0),
00074                       decimals_(0),
00075                       isPrimaryKey_(false),
00076                       isAutoNumber_(false),
00077                       null_(true),
00078                       defaultValue_(""),
00079                       epsgCode_(-1)
00080                       {}
00081 
00083            TeAttributeRep& operator= ( const TeAttributeRep& at )
00084            {
00085                       if ( this != &at )
00086                       {          
00087                                  name_ = at.name_;
00088                                  type_ = at.type_;
00089                                  numChar_ = at.numChar_;
00090                                  decimals_ = at.decimals_;
00091                                  isPrimaryKey_ = at.isPrimaryKey_;
00092                                  isAutoNumber_ = at.isAutoNumber_;
00093                                  null_ = at.null_;
00094                                  defaultValue_ = at.defaultValue_;
00095                                  epsgCode_ = at.epsgCode_;
00096                       }
00097                       return *this;
00098            }
00099 
00101            bool operator== ( const TeAttributeRep& at )
00102            {
00103                       return (name_==at.name_ && type_ == at.type_
00104                                  && numChar_ == at.numChar_ && decimals_ == at.decimals_ &&
00105             isPrimaryKey_ == at.isPrimaryKey_ && 
00106                                  isAutoNumber_ == at.isAutoNumber_ && 
00107                                  null_ == at.null_ && defaultValue_ == at.defaultValue_ && epsgCode_ == at.epsgCode_);
00108            }
00109 
00111            bool       operator< (const TeAttributeRep& at) const 
00112            {return (name_ < at.name_);}     
00113 };
00114 
00118 struct TL_DLL TeAttribute
00119 {
00120            TeAttributeRep        rep_;                 
00121            string     semantic_;                       
00122            string     unit_;                                      
00123            TeMeasurementScale  scale_;      
00124 
00125            // for RATIO data sets
00126            string                                      minValue_; 
00127            string                                      maxValue_; 
00128 
00129            // for NOMINAL or ORDINAL data sets
00130            vector<string>                   validValueList_; 
00131 
00132            // for INTERVAL data sets (??)
00133            string                                      origin_;   
00134            string                                      interval_; 
00135 
00136            string                                      dateTimeFormat_;      
00137            string                                      indicatorAM_;                    
00138            string                                      indicatorPM_;                    
00139            string                                      dateSeparator_;                  
00140            string                                      timeSeparator_;                  
00141            TeChronon                        dateChronon_;                    
00142 
00144            TeAttribute():
00145                       rep_                             (TeAttributeRep()),
00146                       dateTimeFormat_       ("DsMsYYYYsHHsmmsSS"), 
00147                       indicatorAM_          ("AM"),
00148                       indicatorPM_          ("PM"),
00149                       dateSeparator_        ("/"),
00150                       timeSeparator_        (":"), 
00151                       dateChronon_    (TeSECOND)
00152                       {}
00153 
00154            TeAttribute& operator= ( const TeAttribute& at )
00155            {
00156                       if ( this != &at )
00157                       {
00158                                  rep_ = at.rep_;
00159                                  semantic_ = at.semantic_;
00160                                  unit_ = at.unit_;
00161                                  scale_ = at.scale_;
00162                                  minValue_ = at.minValue_;
00163                                  maxValue_ = at.maxValue_;
00164                                  validValueList_ = at.validValueList_;
00165                                  origin_ = at.origin_;
00166                                  interval_ = at.interval_;
00167                                  dateTimeFormat_ = at.dateTimeFormat_;
00168                                  indicatorAM_ = at.indicatorAM_;
00169                                  indicatorPM_ = at.indicatorPM_;
00170                                  dateSeparator_ = at.dateSeparator_;
00171                                  timeSeparator_ = at.timeSeparator_;
00172                                  dateChronon_ = at.dateChronon_;
00173                       }
00174 
00175                       return *this;
00176            }
00177 };
00178 
00182 struct TL_DLL TeProperty
00183 {
00184            TeAttribute                      attr_;                
00185     string                       value_;               
00186 };
00187 
00189 typedef vector<TeProperty> TePropertyVector;
00190 
00192 typedef vector<TeAttributeRep>  TeAttributeRepList;
00193 
00195 typedef vector<TeAttribute>                 TeAttributeList;
00196 
00198 typedef vector< pair<TeAttributeRep, TeStatisticType> > TeGroupingAttr;
00199 
00200 #endif
00201 
00202 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines