# HG changeset patch # User Ingo Weinzierl # Date 1297867806 0 # Node ID 8facd8545a12bc9f7c865c870e016a4437f46cd8 # Parent 9cb3ee7ed8ba865186f1c9e330b666552b38799b Added a global configuration for the client and classes providing methods to retrieve these information. flys-client/trunk@1317 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 9cb3ee7ed8ba -r 8facd8545a12 flys-client/ChangeLog --- a/flys-client/ChangeLog Fri Feb 11 13:48:17 2011 +0000 +++ b/flys-client/ChangeLog Wed Feb 16 14:50:06 2011 +0000 @@ -1,3 +1,18 @@ +2011-02-16 Ingo Weinzierl + + * src/main/java/de/intevation/flys/client/FLYS.gwt.xml: Added the + Resources and XML modules of GWT. + + * src/main/java/de/intevation/flys/client/client/config.xml: An xml file + that will contain the client configuration. + + * src/main/java/de/intevation/flys/client/client/Config.java: New. This + class should be used to handle the client configuration and provides + methods for retrieving information about the configuration. + + * src/main/java/de/intevation/flys/client/client/FLYSResources.java: The + configuration (Config) is initialized at the startup. + 2011-02-11 Ingo Weinzierl * src/main/java/de/intevation/flys/client/shared/model/Artifact.java: New. diff -r 9cb3ee7ed8ba -r 8facd8545a12 flys-client/src/main/java/de/intevation/flys/client/FLYS.gwt.xml --- a/flys-client/src/main/java/de/intevation/flys/client/FLYS.gwt.xml Fri Feb 11 13:48:17 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/FLYS.gwt.xml Wed Feb 16 14:50:06 2011 +0000 @@ -6,6 +6,12 @@ + + + + + + diff -r 9cb3ee7ed8ba -r 8facd8545a12 flys-client/src/main/java/de/intevation/flys/client/client/Config.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/Config.java Wed Feb 16 14:50:06 2011 +0000 @@ -0,0 +1,72 @@ +package de.intevation.flys.client.client; + +import com.google.gwt.xml.client.Document; +import com.google.gwt.xml.client.Node; + + +/** + * A class that is used to handle the global configuration of this client. You + * can retrieve an instance of this class using the getInstance + * methods. NOTE: the configuration is initialized using {@link + * getInstance(Document)} the first time. + * + * @author Ingo Weinzierl + */ +public class Config { + + /** The instance of the configuration. */ + protected static Config INSTANCE; + + /** The xml document that contains the configuration options.*/ + protected Document config; + + + /** + * Get an instance by using {@link getInstance(Document)} or {@link + * getInstance()}. + */ + private Config(Document config) { + this.config = config; + } + + + /** + * Returns an instance of this class and initializes the configuration of + * this has not been done so far. + * + * @param config The client configuration. + * + * @return an instance of this Config class. + */ + public static Config getInstance(Document config) { + if (INSTANCE == null) { + INSTANCE = new Config(config); + } + + return INSTANCE; + } + + + /** + * Returns an instance of this class. If it has not been initialized with a + * valid configuration, null is returned. + * + * @return an instance of this class or null, if the Config has not been + * initialized using {@link getInstance(Document)} so far. + */ + public static Config getInstance() { + return INSTANCE; + } + + + /** + * Returns the URL of the artifact server. + * + * @return the artifact server url. + */ + public String getServerUrl() { + Node server = config.getElementsByTagName("server").item(0); + return server.getFirstChild().getNodeValue(); + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 9cb3ee7ed8ba -r 8facd8545a12 flys-client/src/main/java/de/intevation/flys/client/client/FLYS.java --- a/flys-client/src/main/java/de/intevation/flys/client/client/FLYS.java Fri Feb 11 13:48:17 2011 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYS.java Wed Feb 16 14:50:06 2011 +0000 @@ -4,14 +4,18 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.RootPanel; +import com.google.gwt.xml.client.XMLParser; import com.smartgwt.client.widgets.layout.VLayout; import de.intevation.artifacts.common.model.User; +import de.intevation.flys.client.shared.model.Artifact; import de.intevation.flys.client.shared.model.Collection; import de.intevation.flys.client.shared.model.DefaultCollection; +import de.intevation.flys.client.client.services.ArtifactService; +import de.intevation.flys.client.client.services.ArtifactServiceAsync; import de.intevation.flys.client.client.services.UserService; import de.intevation.flys.client.client.services.UserServiceAsync; import de.intevation.flys.client.client.ui.CollectionView; @@ -31,6 +35,10 @@ /** The UserService used to retrieve information about the current user. */ protected UserServiceAsync userService = GWT.create(UserService.class); + /** The ArtifactService used to communicate with the Artifact server. */ + protected ArtifactServiceAsync artifactService = + GWT.create(ArtifactService.class); + /** The menu bar at the top of the application.*/ protected MainMenu menu; @@ -63,6 +71,8 @@ RootPanel.get("app").add(vertical); + initConfiguration(); + userService.getCurrentUser(new AsyncCallback() { public void onFailure(Throwable caught) { GWT.log("Could not find a logged in user."); @@ -83,13 +93,40 @@ /** + * This method should be called at system start. It initialzes the client + * configuration. + */ + protected void initConfiguration() { + String xml = FLYSResources.INSTANCE.initialConfiguration().getText(); + Config.getInstance(XMLParser.parse(xml)); + } + + + /** * This method creates a new CollectionView and adds it to the workspace. */ public void newProject() { // TODO Call the REST service to create a new Collection // TODO Use the UUID of the Collection to add a new CollectionView! Collection c = new DefaultCollection(new java.util.Date().toString()); - workspace.addView(c.identifier(), new CollectionView(c)); + workspace.addView(c.identifier(), new CollectionView(this, c)); + } + + + /** + * Create a new Artifact. + */ + public void newArtifact(String factory) { + artifactService.create(factory, new AsyncCallback() { + public void onFailure(Throwable caught) { + GWT.log("Could not create the new artifact."); + GWT.log(caught.getMessage()); + } + + public void onSuccess(Artifact artifact) { + GWT.log("Successfully created a new artifact."); + } + }); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 9cb3ee7ed8ba -r 8facd8545a12 flys-client/src/main/java/de/intevation/flys/client/client/FLYSResources.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/FLYSResources.java Wed Feb 16 14:50:06 2011 +0000 @@ -0,0 +1,21 @@ +package de.intevation.flys.client.client; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.TextResource; + + +/** + * A {@link ClientBundle} that is used to handle resources in this client. + * + * @author Ingo Weinzierl + */ +public interface FLYSResources extends ClientBundle { + + public static final FLYSResources INSTANCE = + GWT.create(FLYSResources.class); + + @Source("config.xml") + public TextResource initialConfiguration(); +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 9cb3ee7ed8ba -r 8facd8545a12 flys-client/src/main/java/de/intevation/flys/client/client/config.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-client/src/main/java/de/intevation/flys/client/client/config.xml Wed Feb 16 14:50:06 2011 +0000 @@ -0,0 +1,3 @@ + + http://localhost:8181 +