source: trunk/grails-app/controllers/dbnp/query/SimpleQueryController.groovy @ 642

Last change on this file since 642 was 642, checked in by vinlud, 11 years ago

changes so far, not working yet

  • Property svn:keywords set to Date Author Rev
File size: 5.2 KB
Line 
1/**
2 * SimpleQueryController Controler
3 *
4 * Description of my controller
5 *
6 * @author  vincent@ludden.nl
7 * @since       20100526
8 * @package     dbnp.query
9 *
10 * Revision information:
11 * $Rev: 642 $
12 * $Author: vinlud $
13 * $Date: 2010-07-02 08:16:19 +0000 (vr, 02 jul 2010) $
14 */
15package dbnp.query
16
17import dbnp.data.*
18import dbnp.studycapturing.Study
19import org.compass.core.engine.SearchEngineQueryParseException
20import dbnp.rest.common.CommunicationManager
21
22class SimpleQueryController {
23        /**
24         * index closure
25         */
26    def index = {
27      redirect( action:'pages')
28    }
29
30    def searchableService
31
32    def pagesFlow = {
33
34        // Starting simpleQuery flow, initialize variables
35        onStart {
36            println "Starting webflow simpleQuery"
37            flow.search_term            = null
38            flow.page                   = 0
39                        flow.pages = [
40                [title: 'Query'],
41                                [title: 'Results']
42                        ]
43            }
44
45        // Render the query page and handle its actions
46                query {
47                        render(view: "/simpleQuery/mainPage")
48
49            onRender {
50              println "Rendering mainPage"
51              flow.operators              = ['>', '=', '<']
52              flow.showFirstRowCompounds  = true
53              flow.species = Term.findAll()
54              flow.page = 1
55            }
56
57            on("search") {
58              println "Search!"
59              if (!params.search_term.trim()) {
60                return [:]
61              }
62            }.to "searching"
63
64            on("refresh").to "query"
65                }
66
67
68        // Searching for results
69        searching {
70           action {
71              println "Starting search..."
72              def searchResult
73              def searchGscfResult
74              def searchSamResult
75
76              // TODO: walk parameters, remove empty entries
77
78              // Map parameters
79              flow.search_term            = params.search_term
80              flow.search_sa_compounds    = params.sa_compound
81              flow.search_sa_operators    = params.sa_operator
82              flow.search_sa_values       = params.sa_value
83              flow.search_tt_genepaths    = params.sa_genepath
84              flow.search_tt_regulations  = params.sa_regulation
85
86              // Check to see how parameters are being handled
87              if (flow.search_sa_compounds.class.getName() == "java.lang.String") {
88                println "string"
89              } else {
90                println "array of size " + flow.search_sa_compounds.length
91              }
92
93              // Search the keyword with the Searchable plugin
94              try {
95                searchGscfResult = searchableService.search(flow.search_term)
96              } catch (SearchEngineQueryParseException ex) {
97                println ex
98                return [parseException: true]
99              }
100
101              // Map non-study objects to Studies
102              // ... todo when the plugin works and I can see the output
103
104              // Search in the SAM module
105              println "checking compounds"
106              if (flow.search_sa_compounds) {
107                objComs = new CommunicationManager()
108
109                if (flow.search_sa_compounds.class.getName() == "java.lang.String") {
110                  searchSamResult = objComs.getSAMStudies(flow.search_sa_compounds, flow.search_sa_values, flow.search_sa_operators)
111                } else {
112                  def tmpSamResult
113                  flow.search_sa_compounds.each {
114                    obj, i -> println " ${i}: ${obj}" // objComs.getSAMStudies()
115                    tmpSamResult = objComs.getSAMStudies(flow.search_sa_compounds[i], flow.search_sa_values[i], flow.search_sa_operators[i])
116
117                    // Combine each search
118                    // searchSamResult = Merge(searchSamResult, tmpSamResult)
119                    searchSamResult = tmpSamResult
120                  };
121                }
122              }
123
124             // Merge the results of all searches
125             /*
126             if (searchGscfResult.size() > 0) {
127                searchResult = Merge(searchSamResult, searchGscfResult)
128             }             
129             */
130
131
132             // Save the results in the flow
133             flow.listStudies = searchGscfResult.results
134
135           }
136
137          on("error").to "query"
138          on("success").to "results"
139        }
140
141
142        // Render result page including search options
143        results {
144            render(view: "/simpleQuery/mainPage")
145
146            onRender {
147              println "Rendering resultPage"
148              flow.page = 2
149
150              // TODO: Fix the showing of entered data, broke with plugin develeopment
151              if (flow.search_sa_compounds) {
152                if (flow.search_sa_compounds.class.getName() == "java.lang.String") {
153                  flow.resultString = true
154                } else {
155                  flow.resultString = false
156                }
157              }
158            }
159
160            on("reset") {
161              flow.search_term            = null
162              flow.studies                = null
163              flow.search_sa_compounds    = null
164              flow.search_sa_values       = null
165              flow.search_tt_genepaths    = null
166              flow.search_tt_regulations  = null
167              println "Resetting query flow"
168            }.to "query"
169
170            on("search").to "searching"
171            on("refresh").to "results"
172        }
173
174    }
175}
Note: See TracBrowser for help on using the repository browser.