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

Last change on this file since 20639 was 20639, checked in by GarthBraithwaite_STG, 4 months ago

view - first pass at saved query updates.

File size: 22.4 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 type="java.lang.String" value="QueryDefinition"/>
18        </bean>
19        <bean id="queryDefinitionStickyQueryDefinitionSessionName" class="org.ibisph.model.StringHolder">
20                <constructor-arg type="java.lang.String" value="StickyQueryDefinition"/>
21        </bean>
22        <bean id="queryDefinitionUseCurrentUserIfRequestSegmentEquals" class="java.util.ArrayList">
23                <constructor-arg>
24                        <array value-type="java.lang.String">
25                                <value>MyDefinitions</value>
26                                <value>MySavedQueries</value>
27                                <value>MySavedQueryDefinitions</value>
28                        </array>
29                </constructor-arg>
30        </bean>
31
32
33        <!-- S E R V I C E S -->
34        <bean id="queryDefinitionXMLService" class="org.ibisph.querydefinition.service.QueryDefinitionXML">
35                <property name="filePath"           value="query/definition"/>
36                <property name="documentDAOService" ref="commonDocumentDAOService"/>
37        </bean>
38        <bean id="queryDefinitionDefinitionToModuleService" class="org.ibisph.querydefinition.service.QueryDefinitionXMLToQueryModuleXML"/>
39        <bean id="queryDefinitionModuleToDefinitionService" class="org.ibisph.querydefinition.service.QueryModuleXMLToQueryDefinitionXML"/>
40
41        <bean id="queryDefinitionFromHTTPRequestParametersService" class="org.ibisph.web.HTTPRequestParametersToContainerElementService">
42                <description>HTTP REQUEST PARAMS to QD - POSTED - SAVE QUERY DEF</description>
43                <property name="containerElementName" value="QUERY_DEFINITION"/>
44                <property name="HTTPRequestParameterNameToXMLElementNameList">
45                        <list>
46                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="name"/>       <constructor-arg value="NAME"/></bean>
47                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="title"/>      <constructor-arg value="TITLE"/></bean>
48                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="description"/><constructor-arg value="DESCRIPTION"/></bean>
49                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="privateFlag"/><constructor-arg value="PRIVATE_FLAG"/></bean>
50                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="requestPath"/><constructor-arg value="REQUEST_PATH_PREFIX"/></bean>
51                                <bean class="org.ibisph.web.HTTPRequestParameterNameToXMLElementName"><constructor-arg value="configurationPath"/><constructor-arg value="CONFIGURATION_PATH"/></bean>
52                        </list>
53                </property>
54                <property name="stringValidator" ref="commonXSSStringValidator"/>
55                <property name="stringCleaner"   ref="commonXMLStringCleaner"/>
56        </bean>
57
58
59        <!-- X M L   M O D E L S -->
60        <bean id="queryDefinitionModelMapProperties" abstract="true">
61                <property name="modelMapKey"            value="#{queryDefinitionModelMapKey.string}"/>
62                <property name="queryDefinitionService" ref="queryDefinitionXMLService"/>
63                <property name="currentUserService"     ref="commonCurrentUserService"/>
64        </bean>
65
66        <bean id="queryDefinitionsFromHTTPRequestModelMap" 
67                class="org.ibisph.querydefinition.modelmap.QueryDefinitionsFromHTTPRequest" 
68                parent="queryDefinitionModelMapProperties"
69        >
70                <description>
71                        Gets the query definitions name from the request path's last segment
72                        or loads the current logged in/authenticated user's query definitions. 
73                        This model is the main XML model for all the associated QD list
74                        type pages (which includes after a query def save or delete).
75                </description>
76                <property name="modelMapKey" value="#{commonXMLModelMapKey.string}"/>
77                <property name="forceUseCurrentUserIfEquals" ref="queryDefinitionUseCurrentUserIfRequestSegmentEquals"/>
78        </bean>
79
80        <bean id="queryDefinitionFromHTTPRequestModelMap" 
81                class="org.ibisph.querydefinition.modelmap.QueryDefinitionFromHTTPRequest"
82                parent="queryDefinitionModelMapProperties"
83        >
84                <description>
85                        Gets the QD name from the end of the request path/request filename
86                        (last segment).  The QDs container name is then pulled from the next
87                        to last segment of the request URL.  The QD service gets the QD. 
88                        Used for the detail, builder, result, and apply requests.
89                </description>
90                <property name="forceUseCurrentUserIfEquals" ref="queryDefinitionUseCurrentUserIfRequestSegmentEquals"/>
91        </bean>
92
93        <bean id="queryDefinitionQueryModuleFromQueryDefinitionModelMap" class="org.ibisph.querymodule.modelmap.QueryModuleFromQueryDefinition">
94                <description>
95                        QD is passed in via the model map, QM is clean loaded from the service
96                        and the QD's config path.  The QD is then loaded into the QM and
97                        returned.  The QM is the main XML model that is used for the detail,
98                        builder, and result pages.  NOT used for apply criteria.
99                </description>
100                <property name="modelMapKey" value="#{commonXMLModelMapKey.string}"/>
101                <property name="queryDefinitionModelMapKey" value="#{queryDefinitionModelMapKey.string}"/>
102                <property name="queryModuleService"         ref="queryModuleXMLService"/>
103                <property name="queryDefinitionToQueryModuleService" ref="queryDefinitionDefinitionToModuleService"/>
104        </bean>
105
106        <bean id="queryDefinitionQueryModuleToSessionModelMap" class="org.ibisph.web.modelmap.AddHTTPSessionAttributeFromModelMap">
107                <description>
108                        Adds the QM model map to the user's session.  The QM is cached when
109                        builder or result requests are made so that the QM is not needlessly
110                        reloaded and to keep current user selections.  This is used by the
111                        builder and run requests.
112                </description>
113                <property name="modelMapKey"          value="#{commonXMLModelMapKey.string}"/>
114                <property name="sessionAttributeName" value="#{queryModuleSessionName.string}"/>
115        </bean>
116
117        <bean id="queryDefinitionApplyToQueryModuleModelMap" class="org.ibisph.querydefinition.modelmap.QueryDefinitionToQueryModule">
118                <description>
119                        Model processor that supplements the query module selections with
120                        the saved query definition selections.  General rules are 1) check
121                        the model map for a query definition.  If it has one use it. 2) Else
122                        check if sticky definition exists in the session and if so use it.
123                        3) Next try and get the QM from the model map and use.  4) If not
124                        found try get the QM from the session and if found use.  5) Lastly
125                        (nothing) load the QM from the associated QD configuration path.
126                        Use service to load the QD into the QM.
127                </description>
128                <property name="queryDefinitionModelMapKey"          value="#{queryDefinitionModelMapKey.string}"/>
129                <property name="stickyQueryDefinitionSessionName"    value="#{queryDefinitionStickyQueryDefinitionSessionName.string}"/>
130                <property name="queryModuleModelMapKey"              value="#{commonXMLModelMapKey.string}"/>
131                <property name="queryModuleSessionName"              value="#{queryModuleSessionName.string}"/>
132                <property name="queryModuleService"                  ref="queryModuleXMLService"/>
133                <property name="queryDefinitionToQueryModuleService" ref="queryDefinitionDefinitionToModuleService"/>
134        </bean>
135
136        <bean id="queryDefinitionMiscDetailsModelMap" class="org.ibisph.querydefinition.modelmap.MiscQueryDefinitionDetailsFromHTTPRequest">
137                <description>
138                        Adds a session QM title and sticky QD title to the model map so that
139                        the UI can make decisions and display approp actions. 
140                </description>
141                <property name="queryModuleSessionName"           value="#{queryModuleSessionName.string}"/>
142                <property name="queryModuleModelMapKey"           value="#{commonXMLModelMapKey.string}"/>
143                <property name="sessionQueryModuleTitleMapKey"    value="SessionQueryModuleTitle"/>
144                <property name="stickyQueryDefinitionSessionName" value="#{queryDefinitionStickyQueryDefinitionSessionName.string}"/>
145                <property name="stickyQueryDefinitionModelMapKey" value="StickyQueryDefinition"/>
146        </bean>
147
148        <bean id="queryDefinitionAddStickyQueryDefinitionToSessionModelMap" 
149          class="org.ibisph.querydefinition.modelmap.AddStickyQueryDefinitionToSession"
150        >
151                <description>
152                        Used to set the user's "sticky" query definition into their session.
153                </description>
154                <property name="queryDefinitionModelMapKey"       value="#{queryDefinitionModelMapKey.string}"/>
155                <property name="stickyQueryDefinitionSessionName" value="#{queryDefinitionStickyQueryDefinitionSessionName.string}"/>
156        </bean>
157
158
159
160        <!--  C O N T R O L L E R S  -->
161        <bean id="queryDefinitionListController" parent="commonModelMapListController">
162                <description>
163                        Model is the query defs with the view being the standard index/list
164                        Model is the user's query defs or if another use was specified a list
165                        of that user's saved query defs.  The view is the simple alpha list.
166                        The request URL is of the form query/definition/index/simple/[defs name].html
167                </description>
168                <property name="modelMapList">
169                        <list>
170                                <ref bean="queryDefinitionsFromHTTPRequestModelMap"/>
171                        </list>
172                </property>
173                <property name="view" ref="queryDefinitionListView"/>
174                <property name="additionalHTTPResponseHeaders" ref="commonNoCacheHTTPResponseHeaders"/>
175        </bean>
176
177        <bean id="queryDefinitionIndexController" parent="commonModelMapListController">
178                <description>
179                        Model is the query defs with the view being the standard index/list
180                        that contains options to apply criteria, goto the builder page, delete
181                        the selected definition (if defs are the user's defs), and run the
182                        selected def.  The defs name is the request URL's last segment/filename.
183                        If the user is not yet logged in
184                        The request URL is of the form query/definition/index/[defs name].html
185                </description>
186                <property name="modelMapList">
187                        <list>
188                                <ref bean="queryDefinitionsFromHTTPRequestModelMap"/>
189                                <ref bean="queryDefinitionMiscDetailsModelMap"/>
190                        </list>
191                </property>
192                <property name="view" ref="queryDefinitionIndexView"/>
193                <property name="additionalHTTPResponseHeaders" ref="commonNoCacheHTTPResponseHeaders"/>
194        </bean>
195
196        <bean id="queryDefinitionDetailController" parent="commonModelMapListController">
197                <description>
198                        Used for the QD detail reqeust.  The main model map is the QM not
199                        the QD.  This was done because the QD builder and result controllers
200                        use the QM XSLT code which relies on the QM being the primary XML
201                        (both use queryDefinitionQueryModuleFromQueryDefinitionModelMap).
202                        The Misc modelmap contains session QM title (if exists)
203                        and the sticky session QD (if exists). Requests are of the form:
204                        query/definition/detail/[defs name]/[def name].html
205
206                        NOTE: The QM is retrieved and loaded based on the QD QM and NEVER
207                        from the session and it should NEVER be set in the session so that
208                        the apply option can be used. 
209                </description>
210                <property name="modelMapList">
211                        <list>
212                                <ref bean="queryDefinitionFromHTTPRequestModelMap"/>
213
214                                <ref bean="queryDefinitionQueryModuleFromQueryDefinitionModelMap"/>
215                                <ref bean="queryDefinitionMiscDetailsModelMap"/>
216
217                                <ref bean="commonDimensionsModelMap"/>
218                                <ref bean="commonMeasuresModelMap"/>
219                                <ref bean="commonValueTypesModelMap"/>
220                                <ref bean="commonChartsModelMap"/>
221                                <ref bean="commonMapsModelMap"/>
222                        </list>
223                </property>
224                <property name="view" ref="queryDefinitionDetailView"/>
225        </bean>
226
227        <bean id="queryDefinitionBuilderController" parent="commonModelMapListController">
228                <description>
229                        Sets up data needed for the assoc query builder view.  This controller
230                        loads the QD, the associated CLEAN QM, merges the QD into the QM, and
231                        puts the QM into the user's session for later QM type requests.  The
232                        QD's parameters are removed so that the builder has a chance to modify.   
233                        The request URL is of the form query/definition/builder/[defs name]/[def name].html
234                </description>
235                <property name="modelMapList">
236                        <list>
237                                <ref bean="queryDefinitionFromHTTPRequestModelMap"/>
238                                <ref bean="queryDefinitionQueryModuleFromQueryDefinitionModelMap"/>
239                                <ref bean="queryDefinitionQueryModuleToSessionModelMap"/>
240
241                                <ref bean="commonDimensionsModelMap"/>
242                                <ref bean="commonMeasuresModelMap"/>
243                                <ref bean="commonValueTypesModelMap"/>
244                                <ref bean="commonChartsModelMap"/>
245                                <ref bean="commonMapsModelMap"/>
246                        </list>
247                </property>
248                <property name="view" ref="queryBuilderView"/>
249                <property name="additionalHTTPResponseHeaders" ref="commonNoCacheHTTPResponseHeaders"/>
250        </bean>
251
252        <bean id="queryDefinitionResultController" parent="commonModelMapListController">
253                <description>
254                        Sets up data needed for the assoc query result view.  This controller
255                        loads the QD, the associated CLEAN QM, merges the QD into the QM, and
256                        puts the QM into the user's session for later QM type requests. 
257                       
258                        IMPORTANT NOTE: The standard query result view is used which detects
259                        no result and auto submits the query via the standard query result
260                        mechanism.  However since this is the result just run the query
261                        directly which also aids/is required for the contentblock request.
262
263                        The request URL is of the form query/definition/result/[xml file name]/[def name].html
264                </description>
265                <property name="modelMapList">
266                        <list>
267                                <ref bean="queryDefinitionFromHTTPRequestModelMap"/>
268                                <ref bean="queryDefinitionQueryModuleFromQueryDefinitionModelMap"/>
269<ref bean="queryModuleAddIBISQResultModelMap"/>
270                                <ref bean="queryDefinitionQueryModuleToSessionModelMap"/>
271
272                                <ref bean="commonAncillaryValuesModelMap"/>
273                                <ref bean="commonDataSourcesModelMap"/>
274                                <ref bean="commonDimensionsModelMap"/>
275                                <ref bean="commonMeasuresModelMap"/>
276                                <ref bean="commonValueTypesModelMap"/>
277                                <ref bean="commonValueAttributesModelMap"/>
278                                <ref bean="commonChartsModelMap"/>
279                                <ref bean="commonMapsModelMap"/>
280                        </list>
281                </property>
282                <property name="view" ref="queryResultView"/>
283        </bean>
284
285        <bean id="queryDefinitionResultContentBlocksController" parent="queryDefinitionResultController">
286                <description>
287                        Same as Query Definition Result Controller but has the content blocks
288                        XSLT.  This controller is used for saved query ajax requests.
289                </description>
290                <property name="view" ref="queryResultContentBlocksView"/>
291        </bean>
292
293        <bean id="queryDefinitionApplyController" parent="commonModelMapListController">
294                <description>
295                        Get the existing session stored QM, load the URL specified query def,
296                        merge QD into QM and show the builder/qm edit page.  IF the session
297                        has a sticky query def then save this query def to the session.
298                </description>
299                <property name="modelMapList">
300                        <list>
301                                <ref bean="queryDefinitionFromHTTPRequestModelMap"/>
302                                <ref bean="queryDefinitionApplyToQueryModuleModelMap"/>
303                                <ref bean="queryDefinitionAddStickyQueryDefinitionToSessionModelMap"/>
304                        </list>
305                </property>
306                <property name="view" ref="queryBuilderView"/>
307        </bean>
308
309        <bean id="queryDefinitionFromBuilderController" parent="commonModelMapListController">
310                <description>
311                        query/definition/from/builder
312                        The builder has the QM in the session.  Any session selected values
313                        are cleared then the new user selected values from the post are
314                        added.  This new QM is now the main model map that the QD detail page
315                        uses for the selected values section.  The XSLT recognizes that this
316                        is a new def and populates the page with default values.
317                </description>
318                <property name="modelMapList">
319                        <list>
320                                <ref bean="queryModuleDocumentFromSessionModelMap"/>
321                                <ref bean="queryModuleDeleteUserSelectionsModelMap"/>
322                                <ref bean="queryModuleAddUserSelectionsModelMap"/>
323
324                                <ref bean="commonDimensionsModelMap"/>
325                                <ref bean="commonMeasuresModelMap"/>
326                                <ref bean="commonValueTypesModelMap"/>
327                                <ref bean="commonChartsModelMap"/>
328                                <ref bean="commonMapsModelMap"/>
329                        </list>
330                </property>
331                <property name="view" ref="queryDefinitionDetailView"/>
332                <property name="additionalHTTPResponseHeaders" ref="commonNoCacheHTTPResponseHeaders"/>
333        </bean>
334        <bean id="queryDefinitionFromResultController" parent="queryDefinitionFromBuilderController">
335                <description>
336                        query/definition/from/result
337                        Same as the builder version but invoked from the query result page.
338                        Note that this version already has the user's selections so no need
339                        to clear and add.
340                </description>
341                <property name="modelMapList">
342                        <list>
343                                <ref bean="queryModuleDocumentFromSessionModelMap"/>
344
345                                <ref bean="commonDimensionsModelMap"/>
346                                <ref bean="commonMeasuresModelMap"/>
347                                <ref bean="commonValueTypesModelMap"/>
348                                <ref bean="commonChartsModelMap"/>
349                                <ref bean="commonMapsModelMap"/>
350                        </list>
351                </property>
352        </bean>
353
354        <bean id="queryDefinitionSaveController" parent="commonModelMapListController">
355                <description>
356                        query/definition/save/**
357                        Save/create a new QUERY_DEF from QD edit detail page - POSTED HTTP
358                        request data.
359                        Get's the posted detail page's values into a QUERY_DEFINITION model map.
360                        Load the QM selections into the QD
361                        Save the QD to the QDs file
362                        Get the QDs and return the LIST view.
363                </description>
364                <property name="modelMapList">
365                        <list>
366                                <bean class="org.ibisph.web.modelmap.HTTPRequestParametersToXML">
367                                        <description>
368                                                id="queryDefinitionFromHTTRequestParametersModelMap"
369                                                Loads the posted HTTP Request Parameters into a queryDefinition
370                                                XML container element (service has QUERY_DEFINITION root
371                                                root container element specified as well as the http to
372                                                element mappings) which is placed into the model map. 
373                                        </description>
374                                        <property name="HTTPRequestParametersToContainerElementService" ref="queryDefinitionFromHTTPRequestParametersService"/>
375                                        <property name="modelMapKey" value="#{queryDefinitionModelMapKey.string}"/>
376                                </bean>
377                                <bean class="org.ibisph.querydefinition.modelmap.QueryModuleToQueryDefinition">
378                                        <description>
379                                                id="queryDefinitionQueryModuleToQueryDefinitionModelMap"
380                                                Loads the query module selections into the query definition. 
381                                        </description>
382                                        <property name="queryModuleSessionName"     value="#{queryModuleSessionName.string}"/>
383                                        <property name="queryDefinitionModelMapKey" value="#{queryDefinitionModelMapKey.string}"/>
384                                        <property name="queryModuleToQueryDefinitionService" ref="queryDefinitionModuleToDefinitionService"/>
385                                </bean>
386                                <bean id="queryDefinitionToQueryDefinitionsModelMap" 
387                                        class="org.ibisph.querydefinition.modelmap.QueryDefinitionToQueryDefinitions"
388                                        parent="queryDefinitionModelMapProperties"
389                                >
390                                        <description>
391                                                Saves the queryDefinition XML that is found in the
392                                                supplied model map to the user's query definitions. 
393                                                The newly updated query definitions are then returned.
394                                        </description>
395                                        <property name="queryDefinitionModelMapKey" value="#{queryDefinitionModelMapKey.string}"/>
396                                        <property name="modelMapKey"                value="#{commonXMLModelMapKey.string}"/>
397                                </bean>
398                                <ref bean="queryDefinitionMiscDetailsModelMap"/>
399                        </list>
400                </property>
401                <property name="view" ref="queryDefinitionIndexView"/>
402        </bean>
403
404        <bean id="queryDefinitionDeleteController" parent="commonModelMapListController">
405                <description>
406                        Deletes the specified query definition and returns to the definition
407                        list page.  Request are of the form: query/definition/delete/[qd name]
408                </description>
409                <property name="modelMapList">
410                        <list>
411                                <bean id="queryDefinitionDeleteQueryDefinitionFromHTTPRequestModelMap" 
412                                        class="org.ibisph.querydefinition.modelmap.DeleteQueryDefinitionFromHTTPRequest"
413                                        parent="queryDefinitionModelMapProperties"
414                                >
415                                        <description>
416                                                Gets the named/specified QD name from HTTP request path's
417                                                last segment/filename and deletes it from the the user's
418                                                saved query definitions.  The model map then returns the
419                                                new query definitions document sans the removed query def.
420                                        </description>
421                                        <property name="modelMapKey" value="#{commonXMLModelMapKey.string}"/>
422                                </bean>
423                                <ref bean="queryDefinitionMiscDetailsModelMap"/>
424                        </list>
425                </property>
426                <property name="view" ref="queryDefinitionIndexView"/>
427        </bean>
428
429        <bean id="queryDefinitionToggleStickySessionController" class="org.ibisph.web.springmvc.ToggleSessionFlagController">
430                <description>
431                        AJAX handler that sets the user's session sticky flag.  The way this
432                        works is that the detail or list page has a checkbox that when the
433                        user checks/unchecks the sticky query def in the session is either
434                        cleared (unchecked) or set to something (checked).  When the apply
435                        request is made, the selected query defintion in the request is added
436                        to the session under the queryDefinitionStickyQueryDefinitionSessionName.
437                        The query builder model map code then sees that there's a sticky
438                        definition in the session and applys it.
439                </description>
440                <property name="flagSessionName" value="#{queryDefinitionStickyQueryDefinitionSessionName.string}"/>
441                <property name="flagSessionValue">
442                        <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
443                                <property name="targetClass"><value>org.ibisph.util.XMLLib</value></property>
444                                <property name="targetMethod"><value>newNode</value></property>
445                                <property name="arguments">
446                                        <list><value>EMPTY_QUERY_DEFINITION</value></list>
447                                </property>
448                        </bean>
449                </property>
450        </bean>
451
452
453
454        <!--  V I E W S  -->
455        <bean id="queryDefinitionListView" parent="commonXSLTTransformationView">
456                <property name="XSLTPathAndFilename" value="html/query/definition/index/list/ListPage.xslt"/>
457        </bean>
458        <bean id="queryDefinitionIndexView" parent="commonXSLTTransformationView">
459                <property name="XSLTPathAndFilename" value="html/query/definition/index/IndexPage.xslt"/>
460        </bean>
461        <bean id="queryDefinitionDetailView" parent="commonXSLTTransformationView">
462                <property name="XSLTPathAndFilename" value="html/query/definition/detail/DetailPage.xslt"/>
463        </bean>
464
465        <bean id="queryDefinitionDefinitionListRedirectionView" class="org.ibisph.web.springmvc.SimpleClientRedirectionView">
466                <property name="redirectionAddress" value="/query/definition/List.html"/>
467        </bean>
468
469</beans>
Note: See TracBrowser for help on using the repository browser.