source: cats/SCHEMAcat/trunk/urn.org.isocat.schemacat.access.data/access/schemaMetadata.dpml @ 4569

Last change on this file since 4569 was 4569, checked in by andmor, 10 years ago

Added endpoint to SINK a schema metadata field.
Added endpoint to SOURCE the available licenses.

File size: 13.2 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<sequence debug="false">
3    <sloot-debug>
4        <request>
5            <verb>SINK</verb>
6            <identifier>res:/debug/org.isocat.schemacat.access.data.schema.metadata.unresolved-arguments.xml</identifier>
7            <argument name="primary">arg:arguments</argument>
8        </request>
9    </sloot-debug>
10    <!-- resolve the references in arg:arguments -->
11    <request assignment="arguments">
12        <identifier>active:sloot.dpml.resolve-arguments</identifier>
13        <argument name="primary">arg:arguments</argument>
14    </request>
15    <request assignment="user">
16        <!-- requesting scratch:user in here seems expire this response -->
17        <header name="exclude-dependencies">
18            <literal type="boolean">true</literal>
19        </header>
20        <identifier>scratch:user</identifier>
21    </request>
22    <sloot-debug>
23        <request>
24            <verb>SINK</verb>
25            <identifier>res:/debug/org.isocat.schemacat.access.data.schema.metadata.resolved-arguments.xml</identifier>
26            <argument name="primary">
27                <request>
28                    <identifier>active:saxonSerialize</identifier>
29                    <argument name="operand">this:arguments</argument>
30                    <argument name="operator">
31                        <literal type="xml">
32                            <serialize>
33                                <omit-declaration>yes</omit-declaration>
34                                <method>text</method>
35                                <mimeType>text/plain</mimeType>
36                            </serialize>
37                        </literal>
38                    </argument>
39                </request>
40            </argument>
41        </request>
42        <log>
43            <level>INFO</level>
44            <message>
45                <literal type="string">[access.data] Schema metadata accessor verb: [%1] with arguments:&#10;[&#10;%2]</literal>
46            </message>
47            <param>arg:verb</param>
48            <param>this:arguments</param>
49        </log>
50    </sloot-debug>
51    <switch assignment="response">
52        <cond method="identity">
53            <request>
54                <identifier>active:sloot.xpath2</identifier>
55                <argument name="operand">arg:verb</argument>
56                <argument name="operator">
57                    <literal type="string">boolean(.='NEW')</literal>
58                </argument>
59            </request>
60        </cond>
61        <then>
62            <sequence></sequence>
63        </then>
64        <cond method="identity">
65            <request>
66                <identifier>active:sloot.xpath2</identifier>
67                <argument name="operand">arg:verb</argument>
68                <argument name="operator">
69                    <literal type="string">boolean(.='EXISTS')</literal>
70                </argument>
71            </request>
72        </cond>
73        <then>
74            <sequence></sequence>
75        </then>
76        <cond method="identity">
77            <request>
78                <identifier>active:sloot.xpath2</identifier>
79                <argument name="operand">arg:verb</argument>
80                <argument name="operator">
81                    <literal type="string">boolean(.='SINK')</literal>
82                </argument>
83            </request>
84        </cond>
85        <then>
86            <if>
87                <cond>
88                    <request>
89                        <identifier>arg:schemaMetadataFragment</identifier>
90                        <verb>EXISTS</verb>
91                    </request>
92                </cond>
93                <then>
94                    <sequence>
95                        <request assignment="response">
96                            <header name="exclude-dependencies">
97                                <literal type="boolean">true</literal>
98                            </header>
99                            <identifier>active:org.basex.query</identifier>
100                            <argument name="operator">
101                                <literal type="xml">
102                                    <query xmlns:sc="http://www.isocat.org/ns/schemacat">
103                                        if(prefix-from-QName(node-name($schemaMetadataFragment)) eq 'sc')
104                                        then
105                                            for $metadataField in $schemaMetadataFragment/*
106                                            return
107                                                if(prefix-from-QName(node-name($metadataField)) eq 'sc')
108                                                then
109                                                    if (not(exists($schemaID)) or $schemaID eq '')
110                                                    then
111                                                        error(xs:QName('sc:metadataFieldSchemaIdNotSupplied'),'ERROR updating schema metadata field: schema ID not supplied!')
112                                                    else
113                                                        if(/sc:schema[@xml:id = $schemaID]/*/name() = $metadataField/name())
114                                                        then
115                                                            (db:output(element sc:response {attribute success {'true'}, element sc:written-data {$metadataField} }),
116                                                                replace node /sc:schema[@xml:id = $schemaID]/*[name() eq $metadataField/name()] with $metadataField)
117                                                        else
118                                                            (db:output(element sc:response {attribute success {'true'}, element sc:written-data {$metadataField} }),
119                                                                insert node $metadataField into /sc:schema[@xml:id = $schemaID])       
120                                                                else error(xs:QName('sc:metadataFieldNamespaceError'),'ERROR updating schema metadata field: supplied namespace prefix in metadata fragment field is not "sc".')
121                                            else error(xs:QName('sc:metadataFragmentNamespaceError'),'ERROR updating schema metadata field: supplied namespace prefix in metadata fragment is not "sc".')
122                                    </query>
123                                </literal>
124                            </argument>
125                            <argument name="schemaID">arg:id</argument>
126                            <argument name="schemaMetadataFragment">arg:schemaMetadataFragment</argument>
127                        </request>
128                        <request>
129                            <identifier>active:cutGoldenThread</identifier>
130                            <argument name="id">schemaMetadataCache</argument>
131                        </request>
132                        <request>
133                            <identifier>active:cutGoldenThread</identifier>
134                            <argument name="id">pagedSchemasListCache</argument>
135                        </request>
136                        <request>
137                            <identifier>active:cutGoldenThread</identifier>
138                            <argument name="id">schemasCache</argument>
139                        </request>
140                        <sloot-debug>
141                            <log>
142                                <level>INFO</level>
143                                <message>
144                                    <literal type="string">[access.data] [%1] modified [%2] for schema with ID: [%3].&#xA;[&#xA;%4&#xA;]</literal>
145                                </message>
146                                <param>
147                                    <request>
148                                        <identifier>active:xpath2</identifier>
149                                        <argument name="operand">scratch:user</argument>
150                                        <argument name="operator">
151                                            <literal type="string">string(/sc:user/@xml:id)</literal>
152                                        </argument>
153                                    </request>
154                                </param>
155                                <param>
156                                    <request>
157                                        <identifier>active:xpath2</identifier>
158                                        <argument name="operand">arg:schemaMetadataFragment</argument>
159                                        <argument name="operator">
160                                            <literal type="string">/json/*[1]/name()</literal>
161                                        </argument>
162                                    </request>
163                                </param>
164                                <param>arg:id</param>
165                                <param>
166                                    <request>
167                                        <identifier>response-string</identifier>
168                                        <verb>TRANSREPT</verb>
169                                        <representation>java.lang.String</representation>
170                                        <argument name="primary">this:response</argument>
171                                    </request>
172                                </param>
173                            </log>
174                            <request>
175                                <verb>SINK</verb>
176                                <identifier>res:/debug/org.isocat.schemacat.access.data.schema.matadataField.sink.response.xml</identifier>
177                                <argument name="primary">this:response</argument>
178                            </request>
179                        </sloot-debug>
180                    </sequence>
181                </then>
182                <else>
183                    <throw>
184                        <id>
185                            <literal type="string">NK_INPUT_ARGS_NOT_COMPLETE</literal>
186                        </id>
187                        <message>
188                            <literal type="string">org.isocat.schemacat.access.data.schema.matadataField.sink: field not supplied!</literal>
189                        </message>
190                    </throw>
191                </else>
192            </if>
193        </then>
194        <cond method="identity">
195            <request>
196                <identifier>active:sloot.xpath2</identifier>
197                <argument name="operand">arg:verb</argument>
198                <argument name="operator">
199                    <literal type="string">boolean(.='SOURCE')</literal>
200                </argument>
201            </request>
202        </cond>
203        <then>
204            <sequence>
205                <log>
206                    <level>INFO</level>
207                    <message>
208                        <literal type="string">[access.data] [%1] requested schema metadata with id: [%2]</literal>
209                    </message>
210                    <param>
211                        <request>
212                            <identifier>active:xpath2</identifier>
213                            <argument name="operand">this:user</argument>
214                            <argument name="operator">
215                                <literal type="string">string(/sc:user/@xml:id)</literal>
216                            </argument>
217                        </request>
218                    </param>
219                    <param>arg:id</param>
220                </log>
221                <request assignment="response">
222                    <header name="exclude-dependencies">
223                        <literal type="boolean">true</literal>
224                    </header>
225                    <identifier>active:org.basex.query</identifier>
226                    <argument name="operator">
227                        <literal type="xml">
228                            <query xmlns:sc="http://www.isocat.org/ns/schemacat">
229                                copy $schema := /sc:schema[@xml:id=$args//id]
230                                modify ( if(exists($schema/sc:license)) then replace node $schema/sc:license with /sc:licenses/sc:license[@xml:id eq $schema/sc:license/@ref] else () )
231                                return $schema
232                            </query>
233                        </literal>
234                    </argument>
235                    <argument name="args">this:arguments</argument>
236                </request>
237            </sequence>
238        </then>
239    </switch>
240    <request>
241        <identifier>active:attachGoldenThread</identifier>
242        <argument name="id">schemaMetadataCache</argument>
243    </request>
244    <sloot-debug>
245        <log>
246            <level>INFO</level>
247            <message>
248                <literal type="string">[access.data] Schema metadata accessor response:&#xA;[&#xA;%1&#xA;]</literal>
249            </message>
250            <param>
251                <request>
252                    <identifier>response-string</identifier>
253                    <verb>TRANSREPT</verb>
254                    <representation>java.lang.String</representation>
255                    <argument name="primary">this:response</argument>
256                </request>
257            </param>
258        </log>
259        <request>
260            <verb>SINK</verb>
261            <identifier>res:/debug/org.isocat.schemacat.access.data.schema.metadata.result.xml</identifier>
262            <argument name="primary">this:response</argument>
263        </request>
264    </sloot-debug>
265</sequence>
Note: See TracBrowser for help on using the repository browser.