DataItemTest: Test the date type too, and improve the asserts.
[online-glom:gwt-glom.git] / ChangeLog
1 2012-12-02  Murray Cumming  <murrayc@murrayc.com>
2
3         DataItemTest: Test the date type too, and improve the asserts.
4
5         * src/test/java/org/glom/web/shared/DataItemTest.java:
6         Add testdate(). See the comment about the awkward server-side-only
7         Date API.
8
9 2012-12-02  Murray Cumming  <murrayc@murrayc.com>
10
11         DetailsPlace: Use a date-formatting API available in GWT client code.
12
13         * src/main/java/org/glom/web/client/place/DetailsPlace.java:
14         getStringForData(): Use DateTimeFormat.getFormat(), because that works 
15         on the client side (but not the server side) instead of String.format()
16         with Date.getYear()/getMonth()/getDate(), because they work only on the 
17         server side (but not on the client side). Rather annoying.
18         * src/test/java/org/glom/web/client/place/DetailsPlaceTest.java: Rename to
19         GwtTestDetailsPlace.
20         * src/test/java/org/glom/web/client/place/ListPlaceTest.java: Rename to
21         GwtTestListPlaceTest, so we can run these as client-side (generated 
22         Javascript) code so we can catch these problems sooner.
23         It is unfortunate that the code cannot run on the server-side as Java,
24         but it does not need to.
25
26 2012-12-02  Murray Cumming  <murrayc@murrayc.com>
27
28         In the UI, allow primary keys to be any type, and test it.
29
30         * src/main/java/org/glom/web/shared/TypedDataItem.java:
31         Added isUnknownType() for convenience.
32         * src/main/java/org/glom/web/client/place/DetailsPlace.java:
33         getToken(): Move some code into getStringForData() and handle
34         other data types.
35         * src/main/java/org/glom/web/server/Utils.java:
36         Added transformUnknownToActualType(), to parse the unknown string
37         as a particular type of data. This should correspond with 
38         getStringForData() above.
39         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
40         Add setDataItemType() to set the type of data for primary
41         keys.
42         getDetailsData(), getSuitableRecordToViewDetails():
43         Call it, to have the correctly-typed primary key value.
44         We do it here, on the server, instead of before, because it 
45         is only here that we can know the field type that is in the 
46         document.
47         * src/test/java/org/glom/web/client/place/DetailsPlaceTest.java:
48         Added testGetPlaceParametersNumericPrimaryKey(),
49         testGetPlaceParametersBooleanPrimaryKey() and 
50         testGetPlaceParametersDatePrimaryKey).
51
52 2012-11-30  Murray Cumming  <murrayc@murrayc.com>
53
54         Allow primary keys to be any type, and test it.
55
56         * src/main/java/org/glom/web/shared/TypedDataItem.java:
57         Add overrides for the other set*() methods, to set the type.
58         Added getValue() which returns a generic Object.
59         * src/main/java/org/glom/web/server/SqlUtils.java:
60         buildSimpleWhereExpression(): Use TypedDataItem.getValue() instead of 
61         getNumber().
62         * src/test/java/org/glom/web/server/SelfHostExampleNonNumericPrimaryKeysTest.java:
63         Added this test, which is much like SelfHostExampleTest, but which uses this
64         test file, take from Glom:
65         * src/test/resources/org/glom/web/server/test_example_music_collection_text_pk_fields.glom:
66         which has all the primary keys changes to text instead of numbers.
67
68         However, parts of the UI code still assume that primary keys are numbers.
69
70 2012-11-28  Murray Cumming  <murrayc@murrayc.com>
71
72         SelfHostExampleTest: Move some checks into a utility function.
73
74         * src/test/java/org/glom/web/server/SelfHostExampleTest.java:
75         Move the data checks into a new file:
76         * src/test/java/org/glom/web/server/SelfHostTestUtils.java:
77         SelfHostTestUtils.java: so we can use it in some other 
78         tests, with different documents.
79
80 2012-11-28  Murray Cumming  <murrayc@murrayc.com>
81
82         SelfHosting test: Also try using a relationship.
83
84         * src/main/java/org/glom/web/server/database/DBAccess.java:
85         convertResultSetToDTO(): Move some code into a public 
86         method as:
87         * src/main/java/org/glom/web/server/SqlUtils.java:
88         fillDataItemFromResultSet(): This takes a DataItem and 
89         sets it from a value from a datbase recordset.
90         * src/main/java/org/glom/web/server/libglom/Document.java:
91         Make getDocument() public, so we can use it in a test.
92         * src/test/java/org/glom/web/server/SelfHostExampleTest.java:
93         Add testExampleMusiccollectionDataRelated() and call it from 
94         testExampleMusiccollectionData(), to do a basic test of using
95         a relationship.
96
97 2012-11-22  Murray Cumming  <murrayc@murrayc.com>
98
99         Build: Specify the source encoding.
100
101         * pom.xml: Set project.build.sourceEncoding
102         This should fix this build problem on some systems:
103         [ERROR] /var/lib/jenkins/workspace/OnlineGlom/src/test/java/org/glom/web/server/libglom/DocumentTest.java:[139,72] error: unmappable character for encoding ASCII
104
105 1.23.1:
106
107 2012-11-20  Murray Cumming  <murrayc@murrayc.com>
108
109         Update the jasperreports version.
110
111         * pom.xml: This was shown by
112         mvn versions:display-dependency-updates
113
114 2012-11-20  Murray Cumming  <murrayc@murrayc.com>
115
116         Eclipse: Reorder the Java Build Path to fix the build in Eclipse.
117
118         * .classpath: This prevents an error saying that getTextContent()
119         is undefined.
120         See http://mergetag.com/the-method-gettextcontent-is-undefined-for-the-type-node/
121
122 2012-11-20  Murray Cumming  <murrayc@murrayc.com>
123
124         Explicitly declare some dependencies (and scopes) that we use.
125
126         * pom.xml: The dependency report showed what we use.
127
128 2012-11-20  Murray Cumming  <murrayc@murrayc.com>
129
130         Update the gwt-test-utils version.
131
132         * pom.xml: gwt-test-utils 0.43 uses GWT 2.5.0, not GWT 2.4.0.
133         Using both in the same project was causing gwt-log to fail in GWTBrige,
134         with this error:
135         testOutOfBounds(org.glom.web.server.libglom.DocumentLayoutPathTest):
136         (class: com/google/gwt/core/client/GWT, method: setBridge signature: (Lcom/google/gwt/core/client/GWTBridge;)V) Incompatible argument to function
137
138 2012-11-19  Murray Cumming  <murrayc@murrayc.com>
139
140         DocumentTest: testLocales(): Update for the latest example version.
141
142         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
143         The .glom file, updated in the previous commit, now has more translations.
144
145 2012-11-19  Murray Cumming  <murrayc@murrayc.com>
146
147         Update the .glom files used for tests.
148
149         * src/test/resources/org/glom/web/server/example_film_manager.glom:
150         * src/test/resources/org/glom/web/server/example_music_collection.glom:
151         * src/test/resources/org/glom/web/server/libglom/example_film_manager.glom:
152         * src/test/resources/org/glom/web/server/libglom/example_music_collection.glom:
153         Copy them from git master of Glom.
154
155 2012-11-18  Murray Cumming  <murrayc@murrayc.com>
156
157         Update versions of dependencies.
158
159         * pom.xml: Increase some version numbers based on the output of
160         , using mvn versions:display-dependency-updates.
161         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
162         Use the annotation instead of getModuleName().
163         * src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
164         Do not use deprecated assert() classes/methods.
165
166 2012-11-18  Murray Cumming  <murrayc@murrayc.com>
167
168         Document: Correct an import to use the correct Log API.
169
170         * src/main/java/org/glom/web/server/libglom/Document.java:
171         Use our Utils.Log API rather than the jfree one that Eclipse
172         must have suggested at some time.
173
174 2012-11-15  Murray Cumming  <murrayc@murrayc.com>
175
176         Details: Get static image data from our images services.
177
178         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
179         Add constructors for LayoutItemText and LayoutItemImage and
180         deal with their common type instead of just LayoutItemField.
181         setData():
182         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
183         Adapted.
184         * src/main/java/org/glom/web/client/ui/details/Group.java:
185         createChildWidget(): Use the other DetailsCell constructors for
186         these layout items, and do not add them to the list of
187         cells with data from the database.
188         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
189         getValidListViewLayoutGroup(), getDetailsLayoutGroup():
190         Remove the image data when cloning the layout and storing it in the
191         cache. Clients will instead get it via the URL, from
192         our images service.
193         * src/main/java/org/glom/web/server/OnlineGlomImages.java:
194         doGet(): Depending on the URI parameters, optionally get 
195         image data from a layout_item_image in the document,
196         via its layout path.
197         * src/main/java/org/glom/web/server/database/DBAccess.java:
198         convertResultSetToDTO(): Move some URIBuilder code to:
199         * src/main/java/org/glom/web/server/Utils.java:
200         Add buildImageDataUrl() taking the primary key, etc, to
201         get data from the database.
202
203 2012-11-15  Murray Cumming  <murrayc@murrayc.com>
204
205         Document: Static image items: Store an image URL, using the layout path. 
206
207         * src/main/java/org/glom/web/server/Utils.java: Add buildImageDataUrl().
208         * src/main/java/org/glom/web/server/libglom/Document.java:
209         Add a constructor that takes the documentID, for use in the 
210         LayoutItemImage URL.
211         loadLayoutNode(): Pass a Path object to the helper methods, so we 
212         can use it to create a URL for LayoutItemImage items.
213         This seems as good a way as any to specify a layout item in the document.
214         * src/main/java/org/glom/web/server/ConfiguredDocumentSet.java:
215         Pass the documentID to the constructor, for use in the LayoutItemImage
216         URL.
217
218 2012-11-15  Murray Cumming  <murrayc@murrayc.com>
219
220         Document: Add getLayoutItemByPath().
221
222         * src/main/java/org/glom/web/server/Utils.java:
223         Add buildLayoutPath() and parseLayoutPath().
224         * src/test/java/org/glom/web/server/LayoutPathTest.java: Test that these 
225         utility methods work.
226         * src/main/java/org/glom/web/server/libglom/Document.java:
227         Add Add getLayoutItemByPath().
228         * src/test/java/org/glom/web/server/libglom/DocumentLayoutPathTest.java: Test 
229         that it works.
230
231         This will be useful in subsequent commits.
232
233 2012-11-15  Murray Cumming  <murrayc@murrayc.com>
234
235         Document: Use a better base64 decoder to read static image data.
236
237         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
238         getNodeTextChildAsValue(): Use the apache commons base64 decoder
239         instead of the gwt one, because it correctly decodes the strings
240         from g_base64_encode(). It is probably more correct.
241         The newlines might be confusing the gwt decoder.
242
243 2012-11-14  Murray Cumming  <murrayc@murrayc.com>
244
245         Document: Do not use == to compare strings. Use equals().
246
247         * src/main/java/org/glom/web/server/libglom/Document.java:
248         == only checks that they are the same object, so it can 
249         seem to fail.
250
251 2012-11-14  Murray Cumming  <murrayc@murrayc.com>
252
253         Document: Add and use public constants for layout names.
254
255         * src/main/java/org/glom/web/server/libglom/Document.java:
256         Make LAYOUT_NAME_DETAILS and LAYOUT_NAME_LIST public.
257         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
258         * src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
259         * src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
260         * src/test/java/org/glom/web/server/libglom/DocumentTest.java: Use 
261         them here instead of hard-coded the strings repeatedly.
262
263 2012-11-13  Murray Cumming  <murrayc@murrayc.com>
264
265         Document: Load static text and image items too.
266
267         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemImage.java:
268         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemText.java:
269         New LayoutItem classes to represent these layout items.
270         * src/main/java/org/glom/web/shared/libglom/layout/StaticText.java: The 
271         main text of a LayoutItemText.
272         * src/main/java/org/glom/web/server/libglom/Document.java:
273         load_after_layout_group(): Handle the node types and instantiate the 
274         new classes.
275         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
276         Add testLayoutItemText() to check that the text is loaded properly.
277
278 2012-11-13  Murray Cumming  <murrayc@murrayc.com>
279
280         Do not use client.GWT for shared code.
281
282         * src/main/java/org/glom/web/shared/libglom/layout/Formatting.java:
283         Import shared.GWT instead of client.GWT, which seems to be appropriate.
284
285 2012-11-12  Murray Cumming  <murrayc@murrayc.com>
286
287         Use image data when recreating databases for testing.
288
289         * src/main/java/org/glom/web/shared/DataItem.java: Add get/setImageData(),
290         for use locally (not acrosss the network) when recreating databases
291         for testing.
292         getValue(): Use it here instead of getImageDataUrl(), noting that 
293         this method is only for use when recreating databases.
294         * src/main/java/org/glom/web/server/libglom/Document.java:
295         getNodeTextChildAsValue(): Use it instead of setImageDataUrl().
296
297 2012-11-09  Murray Cumming  <murrayc@murrayc.com>
298
299         OnlineGlomImages: Detect the mime-type (content type).
300
301         * src/main/java/org/glom/web/server/OnlineGlomImages.java:
302         doGet(): Instead of hard-coding image/png.
303
304 2012-11-09  Murray Cumming  <murrayc@murrayc.com>
305
306         Eclipse project files: Use JDK 1.7 instead of JDK 1.6.
307
308         * .classpath:
309         * .settings/org.eclipse.jdt.core.prefs: By changing the Eclipse
310         Java Compiler and Java Build path settings in the UI.
311
312 2012-11-09  Murray Cumming  <murrayc@murrayc.com>
313
314         Use the latest (now stable) version of GWT.
315
316         * pom.xml: And the latest version of the gwt-maven-plugin.
317
318 2012-11-08  Murray Cumming  <murrayc@murrayc.com>
319
320         Added an Indonesian translation.
321
322         * src/main/java/org/glom/web/OnlineGlom.gwt.xml:
323         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_id.properties:
324         This is from the new translation in Glom.
325
326 2012-07-23  Murray Cumming  <murrayc@murrayc.com>
327
328         Details: Show images.
329
330         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
331         Move some code into
332         * src/main/java/org/glom/web/server/ConfiguredDocumentSet.java:
333         so it can be used in:
334         * src/main/java/org/glom/web/server/OnlineGlomImages.java: A new servlet just
335         for serving image data.
336         * src/main/webapp/WEB-INF/web.xml: Mention the new servlet.
337
338         * src/main/java/org/glom/web/shared/DataItem.java: Added get/setImageDataUrl().
339         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
340         setData(): For image field types, add a GWT Image widget, 
341         with the URL that was set in the DataItem.
342
343         * pom.xml: Depend on org.apache.httpcomponents for UriBuilder.
344         * src/main/java/org/glom/web/server/database/DBAccess.java:
345         convertResultSetToDTO(): Set the URL for image data, so the client browser
346         can retrieve the image from our new servlet. This uses UriBuilder.
347         Move getPrimaryKeyField to:
348         * src/main/java/org/glom/web/server/libglom/Document.java:
349         Added getTablePrimaryKeyField().
350
351         * src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
352         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
353         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
354         Adapted.
355
356 2012-07-22  Murray Cumming  <murrayc@murrayc.com>
357
358         Rename the servlet.
359
360         * src/main/java/org/glom/web/OnlineGlom.gwt.xml:
361         * src/main/java/org/glom/web/client/OnlineGlomService.java:
362         * src/main/webapp/WEB-INF/web.xml: Change the servlet-name from libGlom
363         to gwtGlom, which is more appropriate.
364         This servlet name does not seem to be visible to the client side anyway.
365
366 2012-07-22  Murray Cumming  <murrayc@murrayc.com>
367
368         Tests: Make the imports of assert*() consistent.
369
370         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
371         * src/test/java/org/glom/web/client/place/DetailsPlaceTest.java:
372         * src/test/java/org/glom/web/client/place/ListPlaceTest.java:
373         * src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
374         * src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
375         * src/test/java/org/glom/web/server/SelfHostExampleTest.java:
376         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
377         * src/test/java/org/glom/web/server/libglom/LayoutItemFieldTest.java:
378         * src/test/java/org/glom/web/server/libglom/LayoutItemPortalDeepCloneTest.java:
379         * src/test/java/org/glom/web/shared/DataItemTest.java:
380         Just do
381         import static org.junit.Assert.*;
382         which seems fairly common.
383
384 1.21.10 (unstable):
385
386 2012-07-21  Murray Cumming  <murrayc@murrayc.com>
387
388         tests: Move a test that needs a database connection.
389
390         * src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
391         Move testGetListViewLayoutGroup() to
392         * src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
393         because it needs a database connection.
394
395 2012-07-21  Murray Cumming  <murrayc@murrayc.com>
396
397         tests: Use @BeforeClass on tearDown().
398
399         * src/test/java/org/glom/web/server/OnlineGlomPropertiesTest.java:
400         * src/test/java/org/glom/web/server/SelfHostExampleTest.java:
401         This avoids leaking a postgres process in SelfHostExampleTest.
402
403 2012-07-21  Murray Cumming  <murrayc@murrayc.com>
404
405         tests: Test translations more.
406
407         * src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
408         * src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
409         Test titles in the non-default locale.
410
411 2012-07-21  Murray Cumming  <murrayc@murrayc.com>
412
413         tests: Add SelfHostConfiguredDocumentTest
414  
415         * src/test/java/org/glom/web/server/SelfHoster.java: Add getters for the 
416         username and password, for use by ConfiguredDocument.
417         * src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java: 
418         This tests some of the ConfiguredDocument API that requires a database connection.
419
420 2012-07-21  Murray Cumming  <murrayc@murrayc.com>
421
422         Document: Load title translations and test them.
423
424         * src/main/java/org/glom/web/server/libglom/Document.java: Load the translations
425         of titles. I am surprised that we do not do this yet.
426         * src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
427         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
428         Test translations more.
429
430 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
431
432         Set JDBC timeouts.
433
434         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
435         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
436         Set the timeout here too.
437
438 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
439
440         tests: ConfiguredDocumentTest: Make this pass.
441
442         * src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
443         Disable tests that need a database connection.
444
445 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
446
447         Use Java 1.7 instead of Java 1.6.
448
449         * pom.xml: Specify the 1.7 JDK, though I don't like how we seem to need
450         to do this twice, at least for Eclipse.
451         This seems OK because it is the current version.
452
453 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
454
455         Some error checking.
456
457         * src/main/java/org/glom/web/server/Log.java: Avoid using null strings.
458         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
459         Avoid using a null Connection.
460
461 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
462
463         tests: Add a ConfiguredDocument test.
464
465         * src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
466         Add this test.
467
468 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
469
470         LayoutItemFIeld: getName(): Use the Field if it is set.
471
472         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField.java:
473         getName(): If the full field details have been set, return its name, so that
474         callers do not need to set the name separately.
475         * src/test/java/org/glom/web/server/SelfHostExampleTest.java:
476         testExampleMusiccollectionData): Do not use a TYPE_FORWARD_ONLY statement,
477         so we can count the rows.
478
479 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
480
481         tests: SelfHoster: Test SqlUtils too.
482
483         * src/test/java/org/glom/web/server/SelfHostExampleTest.java:
484         Retrieve some data and check it too, as in the regular Glom
485         test_selfhosting_new_from_example.cc test.
486         * src/test/java/org/glom/web/server/SelfHoster.java:
487         createConnection(): Make this public.
488
489 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
490
491         tests: SelfHoster: createConnection(): Do not warn about expected failures.
492         
493         Let the caller say if the connection is expected to fail, to avoid 
494         irrelevant error output.
495
496 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
497
498         tests: SelfHoster: createAndSelfHostNewEmpty(): Sleep after starting server.
499         
500         * src/test/java/org/glom/web/server/SelfHoster.java:
501         createAndSelfHostNewEmpty(): Sleep initially, to avoid distracting errors
502         due to the inevitable need to retry the connection while the database server
503         starts.
504
505 2012-07-20  Murray Cumming  <murrayc@murray.com>
506
507         tests: SelfHoster: createConnection(): Set a timeout.
508
509         * src/test/java/org/glom/web/server/SelfHoster.java:
510         createConnection(): Use setLoginTimeout() because it otherwise seems to take
511         ages to actually return when it fails.
512
513 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
514
515         tests: SelfHoster: selfHost(): Close the test connection.
516
517         * src/test/java/org/glom/web/server/SelfHoster.java: selfHost():
518         When we check that the connection works, close the connection. This seems
519         to not be closed automatically otherwise.
520
521 2012-07-20  Murray Cumming  <murrayc@murrayc.com>
522
523         Use slf4j-simple to see JDBC errors.
524
525         * pom.xml: Depend on slf4j-simple so we can see errors from JDBC.
526
527 2012-07-19  Murray Cumming  <murrayc@murrayc.com>
528
529         SelfHoster.discoverFirstFreePort(): Close the socket.
530
531         * src/test/java/org/glom/web/server/SelfHoster.java:
532         discoverFirstFreePort(): Close the socket. Eclipse Juno warns about this.
533
534 2012-07-19  Murray Cumming  <murrayc@murrayc.com>
535
536         Avoid another code warning in Eclipse Juno.
537
538         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
539         Do instanceof checks on the FileUtils.listFiles() result and its 
540         items.
541
542 2012-07-13  Murray Cumming  <murrayc@murrayc.com>
543
544         Avoid some code warnings in Eclipse Juno
545
546         * src/main/java/org/glom/web/server/libglom/Document.java:
547         getNodeTextChildAsValue(), setNodeTextChildAsValue(): Handle the invalid type.
548         * src/test/java/org/glom/web/server/SelfHoster.java
549         createTextFile(): Make sure that the FileOutputStream is closed.
550
551 2012-06-22  Murray Cumming  <murrayc@murrayc.com>
552
553         Added OnlineGlomPropertiesTest.
554
555         * src/main/java/org/glom/web/server/OnlineGlomProperties.java:
556         Make sure we never return a null string.
557         * src/test/java/org/glom/web/server/OnlineGlomPropertiesTest.java:
558         Added tests of the OnlineGlomProperties API, using our sample file.
559
560 2012-06-20  Murray Cumming  <murrayc@murrayc.com>
561
562         Make OnlineGlomProperties be a normal class.
563
564         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
565         Move OnlineGlomProperties into its own file to be a regular class:
566         * src/main/java/org/glom/web/server/OnlineGlomProperties.java:
567         This makes testing simpler.
568
569 2012-06-15  Murray Cumming  <murrayc@murrayc.com>
570
571         OnlineGlomServiceImpl.init(): Move some code into a new method.
572
573         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
574         Create addDocument().
575
576 2012-06-15  Murray Cumming  <murrayc@murrayc.com>
577
578         OnlineGlomServiceImpl.OnlineGlomProperties: Improve getKey().
579
580         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
581         OnlineGlomProperties.getKey(): Make this more robust by moving the
582         check for *.*.filename to here.
583
584 2012-06-15  Murray Cumming  <murrayc@murrayc.com>
585
586         OnlineGlomServiceImpl: Improve the OnlineGlomProperties class.
587
588         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
589         init(): Move knowledge of the config file format into the 
590         OnlineGlomProperties inner class.
591
592 2012-06-15  Murray Cumming  <murrayc@murrayc.com>
593
594         SelfHostExampleTest: Make sure we cleanup on failure.
595
596         * src/test/java/org/glom/web/server/SelfHostExampleTest.java: Move
597         the use of cleanup() to a tearDown() JUnit method.
598
599 1.21.9.3:
600
601 2012-06-12  Murray Cumming  <murrayc@murrayc.com>
602
603         ConfiguredDocument: Add a primary key to portals at least once.
604
605         * src/main/java/org/glom/web/server/ConfiguredDocument.java
606         updatePortalsExtras): Fix a typo so that we add the primary key
607         column at least once.
608         This is a fix for the previous commit:
609         ConfiguredDocument: Do not add a primary key to portals each time.
610
611 2012-06-08  Murray Cumming  <murrayc@murrayc.com>
612
613         SelfHoster: Avoid some compiler warnings.
614
615         * src/test/java/org/glom/web/server/SelfHoster.java
616         executeCommandLineAndWait():
617         executeCommandLineAndWaitUntilSecondCommandReturnsSuccess(): Comment out
618         the now-unused streams for stdout and stderr from the command Processes.
619         These are not used because readln() hangs while waiting for a new line,
620         where there may be no next line. The commented out code is still there
621         to help us figure out how to do this properly.
622
623 2012-06-08  Murray Cumming  <murrayc@murrayc.com>
624
625         LayoutItemPortalDeepCloneTest: Test something to avoid warnings.
626
627         * src/test/java/org/glom/web/server/libglom/LayoutItemPortalDeepCloneTest.java:
628         Make this actually test the cloning again, though it is not very useful
629         now that we do not use the part that had a problem with cloning before.
630
631 2012-06-08  Murray Cumming  <murrayc@murrayc.com>
632
633         SelfHoster: Keep trying pg_ctl after starting postgres.
634
635         * src/test/java/org/glom/web/server/SelfHoster.java
636         executeCommandLineAndWaitUntilSecondCommandReturnsSuccess():
637         Try pg_ctl repeatedly (for ever) until it succeeds, as we do in 
638         regular Glom. This seems mad but it seems to work because the first
639         command would fail if pg_ctl would eventually fail.
640
641 2012-06-08  Murray Cumming  <murrayc@murrayc.com>
642
643         SelfHoster: Wait until the server is really ready.
644
645         * src/test/java/org/glom/web/server/SelfHoster.java
646         selfHost(): Attempt the connection after starting the server, retrying 
647         a few times if necessary, so that the server is really ready already when
648         we return from this method.
649         The regular Glom code does this too because pg_ctl reports success too soon.
650
651 2012-06-08  Murray Cumming  <murrayc@murrayc.com>
652
653         ConfiguredDocument: Do not add a primary key to portals each time.
654
655         * src/main/java/org/glom/web/server/ConfiguredDocument.java
656         updatePortalsExtras(): Only add an extra primary key field if there is 
657         none, to avoid adding one each time we retrieve the details layout from the
658         layouts cache.
659         This should fix bug #676986 (Ben Konrath) 
660
661 2012-05-25  Murray Cumming  <murrayc@murrayc.com>
662
663         Document.load(): Support version 7 documents. 
664
665         * src/main/java/org/glom/web/server/libglom/Document.java: Load the 
666         database_title attribute if the title attribute is not there.
667         Bug #676737
668
669 2012-05-24  Ben Konrath  <ben@bagu.org>
670
671         Add configuration for auto-generating mvn:i18n from with Eclipse.
672
673         * pom.xml: Add PluginExecution configuration for gwt-maven-plugin.
674
675 2012-05-24  Murray Cumming  <murrayc@murrayc.com>
676
677         Update translations, adding French.
678
679         * src/main/java/org/glom/web/OnlineGlom.gwt.xml:
680         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_fr.properties:
681         Add a French translation, using the translation from Glom.
682
683         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_cs.properties:
684         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_es.properties:
685         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_sl.properties:
686         Update these based on the translations from Glom.
687
688 2012-05-24  Murray Cumming  <murrayc@murrayc.com>
689
690         SelfHoster: Add some debug println messages to help when things fail.
691
692         * src/test/java/org/glom/web/server/SelfHoster.java: Add several
693         System.out.println() lines.
694
695 2012-05-23  Murray Cumming  <murrayc@murrayc.com>
696
697         Tests: SelfHoster: Check other paths for PostgreSQL command-line tools.
698
699         * src/test/java/org/glom/web/server/SelfHoster.java:
700         getPathToPostgresExecutable(): Try some common paths (as on Ubuntu, for 
701         instance) instead of just /usr/bin (as on Fedora). Check the result when 
702         using this method.
703
704 2012-05-23  Murray Cumming  <murrayc@murrayc.com>
705
706         Remove LayoutItemPortal.get/setNavigationTable().
707         
708         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemPortal.java:
709         Remove get/setNavigationTable(), which is only a cache, because it is not
710         used, and does not need to be used, because that decision should be made on
711         the server.
712         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
713         updatePortalsExtras():
714         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
715         getNavigationRecord():
716         * src/test/java/org/glom/web/server/libglom/LayoutItemPortalDeepCloneTest.java:
717         Adapted.
718
719 2012-05-21  Murray Cumming  <murrayc@murrayc.com>
720
721         Initial self-hosting for tests.
722
723         * pom.xml: Change the scope for log4j, to hopefully make it 
724         available to the test code which uses it indirectly via jOOQ.
725         * src/main/java/org/glom/web/server/ConfiguredDocument.java: Allow
726         self-hosting, though we only use it for testing.
727
728         * src/main/java/org/glom/web/server/libglom/Document.java:
729         example rows: Use a map instead of a list for each row of values,
730         so we know what field they are for, instead of relying on the sequence
731         being correct. This is not very efficient, but it does not really need 
732         to be.
733         * src/test/java/org/glom/web/server/libglom/DocumentTest.java
734         testReadTableExampleRows(): Adapted.
735
736         * src/main/java/org/glom/web/shared/DataItem.java: Added getValue()
737         that returns an Object, for generic use. Note that Object seems to be 
738         the implicit base even of double.
739         * src/main/java/org/glom/web/shared/libglom/Field.java: Add getSqlType(),
740         for use in CREATE TABLE SQL queries.
741         * src/test/java/org/glom/web/server/SelfHoster.java: Add this class 
742         to do self-hosting of PostgreSQL databases via its command-line 
743         utilities, based on Glom's C++ code in test_selfhosting_utils.cc and
744         backends/postgres_self.cc. This is incomplete - it needs more 
745         warnings about failures and it needs to clean up properly when things
746         fail.
747         * src/test/java/org/glom/web/server/SelfHostExampleTest.java: A simple 
748         test of this new class.
749
750 2012-05-21  Murray Cumming  <murrayc@murrayc.com>
751
752         Document: loading example data: Handle exceptions.
753
754         * src/main/java/org/glom/web/server/libglom/Document.java:
755         DateFormat.parse() and Double.valueOf() can throw exceptions, though
756         Eclipse did not warn about that.
757
758 2012-05-20  Murray Cumming  <murrayc@murrayc.com>
759
760         Document: load(), save(): Handle the example rows.
761
762         * src/main/java/org/glom/web/shared/DataItem.java: Add get/setDate() 
763         and get/setImage().
764         * src/main/java/org/glom/web/server/libglom/Document.java:
765         load(), save(): Load and save the example rows, though the date, time
766         and image types are not handled properly yet.
767         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
768         Add testReadTableExampleRows() just to check that something is read.
769
770 2012-05-20  Murray Cumming  <murrayc@murrayc.com>
771
772         Document: Add save().
773
774         * src/main/java/org/glom/web/shared/libglom/Translatable.java:
775         Added getTranslationsMap() for use while saving.
776         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField.java:
777         Adedd getUseDefaultFormatting() for use while saving.
778         * src/main/java/org/glom/web/server/libglom/Document.java: Added save()
779         and several private methods that it uses.
780
781         This will be useful while testing via self-hosting.
782         It is not complete, but should be complete enough for testing.
783
784 2012-05-17  Murray Cumming  <murrayc@murrayc.com>
785
786         OnlineGlomService: Simplify the getList/RelatedViewData() methods.
787
788         * src/main/java/org/glom/web/client/OnlineGlomService.java
789         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java
790         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
791         Remove getSortedListViewData() and getSortedRelatedListData(), adding
792         the sort column index and ascending bool to the regular method.
793         Instead, a sort column index of -1 now means no sort.
794         This is less explicit, but it's fairly simple, reduces the amount of 
795         code, and makes the OnlineGlomService API slightly smaller.
796         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
797         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
798         getDataProvider():
799         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
800         getListViewData(), getRelatedListData():
801         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
802         getListViewData(), getRelatedListData():
803         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
804         getListData():
805         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java:
806         getData():
807         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
808         getData(): Adapted.
809
810 1.21.9.2:
811
812 2012-05-16  Murray Cumming  <murrayc@murrayc.com>
813
814         Use translations for top-level groups too.
815
816         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
817         updateTitlesForLocale(): Use the translation for the group 
818         as well as for child items.
819
820 1.21.9.1:
821
822 Just recompiled to fix a problem in the released .tar.gz file.
823
824 1.21.9:
825
826 2012-05-15  Murray Cumming  <murrayc@murrayc.com>
827
828         Corrections to navigation to related records.
829         
830         * src/main/java/org/glom/web/client/OnlineGlomService.java:
831         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java:
832         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
833         getRelatedListData(), getSortedRelatedListData)(), getRelatedListRowCount(),
834         getSuitableRecordToViewDetails(): Take a LayoutItemPortal instead of a 
835         relationship name, because the relationship name is not necessarily unique 
836         on the layout.
837         TOOD: This is inefficient, because it passes the whole list of 
838         child field items back to the server, but it is more correct, and happens
839         to fix a bug with the primary key being lost after a few navigations.
840         There is probably a chance to make this more efficient anyway in some 
841         more basic way.
842         
843         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
844         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.jav
845         * src/main/java/org/glom/web/server/ConfiguredDocument.java
846         * src/main/java/org/glom/web/server/database/DBAccess.java
847         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
848         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
849         Adapted.
850
851 2012-05-15  Murray Cumming  <murrayc@murrayc.com>
852
853         Fix the use of translations.
854
855         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
856         Add updateTitlesForLocale().
857         getValidListViewLayoutGroup(), getDetailsLayoutGroup():
858         Call it to discard unwanted translations and to make getTitle() return
859         the wanted translation wihout the need for the client code to specify a locale.
860         * src/main/java/org/glom/web/shared/libglom/Translatable.java:
861         getTitle(): Fallback to the original title, as libglom does.
862
863 2012-05-15  Murray Cumming  <murrayc@murrayc.com>
864
865         Document: Correctly report the number of available translation locales.
866
867         * src/main/java/org/glom/web/server/libglom/Document.java: Fill
868         the available locale IDs list.
869         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
870         testLocales: Test this.
871
872 2012-05-15  Murray Cumming  <murrayc@murrayc.com>
873
874         SqlUtils: Use camelCase.
875
876         * src/main/java/org/glom/web/server/SqlUtils.java: Use camelCase.
877         * src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
878         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java:
879         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
880         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
881         * src/main/java/org/glom/web/server/ReportGenerator.java: Adapt.
882
883 2012-05-15  Murray Cumming  <murrayc@murrayc.com>
884
885         Use jOOQ's tableByName() and fieldByName.
886
887         * pom.xml: Use jOOQ 2.3.1 to get the new API.
888         * src/main/java/org/glom/web/server/SqlUtils.java:
889         build_sql_select_step_with_where_clause(), .createField(),
890         builder_add_join(): Use Factory.tableByName() and Factory.fieldByName()
891         so we can get correct quoting and escaping. Thanks to Lukas Eder for 
892         adding this, and other things, to jOOQ.
893
894 2012-05-15  Murray Cumming  <murrayc@murrayc.com>
895
896         SqlUtils: Remove the Connection parameters.
897
898         * src/main/java/org/glom/web/server/SqlUtils.java:
899         build_sql_select_with_key(), build_sql_select_with_where_clause(),
900         createSelect(), build_sql_select_step_with_where_clause(),
901         build_sql_count_select_with_where_clause(),
902         build_sql_select_count_rows(): Remove the Connection parameter because
903         jOOQ does not actually need a connectionwhen it is just used to build 
904         a SQL string:
905         https://groups.google.com/forum/#!topic/jooq-user/tIwobFOR2iM
906
907         * src/main/java/org/glom/web/server/ReportGenerator.java:
908         generateReport():
909         * src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
910         getData():
911         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
912         Constructor, getListData(), getResultSizeOfSQLQuery():
913         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java:
914         getSelectQuery(), getCountQuery():
915         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
916         getSelectQuery(), getCountQuery():
917         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
918         getNavigationRecord(): Adapted.
919
920 2012-05-14  Murray Cumming  <murrayc@murrayc.com>
921
922         Fix quick find.
923
924         * src/main/java/org/glom/web/server/SqlUtils.java:
925         get_find_where_clause_quick(): Use a comparison of 
926         lowercase values, instead of a simple equals. Regular Glom
927         uses the PostgreSQL ILIKE operator but jOOQ does not 
928         support that just yet, though it will soon.
929
930 2012-05-14  Murray Cumming  <murrayc@murrayc.com>
931
932         TableToViewDetails: Use a real serialization ID.
933
934         * src/main/java/org/glom/web/shared/libglom/layout/TableToViewDetails.java:
935         Though this does not fix the serialization problem.
936
937 2012-05-12  Murray Cumming  <murrayc@murrayc.com>
938
939         Added LayoutItemPortalDeepCloneTest.
940
941 2012-05-11  Murray Cumming  <murrayc@murrayc.com>
942
943         Make navigation work again.
944
945         * src/main/java/org/glom/web/server/libglom/Document.java:
946         Add getLayoutItemFieldShouldHaveNavigation().
947         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField.java:
948         Replace get/setAddNavigation() with the partly-existing 
949         get/setNavigationTableName(), with an empty string being no navigation,
950         because this is simpler. Use the new 
951         Document.getLayoutItemFieldShouldHaveNavigation() method to set this.
952         
953         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
954         Add updateFieldsExtras() and call setNavigationTableName in it.
955         getDetailsLayoutGroup(), 
956         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
957         createLayout(): Adapted.
958         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java
959         Constructor: Adapted.
960
961         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemPortal.java:
962         Replace get/setAddNavigation() with get/setNavigation(), returning a
963         TableToViewDetails class with both the table name and UsesRelationship,
964         because both are need. The previous code used java-libglom's output 
965         variable (strangely, via sharedptr) to return both, but we cannot really
966         do that in Java.
967         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
968         getNavigationRecord(): Adapt. However, we cannot actually use the cache
969         here because it somehow gets set to null during deepCopy(). I must test this.
970         * src/test/java/org/glom/web/server/libglom/DocumentTest.java
971         testGetSuitableTableToViewDetails(): Adapted.
972         
973         TODO: Find out why deepClone() is not quite working.
974         
975 2012-05-11  Murray Cumming  <murrayc@murrayc.com>
976
977         DBAccess: Simplify the retrievel of full field details.
978
979         * src/main/java/org/glom/web/server/database/DBAccess.java
980         getFieldsToShowForSQLQueryAddGroup(). This might be unnecessary anyway,
981         because the Document loading should have done this.
982
983 2012-05-11  Murray Cumming  <murrayc@murrayc.com>
984
985         Document: Correct loading of doubly-related layout fields.
986
987         * src/main/java/org/glom/web/server/libglom/Document.java:
988         loadUsesRelationship(): Actually set the related relationship, instead
989         of only setting it if it's not found.
990
991 2012-05-09  Murray Cumming  <murrayc@murrayc.com>
992
993         Replace all appearances of Colour with color.
994
995         Because US English is dominant.
996
997 2012-05-09  Murray Cumming  <murrayc@murrayc.com>
998
999         Use colors in HTML format, solving a warning about an unused function.
1000
1001         * src/main/java/org/glom/web/shared/libglom/NumericFormat.java
1002         * src/main/java/org/glom/web/shared/libglom/layout/Formatting.java:
1003         Add *asHTMLColor() versions of methods.
1004         TODO: However, we should create and cache the results on the server.
1005         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java
1006         * src/main/java/org/glom/web/client/ui/list/ListTable.java
1007         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1008         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
1009         Use the asHTMLcolor() versions.
1010
1011 2012-05-09  Murray Cumming  <murrayc@murrayc.com>
1012
1013         ListViewTable: Constructor: Take the table name as a parameter.
1014
1015         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
1016         Constructor: Take the tableName, and set the member variable, because
1017         we use it here.
1018         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
1019         setCellTable(): Pass the table name.
1020         This makes navigation to non-default tables work again. I don't know 
1021         why it worked before in the master branch.
1022
1023 2012-05-07  Murray Cumming  <murrayc@murrayc.com>
1024
1025         ConfiguredDocument: Restore correct addition of hidden primary key items.
1026
1027         * src/main/java/org/glom/web/client/ui/list/ListTable.java
1028         (ListTable.createCellTable): Uncomment out the check for the hidden
1029         primary key.
1030         * src/main/java/org/glom/web/server/ConfiguredDocument.java: Only
1031         add primary key items for top-level lists and portals, as before, 
1032         instead of adding them to each group.
1033         * src/main/java/org/glom/web/shared/libglom/layout/LayoutGroup.java:
1034         Actually implement the extra methods such as setHiddenPrimaryKey() and
1035         comment that these are used only for top-level list groups and in portals.
1036         This strangeness suggests even more that this should not be squeezed
1037         into the LayoutGroup class.
1038
1039 2012-05-07  Murray Cumming  <murrayc@murrayc.com>
1040
1041         Fix Formatting loading.
1042
1043         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField.java:
1044         getFormattingUsed(): Remove the duplicate Formatting member variable
1045         in favour of the one from the base class.
1046         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemWithFormatting.java:
1047         Initialize a new Formatting instead of using null by default, so we 
1048         have some defaults, instead of having to initialize one later just to 
1049         get the same defaults. This also makes loading of formatting from the
1050         document work, because that expected a non-null.
1051
1052 2012-05-07  Murray Cumming  <murrayc@murrayc.com>
1053
1054         RelatedListTable: Make sure that the tableName is set.
1055
1056         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
1057         Constructor: Take the tableName so it is available later. Otherwise, 
1058         the server assumes that we mean the default table and cannot find the
1059         relationship in it.
1060         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
1061         setData(): Pass the tableName to the RelatedListTable constructor.
1062
1063 2012-05-07  Murray Cumming  <murrayc@murrayc.com>
1064
1065         Add some checks.
1066
1067         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
1068         RelatedListNavigationButtonCell.onEnterKeyDown(), setData():
1069         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
1070         getDataProvider():
1071         * src/main/java/org/glom/web/client/ui/list/ListTable.java:
1072         addColumn():
1073         * src/main/java/org/glom/web/server/database/DBAccess.java:
1074         convertResultSetToDTO(), getPortal():
1075         * src/main/java/org/glom/web/server/database/ListDBAccess.java
1076         getListData():
1077         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
1078         Add checks for null objects and out of range access, with log messages to
1079         give hints so we can fix these properly.
1080
1081 2012-05-07  Murray Cumming  <murrayc@murrayc.com>
1082
1083         Portals: some corrections.
1084
1085         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
1086         setData():
1087         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
1088         constructor: Use getRelationshipNameUsed() instead of getName(), because
1089         that is what is meant.
1090         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemPortal.java:
1091         getFromField(): Fix a typo, to get the field name, not the table name.
1092         * src/main/java/org/glom/web/server/database/DBAccess.java:
1093         getPortal(): Fix a typo that stopped this from working.
1094
1095 2012-05-07  Murray Cumming  <murrayc@murrayc.com>
1096
1097         LayoutItemPortal: Also override getTitleOriginal().
1098
1099         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemPortal.java:
1100         This lets the base getTitle() with no parameters work.
1101         TODO: Test this properly.
1102
1103 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1104
1105         LayoutItemPortal: getTitle*(): Use the relationship title.
1106
1107 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1108
1109         LayoutItemField: Fix loading of custom titles.
1110
1111         * src/main/java/org/glom/web/server/libglom/Document.java
1112         loadDataLayoutItemField(): The title, if any, instead of the field 
1113         title, is stored in a title_custom node. Load it from there.
1114         * src/main/java/org/glom/web/shared/libglom/CustomTitle.java: Add this
1115         class.
1116         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField:
1117         Add getCustomTitle() and use it, instead of super.getTitle*(), in the
1118         getTitle*() overrides.
1119         * src/test/java/org/glom/web/server/libglom/LayoutItemFieldTest.java:
1120         Adapt.
1121
1122 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1123
1124         LayoutItemField: Fall back to field titles, so some are really shown.
1125
1126         * src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField.java:
1127         Override getTitleOriginal() and getTitle(), as in java-libglom.
1128         * src/test/java/org/glom/web/server/libglom/LayoutItemFieldTest.java:
1129         Test this behaviour.
1130
1131 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1132
1133         Correct use of setExpectedResultSize().
1134
1135         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1136         getValidListViewLayoutGroup(), getDetailsLayoutGroup():
1137         Use setExpectedResultSize only on top-level groups (for instance, the
1138         list layout) or on child portals (in details views).
1139         Use the correct table name for portals to avoid SQL errors.
1140         Update the expected counts when returning cached layouts.
1141
1142 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1143
1144         Document: Interpret no group column count as 1.
1145
1146         * src/main/java/org/glom/web/server/libglom/Document.java: Use a sane
1147         default, though we now check for this in the UI code anyway.
1148
1149 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1150
1151         More null checks.
1152
1153 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1154
1155         Translatable: Use Hashmap instead of Treemap because GWT supports it.
1156
1157         * src/main/java/org/glom/web/shared/libglom/Translatable.java:
1158         The use of Treemap lead to this error from async methods, with no 
1159         further clue:
1160         "The response could not be deserialized"
1161
1162 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1163
1164         OnlineGlom.gwt.xml: Add exludes to fix explicit gwt compilation in Eclipse.
1165
1166         * src/main/java/org/glom/web/OnlineGlom.gwt.xml: This is necessary 
1167         when using the Google -> GWT Compile, or 
1168         g toolbar button -> GWT Compile Project... feature in Eclipse.
1169
1170 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1171
1172         ListTable.addColumn(): Protect against a null Formatting.
1173
1174         * src/main/java/org/glom/web/client/ui/list/ListTable.java: addColumn():
1175         Create a default Formatting if it is null, because that is the simplest
1176         way to do this.
1177
1178 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1179
1180         ConfiguredDocument.updateLayoutGroup(): Protect against a null dereference.
1181
1182         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1183         updateLayoutGroup(): Check that the field is not null.
1184
1185 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1186
1187         ListViewImpl: Protected against a bad cast error.
1188
1189         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
1190         onEnterKeyDown(): Do not cast without an instanceof check.
1191
1192 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1193
1194         ListTable: Protect against an out of range error.
1195
1196         * src/main/java/org/glom/web/client/ui/list/ListTable.java
1197         createCellTable(): This is unlikely, but can happen while debugging.
1198
1199 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1200
1201         AsyncMessage onFailure() callbacks: Log the exception message.
1202
1203         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
1204         * src/main/java/org/glom/web/client/activity/DocumentSelectionActivity.java:
1205         * src/main/java/org/glom/web/client/activity/ListActivity.java:
1206         * src/main/java/org/glom/web/client/activity/ReportActivity.java:
1207         * src/main/java/org/glom/web/client/activity/TableSelectionActivity:
1208         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
1209         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
1210         These are useful clues when something is wrong.
1211
1212 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1213
1214         ConfiguredDocument: Avoid a null dereference.
1215
1216         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1217         TableLayoutsForLocale.getMapWithAdd(): Make sure that the list and 
1218         details maps are created.
1219
1220 2012-05-06  Murray Cumming  <murrayc@murrayc.com>
1221
1222         Document: Correct the port number parsing.
1223
1224         * src/main/java/org/glom/web/server/libglom/Document.java:
1225         This lets us actually connect to the database and show the document.
1226
1227 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1228
1229         Fix mvn gwt:test
1230
1231         * pom.xml: Use htmlunit mode for gwt:test, because the default demands
1232         user-interaction, asking us to load a temporary URL in a browser.s
1233         * src/main/java/org/glom/web/OnlineGlom.gwt.xml: Add a servlet node,
1234         which is apparently necessary for testing the service. See the comment.
1235         * src/test/java/org/glom/web/client/GwtTestOnlineGlomService.java: 
1236         Show the exception, if any. This is how I saw the 404 in the HTML in 
1237         the exception.
1238
1239 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1240
1241         DocumentTest: Move the .glom files into the resources directory.
1242
1243         * src/test/java/org/glom/web/server/libglom/DocumentTest: And get the
1244         URI via getResource().
1245
1246 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1247
1248         Document: Remove the FieldIdentifies inner class.
1249
1250         * src/main/java/org/glom/web/server/libglom/Document.java: We only
1251         use the Relationship (though the same function in libglom is maybe
1252         used in other ways) and so this removes a compiler warning.
1253
1254 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1255
1256         Document.load() Remove the error code parameter.
1257
1258         * src/main/java/org/glom/web/server/libglom/Document.java: load():
1259         Remove the parameter. We do not set it yet and it could never have
1260         worked as an output parameter (though maybe it did in java-libglom).
1261         We could use an exception if we really want the failure reason.
1262         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1263         init():
1264         * src/test/java/org/glom/web/server/libglom/DocumentTest.java:
1265         setUp(), testGetSuitableTableToViewDetails(): Adapt.
1266
1267 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1268
1269         Make some inner classes static.
1270
1271         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1272         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1273         * src/main/java/org/glom/web/server/ReportGenerator.java
1274         * src/main/java/org/glom/web/server/libglom/Document.java
1275         Make all inner classes static that can be static.
1276
1277 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1278
1279         OnlineGlomServiceImpl: Do not load and check for java-libglom.
1280
1281         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1282         init(): We do not use java-libglom any more.
1283
1284 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1285
1286         Remove mentions of java-libglom.
1287
1288         * README: Remove mention of java-libglom, because it no longer needed.
1289         * utils/build-onlineglom-war.sh:
1290         * utils/check-and-recover-tomcat.py:
1291         * utils/install-onlineglom-war.sh: Remove these as they are no longer
1292         useful. Building is now far easier, with no need for jhbuild.
1293
1294 2012-05-05  Murray Cumming  <murrayc@murrayc.com>
1295
1296         Fix the build (mvn package)
1297
1298         * src/main/java/org/glom/web/shared/libglom/layout/LayoutGroup.java
1299         (LayoutGroup): Make the LayoutItemList inner class static and protected.
1300         Otherwise the GWT Java->Javascript compilation fails with just this
1301         error, during mvn package or when attempting to view in a browser, 
1302         in the GWT developer mode in Eclipse.
1303
1304         [INFO] --- gwt-maven-plugin:2.4.0:compile (default) @ gwt-glom ---
1305         [INFO] auto discovered modules [org.glom.web.OnlineGlom]
1306         [INFO] Compiling module org.glom.web.OnlineGlom
1307         [INFO]    [ERROR] Errors in 'file:/home/murrayc/checkouts/gnome/gwt-glom/src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java'
1308         [INFO]       [ERROR] Line 46:  Failed to resolve 'org.glom.web.client.OnlineGlomService' via deferred binding
1309         [INFO]    Scanning for additional dependencies: file:/home/murrayc/checkouts/gnome/gwt-glom/src/main/java/org/glom/web/client/ui/details/DetailsCell.java
1310         [INFO]       [WARN] For the following type(s), generated source was never committed (did you forget to call commit()?)
1311         [INFO]          [WARN] org.glom.web.client.OnlineGlomService_Proxy
1312         [INFO]    [ERROR] Cannot proceed due to previous errors
1313
1314         It has taken me 2 days to find out what was causing that. After reducing
1315         the code, the compiler eventually showed me the full error message.
1316
1317 2012-05-04  Murray Cumming  <murrayc@murrayc.com>
1318
1319         ConfiguredDocument: Cache the cloned and stripped layouts.
1320
1321         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
1322         getValidListViewLayoutGroup(), .getDetailsLayoutGroup(): Store the cloned
1323         layout in a map, so we can retrieve it again without rebuilding it.
1324
1325 2012-05-04  Murray Cumming  <murrayc@murrayc.com>
1326
1327         UsesRelationshipImpl: Complete the relationshipEquals() implementation.
1328
1329 2012-05-04  Murray Cumming  <murrayc@murrayc.com>
1330
1331         libglom classes: Implement some auto-generated emthods.
1332
1333 2012-05-04  Murray Cumming  <murrayc@murrayc.com>
1334
1335         Add GwtTestOnlineGlomService.
1336
1337         * src/test/java/org/glom/web/client/GwtTestOnlineGlomService.java:
1338         However, this (and the other GwtTest*) does not seem to run during 
1339         mvn test. 
1340
1341 2012-05-04  Murray Cumming  <murrayc@murrayc.com>
1342
1343         Remove use of unsupported features from client code.
1344
1345         * src/main/java/org/glom/web/client/StringUtils.java: Add equals().
1346         * src/main/java/org/glom/web/shared/libglom/layout/UsesRelationshipImpl.java:
1347         * src/main/java/org/glom/web/shared/libglom/layout/reportparts/LayoutItemGroupBy.java:
1348         Use our client version of StringUtils instead of the apache commons one.
1349         
1350         However, the GWT Javascript compliation still fails.
1351
1352 2012-04-25  Murray Cumming  <murrayc@murrayc.com>
1353
1354         Add a Field class and implement some loading of it in Document.
1355
1356 2012-04-25  Murray Cumming  <murrayc@murrayc.com>
1357
1358         Initial Document loading implementation, instead of libglom.
1359
1360         * src/test/java/org/glom/web/shared/libglom/: Add Document, Report,
1361         and Translatable classes, and adapt the rest of the code to use them.
1362         However, this is still missing Layout and Field classes and loading.
1363
1364 2012-04-24  Murray Cumming  <murrayc@murrayc.com>
1365
1366         Use of jOOQ: Move Field creation into a utility method.
1367
1368         * src/main/java/org/glom/web/server/SqlUtils.java:
1369         This lets us improve it more easily.
1370
1371 2012-04-24  Murray Cumming  <murrayc@murrayc.com>
1372
1373         Use of jOOQ: Improve the code to COUNT a sub-select.
1374
1375         * src/main/java/org/glom/web/server/SqlUtils.java:
1376         Move initial query creation into 
1377         build_sql_select_step_with_where_clause().
1378         build_sql_select_count_rows(): Use the jOOQ API instead of
1379         concatentating text, because a jOOQ Select*Step is a TableLike,
1380         which is what from() takes.
1381
1382 2012-04-23  Murray Cumming  <murrayc@murrayc.com>
1383
1384         Use jOOQ instead of Glom.build_sql*(), to avoid native calls.
1385
1386         * pom.xml: Depend on jooq.
1387         * src/main/java/org/glom/web/server/SqlUtils.java: Reimplement the
1388         methods with jOOQ, based on the C++ implementations in libglom,
1389         with some changes to the logic required by jooQ.
1390         Take a jOOQ Condition rather than a Glom.SqlExpr (GdaSqlExpr) for the
1391         where clause.
1392         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1393         * src/main/java/org/glom/web/server/ReportGenerator.java:
1394         * src/main/java/org/glom/web/server/SqlUtils.java:
1395         * src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
1396         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
1397         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java:
1398         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
1399         * src/main/java/org/glom/web/server/database/RelatedListNavigation:
1400         Adapt. In particular, the SqlUtils methods now need to take a Connection,
1401         because jOOQ needs that, though it seems unnecessary.
1402
1403         This is not quite finished. Ideally jOOQ would help us to build 
1404         table_name.field_name names, quoting and escaping them properly.
1405         See http://stackoverflow.com/questions/10264001/instantiating-a-jooq-field-by-name
1406
1407 2012-04-21  Murray Cumming  <murrayc@murrayc.com>
1408
1409         Move use of Glom.build_sql*() into a new SqlUtils class.
1410
1411         * src/main/java/org/glom/web/server/SqlUtils.java: Add static methods
1412         to wrap Glom.build_sql*(). The parameter types are still Glom one,
1413         but this will make it easier to start using something other than 
1414         libglom or SqlBuilder.
1415
1416 2012-04-21  Murray Cumming  <murrayc@murrayc.com>
1417
1418         Update the project URL.
1419
1420         * pom.xml: Use an OnlineGlom-specific URL for the project URL.
1421
1422 2012-04-21  Murray Cumming  <murrayc@murrayc.com>
1423
1424         Main layout: Use a FlowTable instead of absolute positioning.
1425
1426         * src/main/java/org/glom/web/client/OnlineGlom.java: onModuleLoad():
1427         The RootLayoutPanel is a (extends) AbsolutePanel, so each of its 
1428         child panels/widgets must have an absolute position. But that is annoying, so
1429         this adds a FlowTable and puts the child panels in there.
1430
1431 2012-04-21  Murray Cumming  <murrayc@murrayc.com>
1432
1433         GwtTestOnlineGlom: Comment out unused code.
1434
1435         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
1436         Eclipse has started to say that some code is unused.
1437
1438 2012-04-21  Murray Cumming  <murrayc@murrayc.com>
1439
1440         Update to the latest versions of dependencies.
1441
1442         * pom.xml: Update version numbers of dependencies to the latest
1443         versions.
1444         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
1445         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1446         * src/main/java/org/glom/web/server/ReportGenerator.java:
1447         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java:
1448         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
1449         * src/main/java/org/glom/web/server/database/RelatedListNavigation.
1450         java:
1451         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
1452         Modify the imports where necessary.
1453
1454 2012-04-17  Murray Cumming  <murrayc@murrayc.com>
1455
1456         Style: Remove overflow:hidden from searchbox
1457
1458         * src/main/webapp/style.css: Because this pushes the Back To Link
1459         label/link on to the next row, which is then hidden due to the 
1460         hard-coded (in ems) height.
1461
1462 2012-04-20  Murray Cumming  <murrayc@murrayc.com>
1463
1464         Remove some duplicate code.
1465
1466         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1467         getDocumentInfo(): This must have been duplicated during the merge from the
1468         reports branch.
1469
1470 1.21.8.1:
1471
1472 2012-04-19  Murray Cumming  <murrayc@murrayc.com>
1473
1474         Reports: Localize the waiting for report message.
1475
1476         * src/main/java/org/glom/web/client/activity/ReportActivity.java
1477         start(): Get the message from the contants.
1478         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants.properties:
1479         Add the string here.
1480         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_cs.properties:
1481         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_de.properties:
1482         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_es.properties:
1483         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_sl.properties:
1484         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_zh_CN.properties:
1485         Update these files with the English text for newer strings for now.
1486
1487 2012-04-19  Murray Cumming  <murrayc@murrayc.com>
1488
1489         Reports: Show a message while waiting for the report.
1490
1491         * src/main/java/org/glom/web/client/ui/ReportView.java
1492         * src/main/java/org/glom/web/client/ui/ReportViewImpl.java:
1493         Add setWaitingText(), to show a message saying that we are 
1494         waiting for the report to be ready.
1495         * src/main/java/org/glom/web/client/activity/ReportActivity.java
1496         start(): Call setWaitingText() before calling the async
1497         report generation.
1498
1499 2012-04-19  Murray Cumming  <murrayc@murrayc.com>
1500
1501         ReportGenerator: Specify date and time formats.
1502
1503         * src/main/java/org/glom/web/server/ReportGenerator.java:
1504         createFieldValueElement(): Use the default (and localized)
1505         short formats, though we still need a way to show 4-digit
1506         years without providing the format for every locale.
1507         * src/main/java/org/glom/web/server/database/DBAccess.java:
1508         convertResultSetToDTO(): Use the short formats here too.
1509
1510 2012-04-18  Murray Cumming  <murrayc@murrayc.com>
1511
1512         ReportGenerator: Use the correct numeric formatting.
1513
1514         * src/main/java/org/glom/web/server/ReportGenerator.java
1515         createFieldExpression(), createFieldValueElement(): Take the
1516         whole LayoutItem_Field instead of just the field name, so
1517         we have access to the formatting.
1518         createFieldValueElement(): Use JRTextField.setPattern() to
1519         specify the numeric formatting, with the help of a 
1520         regular DecimalFormat.
1521
1522 2012-04-18  Murray Cumming  <murrayc@murrayc.com>
1523
1524         ReportGenerator: Avoid showing null for group by titles.
1525
1526         * src/main/java/org/glom/web/server/ReportGenerator.java
1527         generateReport(): Use setBlankWhenNull() on the field title
1528         style too, because this is used for values in group by
1529         sections.
1530
1531 2012-04-18  Murray Cumming  <murrayc@murrayc.com>
1532
1533         ReportGenerator: Add a colon to titles in vertical groups.
1534
1535         * src/main/java/org/glom/web/server/ReportGenerator.java
1536         addFieldToDetailBandVertical(): Pass true for the withColon
1537         parameter.
1538
1539 2012-04-18  Murray Cumming  <murrayc@murrayc.com>
1540
1541         ReportGenerator: Simplify the code by using Position more.
1542
1543 2012-04-18  Murray Cumming  <murrayc@murrayc.com>
1544
1545         Reports: Support vertical groups, roughly.
1546
1547         * src/main/java/org/glom/web/server/ReportGenerator.java:
1548         addToReport(): Rename to addGroupToReport() and, if necessary,
1549         call the new addVerticalGroupToReport() method.
1550         createFieldValueElement(): Let the caller specify the Y position
1551         too.
1552
1553 2012-04-17  Murray Cumming  <murrayc@murrayc.com>
1554
1555         Reports: Allow a second report to be shown.
1556
1557         * src/main/java/org/glom/web/client/ui/ReportViewImpl.java:
1558         clear(): Do not remove the HTML widget, which broke the whole layout.
1559
1560 2012-04-17  Murray Cumming  <murrayc@murrayc.com>
1561
1562         Locales drop-down: Show that we use English by default.
1563
1564         * src/main/java/org/glom/web/client/activity/TableSelectionActivity.java:
1565         fillView(): When we use English, just because that is the default, when
1566         no locale is specified, show that in the Locales drop-down instead of 
1567         just showing the first item.
1568
1569 2012-04-17  Murray Cumming  <murrayc@murrayc.com>
1570
1571         Unselect the Report/Locale/Table combo item when appropriate.
1572
1573         * src/main/java/org/glom/web/client/activity/TableSelectionActivity.java:
1574         setPlace(): clear reportName if this is not a ReportPlace.
1575         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1576         setSelectedTableName(), setSelectedLocale(), setSelectedReport():
1577         When the provided name is empty, unselect all items, so that none are
1578         indicated. This uses a for loop because I cannot find a single method
1579         to do this.
1580
1581 2012-04-17  Murray Cumming  <murrayc@murrayc.com>
1582
1583         Report: Give the user a way to get back to the list.
1584
1585         * src/main/java/org/glom/web/client/activity/TableSelectionActivity.java:
1586         start(), setPlace(): Show the Back To List link on reports, and also 
1587         interpret selecting the empty report item as back to list.
1588
1589 2012-04-13  Murray Cumming  <murrayc@murrayc.com>
1590
1591         Really show the selected Report name.
1592
1593         * src/main/java/org/glom/web/client/activity/TableSelectionActivity:
1594         setPlace(): Store the reportName here, if it is that kind of Place.
1595         fillView(): Set the selected Report after filling the list of reports.
1596         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1597         setSelectedLocale(), setSelectedReport(): Avoid possible uses of
1598         null Strings, though we need some way to unselect all ListBox items
1599         in that case.
1600
1601 2012-04-13  Murray Cumming  <murrayc@murrayc.com>
1602
1603         ReportGenerator: Try to avoid some problems.
1604
1605         * src/main/java/org/glom/web/server/ReportGenerator.java
1606         addField(): Try to avoid duplicates, and avoid using a null
1607         class type.
1608
1609 2012-04-13  Murray Cumming  <murrayc@murrayc.com>
1610
1611         Reports: Use quickFind.
1612
1613         * src/main/java/org/glom/web/client/OnlineGlomService.java;
1614         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java:
1615         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1616         getReportHTML(): Add a quickFind parameter.
1617         * src/main/java/org/glom/web/client/activity/ReportActivity.java
1618         start(): Pass the quickFind parameter.
1619         * src/main/java/org/glom/web/server/ReportGenerator.java
1620         generateReport(): Take a quickFind parameter.
1621
1622 2012-04-13  Murray Cumming  <murrayc@murrayc.com>
1623
1624         ReportPlace: Actually use the report name.
1625
1626         * src/main/java/org/glom/web/client/place/ReportPlace.java
1627         getPlace(): Do not assign the report name to the quickfind.
1628
1629 2012-04-13  Murray Cumming  <murrayc@murrayc.com>
1630
1631         Show java.library.path when complaining.
1632
1633         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1634         init(): When telling us to check java.library.path, show the
1635         current value.
1636
1637 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1638
1639         ReportGenerator: Do not show nulls.
1640
1641 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1642
1643         ReportGenerator: Make the title font larger.
1644
1645 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1646
1647         ReportGenerator: Put field titles inside groups, if there are groups.
1648
1649 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1650
1651         ReportGenerator: Take the Report itself instead of the name and group.
1652
1653         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1654         Remove getReportLayoutGroup().
1655         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1656         getReportHTML(): Pass the report instead
1657         of its name and layout group.
1658         * src/main/java/org/glom/web/server/ReportGenerator.java
1659         generateReport(): Use the report object to use the title 
1660         instead of the name.
1661
1662 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1663
1664         ReportGenerator: Remove designBand parameters.
1665
1666         * src/main/java/org/glom/web/server/ReportGenerator.java:
1667         Make designBand a class member instead of passing it to all
1668         methods.
1669
1670 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1671
1672         ReportGenerator: Add lines, a bit like in the desktop version.
1673
1674         * src/main/java/org/glom/web/server/ReportGenerator.java
1675         addToReport(): Use JRDesignLine.
1676
1677 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1678
1679         ReportGenerator: Correct the title positions and use some bold style.
1680
1681         * src/main/java/org/glom/web/server/ReportGenerator.java:
1682         Break the code up into reusable functions, correct the placement of 
1683         titles, and use normal/bold styles as in the reports in the desktop 
1684         version.
1685
1686 2012-03-06  Murray Cumming  <murrayc@murrayc.com>
1687
1688         ReportGenerator: Add a header band to show the field titles.
1689
1690         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1691         getReportHTML(): Pass the localeId to the ReportGenerator 
1692         constructor.
1693         * src/main/java/org/glom/web/server/ReportGenerator.java
1694         constructor: Take the localeID so we can get translated field
1695         titles.
1696         generateReport(), addToReport(), addFieldToBand(): Add field 
1697         titles in a column header band.
1698
1699 2012-03-05  Murray Cumming  <murrayc@murrayc.com>
1700
1701         Reports drop-down list: Some improvement.
1702
1703         * src/main/java/org/glom/web/client/ui/TableSelectionView.java
1704         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1705         Adedd setSelectedReport(),
1706         setReportList(): Add a blank line so that the user can select the 
1707         first one.
1708         * src/main/java/org/glom/web/client/activity/ReportActivity.java
1709         start(): Show the current report by calling setSelectedReport().
1710         This does not seem to work yet.
1711
1712 2012-03-05  Murray Cumming  <murrayc@murrayc.com>
1713
1714         DetailsActivity, ListActivity: Move some variables into a base class.
1715
1716         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
1717         * src/main/java/org/glom/web/client/activity/HasTableActivity.java:
1718         * src/main/java/org/glom/web/client/activity/ListActivity.java: Move 
1719         the clientFactory, documentID, tableName and authenticationPopup into
1720         a base class, to avoid duplication.
1721
1722 2012-03-05  Murray Cumming  <murrayc@murrayc.com>
1723
1724         Translate the Reports label.
1725
1726         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java
1727         Get the "Reports" label string from the constants.
1728         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants.pro
1729         perties: Add Reports to the constants.
1730
1731 2012-03-05  Murray Cumming  <murrayc@murrayc.com>
1732
1733         Reports: Implement grouping.
1734
1735         * src/main/java/org/glom/web/server/ReportGenerator.java:
1736         Handle LayoutItem_GroupBy items and try to do the right thing
1737         with JRDesignGroup. It seems to work.
1738
1739 2012-03-04  Murray Cumming  <murrayc@murrayc.com>
1740
1741         Actually show some data with JasperReports.
1742
1743         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java: 
1744         getReportHTML(): Move most code into a ReportGenerator class.
1745         * src/main/java/org/glom/web/server/ReportGenerator.java:
1746         Recurse into sub-groups, adding fields to the JasperDesign's details
1747         band. Note that we must set an arbitrary width and height, or it just
1748         will not show any data.
1749
1750 2012-03-04  Murray Cumming  <murrayc@murrayc.com>
1751
1752         Reports Chooser: Show the titles, not the names.
1753
1754         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java
1755         (TableSelectionViewImpl.setReportList): Show the titles in the UI,
1756         and the names as the values.
1757         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1758         (ConfiguredDocument.getReportLayoutGroup): Do not return a default
1759         group now that we provide the report name, so it should always 
1760         succeed.
1761
1762 2012-02-15  Murray Cumming  <murrayc@murrayc.com>
1763
1764         Depend on jasperreports.
1765
1766         * pom.xml: Add the dependency. My plan is to use this on the 
1767         server side.
1768
1769 2012-01-31  Murray Cumming  <murrayc@murrayc.com>
1770
1771         Implement navigation to report places.
1772
1773         * src/main/java/org/glom/web/client/activity/ReportActivity.java
1774         start(): Do not bother to handle all events here.
1775         * src/main/java/org/glom/web/client/ui/TableSelectionView.java
1776         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1777         Added getSelectedReport().
1778         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
1779         .java: start(): When handling a change to the reports chooser,
1780         call getSelectedReport() and goTo() its ReportPlace.
1781         * src/main/java/org/glom/web/client/ui/ReportView.java
1782         * src/main/java/org/glom/web/client/ui/ReportViewImpl.java:
1783         Added setReportHTML() which puts the html in a gwt HTML widget.
1784         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
1785         getReportHTML(): Return "TODO" just to show that this works.
1786
1787 2012-01-31  Murray Cumming  <murrayc@murrayc.com>
1788
1789         Make ReportPlace usable.
1790
1791         * src/main/java/org/glom/web/client/mvp/AppPlaceHistoryMapper.java:
1792         Mention ReportPlace.
1793         * src/main/java/org/glom/web/client/place/ReportPlace.java:
1794         Correct the @prefix annotation.
1795
1796 2012-01-31  Murray Cumming  <murrayc@murrayc.com>
1797
1798         OnlineGlomService: Return report HTML rather than the LayoutGroup.
1799
1800         * src/main/java/org/glom/web/client/OnlineGlomService.java:
1801         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java:
1802         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1803         Change getReportLayout() to getReportHMTL() because we will not need to 
1804         parse or render the report layout on the client side.
1805         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
1806         getReportLayout(): Return the libglom LayoutGroup type because we will
1807         not need to convert to a shared type, because this will not be used on
1808         the client side.
1809         * src/main/java/org/glom/web/client/activity/ReportActivity.java:
1810         Adapted.
1811
1812         Note that there is still no implementation for this.
1813
1814
1815 2012-01-27  Murray Cumming  <murrayc@murrayc.com>
1816
1817         Add a (empty) Report Place, View, and Activity.
1818
1819         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.java:
1820         Rename to:
1821         * src/main/java/org/glom/web/client/place/HasTablePlace.java
1822         * src/main/java/org/glom/web/client/place/ListPlace.java: Move some of
1823         this into a superclass:
1824         * src/main/java/org/glom/web/client/place/HasRecordsPlace.java
1825         and also use it as the base of this new ReportPlace:
1826         * src/main/java/org/glom/web/client/place/ReportPlace.java
1827
1828         * src/main/java/org/glom/web/client/ui/ReportView.java
1829         * src/main/java/org/glom/web/client/ui/ReportViewImpl.java
1830         * src/main/java/org/glom/web/client/activity/ReportActivity.java:
1831         Add these, containing mostly boiler-plate for now.
1832
1833         * src/main/java/org/glom/web/client/OnlineGlomService.java
1834         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java
1835         * src/main/java/org/glom/web/server/ConfiguredDocument.java
1836         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1837         Add API to get the LayoutGroup for the report.
1838
1839 2012-01-23  Murray Cumming  <murrayc@murrayc.com>
1840
1841         Add and fill a Reports drop-down list box.
1842
1843         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
1844         Aded getReports():
1845         * src/main/java/org/glom/web/client/OnlineGlomService.java:
1846         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java:
1847         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1848         Added getReports(document, table, localeID), calling 
1849         ConfiguredDocument.getReports().
1850         * src/main/java/org/glom/web/client/ui/TableSelectionView.java:
1851         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1852         Added setReportsList() and a list widget.
1853         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
1854         .java (TableSelectionActivity.fillView(): Fill the view's reports list.
1855
1856
1857 1.21.8:
1858
1859 2012-04-12  Murray Cumming  <murrayc@murrayc.com>
1860
1861         Translations: Add Esperanto.
1862
1863         * src/main/java/org/glom/web/OnlineGlom.gwt.xml
1864         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_eo.
1865         properties: Add this translation because someone took the time to make it.
1866
1867 2012-03-15  Murray Cumming  <murrayc@murrayc.com>
1868
1869         Adapt to the java-libglom 1.21.7 API. 
1870
1871         * src/main/java/org/glom/web/server/ReportGenerator.java:
1872         addToReport(): get_group_secondary_fields() is now
1873         get_secondary_fields().
1874
1875
1876 2012-03-15  Murray Cumming  <murrayc@murrayc.com>
1877
1878         Use the latest java-libglom version.
1879
1880         * pom.xml: Use java-libglom 1.21.7.
1881
1882 2012-03-03  Ben Konrath  <ben@bagu.org>
1883
1884         Display date and time in details view.
1885
1886         https://bugzilla.gnome.org/show_bug.cgi?id=671257
1887
1888         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
1889
1890 2012-03-05  Murray Cumming  <murrayc@murrayc.com>
1891
1892         Require the latest java-libglom.
1893
1894         * pom.xml: java-libglom 1.21.5 has LayoutItem_GroupBy.
1895
1896 2012-03-04  Murray Cumming  <murrayc@murrayc.com>
1897
1898         ListViewDbAccess.getSelectQuery(): Avoid using empty quickfind strings.
1899
1900         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java
1901         ListViewDBAccess.getSelectQuery(): Do not create a where clause for 
1902         an empty quickfind string. I also corrected libglom to create only 
1903         empty where clauses for empty quickfind strings, but this avoids the
1904         need for that fix.
1905
1906 2012-02-24  Ben Konrath  <ben@bagu.org>
1907
1908         Improve the tabs in the Notebook widget.
1909
1910         Bug #670728
1911
1912 2012-01-30  Murray Cumming  <murrayc@murrayc.com>
1913
1914         Translations: Try to translate the strings.
1915
1916         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_cs.properties:
1917         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_de.properties:
1918         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_es.properties:
1919         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_sl.properties:
1920         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_zh_CN.properties:
1921         Take the Open translation from GTK+'s .po files.
1922         Take the Details translation from Glom's po files.
1923         I have added the other strings to Glom so we can get translations that way:
1924         http://git.gnome.org/browse/glom/commit/?id=c3cefe607428a84bdf8de1b04e8bef6f70b04564
1925
1926 2012-01-27  Murray Cumming  <murrayc@murrayc.com>
1927
1928         TableSelectionViewImpl: Put the search label and entry in a div.
1929
1930         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1931         Put the search widgets in a FlowTable so that the CSS can be used to
1932         style them while keeping them together.
1933         * src/main/webapp/style.css: Mention the new div.
1934
1935 2012-01-27  Murray Cumming  <murrayc@murrayc.com>
1936
1937         Translate more strings in more locales.
1938
1939         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants.properties:
1940         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
1941         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
1942         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
1943         Translate the "Details" and "Open" string too.
1944
1945         * src/main/java/org/glom/web/OnlineGlom.gwt.xml:
1946         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants.properties:
1947         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_cs.properties:
1948         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_es.properties:
1949         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_sl.properties:
1950         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_zh_CN.properties:
1951         Add these new locales as placeholders though they currently contain English.
1952
1953 2012-01-27  Murray Cumming  <murrayc@murrayc.com>
1954
1955         OnlineGlomServiceImpl: Avoid (unlikely) null object dereferences.
1956
1957         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java: get*():
1958         Check the ConfiguredDocument* for null before using it.
1959
1960 2012-01-26  Murray Cumming  <murrayc@murrayc.com>
1961
1962         Tell Eclipse about the generated java files.
1963
1964         * .classpath: This lets it find OnlineGlomConstants.java.
1965         It would be nice if Eclipse just used the maven build files.
1966
1967 2012-01-26  Murray Cumming  <murrayc@murrayc.com>
1968
1969         Prevent a crash when no locale is specified in the URL.
1970
1971         * src/main/java/org/glom/web/client/Utils.java: getCurrentLocaleID():
1972         Avoid returning a null string, obtained from 
1973         Window.Location.getParameter(). This caused a crash when it was
1974         later passed to libglom's API.
1975         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
1976         init(), getDocumentInfo(), getListViewLayout(), getDocuments(),
1977         getDetailsLayoutAndData(): Use StringUtils.defaultString() to
1978         guard against future null strings.
1979
1980 2012-01-26  Murray Cumming  <murrayc@murrayc.com>
1981
1982         Use the ?locale= query param instead of the &lang= token param. 
1983
1984         * src/main/java/org/glom/web/client/place/ListPlace.java
1985         * src/main/java/org/glom/web/client/place/DetailsPlace.java
1986         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.java
1987         Remove the lang token key and value.
1988         
1989         * src/main/java/org/glom/web/client/ui/TableSelectionView.java
1990         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
1991         When the user selects a different locale from the chooser, use 
1992         Window.Location.assign() to change the URL, which then causes a reload.
1993         
1994         * src/main/java/org/glom/web/client/Utils.java: Added getCurrentLocaleID().
1995         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
1996         * src/main/java/org/glom/web/client/activity/DocumentSelectionActivity.java
1997         * src/main/java/org/glom/web/client/activity/ListActivity.java
1998         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
1999         * src/main/java/org/glom/web/client/ui/DocumentSelectionView.java
2000         * src/main/java/org/glom/web/client/ui/DocumentSelectionViewImpl.java:
2001         * src/main/java/org/glom/web/client/ui/ListView.java:
2002         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
2003
2004         Remove localeID member variables and method/constructor parameters, instead
2005         using Utils.getCurrentLocaleID() when we need a localID to pass to 
2006         OnlineGlomService.
2007
2008 2012-01-26  Murray Cumming  <murrayc@murrayc.com>
2009
2010         Internationalize the UI strings.
2011
2012         * pom.xml: gwt-maven-plugin: Add the i18n goal and specify a 
2013         <i18nConstantsBundle>, removing the unused <i18nMessagesBundle>.
2014         * src/main/resources/org/glom/web/client/Messages.properties: Remove this
2015         because it is unused. Messages are apparently strings that can have 
2016         parameters, but we do not need that yet, so Contants will be enough for now.
2017         * src/main/java/org/glom/web/OnlineGlom.gwt.xml: Add extend-property lines
2018         to say that we support the en and de locales.
2019         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants.properties:
2020         The original English strings.
2021         * src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_de.properties:
2022         Some German translations of the English strings.
2023         The i18n goal then uses the .properties file to generate an 
2024         OnlineGlomConstants.java file in target/ and somehow GWT.create() magically
2025         returns an implementation that returns the translated strings.
2026         The documentation suggests putting these in src/java/*/client/, but it seems
2027         best to put it in src/resources/*/client/.
2028         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
2029         Instantiate OnlineGlomConstants via GWT.create() and use it to get the strings
2030         instead of hard-coding them.
2031         Note that we cannot import OnlineGlomConstants because it does not exist yet,
2032         but that does not seem to stop the build, though it confuses Eclipse.
2033         
2034         You can see the translated string by adding ?locale=de to the URL, like so:
2035         http://127.0.0.1:8888/OnlineGlom.html?gwt.codesvr=127.0.0.1:9997?locale=de#list:document=film_manager
2036
2037 2012-01-24  Murray Cumming  <murrayc@murrayc.com>
2038
2039         Improve null/empty String checks. 
2040
2041         * pom.xml: Add a dependency on commons-lang, to use
2042         org.apache.commons.lang.StringUtils.
2043         * src/main/java/org/glom/web/server/ConfiguredDocument.java
2044         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
2045         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java
2046         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
2047         Use StringUtils.isEmpty().
2048
2049         * src/main/java/org/glom/web/client/StringUtils.java: Add a tiny
2050         StringUtils class with a static isEmpty() function because we 
2051         cannot use org.apache.commons.lang.StringUtils in client-side
2052         GWT code because it (apparently) cannot be compiled to javascript.
2053         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
2054         * src/main/java/org/glom/web/client/activity/ListActivity.java
2055         * src/main/java/org/glom/web/client/activity/TableSelectionActivity.java
2056         * src/main/java/org/glom/web/client/place/DetailsPlace.java
2057         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.java
2058         * src/main/java/org/glom/web/client/place/ListPlace.java
2059         * src/main/java/org/glom/web/client/ui/cell/NumericCell.java
2060         * src/main/java/org/glom/web/client/ui/cell/TextCell.java
2061         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java
2062         * src/main/java/org/glom/web/client/ui/details/Group.java
2063         * src/main/java/org/glom/web/client/ui/details/Notebook.java: Use 
2064         our StringUtils.isEmpty() function.
2065
2066 2012-01-24  Murray Cumming  <murrayc@murrayc.com>
2067
2068         Update to the latest java-libglom API.
2069
2070         * pom.xml: Require java-libglom 1.21.4.
2071         * src/main/java/org/glom/web/server/ConfiguredDocument.java
2072         getDocumentInfo(), getListViewLayoutGroup():
2073         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
2074         getDocuments():
2075         * src/main/java/org/glom/web/server/database/DBAccess.java
2076         getFieldsToShowForSQLQueryAddGroup(),
2077         getPrimaryKeyLayoutItemField(): Replace get_database_title()
2078         with either get_database_title_original() or 
2079         get_database_title(localeID).
2080
2081 2012-01-24  Murray Cumming  <murrayc@murrayc.com>
2082
2083         ConfiguredDocument: Avoid a null pointer exception.
2084
2085         * src/main/java/org/glom/web/server/ConfiguredDocument.java
2086         Initialize localeID to "" to avoid returning a null String which 
2087         causes a crash in java-libglom's swing-generated code.
2088
2089 2012-01-23  Murray Cumming  <murrayc@murrayc.com>
2090
2091         Some simple renaming.
2092
2093         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java
2094         * src/main/webapp/style.css: Rename, tableChooser to tablesChooser. Likewise
2095         for localeChooser. This seems more appropriate and is less ambiguous 
2096         particularly in the .css file.
2097
2098 2012-01-23  Murray Cumming  <murrayc@murrayc.com>
2099
2100         ConfiguredDocument: Rename the localedID private member variable.
2101
2102 2012-01-23  Murray Cumming  <murrayc@murrayc.com>
2103
2104         Adapt to the latest java-libglom API from git master.
2105
2106         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
2107         libglom now uses only Vector instead of List, which uses add() instead of
2108         addLast(). 
2109
2110 2012-01-22  Murray Cumming  <murrayc@murrayc.com>
2111
2112         ConfiguredDocument: Rename the localedID private member variable.
2113
2114 2012-01-20  Murray Cumming  <murrayc@murrayc.com>
2115
2116         Build a source tarball with mvn assembly:single
2117
2118         * assembly.xml: Add this file.
2119         * pom.xml: Use the maven-assembly-plugin and tell it to use 
2120         our assembly.xml file.
2121
2122 2012-01-19  Murray Cumming  <murrayc@murrayc.com>
2123
2124         OnlineGlomServiceImpl: Get .glom files recursively.
2125
2126         * pom.xml: Depend on commons-io from org.apache.commons.
2127         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
2128         init(): Use org.apache.commons.io.FileUtils.listFiles() to get the 
2129         files recursively, and with the easier filter for the extension.
2130         Use org.apache.commons.io.FilenameUtils.removeExtension() to 
2131         simplify that code too.
2132
2133 2012-01-19  Murray Cumming  <murrayc@murrayc.com>
2134
2135         README: Mention that you must install java-libglom packages separately.
2136
2137         But then it works, because java-libglom is now in the central maven 
2138         repository.
2139
2140 2012-01-18  Murray Cumming  <murrayc@murrayc.com>
2141
2142         locales drop-down: Show the correct selected locale when the URL changes.
2143
2144         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
2145         .java: setPlace(): Move some code into fillView().
2146
2147 2012-01-18  Murray Cumming  <murrayc@murrayc.com>
2148
2149         locales drop-down: Do not lose the primary key.
2150
2151         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
2152         start(): onLocaleChange(): Pass the current primary key value, 
2153         instead of an empty value.
2154
2155 2012-01-18  Murray Cumming  <murrayc@murrayc.com>
2156
2157         locales drop-down: Do not lose the drop-down selection.
2158
2159         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
2160         .java (TableSelectionActivity.fillView): Set the selected locale
2161         after changing the drop-down items (though we do not really need
2162         to change them just because the locale changes.)
2163
2164 2012-01-18  Murray Cumming  <murrayc@murrayc.com>
2165
2166         locales drop-down: Change the tables list when this changes.
2167
2168         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
2169         .java: TableSelectionActivity.start(): Move the async table titles
2170         retrieval into a private fillView() method and also call this when 
2171         the chosen locale changes.
2172         Note that the document title is not actually translatable yet, but
2173         that is a problem that I should fix soon in libglom.
2174
2175 2012-01-18  Murray Cumming  <murrayc@murrayc.com>
2176
2177         Improve the placement of the locales drop-down.
2178
2179         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java
2180         Put the title and locales drop-down in a div (gwt.FlowTable).
2181         * src/main/webapp/style.css: Add magic css properties to make this work.
2182         Also remove the left margin from the title so that it lines up with the 
2183         headerbox below it.
2184
2185 2012-01-18  Murray Cumming  <murrayc@murrayc.com>
2186
2187         locales selector: Show human-readable locale titles.
2188
2189         * src/main/java/org/glom/web/server/ConfiguredDocument.java
2190         getDocumentInfo(): Use java.util.Locale to show a real title of 
2191         each locale, in the locale's own language.
2192
2193 2012-01-17  Murray Cumming  <murrayc@murrayc.com>
2194
2195         Add a language/locale selector drop-down.
2196
2197         * src/main/java/org/glom/web/shared/DocumentInfo.java:
2198         Add getLocaleIDs(), setLocaleIDs(), getLocaleTitles(), setLocaleTitles().
2199         * /src/main/java/org/glom/web/server/ConfiguredDocument.java:
2200         getDocumentInfo(): Store the available Locales in the DocumentInfo.
2201         * src/main/java/org/glom/web/client/ui/TableSelectionView.java:
2202         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
2203         Add a ListBox to show the available locales. Add getLocaleSelector(),
2204         setLocaleList(), getSelectedLocale(), setSelectedLocale().
2205         * src/main/java/org/glom/web/client/event/LocaleChangeEvent.java
2206         * src/main/java/org/glom/web/client/event/LocaleChangeEventHandler.
2207         java: Add these classes.
2208         * src/main/java/org/glom/web/client/activity/TableSelectionActivity.java:
2209         start(): Fill the locales ListBox. Handle its change event, firing a 
2210         LocaleChangeEvent.
2211         setPlace(): Show the selected locale as specified by the URL token.
2212         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
2213         * src/main/java/org/glom/web/client/activity/ListActivity.java:
2214         Handle LocaleChangeEvent, going to a new *Place with that locale.
2215
2216         The placement of the ListBox is not pretty, and it currently uses the ID
2217         as a title, instead of "English", "Deutsch", "Espanola", etc, but it 
2218         is a start.
2219
2220
2221 2012-01-17  Murray Cumming  <murrayc@murrayc.com>
2222
2223         Search box: Show the search text from the URL token.
2224
2225         * src/main/java/org/glom/web/client/ui/TableSelectionView.java:
2226         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
2227         Add setQuickFindText().
2228         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
2229         .java: setPlace(): Store the queryText if the place is a ListPlace, 
2230         and call TableSelectionView.setQuickFindText().
2231
2232 2012-01-17  Murray Cumming  <murrayc@murrayc.com>
2233
2234         Allow use of translations via, for instance, &lang=de in the URL.
2235
2236         * pom.xml: Use the unstable java-libglom 1.21 version.
2237
2238         * src/main/java/org/glom/web/client/OnlineGlomService.java:
2239         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java
2240         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
2241         init(): Instead of calling TranslatableItem.set_current_locale() 
2242         (now removed), call ConfiguredDocument.setDefaultLocaleID().
2243         However, this is only for default locales, which are not needed to 
2244         change the locale in the URL.
2245         getDocumentInfo(), getListViewLayout(), getSortedListViewData(),
2246         getDetailsData(), getDetailsLayoutAndData(), getRelatedListData(),
2247         getSortedRelatedListData(): Add a localeID parameter, so we can get the 
2248         layout for a particular locale.
2249         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
2250         Add get/setDefaultLocaleID().
2251         getDocumentInfo(), getListViewData(), getRelatedListData(),
2252         getDetailsLayoutGroup(), getListViewLayoutGroup(),
2253         createLayoutItemPortalDTO(), convertToGWTGlomLayoutItemField(): Add a 
2254         localeID parameter, so we can get the layout for a particular locale.
2255
2256         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.java:
2257         * src/main/java/org/glom/web/client/place/DetailsPlace.java:
2258         * src/main/java/org/glom/web/client/place/ListPlace.java:
2259         Parse and construct a lang parameter too.
2260
2261         * src/main/java/org/glom/web/client/activity/DocumentSelectionActivity.java:
2262         start(): Pass the defaultLocaleID to addDocumentLink(). It is then
2263         passed to subsequent methods and constructors.
2264         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
2265         * src/main/java/org/glom/web/client/activity/ListActivity.java:
2266         Store the localeID from the *Place and pass it to other constructors
2267         and methods, such as OnlineGlomServiceAsync.getDetailsLayoutAndData().
2268
2269         * src/main/java/org/glom/web/client/ui/DocumentSelectionView.java:
2270         * src/main/java/org/glom/web/client/ui/DocumentSelectionViewImpl.java:
2271         * src/main/java/org/glom/web/client/ui/TableSelectionView.java
2272         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java
2273         * src/main/java/org/glom/web/client/ui/ListView.java:
2274         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
2275         Take localeID parameters and pass them to subsequent constructors and 
2276         methods, so that the layout is always retrieved for that locale.
2277
2278         This is rather repetitive.
2279
2280         Note that "" means the original (default) locale of the Glom document,
2281         which is usually English.       
2282
2283 2012-01-17  Murray Cumming  <murrayc@murrayc.com>
2284
2285         Documents: Remove final keyword to fix startup configuration.
2286
2287         * src/main/java/org/glom/web/shared/Documents.java: Remove the
2288         final keywords on the private member variables because that breaks
2289         the startup, apparently (there are warnings) because it stops them
2290         from being serialized. I added these in the previous commit.
2291
2292 2012-01-13  Murray Cumming  <murrayc@murrayc.com>
2293
2294         Documents: Add some final keywords.
2295
2296         * src/main/java/org/glom/web/shared/Documents.java: Eclipse suggested
2297         this.
2298
2299 2012-01-13  Murray Cumming  <murrayc@murrayc.com>
2300
2301         OnlineGlomServiceImpl: Add to overview comments.
2302
2303         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
2304         Note that this is where all the document are loaded. They are not 
2305         loaded freshly for each page.
2306
2307 2012-01-12  Murray Cumming  <murrayc@murrayc.com>
2308
2309         Add a search box.
2310
2311         * src/main/java/org/glom/web/client/ui/TableSelectionViewImpl.java:
2312         Add a TextBox for the text of a quick find.
2313         Add getQuickFindBox(), to get the widget, and getQuickFindText() to 
2314         get the text.
2315         setBackLink(): Add a String quickFind parameter.
2316         * src/main/java/org/glom/web/client/ui/TableSelectionView.java
2317         (TableSelectionView): Add getQuickFindBox() and getQuickFindText()
2318         to the base interface, because that is how TableSelectionViewImpl is used.
2319         * src/main/webapp/style.css: Add style for the search box and its label.
2320
2321         * src/main/java/org/glom/web/client/event/QuickFindChangeEvent.java:
2322         * src/main/java/org/glom/web/client/event/QuickFindChangeEventHandler.java:
2323         Add these files, based on the existing TableChangeEvent and 
2324         TableChangeEventHandlers.
2325         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
2326         start(): Handle QuickFindChangeEvent, passing its quickFind text to
2327         a ListPlace() that the user should be taken to.
2328         * src/main/java/org/glom/web/client/activity/ListActivity.java
2329         start(): Handle it here too and adapt the TableChangeEvent handler to 
2330         pass the extra "" quickFind parameter to ListPlace.
2331         * src/main/java/org/glom/web/client/place/ListPlace.java: 
2332         Constructor: Take an extra String quickFind parameter and store it, 
2333         returning it from a new  getQuickFind() method.
2334         getToken(): Put the quickFind text in the URL token.
2335         getPlace(): Parse the quickFind text from the URL token.
2336         * src/main/java/org/glom/web/client/ui/DocumentSelectionViewImpl.ja
2337         va: addDocumentLink(): Pass an extra "" quickFind parameter to the 
2338         ListPlace constructor.
2339         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
2340         .java: start(): Add a Change handler for the TableSelectionView's
2341         TextBox (via its base HasChangeHandlers interface), firing the new 
2342         QuickFindChangeEvent.
2343         setPlace(): Adapt the call to TableSelectionView.setbackLink(), to 
2344         pass the extra "" quickFind parameter.
2345
2346         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
2347         setCellTable(): Add a String quickFind parameter and pass it to 
2348         the ListViewTable() constructor.
2349         * src/main/java/org/glom/web/client/ui/ListView.java: Change 
2350         setCellTable() in the base interface, because that is how ListViewImpl
2351         is used.
2352
2353         * src/main/java/org/glom/web/client/ui/list/ListTable.java:
2354         Add a String quickFind member variable.
2355         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
2356         Constructor: Add a String quickFind parameter, storing it in the
2357         base ListTable's member variable.
2358         onRangeChanged(): Pass quickFind to the 
2359         OnlineGlomServiceAsync.getSortedListViewData() and 
2360         OnlineGlomServiceAsync.getListViewData() methods.
2361
2362         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
2363         getListViewData(), getSortedListViewData(): Add a String quickFind 
2364         parameter, passing it to ConfiguredDocument.getListViewData().
2365         * src/main/java/org/glom/web/client/OnlineGlomService.java:
2366         Change getListViewData(), getSortedListViewData() in the base interface,
2367         because that is how OnlineGlomServiceImpl is used, via this:
2368         * src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java:
2369         Change getListViewData(), getSortedListViewData() here too.
2370         This class can apparently be used to asynchronously call methods on 
2371         OnlineGlomService, and GWT seems to implement that after recognizing 
2372         just the *Async name convention and the extra AsyncCallback parameters.
2373
2374         * src/main/java/org/glom/web/server/ConfiguredDocument.java
2375         getListViewData(): Add a String quickFind parameter, and pass it to 
2376         ListViewDBAccess.getData().
2377         * src/main/java/org/glom/web/server/database/ListDBAccess.java
2378         getListData(): Add a String quickFind parameter and pass it to 
2379         getSelectQuery().
2380         getSelectQuery(): Add a String quickFind parameter.
2381         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java
2382         getSelectQuery(): Add a String quickFind parameter and use it with 
2383         Glom.get_find_where_clause_quick() to pass a where_clause to 
2384         Glom.build_sql_select_with_where_clause(), to actually filter the 
2385         list view results.
2386         getData(): Add a String quickFind parameter, passing it to getListData().
2387         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.ja
2388         va: getData(): Pass an empty string to getListData() for the 
2389         quickFind parameter.
2390
2391 2012-01-12  Murray Cumming  <murrayc@murrayc.com>
2392
2393         ListTable: Minor change.
2394
2395         * src/main/java/org/glom/web/client/ui/list/ListTable.java
2396         createCellTable(): Make this protected instead of public.
2397
2398 2012-01-12  Murray Cumming  <murrayc@murrayc.com>
2399
2400         Many files: Use final for the parameters and use the @override attribute.
2401
2402 2012-01-22  Ben Konrath <ben@bagu.org>
2403
2404         Add anchor links for single line text that starts with http, ftp and www.
2405
2406         Bug #667269
2407
2408 2012-01-22  Ben Konrath <ben@bagu.org>
2409
2410         Add ellipsis to single line text in details view.
2411
2412         Bug #667269
2413
2414 2012-01-04  Murray Cumming  <murrayc@murrayc.com>
2415
2416         Remove all javadoc author tags.
2417
2418         Because they are awkward and meaningless when many people touch
2419         many files.
2420         See https://gitorious.org/online-glom/gwt-glom/commit/7628b732cb90cbc6d5635420a75568504e8b3655#comment_81164
2421  
2422 2012-01-04  Murray Cumming  <murrayc@murrayc.com>
2423
2424         Revert the COPYING.LESSER to COPYING rename.
2425
2426         Apparently both should be there if it is LGPL.
2427
2428 2012-01-03  Murray Cumming  <murrayc@murrayc.com>
2429
2430         *View: Remove unused imports.
2431
2432         * src/main/java/org/glom/web/client/ui/DetailsView.java:
2433         * src/main/java/org/glom/web/client/ui/DocumentSelectionView.java
2434         * src/main/java/org/glom/web/client/ui/ListView.java:
2435         * src/main/java/org/glom/web/client/ui/TableSelectionView.java:
2436         Remove unused imports, as suggested by Eclipse.
2437
2438 2012-01-02  Murray Cumming  <murrayc@murrayc.com>
2439
2440         Move the *View::Presenter types, and some API into one base View.
2441
2442         * src/main/java/org/glom/web/client/ui/DetailsView.java:
2443         * src/main/java/org/glom/web/client/ui/DocumentSelectionView.java:
2444         * src/main/java/org/glom/web/client/ui/ListView.java:
2445         * src/main/java/org/glom/web/client/ui/TableSelectionView.java: Move
2446         Presenter, setPresenter() and clear() into a shared base interface,
2447         to avoid the unnecessary duplicate Presenter types and to more clearly
2448         show how the *Views share the same structure, even if they are not 
2449         used polymorphically.
2450
2451         * src/main/java/org/glom/web/client/ui/DetailsViewImpl.java:
2452         * src/main/java/org/glom/web/client/ui/DocumentSelectionViewImpl.ja
2453         va:
2454         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
2455         * src/main/java/org/glom/web/client/activity/ListActivity.java:
2456         * src/main/java/org/glom/web/client/activity/DocumentSelectionActiv
2457         ity.java:
2458         * src/main/java/org/glom/web/client/activity/TableSelectionActivity
2459         .java: Adapt.
2460
2461         Feel free to revert this if there is a good reason for the duplicate
2462         types.
2463
2464 2012-01-02  Murray Cumming  <murrayc@murrayc.com>
2465
2466         OnlineGlom: Make clientFactory a (protected) member, and test it a bit.
2467
2468         * src/main/java/org/glom/web/client/OnlineGlom.java: Make clientFactory
2469         a class member instead of a local variable in the method.
2470         This lets us use it to get the view instances, for use in tests.
2471         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
2472         beforeOnlineGlom(): Test some more details of the initial view.
2473         Again, this is not very useful.
2474
2475         To really test gwt-glom we will need to start a local postgresql 
2476         instance with local data, like the Glom tests in C++.
2477
2478 2012-01-02  Murray Cumming  <murrayc@murrayc.com>
2479
2480         pom.xml: Mention the LGPL license.
2481
2482         * pom.xml: Add a licenses section.
2483         * COPYING.LESSER: Move this to COPYING, which
2484         previously contained the GPL. But gwt-glom is all LGPL.
2485
2486 2012-01-02  Murray Cumming  <murrayc@murrayc.com>
2487
2488         Add project information to README and pom.xml.
2489
2490         * README: Add a brief description and mention some mvn
2491         commands.
2492         * pom.xml: This extra information shows up in mvn site
2493         generated pages.
2494
2495 2011-01-02  Murray Cumming  <murrayc@murrayc.com>
2496
2497         Use the latest java-libglom version.
2498
2499         * pom.xml: Use java-libglom 1.19.2 instead of 1.19.1.
2500
2501 2012-01-01  Murray Cumming  <murrayc@murrayc.com>
2502
2503         GwtTestOnlineGlom: Test a little more.
2504
2505         * src/main/java/org/glom/web/client/OnlineGlom.java: Make the panels
2506         protected rather than private, as suggested by the gwt-test-utils
2507         maintianer here:
2508         http://stackoverflow.com/questions/7931724/gwt-testcase-simulating-clicking-a-button-on-my-page
2509         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java
2510         Test the initial visibility of the panels.
2511
2512         However, this is not a very useful test.
2513         And I wonder how we should generally test using this idea for an
2514         activity/places app like ours where the real changes happen implicitly
2515         based on the history token/URL.
2516
2517 2012-01-01  Murray Cumming  <murrayc@murrayc.com>
2518
2519         Slight modification to *Mapper comments.
2520
2521         * src/main/java/org/glom/web/client/mvp/DataActivityMapper.java
2522         (DataActivityMapper)
2523         * src/main/java/org/glom/web/client/mvp/DocumentSelectionActivityMa
2524         pper.java
2525         * src/main/java/org/glom/web/client/mvp/TableSelectionActivityMappe
2526         r.java
2527         Remove comments mentioning GIN because they are just copied from 
2528         the example code and are apparently not helpful:
2529         http://groups.google.com/group/google-web-toolkit/msg/82f0098b20669a73
2530         Also change the mention of a class that is only in the example code.
2531
2532 2012-01-01  Murray Cumming  <murrayc@murrayc.com>
2533
2534         GwtTestOnlineGlom test: Minor changes.
2535
2536         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
2537         Avoid the long qualified class name and modify the comment 
2538         because it is now obvious to me that the mocked class is the only
2539         custom one created via GWT.create().
2540
2541 2012-01-01  Murray Cumming  <murrayc@murrayc.com>
2542
2543         Tests: Added the beginnings of a test using gwt-test-utils.
2544
2545         * pom.xml: Add dependencies on gwt-test-utils and easymock.
2546         * src/test/resources/META-INF/gwt-test-utils.properties: Add this file
2547         which tells gwt-test-utils what class will be tested.
2548         * src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
2549         Add a simple (but empty) test case. One class, used by the OnlineGlom
2550         class, is mocked so that it can be created. However, I am not sure 
2551         why only this class needs to be mocked.
2552
2553         Note that mockito seems more popular, and clearer, than easymock,
2554         but I have not got that working yet. It might be a matter of the 
2555         mockito version.
2556
2557         This test is run during mvn integration-test.
2558
2559 2011-12-31  Murray Cumming  <murrayc@murrayc.com>
2560
2561         Tests: Use junit4-style syntax instead of junit3-style.
2562
2563         * src/test/java/org/glom/web/client/place/DetailsPlaceTest.java:
2564         * src/test/java/org/glom/web/client/place/ListPlaceTest.java:
2565         * src/test/java/org/glom/web/shared/DataItemTest.java:
2566         Use the @Test annotation rather than relying on the test*() prefix.
2567         Also no longer implement TestCase, to avoid triggering support for 
2568         the junit3-way, which stops the annotations from working.
2569         Change the imports from import junit.framework.* to 
2570         import org.junit.*, which is apparently the new way.
2571
2572 2011-12-31  Murray Cumming  <murrayc@murrayc.com>
2573
2574         Added a test for ListPlace token parsing and creation.
2575
2576         * src/test/java/org/glom/web/client/place/ListPlaceTest.java:
2577         This is much the same as DetailsPlaceTest.
2578
2579         I wonder how we could test the other parts of the *Place API.
2580
2581 2011-12-30  Murray Cumming  <murrayc@murrayc.com>
2582
2583         DetailsPlace test: Also test getToken() and recreation via getPlace().
2584
2585         * src/test/java/org/glom/web/client/place/DetailsPlaceTest.java:
2586         testGetPlaceParameters(): Get the tokens from the DetailsPlace and 
2587         recreate it, testing the recreated DetailsPlace for the same parameter
2588         values.
2589
2590 2011-12-30  Murray Cumming  <murrayc@murrayc.com>
2591
2592         Use the surefire-report plugin.
2593
2594         * pom.xml: This generates a HTML report about the tests in 
2595         target/site/surefire-report.html
2596         when you do mvn surefire-report:report. It seems to be popular/normal.
2597
2598 2011-12-30  Murray Cumming  <murrayc@murrayc.com>
2599
2600         Added a test for DetailsPlace.
2601
2602         * src/test/java/org/glom/web/client/place/DetailsPlaceTest.java:
2603         Test the getPlace() token parsing.
2604
2605 2011-12-30  Murray Cumming  <murrayc@murrayc.com>
2606
2607         Added a first unit test.
2608
2609         * pom.xml: Add a test goal, and a dependency on junit in that scope.
2610         * src/test/java/org/glom/web/shared/DataItemTest.java:
2611         This is a silly test but it is just to get things started. Note that
2612         maven/junit finds the test because it looks in src/test by default.
2613
2614 2011-12-22  Ben Konrath  <ben@bagu.org>
2615
2616         Change charsetName to "UTF-8" when replacing line breaks.
2617
2618         JavaScript requires the charsetName to be "UTF-8". CharsetName values
2619         that work in Java (such as "UTF8") will not work when compiled to
2620         JavaScript.
2621
2622         This fixes a problem with multi-line details view fields that have hard
2623         line breaks. The "License Text" field on this page demonstrates the
2624         problem:
2625
2626         http://onlineglom.openismus.com/OnlineGlom/#details:document=debian_repository_analyzer&table=licenses&value=197
2627
2628         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
2629
2630 2011-12-22  Ben Konrath  <ben@bagu.org>
2631
2632         Fix another bug with related list navigation.
2633
2634         I've tested all the navigation buttons in all of the related lists
2635         so things should be good now.
2636
2637         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
2638
2639 2011-12-22  Ben Konrath  <ben@bagu.org>
2640
2641         Fix a crasher when refreshing the list view with the default table.
2642
2643         This crash will also happen when loading the list view with the default
2644         table from a link or bookmark.
2645
2646         * src/main/java/org/glom/web/client/activity/DetailsActivity.java: Go
2647         to the main document selection page when the document id hasn't been
2648         set.
2649         * src/main/java/org/glom/web/client/activity/ListActivity.java: Go to
2650         the main document selection page when the document id hasn't been
2651         set.
2652         * src/main/java/org/glom/web/client/place/DetailsPlace.java: Use empty
2653         values for the details place when the document id hasn't been set.
2654         * src/main/java/org/glom/web/client/place/ListPlace.java: Use empty
2655         values for the list place when the document id hasn't been set.
2656
2657 2011-12-21  Ben Konrath  <ben@bagu.org>
2658
2659         Protect against NPE when glom.document.locale is not in config.
2660
2661         This patch protects against an NPE when glom.document.locale is not in
2662         the config file. This NPE will also happen if glom.document.locale is
2663         commented out.
2664
2665         The patch also updates the error message to display the class name when
2666         the getMessage() returns null. This was happening when the NPE was
2667         thrown and I had "Configuration Error: null". If an NPE is encountered
2668         with this patch, "Configuration Error: NullPointerException " will be
2669         displayed.
2670
2671         This commit closes this bug:
2672
2673         https://bugzilla.gnome.org/show_bug.cgi?id=666669
2674
2675         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
2676
2677 2011-12-20  Murray Cumming  <murrayc@murrayc.com>
2678
2679         Rename onlineglom.properties to onlineglom.properties.sample.
2680
2681         * src/main/resources/onlineglom.properties: Rename to:
2682         * src/main/resources/onlineglom.properties.sample:
2683         * src/main/resources/README: And add this file explaining that people
2684         should rename it back when deploying.
2685
2686 2011-12-20  Murray Cumming  <murrayc@murrayc.com>
2687
2688         Allow choosing the translation in the .properties file.
2689
2690         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
2691         init(): Read a glom.document.locale value from the configuration file 
2692         and call Glom's TransatableItem::set_current_locale() method.
2693         * src/main/resources/onlineglom.properties: Add a commented-out 
2694         example of this new setting.
2695
2696         It would be better to add &lang=de_DE to the URL, but the current 
2697         libglom API does not allow us to do this easily. I am working on that.
2698
2699 2011-12-19  Murray Cumming  <murrayc@murrayc.com>
2700
2701         Avoid a crash in parsing of token parameters.
2702
2703         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.j
2704         ava: getTokenParams(): Do not crash if a parameter has a key but no 
2705         value, and ignore parameters with neither.
2706
2707 2011-12-17  Murray Cumming  <murrayc@murayc.com>
2708
2709         History token building/handling: Improve use of token parameters.
2710
2711         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.java 
2712         (HasSelectableTablePlace.Tokenizer): Add getTokenParams(String)
2713         and buildParamsToken(HashMap), for use by derived classes.
2714         Make the separator private because it is no longer be needed.
2715         * src/main/java/org/glom/web/client/place/DetailsPlace.java
2716         (DetailsPlace.Tokenizer.getToken): Use buildParamsToken()
2717         instead of manual string concatenation.
2718         (DetailsPlace.Tokenizer.getPlace): Use getTokenParams() instead 
2719         of hardcoded indices and awkward splitting code.
2720         * src/main/java/org/glom/web/client/place/ListPlace.java
2721         (ListPlace.Tokenizer.getToken): Use buildParamsToken()
2722         instead of manual string concatenation.
2723         (ListPlace.Tokenizer.getPlace): Use getTokenParams() instead 
2724         of hardcoded indices and awkward splitting code.
2725         This should fix bug #666420
2726
2727 2011-12-16  Murray Cumming  <murrayc@murrayc.com>
2728
2729         Fix a Navgiation->Navigation typo in the code.
2730
2731         * src/main/java/org/glom/web/client/activity/DetailsActivity.java
2732         Rename processNavgiation() to processNavigation().
2733
2734 2011-12-16  Murray Cumming  <murrayc@murrayc.com>
2735
2736         Fix a seperator->separator typo in the code.
2737
2738         * src/main/java/org/glom/web/client/place/DetailsPlace.java
2739         * src/main/java/org/glom/web/client/place/HasSelectableTablePlace.java
2740         * src/main/java/org/glom/web/client/place/ListPlace.java: Just a 
2741         misspelling.
2742
2743 2011-12-15  Ben Konrath <ben@bagu.org>
2744
2745         Cleanup some comments.
2746
2747         * src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
2748
2749 2011-12-14  Ben Konrath <ben@bagu.org>
2750
2751         Replace \n with <br/> for multiline text in the details view.
2752
2753         Vertical scrollbars are added when needed as well.
2754
2755         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
2756
2757 2011-12-14  Ben Konrath <ben@bagu.org>
2758
2759         Specify the font for document selection links.
2760
2761         * src/main/webapp/style.css:
2762
2763 2011-12-14  Ben Konrath <ben@bagu.org>
2764
2765         Fix bouncy CellTable while paging.
2766
2767         This doesn't currently work with related list tables in unselected
2768         Notebook tabs.
2769
2770         * src/main/java/org/glom/web/client/ui/list/ListTable.java
2771
2772 2011-12-14  Ben Konrath <ben@bagu.org>
2773
2774         Revamp the appearance of the document selection page.
2775
2776         * src/main/java/org/glom/web/client/ui/DocumentSelectionViewImpl.java:
2777         * src/main/java/org/glom/web/client/ui/DocumentSelectionViewImpl.ui.xml:
2778         * src/main/webapp/style.css:
2779
2780 2011-12-13  Ben Konrath <ben@bagu.org>
2781
2782         Set navigation button column to the smallest size possible.
2783
2784         * src/main/java/org/glom/web/client/ui/list/ListTable.java:
2785
2786 2011-12-13  Ben Konrath <ben@bagu.org>
2787
2788         Change OpenButton nomenclature to NavigationButton.
2789
2790         Using NavigtionButton makes things more generic. Classes, methods and
2791         variables have been changed.
2792
2793         This is a rename-only refactor.
2794
2795         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
2796         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
2797         * src/main/java/org/glom/web/client/ui/cell/NavigationButtonCell.java:
2798         Renamed from OpenButtonCell.
2799         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
2800         * src/main/java/org/glom/web/client/ui/list/ListTable.java:
2801         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
2802
2803 2011-12-12  Ben Konrath <ben@bagu.org>
2804
2805         Remove unnecessary String argument in RelatedListTable and ListViewTable.
2806
2807         * src/main/java/org/glom/web/client/activity/DetailsActivity.java:
2808         * src/main/java/org/glom/web/client/ui/ListViewImpl.java:
2809         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
2810         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
2811
2812 2011-12-12  Ben Konrath <ben@bagu.org>
2813
2814         Update variable names and comments.
2815
2816         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
2817         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
2818
2819 2011-12-12  Ben Konrath <ben@bagu.org>
2820
2821         Properly initialize numNonEmptyRows variable to zero.
2822
2823         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
2824         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
2825
2826 2011-12-05  Ben Konrath  <ben@bagu.org>
2827
2828         Add latest mockup with HTML tables.
2829
2830         Features of this mockup:
2831
2832         -> HTML table for flowtable
2833         -> HTML table for flowtable column
2834         -> Example of how related lists would look
2835         -> Not using text entries for data items
2836
2837         The current version of Online Glom doesn't use HTML tables for the
2838         flowtable columns.
2839
2840         This mockup has been sent to the glom-devel mailing list but it's good
2841         to have it here as well.
2842
2843         * mockups/details-view-html-tables.html:
2844
2845 2011-12-05  Ben Konrath  <ben@bagu.org>
2846
2847         Remove unnecessary getPrimaryKeyField() method.
2848
2849         getPrimaryKeyFieldForTable(String) has been renamed to
2850         getPrimaryKeyField(String).
2851
2852         * src/main/java/org/glom/web/server/database/DBAccess.java:
2853         * src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
2854         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
2855
2856 2011-12-05  Ben Konrath  <ben@bagu.org>
2857
2858         Add string representation of TypedDataItem value to conversion error message.
2859
2860         * src/main/java/org/glom/web/server/Utils.java: Logging the error
2861         message was extracted into its own method to avoid duplication.
2862
2863 2011-12-05  Ben Konrath  <ben@bagu.org>
2864
2865         Add type checking to navigation primary key value creation.
2866
2867         Create navigation primary key only if the expected type from the Glom
2868         document matches the type returned by the SQL query.
2869
2870         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
2871
2872 2011-12-05  Ben Konrath  <ben@bagu.org>
2873
2874         Rename a couple of variables in RelatedListNavigation.
2875
2876         This is a rename-only refactor.
2877
2878         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
2879
2880 2011-12-05  Ben Konrath  <ben@bagu.org>
2881
2882         Move getListLayoutGroup() into getListViewLayoutGroup().
2883
2884         This removes getListLayoutGroup(). It was only being called by
2885         getListViewLayoutGroup().
2886
2887         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
2888
2889 2011-12-05  Ben Konrath  <ben@bagu.org>
2890
2891         Remove check for LayoutItem_Portal in list table method.
2892
2893         This check is no longer necessary because the method isn't being used
2894         to create the LayoutItemPortal DTO.
2895
2896         * src/main/java/org/glom/web/server/ConfiguredDocument.java:
2897
2898 2011-12-05  Ben Konrath  <ben@bagu.org>
2899
2900         Properly support related list navigation.
2901
2902         Navigation from the "Repository Analyzer -> Package Scans ->
2903         Dependencies" related table wasn't working because the primary key for
2904         related tables wasn't being set properly. This commit fixes the
2905         problem.
2906
2907         * src/main/java/org/glom/web/server/ConfiguredDocument.java: Don't use
2908         getListLayoutGroup() to create the LayoutItemPortal DTO. This method
2909         doesn't set the primary key properly for related list tables.
2910         * src/main/java/org/glom/web/server/database/DBAccess.java: Add table
2911         name parameter to getPrimaryKeyLayoutItemField(). This makes the method
2912         useful for getting the primary key for list view tables and for related
2913         list tables.
2914         * src/main/java/org/glom/web/server/database/ListDBAccess.java:
2915         * src/main/java/org/glom/web/server/database/ListViewDBAccess.java:
2916         Move code to set the primary key for the table from the abstract
2917         ListDBAccess class to ListViewDBAccess as it's only correct for list
2918         view tables.
2919         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
2920         Properly add primary key to related list tables.
2921
2922 2011-12-02  Ben Konrath  <ben@bagu.org>
2923
2924         Properly set the horizontal alignment of fields.
2925
2926         This fix is for both the list tables and the details view.
2927
2928         * src/main/java/org/glom/web/server/ConfiguredDocument.java: Use
2929         LayoutItem_WithFormatting.get_formatting_used_horizontal_alignment(boolean)
2930         to set the horizontal alignment of fields.
2931
2932 2011-12-02  Ben Konrath  <ben@bagu.org>
2933
2934         Display currency codes in the details view.
2935
2936         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
2937
2938 2011-12-02  Ben Konrath  <ben@bagu.org>
2939
2940         Avoid duplicate JNI call.
2941
2942         JNI is not as efficient as pure Java and this is an easy (and small)
2943         optimization.
2944
2945         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
2946         Use previously retrieved value for whereClauseToTableName instead of
2947         getting it again.
2948
2949 2011-12-02  Ben Konrath  <ben@bagu.org>
2950
2951         Rename a couple of variables in RelatedListNavigation.
2952
2953         This is a rename-only refactor.
2954
2955         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
2956
2957 2011-12-02  Ben Konrath  <ben@bagu.org>
2958
2959         Indicate clearly that a mismatched primary key type is a bug.
2960
2961         * src/main/java/org/glom/web/server/Utils.java: Change log level from
2962         warning to error. Add 'This is a bug.' to message.
2963
2964 2011-12-02  Ben Konrath  <ben@bagu.org>
2965
2966         Update / fix some comments.
2967
2968         * src/main/java/org/glom/web/client/OnlineGlomService.java: Remove old
2969         comments.
2970         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java: Fix
2971         comment.
2972         * src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
2973         Fix comments. Add some TODOs.
2974
2975 2011-12-02  Ben Konrath  <ben@bagu.org>
2976
2977         Enable navigation to details view with string primary key from related list.
2978
2979         * src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
2980         Create a text primary key value when return type of result is
2981         java.sql.Types.VARCHAR.
2982
2983 2011-12-02  Ben Konrath  <ben@bagu.org>
2984
2985         Use checkboxes for booleans in the details view.
2986
2987         * src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
2988
2989 2011-12-01  Ben Konrath  <ben@bagu.org>
2990
2991         Improve performance of related list height calculation.
2992
2993         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
2994         Put code to calculate the expected height in a static initializer so
2995         that that it's only called once.
2996
2997 2011-12-01  Ben Konrath  <ben@bagu.org>
2998
2999         Show related list tables in notebooks (again).
3000
3001         Calculate the height of the related list tables so the Notebook can be
3002         set the correct height. The height of the related list table is also needed by
3003         FlowTable to be able decide how to create the layout.
3004
3005         * src/main/java/org/glom/web/client/ui/details/Portal.java: Calculate
3006         and set the Portal height based on the height of the related list
3007         table and the Portal container.
3008         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
3009         Add method to calculate the height of the related list tables.
3010         * src/main/java/org/glom/web/client/ui/list/ListTable.java:
3011         * src/main/webapp/style.css: Add css class for Pager. This is needed to
3012         calculate the height of the Pager widget.
3013
3014 2011-12-01  Ben Konrath  <ben@bagu.org>
3015
3016         Use CellTable API for table property instead of setting style on Element.
3017
3018         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
3019
3020 2011-12-01  Ben Konrath  <ben@bagu.org>
3021
3022         Make ListViewTable and RelatedListTable a consistent height.
3023
3024         The tables are now a consistent height regardless of the contents of
3025         the table. A hidden button is added to empty rows to ensure that the
3026         height of these rows will match the height of rows with data.
3027
3028         A navigation button column is now added to every table. The width of
3029         the navigation column is set to 0px when a RelatedListTable shouldn't
3030         have navigation buttons. This maintains the a consistent row height in
3031         tables that don't show the navigation buttons.
3032
3033         * src/main/java/org/glom/web/client/activity/DetailsActivity.java: Hide
3034         navigation column when not needed.
3035         * src/main/java/org/glom/web/client/ui/ListViewImpl.java: Move method
3036         arguments for navigation button to constructor of ListViewTable.
3037         * src/main/java/org/glom/web/client/ui/cell/OpenButtonCell.java: Render
3038         hidden button for empty data rows.
3039         * src/main/java/org/glom/web/client/ui/details/RelatedListTable.java: Add method
3040         arguments for navigation button to constructor.
3041         * src/main/java/org/glom/web/client/ui/list/ListTable.java: Always
3042         create navigation buttons. Add hideNavigationButtons() method.
3043         * src/main/java/org/glom/web/client/ui/list/ListViewTable.java: Add method
3044         arguments for navigation button to constructor.
3045
3046 2011-12-01  Ben Konrath  <ben@bagu.org>
3047
3048         Use 'visibility: hidden' in Utils.getWidgetHeight().
3049
3050         This is better choice because hidden elements are invisible, don't
3051         respond to events and are not part of the tab order. They will,
3052         however, 
3053