Changeset 206


Ignore:
Timestamp:
05/30/11 15:17:48 (13 years ago)
Author:
hozdoba
Message:
 
Location:
XMLIO_V2/dev/dev_rv/src/xmlio
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/dev_rv/src/xmlio/attribute_map.cpp

    r173 r206  
    1616       
    1717      ///-------------------------------------------------------------- 
    18        
     18 
     19      void CAttributeMap::clearAllAttributes(void) 
     20      { 
     21         typedef std::pair<StdString, CAttribute*> StdStrAttPair; 
     22         SuperClassMap::const_iterator it = SuperClassMap::begin(), end = SuperClassMap::end(); 
     23         for (; it != end; it++) 
     24         { 
     25            const StdStrAttPair & att = *it; 
     26            if (!att.second->isEmpty()) 
     27               att.second->clear(); 
     28         } 
     29      } 
     30 
     31      //--------------------------------------------------------------- 
     32 
    1933      bool CAttributeMap::hasAttribute(const StdString & key) const 
    2034      {  
  • XMLIO_V2/dev/dev_rv/src/xmlio/attribute_map.hpp

    r180 r206  
    3333            void setAttributes(const CAttributeMap * const _parent); 
    3434 
     35            void clearAllAttributes(void); 
     36 
    3537            /// Destructeur /// 
    3638            virtual ~CAttributeMap(void); 
  • XMLIO_V2/dev/dev_rv/src/xmlio/data_treatment.cpp

    r188 r206  
    5959         this->solveAllOperation(); 
    6060 
     61         // Nettoyage de l'arborescence 
     62         CContext::CleanTree(); 
     63 
    6164         //std::cout << "(Message temporaire) fin traitement sorties ..." << std::endl; 
    6265      } 
  • XMLIO_V2/dev/dev_rv/src/xmlio/node/context.cpp

    r202 r206  
    277277   } 
    278278 
     279   //---------------------------------------------------------------- 
     280 
     281   void CContext::CleanTree(void) 
     282   { 
     283#define DECLARE_NODE(Name_, name_) C##Name_##Group::ClearAllAttributes(); 
     284#define DECLARE_NODE_PAR(Name_, name_) 
     285#include "node_type.conf" 
     286   } 
    279287   ///--------------------------------------------------------------- 
    280288 
  • XMLIO_V2/dev/dev_rv/src/xmlio/node/context.hpp

    r202 r206  
    8686         /// Autres méthodes statiques /// 
    8787         static void ShowTree(StdOStream & out = std::clog); 
     88         static void CleanTree(void); 
    8889 
    8990         /// Test /// 
  • XMLIO_V2/dev/dev_rv/src/xmlio/node/field.cpp

    r205 r206  
    66 
    77#include "node_type.hpp" 
    8  
     8#include "calendar_util.hpp" 
    99#include "xios_manager.hpp" 
    1010 
     
    1919      , grid(), file() 
    2020      , freq_operation(), freq_write() 
     21      , last_Write(), last_operation() 
    2122      , foperation() 
    2223      , data() 
     
    2829      , grid(), file() 
    2930      , freq_operation(), freq_write() 
     31      , last_Write(), last_operation() 
    3032      , foperation() 
    3133      , data() 
     
    4244   //---------------------------------------------------------------- 
    4345 
     46   bool CField::updateDataServer 
     47      (const date::CDate & currDate, const std::deque<ARRAY(double, 1)> storedClient) 
     48   { 
     49      if ((*last_operation + freq_operation) >= currDate) 
     50      { 
     51         ARRAY_CREATE(input, double, 1, [0]); 
     52         this->grid->inputFieldServer(storedClient, input); 
     53         (*this->foperation)(input); 
     54         *last_operation = currDate; 
     55      } 
     56 
     57      if ((*last_Write + freq_write) >= currDate) 
     58      { 
     59         *last_Write = currDate; 
     60         return (true); 
     61      } 
     62      return (false); 
     63   } 
     64 
     65   //---------------------------------------------------------------- 
     66 
    4467   void CField::setRelFile(const boost::shared_ptr<CFile> _file) 
    4568   {  
     
    132155   //---------------------------------------------------------------- 
    133156    
    134    ARRAY(double, 1)  CField::getData(void) const 
     157   ARRAY(double, 1) CField::getData(void) const 
    135158   { 
    136159      return(this->data); 
     160   } 
     161 
     162   //---------------------------------------------------------------- 
     163 
     164   boost::shared_ptr<date::CDate> CField::getLastWriteDate(void) const 
     165   { 
     166      return(this->last_Write); 
     167   } 
     168 
     169   //---------------------------------------------------------------- 
     170 
     171   boost::shared_ptr<date::CDate> CField::getLastOperationDate(void) const 
     172   { 
     173      return(this->last_operation); 
    137174   } 
    138175 
     
    173210      using namespace date; 
    174211        
    175       StdString id = this->getBaseFieldReference()->getId();       
     212      StdString id = this->getBaseFieldReference()->getId(); 
     213      boost::shared_ptr<CContext> _context = 
     214         CObjectFactory::GetObject<CContext>(CObjectFactory::GetCurrentContextId()); 
     215 
    176216      if (operation.isEmpty() || freq_op.isEmpty() || this->file->output_freq.isEmpty()) 
    177217      { 
     
    187227         this->freq_write     = 
    188228             CDuration::FromString(this->file->output_freq.getValue()); 
     229         this->last_Write     = boost::shared_ptr<xmlioserver::date::CDate> 
     230                        (new date::CDate(_context->getCalendar()->getInitDate())); 
     231         this->last_operation = boost::shared_ptr<xmlioserver::date::CDate> 
     232                        (new date::CDate(_context->getCalendar()->getInitDate())); 
    189233         this->foperation     = 
    190234             boost::shared_ptr<func::CFunctor>(new CInstant(this->data)); 
     
    194238         this->freq_operation = CDuration::FromString(freq_op.getValue()); 
    195239         this->freq_write     = CDuration::FromString(this->file->output_freq.getValue()); 
     240         this->last_Write     = boost::shared_ptr<xmlioserver::date::CDate> 
     241                        (new date::CDate(_context->getCalendar()->getInitDate())); 
     242         this->last_operation = boost::shared_ptr<xmlioserver::date::CDate> 
     243                        (new date::CDate(_context->getCalendar()->getInitDate())); 
    196244          
    197245#define DECLARE_FUNCTOR(MType, mtype)              \ 
  • XMLIO_V2/dev/dev_rv/src/xmlio/node/field.hpp

    r188 r206  
    88#include "functor_type.hpp" 
    99#include "duration.hpp" 
     10#include "date.hpp" 
    1011#include "declare_group.hpp" 
    1112 
     
    6263         const date::CDuration & getFreqOperation(void) const; 
    6364         const date::CDuration & getFreqWrite(void) const; 
    64           
     65 
     66         boost::shared_ptr<date::CDate> getLastWriteDate(void) const; 
     67         boost::shared_ptr<date::CDate> getLastOperationDate(void) const; 
     68 
    6569         boost::shared_ptr<func::CFunctor> getFieldOperation(void) const; 
    6670          
     
    7175         /// Mutateur /// 
    7276         void setRelFile(const boost::shared_ptr<CFile> _file); 
     77 
     78         template <StdSize N> 
     79            inline bool updateData 
     80               (const date::CDate & currDate, const ARRAY(double, N) data); 
     81 
     82         bool updateDataServer 
     83               (const date::CDate & currDate, const std::deque<ARRAY(double, 1)> storedClient); 
    7384 
    7485      public : 
     
    103114 
    104115         date::CDuration freq_operation, freq_write; 
     116 
     117         boost::shared_ptr<date::CDate>    last_Write, last_operation; 
    105118         boost::shared_ptr<func::CFunctor> foperation; 
    106119          
     
    121134      void CGroupTemplate<CField, CFieldGroup, CFieldAttributes>::solveRefInheritance(void); 
    122135 
     136   ///----------------------------------------------------------------- 
     137} // namespace xmlioserver 
     138 
     139#include "grid.hpp" 
     140 
     141namespace xmlioserver { 
     142namespace tree { 
     143 
     144   template <StdSize N> 
     145      bool CField::updateData(const date::CDate & currDate, const ARRAY(double, N) data) 
     146   { 
     147      if ((*last_operation + freq_operation) >= currDate) 
     148      { 
     149         ARRAY_CREATE(input, double, 1, [0]); 
     150         input->resize(boost::extents[data->size()]); 
     151         this->grid->inputField(data, input); 
     152         (*this->foperation)(input); 
     153         *last_operation = currDate; 
     154      } 
     155       
     156      if ((*last_Write + freq_write) >= currDate) 
     157      { 
     158         *last_Write = currDate; 
     159         return (true); 
     160      } 
     161      return (false); 
     162   }; 
     163 
     164} // namespace tree 
    123165} // namespace xmlioserver 
    124166 
  • XMLIO_V2/dev/dev_rv/src/xmlio/object_template.hpp

    r172 r206  
    4444         virtual void solveDescInheritance(const CAttributeMap * const parent = 0); 
    4545 
     46         /// Traitement statique /// 
     47         static void ClearAllAttributes(void); 
     48 
    4649         /// Accesseur statique /// 
    4750         static std::vector<boost::shared_ptr<DerivedType> > & 
  • XMLIO_V2/dev/dev_rv/src/xmlio/object_template_impl.hpp

    r173 r206  
    117117   } 
    118118 
     119   //--------------------------------------------------------------- 
     120 
     121   template <class T> 
     122      void CObjectTemplate<T>::ClearAllAttributes(void) 
     123   { 
     124      std::vector<boost::shared_ptr<T> > & avect = 
     125         CObjectTemplate<T>::GetAllVectobject(CObjectFactory::GetCurrentContextId()); 
     126      typename std::vector<boost::shared_ptr<T> >::iterator 
     127            it = avect.begin(), end = avect.end(); 
     128 
     129      for (;it != end; it++) 
     130      { 
     131         CAttributeMap & amap = **it; 
     132         amap.clearAllAttributes(); 
     133      } 
     134   } 
     135 
    119136   ///-------------------------------------------------------------- 
    120137 
Note: See TracChangeset for help on using the changeset viewer.