xref: /aoo41x/main/unoxml/source/dom/entity.cxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #include <entity.hxx>
29 
30 #include <string.h>
31 
32 
33 namespace DOM
34 {
35 
36     CEntity::CEntity(CDocument const& rDocument, ::osl::Mutex const& rMutex,
37             xmlEntityPtr const pEntity)
38         : CEntity_Base(rDocument, rMutex,
39             NodeType_ENTITY_NODE, reinterpret_cast<xmlNodePtr>(pEntity))
40         , m_aEntityPtr(pEntity)
41     {
42     }
43 
44     bool CEntity::IsChildTypeAllowed(NodeType const nodeType)
45     {
46         switch (nodeType) {
47             case NodeType_ELEMENT_NODE:
48             case NodeType_PROCESSING_INSTRUCTION_NODE:
49             case NodeType_COMMENT_NODE:
50             case NodeType_TEXT_NODE:
51             case NodeType_CDATA_SECTION_NODE:
52             case NodeType_ENTITY_REFERENCE_NODE:
53                 return true;
54             default:
55                 return false;
56         }
57     }
58 
59     /**
60     For unparsed entities, the name of the notation for the entity.
61     */
62     OUString SAL_CALL CEntity::getNotationName() throw (RuntimeException)
63     {
64         OSL_ENSURE(false,
65                 "CEntity::getNotationName: not implemented (#i113683#)");
66         return OUString();
67     }
68 
69     /**
70     The public identifier associated with the entity, if specified.
71     */
72     OUString SAL_CALL CEntity::getPublicId() throw (RuntimeException)
73     {
74         ::osl::MutexGuard const g(m_rMutex);
75 
76         OUString aID;
77         if(m_aEntityPtr != NULL)
78         {
79             aID = OUString((sal_Char*)m_aEntityPtr->ExternalID, strlen((char*)m_aEntityPtr->ExternalID), RTL_TEXTENCODING_UTF8);
80         }
81         return aID;
82     }
83 
84     /**
85     The system identifier associated with the entity, if specified.
86     */
87     OUString SAL_CALL CEntity::getSystemId() throw (RuntimeException)
88     {
89         ::osl::MutexGuard const g(m_rMutex);
90 
91         OUString aID;
92         if(m_aEntityPtr != NULL)
93         {
94             aID = OUString((sal_Char*)m_aEntityPtr->SystemID, strlen((char*)m_aEntityPtr->SystemID), RTL_TEXTENCODING_UTF8);
95         }
96         return aID;
97     }
98     OUString SAL_CALL CEntity::getNodeName()throw (RuntimeException)
99     {
100         ::osl::MutexGuard const g(m_rMutex);
101 
102        OUString aName;
103         if (m_aNodePtr != NULL)
104         {
105             const xmlChar* xName = m_aNodePtr->name;
106             aName = OUString((sal_Char*)xName, strlen((char*)xName), RTL_TEXTENCODING_UTF8);
107         }
108         return aName;
109     }
110     OUString SAL_CALL CEntity::getNodeValue() throw (RuntimeException)
111     {
112         return OUString();
113     }
114 }
115