Murray Cumming [Tue, 4 Dec 2012 20:32:04 +0000 (21:32 +0100)]
Add client-side tests for StringUtils and Utils.
* src/test/java/org/glom/web/client/GwtTestStringUtils.java: Added.
* src/test/java/org/glom/web/client/GwtTestUtils.java: Added.
This is mostly just to catch java->javascript compilation problems.
Murray Cumming [Tue, 4 Dec 2012 05:30:55 +0000 (06:30 +0100)]
tests: Add client-side test for StringUtils.
Murray Cumming [Sun, 2 Dec 2012 21:53:36 +0000 (22:53 +0100)]
Add GwtTestReportPlace.
* src/test/java/org/glom/web/client/place/GwtTestReportPlace.java:
This is like the existing GwtTest*Place tests.
It would be nice if we could just test that all client and shared
code can be compiled to Javascript without creating a test for it.
Currently, we only discover problems when starting it in a browser.
Murray Cumming [Sun, 2 Dec 2012 21:44:31 +0000 (22:44 +0100)]
Add GwtTestDetailsPlace to test the same code as client-side.
* src/test/java/org/glom/web/client/place/GwtTestDetailsPlace.java:
See the comment about the awkward client-side-only Date API.
Ignoring this Date API issue, it would be nice if we could test
the same code as both Java (server) and generated Javascript (client)
without duplicating most of the test code.
Murray Cumming [Sun, 2 Dec 2012 21:44:31 +0000 (22:44 +0100)]
Add GwtTestDetailsPlace to test the same code as client-side.
* src/test/java/org/glom/web/client/place/GwtTestDetailsPlace.java:
See the comment about the awkward client-side-only Date API.
Ignoring this Date API issue, it would be nice if we could test
the same code as both Java (server) and generated Javascript (client)
without duplicating most of the test code.
Murray Cumming [Sun, 2 Dec 2012 21:42:57 +0000 (22:42 +0100)]
DataItemTest: Test the date type too, and improve the asserts.
* src/test/java/org/glom/web/shared/DataItemTest.java:
Add testdate(). See the comment about the awkward server-side-only
Date API.
Murray Cumming [Sun, 2 Dec 2012 21:28:01 +0000 (22:28 +0100)]
DetailsPlace: Use a date-formatting API available in GWT client code.
* src/main/java/org/glom/web/client/place/DetailsPlace.java:
getStringForData(): Use DateTimeFormat.getFormat(), because that works
on the client side (but not the server side) instead of String.format()
with Date.getYear()/getMonth()/getDate(), because they work only on the
server side (but not on the client side). Rather annoying.
* src/test/java/org/glom/web/client/place/DetailsPlaceTest.java: Rename to
GwtTestDetailsPlace.
* src/test/java/org/glom/web/client/place/ListPlaceTest.java: Rename to
GwtTestListPlaceTest, so we can run these as client-side (generated
Javascript) code so we can catch these problems sooner.
It is unfortunate that the code cannot run on the server-side as Java,
but it does not need to.
Murray Cumming [Sun, 2 Dec 2012 20:52:07 +0000 (21:52 +0100)]
In the UI, allow primary keys to be any type, and test it.
* src/main/java/org/glom/web/shared/TypedDataItem.java:
Added isUnknownType() for convenience.
* src/main/java/org/glom/web/client/place/DetailsPlace.java:
getToken(): Move some code into getStringForData() and handle
other data types.
* src/main/java/org/glom/web/server/Utils.java:
Added transformUnknownToActualType(), to parse the unknown string
as a particular type of data. This should correspond with
getStringForData() above.
* src/main/java/org/glom/web/server/ConfiguredDocument.java:
Add setDataItemType() to set the type of data for primary
keys.
getDetailsData(), getSuitableRecordToViewDetails():
Call it, to have the correctly-typed primary key value.
We do it here, on the server, instead of before, because it
is only here that we can know the field type that is in the
document.
* src/test/java/org/glom/web/client/place/DetailsPlaceTest.java:
Added testGetPlaceParametersNumericPrimaryKey(),
testGetPlaceParametersBooleanPrimaryKey() and
testGetPlaceParametersDatePrimaryKey).
Murray Cumming [Fri, 30 Nov 2012 20:41:45 +0000 (21:41 +0100)]
Allow primary keys to be any type, and test it.
* src/main/java/org/glom/web/shared/TypedDataItem.java:
Add overrides for the other set*() methods, to set the type.
Added getValue() which returns a generic Object.
* src/main/java/org/glom/web/server/SqlUtils.java:
buildSimpleWhereExpression(): Use TypedDataItem.getValue() instead of
getNumber().
* src/test/java/org/glom/web/server/SelfHostExampleNonNumericPrimaryKeysTest.java:
Added this test, which is much like SelfHostExampleTest, but which uses this
test file, take from Glom:
* src/test/resources/org/glom/web/server/test_example_music_collection_text_pk_fields.glom:
which has all the primary keys changes to text instead of numbers.
However, parts of the UI code still assume that primary keys are numbers.
Murray Cumming [Wed, 28 Nov 2012 22:24:10 +0000 (23:24 +0100)]
Add missing file.
Murray Cumming [Wed, 28 Nov 2012 08:15:08 +0000 (09:15 +0100)]
SelfHostExampleTest: Move some checks into a utility function.
* src/test/java/org/glom/web/server/SelfHostExampleTest.java:
Move the data checks into a new file:
* src/test/java/org/glom/web/server/SelfHostTestUtils.java:
SelfHostTestUtils.java: so we can use it in some other
tests, with different documents.
Murray Cumming [Wed, 28 Nov 2012 08:06:42 +0000 (09:06 +0100)]
SelfHosting test: Also try using a relationship.
* src/main/java/org/glom/web/server/database/DBAccess.java:
convertResultSetToDTO(): Move some code into a public
method as:
* src/main/java/org/glom/web/server/SqlUtils.java:
fillDataItemFromResultSet(): This takes a DataItem and
sets it from a value from a datbase recordset.
* src/main/java/org/glom/web/server/libglom/Document.java:
Make getDocument() public, so we can use it in a test.
* src/test/java/org/glom/web/server/SelfHostExampleTest.java:
Add testExampleMusiccollectionDataRelated() and call it from
testExampleMusiccollectionData(), to do a basic test of using
a relationship.
Murray Cumming [Thu, 22 Nov 2012 10:05:26 +0000 (11:05 +0100)]
Build: Specify the source encoding.
* pom.xml: Set project.build.sourceEncoding
This should fix this build problem on some systems:
[ERROR] /var/lib/jenkins/workspace/OnlineGlom/src/test/java/org/glom/web/server/libglom/DocumentTest.java:[139,72] error: unmappable character for encoding ASCII
Murray Cumming [Tue, 20 Nov 2012 22:12:59 +0000 (23:12 +0100)]
1.23.1
Murray Cumming [Tue, 20 Nov 2012 21:05:48 +0000 (22:05 +0100)]
Update the jasperreports version.
* pom.xml: This was shown by
mvn versions:display-dependency-updates
Murray Cumming [Tue, 20 Nov 2012 21:04:53 +0000 (22:04 +0100)]
Eclipse: Reorder the Java Build Path to fix the build in Eclipse.
* .classpath: This prevents an error saying that getTextContent()
is undefined.
See http://mergetag.com/the-method-gettextcontent-is-undefined-for-the-type-node/
Murray Cumming [Tue, 20 Nov 2012 20:38:46 +0000 (21:38 +0100)]
Explicitly declare some dependencies (and scopes) that we use.
* pom.xml: The dependency report showed what we use.
Murray Cumming [Tue, 20 Nov 2012 20:37:55 +0000 (21:37 +0100)]
Update the gwt-test-utils version.
* pom.xml: gwt-test-utils 0.43 uses GWT 2.5.0, not GWT 2.4.0.
Using both in the same project was causing gwt-log to fail in GWTBrige,
with this error:
testOutOfBounds(org.glom.web.server.libglom.DocumentLayoutPathTest):
(class: com/google/gwt/core/client/GWT, method: setBridge signature: (Lcom/google/gwt/core/client/GWTBridge;)V) Incompatible argument to function
Murray Cumming [Tue, 20 Nov 2012 20:00:44 +0000 (21:00 +0100)]
Allow generation of a dependency report.
Murray Cumming [Mon, 19 Nov 2012 20:54:35 +0000 (21:54 +0100)]
DocumentTest: testLocales(): Update for the latest example version.
* src/test/java/org/glom/web/server/libglom/DocumentTest.java:
The .glom file, updated in the previous commit, now has more translations.
Murray Cumming [Mon, 19 Nov 2012 20:37:46 +0000 (21:37 +0100)]
Update the .glom files used for tests.
* src/test/resources/org/glom/web/server/example_film_manager.glom:
* src/test/resources/org/glom/web/server/example_music_collection.glom:
* src/test/resources/org/glom/web/server/libglom/example_film_manager.glom:
* src/test/resources/org/glom/web/server/libglom/example_music_collection.glom:
Copy them from git master of Glom.
Murray Cumming [Mon, 19 Nov 2012 06:12:36 +0000 (07:12 +0100)]
Update versions of depdencies.
* pom.xml: Increase some version numbers based on the output of
, using mvn versions:display-dependency-updates.
* src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
Use the annotation instead of getModuleName().
* src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
Do not use deprecated assert() classes/methods.
Murray Cumming [Sun, 18 Nov 2012 22:24:50 +0000 (23:24 +0100)]
Document: Correct an import to use the correct Log API.
* src/main/java/org/glom/web/server/libglom/Document.java:
Use our Utils.Log API rather than the jfree one that Eclipse
must have suggested at some time.
Murray Cumming [Thu, 15 Nov 2012 22:15:31 +0000 (23:15 +0100)]
Details: Get static image data from our images services.
* src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
Add constructors for LayoutItemText and LayoutItemImage and
deal with their common type instead of just LayoutItemField.
setData():
* src/main/java/org/glom/web/client/activity/DetailsActivity.java:
Adapted.
* src/main/java/org/glom/web/client/ui/details/Group.java:
createChildWidget(): Use the other DetailsCell constructors for
these layout items, and do not add them to the list of
cells with data from the database.
* src/main/java/org/glom/web/server/ConfiguredDocument.java:
getValidListViewLayoutGroup(), getDetailsLayoutGroup():
Remove the image data when cloning the layout and storing it in the
cache. Clients will instead get it via the URL, from
our images service.
* src/main/java/org/glom/web/server/OnlineGlomImages.java:
doGet(): Depending on the URI parameters, optionally get
image data from a layout_item_image in the document,
via its layout path.
* src/main/java/org/glom/web/server/database/DBAccess.java:
convertResultSetToDTO(): Move some URIBuilder code to:
* src/main/java/org/glom/web/server/Utils.java:
Add buildImageDataUrl() taking the primary key, etc, to
get data from the database.
Murray Cumming [Thu, 15 Nov 2012 21:59:32 +0000 (22:59 +0100)]
Document: Static image items: Store an image URL, using the layout path.
* src/main/java/org/glom/web/server/Utils.java: Add buildImageDataUrl().
* src/main/java/org/glom/web/server/libglom/Document.java:
Add a constructor that takes the documentID, for use in the
LayoutItemImage URL.
loadLayoutNode(): Pass a Path object to the helper methods, so we
can use it to create a URL for LayoutItemImage items.
This seems as good a way as any to specify a layout item in the document.
* src/main/java/org/glom/web/server/ConfiguredDocumentSet.java:
Pass the documentID to the constructor, for use in the LayoutItemImage
URL.
Murray Cumming [Thu, 15 Nov 2012 21:46:49 +0000 (22:46 +0100)]
Document: Add getLayoutItemByPath().
* src/main/java/org/glom/web/server/Utils.java:
Add buildLayoutPath() and parseLayoutPath().
* src/test/java/org/glom/web/server/LayoutPathTest.java: Test that these
utility methods work.
* src/main/java/org/glom/web/server/libglom/Document.java:
Add Add getLayoutItemByPath().
* src/test/java/org/glom/web/server/libglom/DocumentLayoutPathTest.java: Test
that it works.
This will be useful in subsequent commits.
Murray Cumming [Thu, 15 Nov 2012 21:33:25 +0000 (22:33 +0100)]
Document: Use a better base64 decoder to read static image data.
* src/test/java/org/glom/web/server/libglom/DocumentTest.java:
getNodeTextChildAsValue(): Use the apache commons base64 decoder
instead of the gwt one, because it correctly decodes the strings
from g_base64_encode(). It is probably more correct.
The newlines might be confusing the gwt decoder.
Murray Cumming [Wed, 14 Nov 2012 22:43:20 +0000 (23:43 +0100)]
Document: Do not use == to compare strings. Use equals().
* src/main/java/org/glom/web/server/libglom/Document.java:
== only checks that they are the same object, so it can
seem to fail.
Murray Cumming [Wed, 14 Nov 2012 19:14:14 +0000 (20:14 +0100)]
Document: Add and use public constants for layout names.
* src/main/java/org/glom/web/server/libglom/Document.java:
Make LAYOUT_NAME_DETAILS and LAYOUT_NAME_LIST public.
* src/main/java/org/glom/web/server/ConfiguredDocument.java:
* src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
* src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
* src/test/java/org/glom/web/server/libglom/DocumentTest.java: Use
them here instead of hard-coded the strings repeatedly.
Murray Cumming [Tue, 13 Nov 2012 23:14:49 +0000 (00:14 +0100)]
Document: Load static text and image items too.
* src/main/java/org/glom/web/shared/libglom/layout/LayoutItemImage.java:
* src/main/java/org/glom/web/shared/libglom/layout/LayoutItemText.java:
New LayoutItem classes to represent these layout items.
* src/main/java/org/glom/web/shared/libglom/layout/StaticText.java: The
main text of a LayoutItemText.
* src/main/java/org/glom/web/server/libglom/Document.java:
load_after_layout_group(): Handle the node types and instantiate the
new classes.
* src/test/java/org/glom/web/server/libglom/DocumentTest.java:
Add testLayoutItemText() to check that the text is loaded properly.
Murray Cumming [Tue, 13 Nov 2012 22:48:21 +0000 (23:48 +0100)]
Do not use client.GWT for shared code.
* src/main/java/org/glom/web/shared/libglom/layout/Formatting.java:
Import shared.GWT instead of client.GWT, which seems to be appropriate.
Murray Cumming [Tue, 13 Nov 2012 06:06:34 +0000 (07:06 +0100)]
Use image data when recreating databases for testing.
* src/main/java/org/glom/web/shared/DataItem.java: Add get/setImageData(),
for use locally (not acrosss the network) when recreating databases
for testing.
getValue(): Use it here instead of getImageDataUrl(), noting that
this method is only for use when recreating databases.
* src/main/java/org/glom/web/server/libglom/Document.java:
getNodeTextChildAsValue(): Use it instead of setImageDataUrl().
Murray Cumming [Fri, 9 Nov 2012 21:28:59 +0000 (22:28 +0100)]
OnlineGlomImages: Detect the mime-type (content type).
* src/main/java/org/glom/web/server/OnlineGlomImages.java:
doGet(): Instead of hard-coding image/png.
Murray Cumming [Fri, 9 Nov 2012 20:53:46 +0000 (21:53 +0100)]
Eclipse project files: Use JDK 1.7 instead of JDK 1.6.
* .classpath:
* .settings/org.eclipse.jdt.core.prefs: By changing the Eclipse
Java Compiler and Java Build path settings in the UI.
Murray Cumming [Mon, 23 Jul 2012 18:45:09 +0000 (20:45 +0200)]
Details: Show images.
* src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
Move some code into
* src/main/java/org/glom/web/server/ConfiguredDocumentSet.java:
so it can be used in:
* src/main/java/org/glom/web/server/OnlineGlomImages.java: A new servlet just
for serving image data.
* src/main/webapp/WEB-INF/web.xml: Mention the new servlet.
* src/main/java/org/glom/web/shared/DataItem.java: Added get/setImageDataUrl().
* src/main/java/org/glom/web/client/ui/details/DetailsCell.java:
setData(): For image field types, add a GWT Image widget,
with the URL that was set in the DataItem.
* pom.xml: Depend on org.apache.httpcomponents for UriBuilder.
* src/main/java/org/glom/web/server/database/DBAccess.java:
convertResultSetToDTO(): Set the URL for image data, so the client browser
can retrieve the image from our new servlet. This uses UriBuilder.
Move getPrimaryKeyField to:
* src/main/java/org/glom/web/server/libglom/Document.java:
Added getTablePrimaryKeyField().
* src/main/java/org/glom/web/server/database/DetailsDBAccess.java:
* src/main/java/org/glom/web/server/database/ListDBAccess.java:
* src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
Adapted.
Murray Cumming [Sun, 22 Jul 2012 19:29:08 +0000 (21:29 +0200)]
Attempting to use base64 data URL for images.
Murray Cumming [Fri, 9 Nov 2012 12:06:22 +0000 (13:06 +0100)]
Use the latest (now stable) version of GWT.
* pom.xml: And the latest version of the gwt-maven-plugin.
Murray Cumming [Thu, 8 Nov 2012 08:38:55 +0000 (09:38 +0100)]
Added an Indonesian translation.
* src/main/java/org/glom/web/OnlineGlom.gwt.xml:
* src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_id.properties:
This is from the new translation in Glom.
Murray Cumming [Sun, 22 Jul 2012 19:44:32 +0000 (21:44 +0200)]
Rename the servlet.
* src/main/java/org/glom/web/OnlineGlom.gwt.xml:
* src/main/java/org/glom/web/client/OnlineGlomService.java:
* src/main/webapp/WEB-INF/web.xml: Change the servlet-name from libGlom
to gwtGlom, which is more appropriate.
This servlet name does not seem to be visible to the client side anyway.
Murray Cumming [Sun, 22 Jul 2012 13:48:35 +0000 (15:48 +0200)]
Tests: Make the imports of assert*() consistent.
* src/test/java/org/glom/web/client/GwtTestOnlineGlom.java:
* src/test/java/org/glom/web/client/place/DetailsPlaceTest.java:
* src/test/java/org/glom/web/client/place/ListPlaceTest.java:
* src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
* src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
* src/test/java/org/glom/web/server/SelfHostExampleTest.java:
* src/test/java/org/glom/web/server/libglom/DocumentTest.java:
* src/test/java/org/glom/web/server/libglom/LayoutItemFieldTest.java:
* src/test/java/org/glom/web/server/libglom/LayoutItemPortalDeepCloneTest.java:
* src/test/java/org/glom/web/shared/DataItemTest.java:
Just do
import static org.junit.Assert.*;
which seems fairly common.
Murray Cumming [Sun, 22 Jul 2012 11:12:41 +0000 (13:12 +0200)]
1.21.10
Murray Cumming [Sat, 21 Jul 2012 22:56:34 +0000 (00:56 +0200)]
Remove unused imports
Murray Cumming [Sat, 21 Jul 2012 22:43:51 +0000 (00:43 +0200)]
Revert "pom.xml: Use gwt 2.5.1-rc1"
This reverts commit
848566d9a871d709420ea7d17c8992b3a269dea8.
Using GWT 2.5.1-rc1 seems to cause a strange Java->Javascript
compiler error:
Unexpected exception while processing element 'inherits
Murray Cumming [Sat, 21 Jul 2012 22:34:26 +0000 (00:34 +0200)]
Remove an outdated FIXME comment
Murray Cumming [Sat, 21 Jul 2012 22:33:51 +0000 (00:33 +0200)]
tests: Move a test that needs a database connection.
* src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
Move testGetListViewLayoutGroup() to
* src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
because it needs a database connection.
Murray Cumming [Sat, 21 Jul 2012 19:19:38 +0000 (21:19 +0200)]
Add back @Override lines. From Eclipse cleanup.
Murray Cumming [Sat, 21 Jul 2012 19:02:57 +0000 (21:02 +0200)]
tests: Use @BeforeClass on tearDown().
* src/test/java/org/glom/web/server/OnlineGlomPropertiesTest.java:
* src/test/java/org/glom/web/server/SelfHostExampleTest.java:
This avoids leaking a postgres process in SelfHostExampleTest.
Murray Cumming [Sat, 21 Jul 2012 16:33:40 +0000 (18:33 +0200)]
tests: Test translations moe.
* src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
* src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
Test titles in the non-default locale.
Murray Cumming [Sat, 21 Jul 2012 15:28:58 +0000 (17:28 +0200)]
tests: Add SelfHostConfiguredDocumentTest
* src/test/java/org/glom/web/server/SelfHoster.java: Add getters for the
username and password, for use by ConfiguredDocument.
* src/test/java/org/glom/web/server/SelfHostConfiguredDocumentTest.java:
This tests some of the ConfiguredDocument API that requires a database connection.
Murray Cumming [Sat, 21 Jul 2012 13:47:08 +0000 (15:47 +0200)]
Document: Load title translations and test them.
* src/main/java/org/glom/web/server/libglom/Document.java: Load the translations
of titles. I am surprised that we do not do this yet.
* src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
* src/test/java/org/glom/web/server/libglom/DocumentTest.java:
Test translations more.
Murray Cumming [Fri, 20 Jul 2012 19:58:09 +0000 (21:58 +0200)]
Set JDBC timeouts.
* src/main/java/org/glom/web/server/ConfiguredDocument.java:
* src/main/java/org/glom/web/server/database/ListDBAccess.java:
Set the timeout here too.
Murray Cumming [Fri, 20 Jul 2012 19:51:17 +0000 (21:51 +0200)]
tests: ConfiguredDocumentTest: Make this pass.
* src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
Disable tests that need a database connection.
Murray Cumming [Fri, 20 Jul 2012 18:31:51 +0000 (20:31 +0200)]
Use Java 1.7 instead of Java 1.6.
* pom.xml: Specify the 1.7 JDK, though I don't like how we seem to need
to do this twice, at least for Eclipse.
This seems OK because it is the current version.
Murray Cumming [Fri, 20 Jul 2012 17:01:58 +0000 (19:01 +0200)]
Some error checking.
* src/main/java/org/glom/web/server/Log.java: Avoid using null strings.
* src/main/java/org/glom/web/server/database/ListDBAccess.java:
Avoid using a null Connection.
Murray Cumming [Fri, 20 Jul 2012 17:00:57 +0000 (19:00 +0200)]
tests: Add a ConfiguredDocument test.
* src/test/java/org/glom/web/server/ConfiguredDocumentTest.java:
Add this test.
Murray Cumming [Fri, 20 Jul 2012 16:16:54 +0000 (18:16 +0200)]
Update a comment
Murray Cumming [Fri, 20 Jul 2012 16:11:58 +0000 (18:11 +0200)]
LayoutItemFIeld: getName(): Use the Field if it is set.
* src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField.java:
getName(): If the full field details have been set, return its name, so that
callers do not need to set the name separately.
* src/test/java/org/glom/web/server/SelfHostExampleTest.java:
testExampleMusiccollectionData): Do not use a TYPE_FORWARD_ONLY statement,
so we can count the rows.
Murray Cumming [Fri, 20 Jul 2012 15:02:29 +0000 (17:02 +0200)]
tests: SelfHoster: Test SqlUtils too.
* src/test/java/org/glom/web/server/SelfHostExampleTest.java:
Retrieve some data and check it too, as in the regular Glom
test_selfhosting_new_from_example.cc test.
* src/test/java/org/glom/web/server/SelfHoster.java:
createConnection(): Make this public.
Murray Cumming [Fri, 20 Jul 2012 14:05:41 +0000 (16:05 +0200)]
tests: SelfHoster: createConnection(): Do not warn about expected failures.
Let the caller say if the connection is expected to fail, to avoid
irrelevant error output.
Murray Cumming [Fri, 20 Jul 2012 14:04:35 +0000 (16:04 +0200)]
tests: SelfHoster: createAndSelfHostNewEmpty(): Sleep after starting server.
* src/test/java/org/glom/web/server/SelfHoster.java:
createAndSelfHostNewEmpty(): Sleep initially, to avoid distracting errors
due to the inevitable need to retry the connection while the database server
starts.
Murray Cumming [Fri, 20 Jul 2012 13:08:22 +0000 (15:08 +0200)]
tests: SelfHoster: createConnection(): Set a timeout.
* src/test/java/org/glom/web/server/SelfHoster.java:
createConnection(): Use setLoginTimeout() because it otherwise seems to take
ages to actually return when it fails.
Murray Cumming [Fri, 20 Jul 2012 13:06:35 +0000 (15:06 +0200)]
tests: SelfHoster: selfHost(): Close the test connection.
* src/test/java/org/glom/web/server/SelfHoster.java: selfHost():
When we check that the connection works, close the connection. This seems
to not be closed automatically otherwise.
Murray Cumming [Fri, 20 Jul 2012 13:04:35 +0000 (15:04 +0200)]
Use slf4j-simple to see JDBC errors.
* pom.xml: Depend on slf4j-simple so we can see errors from JDBC.
Murray Cumming [Thu, 19 Jul 2012 17:56:31 +0000 (19:56 +0200)]
SelfHoster.discoverFirstFreePort(): Close the socket.
* src/test/java/org/glom/web/server/SelfHoster.java:
discoverFirstFreePort(): Close the socket. Eclipse Juno warns about this.
Murray Cumming [Thu, 19 Jul 2012 17:53:43 +0000 (19:53 +0200)]
Avoid another code warning in Eclipse Juno.
* src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
Do instanceof checks on the FileUtils.listFiles() result and its
items.
Murray Cumming [Fri, 13 Jul 2012 10:02:52 +0000 (12:02 +0200)]
Some cleanup by Eclipse
Murray Cumming [Fri, 13 Jul 2012 09:55:19 +0000 (11:55 +0200)]
pom.xml: Use gwt 2.5.1-rc1
Murray Cumming [Fri, 13 Jul 2012 09:54:58 +0000 (11:54 +0200)]
pom.xml: Increased gwt-test-utils version.
Murray Cumming [Fri, 13 Jul 2012 09:02:47 +0000 (11:02 +0200)]
Avoid some code warnings in Eclipse Juno
* src/main/java/org/glom/web/server/libglom/Document.java:
getNodeTextChildAsValue(), setNodeTextChildAsValue(): Handle the invalid type.
* src/test/java/org/glom/web/server/SelfHoster.java
createTextFile(): Make sure that the FileOutputStream is closed.
Murray Cumming [Tue, 26 Jun 2012 19:02:33 +0000 (21:02 +0200)]
Slight variable rename
Murray Cumming [Fri, 22 Jun 2012 11:42:51 +0000 (13:42 +0200)]
Added OnlineGlomPropertiesTest.
* src/main/java/org/glom/web/server/OnlineGlomProperties.java:
Make sure we never return a null string.
* src/test/java/org/glom/web/server/OnlineGlomPropertiesTest.java:
Added tests of the OnlineGlomProperties API, using our sample file.
Murray Cumming [Wed, 20 Jun 2012 08:18:31 +0000 (10:18 +0200)]
Make OnlineGlomProperties be a normal class.
* src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
Move OnlineGlomProperties into its own file to be a regular class:
* src/main/java/org/glom/web/server/OnlineGlomProperties.java:
This makes testing simpler.
Murray Cumming [Fri, 15 Jun 2012 14:47:18 +0000 (16:47 +0200)]
OnlineGlomServiceImpl.init(): Move some code into a new method.
* src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
Create addDocument().
Murray Cumming [Fri, 15 Jun 2012 14:40:35 +0000 (16:40 +0200)]
OnlineGlomServiceImpl.OnlineGlomProperties: Improve getKey().
* src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
OnlineGlomProperties.getKey(): Make this more robust by moving the
check for *.*.filename to here.
Murray Cumming [Fri, 15 Jun 2012 14:29:17 +0000 (16:29 +0200)]
OnlineGlomServiceImpl: Improve the OnlineGlomProperties class.
* src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
init(): Move knowledge of the config file format into the
OnlineGlomProperties inner class.
Murray Cumming [Fri, 15 Jun 2012 13:34:38 +0000 (15:34 +0200)]
SelfHostExampleTest: Make sure we cleanup on failure.
* src/test/java/org/glom/web/server/SelfHostExampleTest.java: Move
the use of cleanup() to a tearDown() JUnit method.
Murray Cumming [Tue, 12 Jun 2012 09:31:02 +0000 (11:31 +0200)]
1.21.9.3
Murray Cumming [Tue, 12 Jun 2012 08:49:54 +0000 (10:49 +0200)]
ConfiguredDocument: Add a primary key to portals at least once.
* src/main/java/org/glom/web/server/ConfiguredDocument.java
updatePortalsExtras): Fix a typo so that we add the primary key
column at least once.
This is a fix for the previous commit:
ConfiguredDocument: Do not add a primary key to portals each time.
Murray Cumming [Fri, 8 Jun 2012 21:14:04 +0000 (23:14 +0200)]
SelfHoster: Avoid some compiler warnings.
* src/test/java/org/glom/web/server/SelfHoster.java
executeCommandLineAndWait():
executeCommandLineAndWaitUntilSecondCommandReturnsSuccess(): Comment out
the now-unused streams for stdout and stderr from the command Processes.
These are not used because readln() hangs while waiting for a new line,
where there may be no next line. The commented out code is still there
to help us figure out how to do this properly.
Murray Cumming [Fri, 8 Jun 2012 21:09:21 +0000 (23:09 +0200)]
LayoutItemPortalDeepCloneTest: Test something to avoid warnings.
* src/test/java/org/glom/web/server/libglom/LayoutItemPortalDeepCloneTest.java:
Make this actually test the cloning again, though it is not very useful
now that we do not use the part that had a problem with cloning before.
Murray Cumming [Fri, 8 Jun 2012 20:52:56 +0000 (22:52 +0200)]
Formatting by Eclipse
Murray Cumming [Fri, 8 Jun 2012 20:51:11 +0000 (22:51 +0200)]
SelfHoster: Keep trying pg_ctl after starting postgres.
* src/test/java/org/glom/web/server/SelfHoster.java
executeCommandLineAndWaitUntilSecondCommandReturnsSuccess():
Try pg_ctl repeatedly (for ever) until it succeeds, as we do in
regular Glom. This seems mad but it seems to work because the first
command would fail if pg_ctl would eventually fail.
Murray Cumming [Fri, 8 Jun 2012 15:43:57 +0000 (17:43 +0200)]
SelfHoster: Wait until the server is really ready.
* src/test/java/org/glom/web/server/SelfHoster.java
selfHost(): Attempt the connection after starting the server, retrying
a few times if necessary, so that the server is really ready already when
we return from this method.
The regular Glom code does this too because pg_ctl reports success too soon.
Murray Cumming [Fri, 8 Jun 2012 14:21:41 +0000 (16:21 +0200)]
ConfiguredDocument: Do not add a primary key to portals each time.
* src/main/java/org/glom/web/server/ConfiguredDocument.java
updatePortalsExtras(): Only add an extra primary key field if there is
none, to avoid adding one each time we retrieve the details layout from the
layouts cache.
This should fix bug #676986 (Ben Konrath)
Murray Cumming [Fri, 25 May 2012 12:17:06 +0000 (14:17 +0200)]
Improve ChangeLog entry.
Murray Cumming [Fri, 25 May 2012 12:15:24 +0000 (14:15 +0200)]
Document.load(): Support version 7 documents.
* src/main/java/org/glom/web/server/libglom/Document.java: Load the
database_title attribute if the title attribute is not there.
Murray Cumming [Thu, 24 May 2012 17:54:02 +0000 (19:54 +0200)]
Eclipse cleanup of pom.xml
Ben Konrath [Thu, 24 May 2012 13:42:38 +0000 (15:42 +0200)]
Add configuration for auto-generating mvn:i18n from with Eclipse.
* pom.xml: Add PluginExecution configuration for gwt-maven-plugin.
Murray Cumming [Thu, 24 May 2012 12:04:29 +0000 (14:04 +0200)]
Update translations, adding French.
* src/main/java/org/glom/web/OnlineGlom.gwt.xml:
* src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_fr.properties:
Add a French translation, using the translation from Glom.
* src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_cs.properties:
* src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_es.properties:
* src/main/resources/org/glom/web/client/ui/OnlineGlomConstants_sl.properties:
Update these based on the translations from Glom.
Murray Cumming [Thu, 24 May 2012 09:29:19 +0000 (11:29 +0200)]
SelfHoster: Add some debug println messages to help when things fail.
* src/test/java/org/glom/web/server/SelfHoster.java: Add several
System.out.println() lines.
Murray Cumming [Wed, 23 May 2012 10:46:58 +0000 (12:46 +0200)]
Tests: SelfHoster: Check other paths for PostgreSQL command-line tools.
* src/test/java/org/glom/web/server/SelfHoster.java:
getPathToPostgresExecutable(): Try some common paths (as on Ubuntu, for
instance) instead of just /usr/bin (as on Fedora). Check the result when
using this method.
Murray Cumming [Wed, 23 May 2012 07:08:12 +0000 (09:08 +0200)]
Remove LayoutItemPortal.get/setNavigationTable().
* src/main/java/org/glom/web/shared/libglom/layout/LayoutItemPortal.java:
Remove get/setNavigationTable(), which is only a cache, because it is not
used, and does not need to be used, because that decision should be made on
the server.
* src/main/java/org/glom/web/server/ConfiguredDocument.java:
updatePortalsExtras():
* src/main/java/org/glom/web/server/database/RelatedListNavigation.java:
getNavigationRecord():
* src/test/java/org/glom/web/server/libglom/LayoutItemPortalDeepCloneTest.java:
Adapted.
Murray Cumming [Mon, 21 May 2012 18:05:53 +0000 (20:05 +0200)]
Some final keywords, by Eclipse
Murray Cumming [Mon, 21 May 2012 18:02:45 +0000 (20:02 +0200)]
Initial self-hosting for tests.
* pom.xml: Change the scope for log4j, to hopefully make it
available to the test code which uses it indirectly via jOOQ.
* src/main/java/org/glom/web/server/ConfiguredDocument.java: Allow
self-hosting, though we only use it for testing.
* src/main/java/org/glom/web/server/libglom/Document.java:
example rows: Use a map instead of a list for each row of values,
so we know what field they are for, instead of relying on the sequence
being correct. This is not very efficient, but it does not really need
to be.
* src/test/java/org/glom/web/server/libglom/DocumentTest.java
testReadTableExampleRows(): Adapted.
* src/main/java/org/glom/web/shared/DataItem.java: Added getValue()
that returns an Object, for generic use. Note that Object seems to be
the implicit base even of double.
* src/main/java/org/glom/web/shared/libglom/Field.java: Add getSqlType(),
for use in CREATE TABLE SQL queries.
* src/test/java/org/glom/web/server/SelfHoster.java: Add this class
to do self-hosting of PostgreSQL databases via its command-line
utilities, based on Glom's C++ code in test_selfhosting_utils.cc and
backends/postgres_self.cc. This is incomplete - it needs more
warnings about failures and it needs to clean up properly when things
fail.
* src/test/java/org/glom/web/server/SelfHostExampleTest.java: A simple
test of this new class.
Murray Cumming [Mon, 21 May 2012 10:48:29 +0000 (12:48 +0200)]
Document: loading example data: Handle exceptions.
* src/main/java/org/glom/web/server/libglom/Document.java:
DateFormat.parse() and Double.valueOf() can throw exceptions, though
Eclipse did not warn about that.
Murray Cumming [Sun, 20 May 2012 20:58:11 +0000 (22:58 +0200)]
Document: load(), save(): Handle the example rows.
* src/main/java/org/glom/web/shared/DataItem.java: Add get/setDate()
and get/setImage().
* src/main/java/org/glom/web/server/libglom/Document.java:
load(), save(): Load and save the example rows, though the date, time
and image types are not handled properly yet.
* src/test/java/org/glom/web/server/libglom/DocumentTest.java:
Add testReadTableExampleRows() just to check that something is read.
Murray Cumming [Sun, 20 May 2012 12:10:14 +0000 (14:10 +0200)]
Document: Add save().
* src/main/java/org/glom/web/shared/libglom/Translatable.java:
Added getTranslationsMap() for use while saving.
* src/main/java/org/glom/web/shared/libglom/layout/LayoutItemField.java:
Adedd getUseDefaultFormatting() for use while saving.
* src/main/java/org/glom/web/server/libglom/Document.java: Added save()
and several private methods that it uses.
This will be useful while testing via self-hosting.
It is not complete, but should be complete enough for testing.
Murray Cumming [Thu, 17 May 2012 14:19:10 +0000 (16:19 +0200)]
Added a TODO.
Murray Cumming [Thu, 17 May 2012 13:50:33 +0000 (15:50 +0200)]
Some member sorting by Eclipse
Murray Cumming [Thu, 17 May 2012 13:46:52 +0000 (15:46 +0200)]
OnlineGlomService: Simplify the getList/RelatedViewData() methods.
* src/main/java/org/glom/web/client/OnlineGlomService.java
* src/main/java/org/glom/web/client/OnlineGlomServiceAsync.java
* src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java
Remove getSortedListViewData() and getSortedRelatedListData(), adding
the sort column index and ascending bool to the regular method.
Instead, a sort column index of -1 now means no sort.
This is less explicit, but it's fairly simple, reduces the amount of
code, and makes the OnlineGlomService API slightly smaller.
* src/main/java/org/glom/web/client/ui/details/RelatedListTable.java:
* src/main/java/org/glom/web/client/ui/list/ListViewTable.java:
getDataProvider():
* src/main/java/org/glom/web/server/ConfiguredDocument.java:
getListViewData(), getRelatedListData():
* src/main/java/org/glom/web/server/OnlineGlomServiceImpl.java:
getListViewData(), getRelatedListData():
* src/main/java/org/glom/web/server/database/ListDBAccess.java:
getListData():
* src/main/java/org/glom/web/server/database/ListViewDBAccess.java:
getData():
* src/main/java/org/glom/web/server/database/RelatedListDBAccess.java:
getData(): Adapted.