source: TI02-CSML/trunk/services/3rdParty/pywps-1.0.0/pywps/Wps/append.py @ 2194

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI02-CSML/trunk/services/3rdParty/pywps-1.0.0/pywps/Wps/append.py@2194
Revision 2194, 6.3 KB checked in by lawrence, 13 years ago (diff)

Adding various specs and 3rd party code of interest for the CSML
services development.

Line 
1#!/usr/bin/python
2"""
3This module generates XML file with DescribeProcess response of WPS
4"""
5# Author:       Jachym Cepicky
6#               http://les-ejk.cz
7# Lince:
8#
9# Web Processing Service implementation
10# Copyright (C) 2006 Jachym Cepicky
11#
12# This program is free software; you can redistribute it and/or modify
13# it under the terms of the GNU General Public License as published by
14# the Free Software Foundation; either version 2 of the License, or
15# (at your option) any later version.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20# GNU General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, write to the Free Software
24# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
25
26import wpsexceptions
27
28class Append:
29    """
30    Appending XML nodes or their attributes
31    """
32    def Node(self,document,childNode,parentNode,Elements,Values):
33        """
34        Append Node to parent node
35
36        document    - for creating nodes or comments
37        childNode   - node, which is tryed to be clipped
38        parentNode  - node, to which the child node should be appended
39        Elements    - structure with ogs's configuration
40        Values      - Structure with settings values, which should
41                      corespond to Elements structure
42        """
43        try: 
44            try:
45                ns = Elements[childNode]['ns']
46            except KeyError:
47                ns = ""
48            node = document.createElement("%s%s" % (ns,childNode))
49            if type(Values) == type({}):
50               str = Values[childNode]
51               if type(str) != type(''):
52                   str = repr(str)
53               text = document.createTextNode(str)
54            else:
55                text = document.createTextNode(eval("Values.%s" % (childNode)))
56            node.appendChild(text)
57            parentNode.appendChild(node)
58        except (KeyError,AttributeError):
59            # is this option mandatory?
60            try:
61                if Elements[childNode]['oblig'] == 'm':
62                    # try to create the node with default value
63                    try:
64                        ns = Elements[childNode]['ns']
65                    except KeyError:
66                        ns = ""
67                    try:
68                        node = document.createElement("%s%s" % (ns,childNode))
69                        str = Elements[childNode]['default']
70                        if type(str) != type(''):
71                            str = repr(str)
72                        text = document.createTextNode(str)
73                        node.appendChild(text)
74                        parentNode.appendChild(node)
75                    # error - OK, giving up
76                    except KeyError:
77                        parentNode.appendChild(
78                                document.createComment(
79                """===== !! Mandatory element `%s' not set. Verify your conf. file !! =====""" % \
80                                    (childNode)))
81
82                # let it be else
83                else:
84                    try:
85                        node = document.createElement("%s%s" % (ns,childNode))
86                        str = Elements[childNode]['default']
87                        if type(str) != type(''):
88                            str = repr(str)
89                        text = document.createTextNode(str)
90                        node.appendChild(text)
91                        parentNode.appendChild(node)
92                    except KeyError:
93                        parentNode.appendChild(document.createComment("Element %s not set" % (childNode)))
94            except KeyError, what:
95                parentNode.appendChild(document.createComment("Element %s not set" % (childNode)))
96        return
97   
98    def Attribute(self,document,attributeName,Node,Attributes,Values):
99        """
100        Try to add attribute, to node
101
102        document    -   XML document, for creating comments and attributes
103                        and nodes
104        attributeName - e.g. "version"
105        Node        -   node name, e.g. <Execute>
106        Attributes  -   ogc's configuration structure
107        Values      -   coresponding settings values
108        """
109        try: 
110            try:
111                ns = Attributes[attributeName]['ns']
112            except KeyError:
113                ns = ""
114            if type(Values) == type({}):
115                Node.setAttribute(attributeName,Values[attributeName])
116            else:
117                Node.setAttribute("%s%s" % (ns,attributeName),eval("Values.%s" % (attributeName)))
118        except (KeyError,AttributeError),e:
119            # is this option mandatory?
120            try:
121                if Attributes[attributeName]['oblig'] == 'm':
122                    # try to create the node with default value
123                    try:
124                        ns = Attributes[attributeName]['ns']
125                    except KeyError:
126                        ns = ""
127                    try:
128                        Node.setAttribute("%s%s" % \
129                                (ns,attributeName),Attributes[attributeName]['default'])
130                    # error - OK, giving up
131                    except (KeyError, AttributeError), what:
132                        Node.appendChild(document.createComment(
133                "===== !! Mandatory attribute `%s' not set. Verify your conf. file !! =====" %\
134                        (attributeName)))
135
136                # else try to determine the default value, or let it just be
137                else:
138                    try:
139                        try:
140                            ns = Attributes[attributeName]['ns']
141                        except KeyError:
142                            ns = ""
143                        Node.setAttribute("%s%s" % \
144                                (ns,attributeName),Attributes[attributeName]['default'])
145                    except (KeyError,AttributeError):
146                        Node.appendChild(document.createComment("Attribute %s not set" % \
147                                    (attributeName)))
148            except (KeyError, AttributeError), what:
149                Node.appendChild(document.createComment("Attribute %s not set" % (Attribute)))
150        return
Note: See TracBrowser for help on using the repository browser.