src/terralib/xml/Module.cpp
Go to the documentation of this file.
1 /* Copyright (C) 2008 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file terralib/xml/Module.cpp
22 
23  \brief This singleton defines the TerraLib XML module entry.
24  */
25 
26 // TerraLib
27 #include "../core/logger/Logger.h"
28 #include "../common/TerraLib.h"
29 #include "../core/translator/Translator.h"
30 #include "../xerces/ReaderFactory.h"
31 #include "../xerces/WriterFactory.h"
32 #include "Config.h"
33 #include "Exception.h"
34 #include "Module.h"
35 
36 // Xerces-C++
37 #include <xercesc/util/PlatformUtils.hpp>
38 #include <xercesc/util/XMLString.hpp>
39 
41 static bool m_initialized(false);
42 
43 
45 {
49  };
50 
51 // initialize TerraLib singleton
53 }
54 
56 {
58 }
59 
61 {
62  if(m_initialized)
63  return;
64 
65  try
66  {
68  }
69  catch(const xercesc::XMLException& e)
70  {
71  char* exceptMesg = xercesc::XMLString::transcode(e.getMessage());
72 
73  std::string m = TE_TR("Error during Xerces initialization. Exception messages is: ");
74  m += exceptMesg;
75 
76  xercesc::XMLString::release(&exceptMesg);
77 
78  throw Exception(m);
79  }
80 
81  // it initializes the reader factory based on Xerces
84 
85  TE_LOG_INFO(TE_TR("TerraLib XML module initialized!"));
86 
87  m_initialized = true;
88 }
89 
91 {
92  if(!m_initialized)
93  return;
94 
95  // it finalizes the reader factory based on Xerces
98 
99  try
100  {
101  xercesc::XMLPlatformUtils::Terminate();
102  }
103  catch(const xercesc::XMLException& e)
104  {
105  char* exceptMesg = xercesc::XMLString::transcode(e.getMessage());
106 
107  std::string m = TE_TR("Error during Xerces finalization. Exception messages is: ");
108  m += exceptMesg;
109 
110  xercesc::XMLString::release(&exceptMesg);
111 
112  throw Exception(m);
113  }
114 
115  TE_LOG_INFO(TE_TR("TerraLib XML module finalized!"));
116 
117  m_initialized = false;
118 }
#define TE_XML_MODULE_NAME
This singleton defines the TerraLib XML module entry.
Base exception class for plugin module.
#define TE_TR(message)
It marks a string in order to get translated.
Definition: Translator.h:242
static void initialize()
This is the initialize function for the TerraLib XML module.
#define TE_LOG_INFO(message)
Use this tag in order to log a message to the TerraLib default logger with the INFO level...
Definition: Logger.h:315
static void initialize()
It initializes the factory: it will be registered in the abstract factory WriterFactory.
const te::xml::Module & sm_module
static void initialize()
It initializes the factory: it will be registered in the abstract factory ReaderFactory.
static bool m_initialized(false)
static Module & getInstance()
It returns a reference to the singleton instance.
Module()
The singleton constructor is not callable outside the class.
static void finalize()
It finalizes the factory: it will be destroyed and will be unregistered from the abstract factory Rea...
void Initialize()
An exception class for the XML module.
void remove(const std::string &moduleName)
It removes the module entry identified by the given name.
Configuration flags for the XML API of TerraLib.
void add(const Module &m)
It registers the module in the TerraLib Platform.
static void finalize()
This is the cleanup function for the TerraLib XML module.
This internal structure is used to model the basic information about a TerraLib module.
static void finalize()
It finalizes the factory: it will be destroyed and will be unregistered from the abstract factory Wri...
This singleton defines the TerraLib XML module entry.