source: main/trunk/ibisph-view/src/main/webapp/WEB-INF/config/spring/query-definition.xml @ 20981

Last change on this file since 20981 was 20981, checked in by GarthBraithwaite_STG, 2 months ago

java, view - added comments to injecting webapp base request path into QM xinclude processing. Updated the include xslt code to centralized handling and better docs.

File size: 17.5 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2
3<!--
4        IBIS-PH View System's "query" module related Spring properties. These
5        properties are all specific to the "query" type requests and include
6        query specific resources, controllers, and views.
7-->
8
9<beans default-lazy-init="false" default-autowire="no"
10        xmlns="http://www.springframework.org/schema/beans"
11        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
12        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"
13>
14
15        <!--  M O D E L S   /   C O N T R O L L E R   R E S O R U C E S -->
16        <bean id="queryDefinitionModelMapKey" class="org.ibisph.model.StringHolder">
17                <constructor-arg value="QueryDefinition"/>
18        </bean>
19        <bean id="queryDefinitionUseCurrentUserIfRequestSegmentEquals" class="java.util.ArrayList">
20                <constructor-arg>
21                        <array value-type="java.lang.String">
22                                <value>MyDefinitions</value>
23                                <value>MySavedQueries</value>
24                                <value>MySavedQueryDefinitions</value>
25                        </array>
26                </constructor-arg>
27        </bean>
28
29
30        <!-- S E R V I C E S -->
31        <bean id="queryDefinitionXMLService" class="org.ibisph.querydefinition.service.QueryDefinitionXML">
32                <property name="filePath"           value="query/definition"/>
33                <property name="documentDAOService" ref="commonDocumentDAOService"/>
34        </bean>
35        <bean id="queryDefinitionDefinitionToModuleService" class="org.ibisph.querydefinition.service.QueryDefinitionXMLToQueryModuleXML"/>
36        <bean id="queryDefinitionModuleToDefinitionService" class="org.ibisph.querydefinition.service.QueryModuleXMLToQueryDefinitionXML"/>
37
38        <bean id="queryDefinitionFromHTTPRequestParametersService" class="org.ibisph.web.HTTPRequestParametersToContainerElementService">
39                <description>HTTP REQUEST PARAMS to QD - POSTED - SAVE QUERY DEF</description>
40                <property name="containerElementName" value="QUERY_DEFINITION"/>
41                <property name="HTTPRequestParameterNameToXMLElementNameList">
42                        <list>
43                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="name"/>       <constructor-arg value="NAME"/></bean>
44                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="title"/>      <constructor-arg value="TITLE"/></bean>
45                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="description"/><constructor-arg value="DESCRIPTION"/></bean>
46                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="privateFlag"/><constructor-arg value="PRIVATE_FLAG"/></bean>
47                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="requestPath"/><constructor-arg value="REQUEST_PATH_PREFIX"/></bean>
48                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="configurationPath"/><constructor-arg value="CONFIGURATION_PATH"/></bean>
49                        </list>
50                </property>
51                <property name="stringValidator" ref="commonXSSStringValidator"/>
52                <property name="stringCleaner"   ref="commonXMLStringCleaner"/>
53        </bean>
54
55
56        <!-- X M L   M O D E L S -->
57        <bean id="queryDefinitionModelMapProperties" abstract="true">
58                <property name="modelMapKey"            value="#{queryDefinitionModelMapKey.string}"/>
59                <property name="queryDefinitionService" ref="queryDefinitionXMLService"/>
60                <property name="currentUserService"     ref="commonCurrentUserService"/>
61        </bean>
62
63        <bean id="queryDefinitionsFromHTTPRequestModelMap" 
64                class="org.ibisph.querydefinition.modelmap.QueryDefinitionsFromHTTPRequest" 
65                parent="queryDefinitionModelMapProperties"
66        >
67                <description>
68                        Gets the query definitions name from the request path's last segment
69                        or loads the current logged in/authenticated user's query definitions. 
70                        This model is the main XML model for all the associated QD list
71                        type pages (which includes after a query def save or delete).
72                </description>
73                <property name="modelMapKey" value="#{commonXMLModelMapKey.string}"/>
74                <property name="forceUseCurrentUserIfEquals" ref="queryDefinitionUseCurrentUserIfRequestSegmentEquals"/>
75        </bean>
76
77        <bean id="queryDefinitionFromHTTPRequestModelMap" 
78                class="org.ibisph.querydefinition.modelmap.QueryDefinitionFromHTTPRequest"
79                parent="queryDefinitionModelMapProperties"
80        >
81                <description>
82                        Gets the QD name from the end of the request path/request filename
83                        (last segment).  The QDs container name is then pulled from the next
84                        to last segment of the request URL.  The QD service gets the QD. 
85                        Used for the detail, builder, result, and apply requests.
86                </description>
87                <property name="forceUseCurrentUserIfEquals" ref="queryDefinitionUseCurrentUserIfRequestSegmentEquals"/>
88        </bean>
89
90        <bean id="queryDefinitionQueryModuleFromQueryDefinitionModelMap" class="org.ibisph.querymodule.modelmap.QueryModuleFromQueryDefinition">
91                <description>
92                        QD is passed in via the model map, QM is clean loaded from the service
93                        and the QD's config path.  The QD is then loaded into the QM and
94                        returned.  The QM is the main XML model that is used for the detail,
95                        builder, and result pages.  NOT used for apply criteria.
96                </description>
97                <property name="modelMapKey" value="#{commonXMLModelMapKey.string}"/>
98                <property name="queryDefinitionModelMapKey" value="#{queryDefinitionModelMapKey.string}"/>
99                <property name="queryModuleService"         ref="queryModuleXMLService"/>
100                <property name="queryDefinitionToQueryModuleService" ref="queryDefinitionDefinitionToModuleService"/>
101        </bean>
102
103        <bean id="queryDefinitionQueryModuleToSessionModelMap" class="org.ibisph.web.modelmap.AddHTTPSessionAttributeFromModelMap">
104                <description>
105                        Adds the QM model map to the user's session.  The QM is cached when
106                        builder or result requests are made so that the QM is not needlessly
107                        reloaded and to keep current user selections.  This is used by the
108                        builder and run requests.
109                </description>
110                <property name="modelMapKey"          value="#{commonXMLModelMapKey.string}"/>
111                <property name="sessionAttributeName" value="#{queryModuleSessionName.string}"/>
112        </bean>
113
114        <bean id="queryDefinitionMiscDetailsModelMap" class="org.ibisph.querydefinition.modelmap.MiscQueryDefinitionDetailsFromHTTPRequest">
115                <description>
116                        Adds a session QM title and sticky QD title to the model map so that
117                        the UI can make decisions and display approp actions. 
118                </description>
119                <property name="queryModuleSessionName"           value="#{queryModuleSessionName.string}"/>
120                <property name="queryModuleModelMapKey"           value="#{commonXMLModelMapKey.string}"/>
121                <property name="sessionQueryModuleTitleMapKey"    value="SessionQueryModuleTitle"/>
122<!--
123                <property name="stickyQueryDefinitionSessionName" value="#{queryStickyDefinitionDefinitionSessionName.string}"/>
124                <property name="stickyQueryDefinitionModelMapKey" value="StickyQueryDefinition"/>
125-->
126        </bean>
127
128
129        <!--  C O N T R O L L E R S  -->
130        <bean id="queryDefinitionListController" parent="commonModelMapListController">
131                <description>
132                        Model is the query defs with the view being the standard index/list
133                        Model is the user's query defs or if another use was specified a list
134                        of that user's saved query defs.  The view is the simple alpha list.
135                        The request URL is of the form query/definition/index/simple/[defs name].html
136                </description>
137                <property name="modelMapList">
138                        <list>
139                                <ref bean="queryDefinitionsFromHTTPRequestModelMap"/>
140                        </list>
141                </property>
142                <property name="view" ref="queryDefinitionListView"/>
143                <property name="additionalHTTPResponseHeaders" ref="commonNoCacheHTTPResponseHeaders"/>
144        </bean>
145
146        <bean id="queryDefinitionIndexController" parent="commonModelMapListController">
147                <description>
148                        Model is the query defs with the view being the standard index/list
149                        that contains options to apply criteria, goto the builder page, delete
150                        the selected definition (if defs are the user's defs), and run the
151                        selected def.  The defs name is the request URL's last segment/filename.
152                        If the user is not yet logged in
153                        The request URL is of the form query/definition/index/[defs name].html
154                </description>
155                <property name="modelMapList">
156                        <list>
157                                <ref bean="queryDefinitionsFromHTTPRequestModelMap"/>
158                                <ref bean="queryDefinitionMiscDetailsModelMap"/>
159                        </list>
160                </property>
161                <property name="view" ref="queryDefinitionIndexView"/>
162                <property name="additionalHTTPResponseHeaders" ref="commonNoCacheHTTPResponseHeaders"/>
163        </bean>
164
165        <bean id="queryDefinitionDetailController" parent="commonModelMapListController">
166                <description>
167                        Used for the QD detail reqeust.  The main model map is the QM not
168                        the QD.  This was done because the QD builder and result controllers
169                        use the QM XSLT code which relies on the QM being the primary XML
170                        (both use queryDefinitionQueryModuleFromQueryDefinitionModelMap).
171
172                        NOTE: The QM is retrieved and loaded based on the QD QM and NEVER
173                        from the session and it should NEVER be set in the session so that
174                        the apply option can be used. 
175                </description>
176                <property name="modelMapList">
177                        <list>
178                                <ref bean="queryDefinitionFromHTTPRequestModelMap"/>
179
180                                <ref bean="queryDefinitionQueryModuleFromQueryDefinitionModelMap"/>
181
182                                <ref bean="commonMeasuresModelMap"/>
183                                <ref bean="commonValueTypesModelMap"/>
184                        </list>
185                </property>
186                <property name="view" ref="queryDefinitionDetailView"/>
187        </bean>
188
189        <bean id="queryDefinitionBuilderController" parent="commonModelMapListController">
190                <description>
191                        Sets up data needed for the assoc query builder view.  This controller
192                        loads the QD, the associated CLEAN QM, merges the QD into the QM, and
193                        puts the QM into the user's session for later QM type requests.  The
194                        QD's parameters are removed so that the builder has a chance to modify.   
195                        The request URL is of the form query/definition/builder/[defs name]/[def name].html
196                </description>
197                <property name="modelMapList">
198                        <list>
199                                <ref bean="queryDefinitionFromHTTPRequestModelMap"/>
200                                <ref bean="queryDefinitionQueryModuleFromQueryDefinitionModelMap"/>
201                                <ref bean="queryDefinitionQueryModuleToSessionModelMap"/>
202
203                                <ref bean="commonMeasuresModelMap"/>
204                                <ref bean="commonValueTypesModelMap"/>
205                        </list>
206                </property>
207                <property name="view" ref="queryBuilderView"/>
208                <property name="additionalHTTPResponseHeaders" ref="commonNoCacheHTTPResponseHeaders"/>
209        </bean>
210
211        <bean id="queryDefinitionResultController" parent="commonModelMapListController">
212                <description>
213                        Sets up data needed for the assoc query result view.  This controller
214                        loads the QD, the associated CLEAN QM, merges the QD into the QM, and
215                        puts the QM into the user's session for later QM type requests. 
216                       
217                        IMPORTANT NOTE: The standard query result view is used which detects
218                        no result and auto submits the query via the standard query result
219                        mechanism.  However since this is the result just run the query
220                        directly which also aids/is required for the contentblock request.
221
222                        The request URL is of the form query/definition/result/[xml file name]/[def name].html
223                </description>
224                <property name="modelMapList">
225                        <list>
226                                <ref bean="queryDefinitionFromHTTPRequestModelMap"/>
227                                <ref bean="queryDefinitionQueryModuleFromQueryDefinitionModelMap"/>
228                                <ref bean="queryModuleAddIBISQResultModelMap"/>
229                                <ref bean="queryDefinitionQueryModuleToSessionModelMap"/>
230
231                                <ref bean="commonAncillaryValuesModelMap"/>
232                                <ref bean="commonDataSourcesModelMap"/>
233                                <ref bean="commonMeasuresModelMap"/>
234                                <ref bean="commonValueTypesModelMap"/>
235                                <ref bean="commonValueAttributesModelMap"/>
236                        </list>
237                </property>
238                <property name="view" ref="queryResultView"/>
239        </bean>
240
241        <bean id="queryDefinitionResultContentBlocksController" parent="queryDefinitionResultController">
242                <description>
243                        Same as Query Definition Result Controller but has the content blocks
244                        XSLT.  This controller is used for saved query ajax requests.
245                </description>
246                <property name="view" ref="queryResultContentBlocksView"/>
247        </bean>
248
249        <bean id="queryDefinitionFromBuilderController" parent="commonModelMapListController">
250                <description>
251                        query/definition/from/builder
252                        The builder has the QM in the session.  Any session selected values
253                        are cleared then the new user selected values from the post are
254                        added.  This new QM is now the main model map that the QD detail page
255                        uses for the selected values section.  The XSLT recognizes that this
256                        is a new def and populates the page with default values.
257                </description>
258                <property name="modelMapList">
259                        <list>
260                                <ref bean="queryModuleDocumentFromSessionModelMap"/>
261                                <ref bean="queryModuleDeleteUserSelectionsModelMap"/>
262                                <ref bean="queryModuleAddUserSelectionsModelMap"/>
263
264                                <ref bean="commonMeasuresModelMap"/>
265                                <ref bean="commonValueTypesModelMap"/>
266                        </list>
267                </property>
268                <property name="view" ref="queryDefinitionDetailView"/>
269                <property name="additionalHTTPResponseHeaders" ref="commonNoCacheHTTPResponseHeaders"/>
270        </bean>
271        <bean id="queryDefinitionFromResultController" parent="queryDefinitionFromBuilderController">
272                <description>
273                        query/definition/from/result
274                        Same as the builder version but invoked from the query result page.
275                        Note that this version already has the user's selections so no need
276                        to clear and add.
277                </description>
278                <property name="modelMapList">
279                        <list>
280                                <ref bean="queryModuleDocumentFromSessionModelMap"/>
281
282                                <ref bean="commonMeasuresModelMap"/>
283                                <ref bean="commonValueTypesModelMap"/>
284                        </list>
285                </property>
286        </bean>
287
288        <bean id="queryDefinitionSaveController" parent="commonModelMapListController">
289                <description>
290                        query/definition/save/**
291                        Save/create a new QUERY_DEF from QD edit detail page - POSTED HTTP
292                        request data.
293                        Get's the posted detail page's values into a QUERY_DEFINITION model map.
294                        Load the QM selections into the QD
295                        Save the QD to the QDs file
296                        Get the QDs and return the LIST view.
297                </description>
298                <property name="modelMapList">
299                        <list>
300                                <bean class="org.ibisph.web.modelmap.HTTPRequestParametersToXML">
301                                        <description>
302                                                id="queryDefinitionFromHTTRequestParametersModelMap"
303                                                Loads the posted HTTP Request Parameters into a queryDefinition
304                                                XML container element (service has QUERY_DEFINITION root
305                                                root container element specified as well as the http to
306                                                element mappings) which is placed into the model map. 
307                                        </description>
308                                        <property name="HTTPRequestParametersToContainerElementService" ref="queryDefinitionFromHTTPRequestParametersService"/>
309                                        <property name="modelMapKey" value="#{queryDefinitionModelMapKey.string}"/>
310                                </bean>
311                                <bean class="org.ibisph.querydefinition.modelmap.QueryModuleToQueryDefinition">
312                                        <description>
313                                                id="queryDefinitionQueryModuleToQueryDefinitionModelMap"
314                                                Loads the query module selections into the query definition. 
315                                        </description>
316                                        <property name="queryModuleSessionName"     value="#{queryModuleSessionName.string}"/>
317                                        <property name="queryDefinitionModelMapKey" value="#{queryDefinitionModelMapKey.string}"/>
318                                        <property name="queryModuleToQueryDefinitionService" ref="queryDefinitionModuleToDefinitionService"/>
319                                </bean>
320                                <bean id="queryDefinitionToQueryDefinitionsModelMap" 
321                                        class="org.ibisph.querydefinition.modelmap.QueryDefinitionToQueryDefinitions"
322                                        parent="queryDefinitionModelMapProperties"
323                                >
324                                        <description>
325                                                Saves the queryDefinition XML that is found in the
326                                                supplied model map to the user's query definitions. 
327                                                The newly updated query definitions are then returned.
328                                        </description>
329                                        <property name="queryDefinitionModelMapKey" value="#{queryDefinitionModelMapKey.string}"/>
330                                        <property name="modelMapKey"                value="#{commonXMLModelMapKey.string}"/>
331                                </bean>
332                                <ref bean="queryDefinitionMiscDetailsModelMap"/>
333                        </list>
334                </property>
335                <property name="view" ref="queryDefinitionIndexView"/>
336        </bean>
337
338        <bean id="queryDefinitionDeleteController" parent="commonModelMapListController">
339                <description>
340                        Deletes the specified query definition and returns to the definition
341                        list page.  Request are of the form: query/definition/delete/[qd name]
342                </description>
343                <property name="modelMapList">
344                        <list>
345                                <bean id="queryDefinitionDeleteQueryDefinitionFromHTTPRequestModelMap" 
346                                        class="org.ibisph.querydefinition.modelmap.DeleteQueryDefinitionFromHTTPRequest"
347                                        parent="queryDefinitionModelMapProperties"
348                                >
349                                        <description>
350                                                Gets the named/specified QD name from HTTP request path's
351                                                last segment/filename and deletes it from the the user's
352                                                saved query definitions.  The model map then returns the
353                                                new query definitions document sans the removed query def.
354                                        </description>
355                                        <property name="modelMapKey" value="#{commonXMLModelMapKey.string}"/>
356                                </bean>
357                                <ref bean="queryDefinitionMiscDetailsModelMap"/>
358                        </list>
359                </property>
360                <property name="view" ref="queryDefinitionIndexView"/>
361        </bean>
362
363
364        <!--  V I E W S  -->
365        <bean id="queryDefinitionListView" parent="commonXSLTTransformationView">
366                <property name="XSLTPathAndFilename" value="html/query/definition/index/list/ListPage.xslt"/>
367        </bean>
368        <bean id="queryDefinitionIndexView" parent="commonXSLTTransformationView">
369                <property name="XSLTPathAndFilename" value="html/query/definition/index/IndexPage.xslt"/>
370        </bean>
371        <bean id="queryDefinitionDetailView" parent="commonXSLTTransformationView">
372                <property name="XSLTPathAndFilename" value="html/query/definition/detail/DetailPage.xslt"/>
373        </bean>
374
375</beans>
Note: See TracBrowser for help on using the repository browser.