Reports: Use quickFind.
[online-glom:gwt-glom.git] / src / main / java / org / glom / web / client / OnlineGlomService.java
1 /*
2  * Copyright (C) 2010, 2011 Openismus GmbH
3  *
4  * This file is part of GWT-Glom.
5  *
6  * GWT-Glom is free software: you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * GWT-Glom is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
14  * for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with GWT-Glom.  If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 package org.glom.web.client;
21
22 import java.util.ArrayList;
23
24 import org.glom.web.shared.DataItem;
25 import org.glom.web.shared.DetailsLayoutAndData;
26 import org.glom.web.shared.DocumentInfo;
27 import org.glom.web.shared.Documents;
28 import org.glom.web.shared.NavigationRecord;
29 import org.glom.web.shared.Reports;
30 import org.glom.web.shared.TypedDataItem;
31 import org.glom.web.shared.layout.LayoutGroup;
32
33 import com.google.gwt.user.client.rpc.RemoteService;
34 import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
35
36 @RemoteServiceRelativePath("libGlom")
37 public interface OnlineGlomService extends RemoteService {
38
39         DocumentInfo getDocumentInfo(String documentID, String localeID);
40
41         LayoutGroup getListViewLayout(String documentID, String tableName, final String localeID);
42
43         String getReportHTML(String documentID, String tableName, String reportName, String quickFind, String localeID);
44
45         /**
46          * Retrieves data for a list view table.
47          * 
48          * @param documentID
49          *            identifier for the Glom document
50          * @param tableName
51          *            name of the table in the Glom document or an empty {@link String} ("") to get the layout for the
52          *            default table
53          * @param start
54          *            the start index in the data result set from the SQL query that should be retrieved
55          * @param length
56          *            the number of rows of data to retrieve
57          * @return an {@link ArrayList} of {@link DataItem} arrays that represents the requested data
58          */
59         ArrayList<DataItem[]> getListViewData(String documentID, String tableName, String quickFind, int start, int length);
60
61         /**
62          * Retrieves sorted data for a list view table.
63          * 
64          * @param documentID
65          *            identifier for the Glom document
66          * @param tableName
67          *            name of the table in the Glom document or an empty {@link String} ("") to get the layout for the
68          *            default table
69          * @param start
70          *            the start index in the data result set from the SQL query that should be retrieved
71          * @param length
72          *            the number of rows of data to retrieve
73          * @param sortColumnIndex
74          *            the index of the column to sort
75          * @param ascending
76          *            <code>true</code> if the column should be sorted in ascending order, <code>false</code> if the column
77          *            should be sorted in descending order
78          * @return an {@link ArrayList} of {@link DataItem} arrays that represents the requested data
79          */
80
81         ArrayList<DataItem[]> getSortedListViewData(String documentID, String tableName, String quickFind, int start,
82                         int length, int sortColumnIndex, boolean isAscending);
83
84         /**
85          * Gets a list of Glom documents found in the configured directory.
86          * 
87          * @return an {@link ArrayList<String>} of Glom document titles. If the list is empty, no glom documents were found
88          *         in the configured directory because it's empty or the directory is not configured correctly.
89          */
90         Documents getDocuments();
91
92         /**
93          * Checks if the PostgreSQL authentication has been set for this document.
94          * 
95          * @param documentID
96          *            identifier for the Glom document
97          * @return true if the authentication has been set, false if it hasn't
98          */
99         boolean isAuthenticated(String documentID);
100
101         /**
102          * Checks if the provided PostgreSQL username and password are correct for the specified glom document. If the
103          * information is correct it is saved for future access.
104          * 
105          * @param documentID
106          *            identifier for the Glom document
107          * @param username
108          *            the PostgreSQL username
109          * @param password
110          *            the POstgreSQL password
111          * @return true if username and password are correct, false otherwise
112          */
113         boolean checkAuthentication(String documentID, String username, String password);
114
115         /**
116          * Get a list of reports for the specified table.
117          * 
118          * @param documentID
119          *            identifier for the Glom document
120          * @param tableName
121          *            name of the table in the Glom document.
122          * @param localeID
123          *            The locale for the table titles.
124          * @return The names and titles of the table's reports.
125          */
126         Reports getReportsList(String documentID, String tableName, String localeID);
127
128         /**
129          * Gets data for the details view.
130          * 
131          * @param documentID
132          *            identifier for the Glom document
133          * @param tableName
134          *            name of the table in the Glom document or an empty {@link String} ("") to get the layout for the
135          *            default table
136          * @param primaryKeyValue
137          *            value of the primary key in the specified Glom table to use in the query
138          * @return the result of the SQL query as an array of {@link DataItem}s
139          */
140         DataItem[] getDetailsData(String documentID, String tableName, TypedDataItem primaryKeyValue);
141
142         /**
143          * Gets a {@link DetailsLayoutAndData} object that contains the layout and data of the details view.
144          * 
145          * @param documentID
146          *            identifier for the Glom document
147          * @param tableName
148          *            name of the table in the Glom document or an empty {@link String} ("") to get the layout for the
149          *            default table
150          * @param primaryKeyValue
151          *            value of the primary key in the specified Glom table to use in the query
152          * @return a {@link DetailsLayoutAndData} object for the layout and initial data of the details view.
153          */
154         DetailsLayoutAndData getDetailsLayoutAndData(String documentID, String tableName, TypedDataItem primaryKeyValue,
155                         final String localeID);
156
157         /**
158          * Retrieves data for the related list table with the specified relationship name and foreign key value.
159          * 
160          * @param documentID
161          *            identifier for the Glom document
162          * @param tableName
163          *            name of the table in the Glom document or an empty {@link String} ("") to get the layout for the
164          *            default table
165          * @param relationshipName
166          *            name of the relationship to use for setting up the SQL query
167          * @param start
168          *            the start index in the data result set from the SQL query that should be retrieved
169          * @param length
170          *            the number of rows of data to retrieve
171          * @param foreignKeyValue
172          *            the value of the foreign key
173          * @return an {@link ArrayList} of {@link DataItem} arrays that represents the requested data
174          */
175         ArrayList<DataItem[]> getRelatedListData(String documentID, String tableName, String relationshipName,
176                         TypedDataItem foreignKeyValue, int start, int length);
177
178         /**
179          * Retrieves sorted data for the related list table with the specified relationship name and foreign key value.
180          * 
181          * @param documentID
182          *            identifier for the Glom document
183          * @param tableName
184          *            name of the table in the Glom document or an empty {@link String} ("") to get the layout for the
185          *            default table
186          * @param relationshipName
187          *            name of the relationship to use for setting up the SQL query
188          * @param foreignKeyValue
189          *            the value of the foreign key
190          * @param start
191          *            the start index in the data result set from the SQL query that should be retrieved
192          * @param length
193          *            the number of rows of data to retrieve
194          * @param sortColumnIndex
195          *            the index of the column to sort
196          * @param ascending
197          *            <code>true</code> if the column should be sorted in ascending order, <code>false</code> if the column
198          *            should be sorted in descending order
199          * @return an {@link ArrayList} of {@link DataItem} arrays that represents the requested data
200          */
201         ArrayList<DataItem[]> getSortedRelatedListData(String documentID, String tableName, String relationshipName,
202                         TypedDataItem foreignKeyValue, int start, int length, int sortColumnIndex, boolean ascending);
203
204         /**
205          * Gets the expected row count for the related list table with the specified relationship name and foreign key
206          * value.
207          * 
208          * @param documentID
209          *            identifier for the Glom document
210          * @param tableName
211          *            name of the table in the Glom document or an empty {@link String} ("") to get the layout for the
212          *            default table
213          * @param relationshipName
214          *            name of the relationship to use for setting up the SQL query
215          * @param foreignKeyValue
216          *            the value of the foreign key
217          * @return the expected row count
218          */
219         int getRelatedListRowCount(String documentID, String tableName, String relationshipName,
220                         TypedDataItem foreignKeyValue);
221
222         NavigationRecord getSuitableRecordToViewDetails(String documentID, String tableName, String relationshipName,
223                         TypedDataItem primaryKeyValue);
224
225         String getConfigurationErrorMessage();
226 }