Rename the servlet.
[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.libglom.layout.LayoutGroup;
32 import org.glom.web.shared.libglom.layout.LayoutItemPortal;
33
34 import com.google.gwt.user.client.rpc.RemoteService;
35 import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
36
37 @RemoteServiceRelativePath("gwtGlom")
38 public interface OnlineGlomService extends RemoteService {
39
40         /**
41          * Checks if the provided PostgreSQL username and password are correct for the specified glom document. If the
42          * information is correct it is saved for future access.
43          * 
44          * @param documentID
45          *            identifier for the Glom document
46          * @param username
47          *            the PostgreSQL username
48          * @param password
49          *            the POstgreSQL password
50          * @return true if username and password are correct, false otherwise
51          */
52         boolean checkAuthentication(String documentID, String username, String password);
53
54         String getConfigurationErrorMessage();
55
56         /**
57          * Gets data for the details view.
58          * 
59          * @param documentID
60          *            identifier for the Glom document
61          * @param tableName
62          *            name of the table in the Glom document or an empty {@link String} ("") to get the layout for the
63          *            default table
64          * @param primaryKeyValue
65          *            value of the primary key in the specified Glom table to use in the query
66          * @return the result of the SQL query as an array of {@link DataItem}s
67          */
68         DataItem[] getDetailsData(String documentID, String tableName, TypedDataItem primaryKeyValue);
69
70         /**
71          * Gets a {@link DetailsLayoutAndData} object that contains the layout and data of the details view.
72          * 
73          * @param documentID
74          *            identifier for the Glom document
75          * @param tableName
76          *            name of the table in the Glom document or an empty {@link String} ("") to get the layout for the
77          *            default table
78          * @param primaryKeyValue
79          *            value of the primary key in the specified Glom table to use in the query
80          * @return a {@link DetailsLayoutAndData} object for the layout and initial data of the details view.
81          */
82         DetailsLayoutAndData getDetailsLayoutAndData(String documentID, String tableName, TypedDataItem primaryKeyValue,
83                         final String localeID);
84
85         DocumentInfo getDocumentInfo(String documentID, String localeID);
86
87         /**
88          * Gets a list of Glom documents found in the configured directory.
89          * 
90          * @return an {@link ArrayList<String>} of Glom document titles. If the list is empty, no glom documents were found
91          *         in the configured directory because it's empty or the directory is not configured correctly.
92          */
93         Documents getDocuments();
94
95         /**
96          * Retrieves data for a list view table.
97          * 
98          * @param documentID
99          *            identifier for the Glom document
100          * @param tableName
101          *            name of the table in the Glom document or an empty {@link String} ("") to get the layout for the
102          *            default table
103          * @param start
104          *            the start index in the data result set from the SQL query that should be retrieved
105          * @param length
106          *            the number of rows of data to retrieve
107          * @param sortColumnIndex
108          *            the index of the column to sort, or -1 for none.
109          * @param ascending
110          *            <code>true</code> if the column should be sorted in ascending order, <code>false</code> if the column
111          *            should be sorted in descending order
112          * @return an {@link ArrayList} of {@link DataItem} arrays that represents the requested data
113          */
114
115         ArrayList<DataItem[]> getListViewData(String documentID, String tableName, String quickFind, int start, int length,
116                         int sortColumnIndex, boolean isAscending);
117
118         LayoutGroup getListViewLayout(String documentID, String tableName, final String localeID);
119
120         /**
121          * Retrieves data for the related list table with the specified portal and foreign key value.
122          * 
123          * @param documentID
124          *            identifier for the Glom document
125          * @param tableName
126          *            name of the table in the Glom document or an empty {@link String} ("") to get the layout for the
127          *            default table
128          * @param portal
129          *            The portal to use for setting up the SQL query
130          * @param foreignKeyValue
131          *            the value of the foreign key
132          * @param start
133          *            the start index in the data result set from the SQL query that should be retrieved
134          * @param length
135          *            the number of rows of data to retrieve
136          * @param sortColumnIndex
137          *            the index of the column to sort, or -1 for none.
138          * @param ascending
139          *            <code>true</code> if the column should be sorted in ascending order, <code>false</code> if the column
140          *            should be sorted in descending order
141          * @return an {@link ArrayList} of {@link DataItem} arrays that represents the requested data
142          */
143         ArrayList<DataItem[]> getRelatedListData(String documentID, String tableName, LayoutItemPortal portal,
144                         TypedDataItem foreignKeyValue, int start, int length, int sortColumnIndex, boolean ascending);
145
146         /**
147          * Gets the expected row count for the related list table with the specified portal and foreign key value.
148          * 
149          * @param documentID
150          *            identifier for the Glom document
151          * @param tableName
152          *            name of the table in the Glom document or an empty {@link String} ("") to get the layout for the
153          *            default table
154          * @param portal
155          *            The portal to use for setting up the SQL query
156          * @param foreignKeyValue
157          *            the value of the foreign key
158          * @return the expected row count
159          */
160         int getRelatedListRowCount(String documentID, String tableName, LayoutItemPortal portal,
161                         TypedDataItem foreignKeyValue);
162
163         String getReportHTML(String documentID, String tableName, String reportName, String quickFind, String localeID);
164
165         /**
166          * Get a list of reports for the specified table.
167          * 
168          * @param documentID
169          *            identifier for the Glom document
170          * @param tableName
171          *            name of the table in the Glom document.
172          * @param localeID
173          *            The locale for the table titles.
174          * @return The names and titles of the table's reports.
175          */
176         Reports getReportsList(String documentID, String tableName, String localeID);
177
178         // TODO: Do this only on the server side, or only on the client side?
179         NavigationRecord getSuitableRecordToViewDetails(String documentID, String tableName, LayoutItemPortal portal,
180                         TypedDataItem primaryKeyValue);
181
182         /**
183          * Checks if the PostgreSQL authentication has been set for this document.
184          * 
185          * @param documentID
186          *            identifier for the Glom document
187          * @return true if the authentication has been set, false if it hasn't
188          */
189         boolean isAuthenticated(String documentID);
190 }