Mercurial > dive4elements > river
diff gwt-client/src/main/java/org/dive4elements/river/client/client/ui/stationinfo/MeasurementStationListGrid.java @ 8313:e3a63d9c5bb1
Updated the client to build a default artifact for sq relations.
* Removed code for special sq relation artifact
* Updated MeasurementListGrid in info panel to create a new project
* Updated i18n
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Wed, 24 Sep 2014 12:02:05 +0200 |
parents | 2c20907f8dd0 |
children | a201d475e50d |
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/stationinfo/MeasurementStationListGrid.java Wed Sep 24 11:59:49 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/stationinfo/MeasurementStationListGrid.java Wed Sep 24 12:02:05 2014 +0200 @@ -9,14 +9,30 @@ package org.dive4elements.river.client.client.ui.stationinfo; import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; import com.smartgwt.client.widgets.grid.events.RecordClickEvent; import com.smartgwt.client.widgets.grid.events.RecordClickHandler; +import org.dive4elements.river.client.client.Config; import org.dive4elements.river.client.client.FLYS; +import org.dive4elements.river.client.client.services.ArtifactService; +import org.dive4elements.river.client.client.services.ArtifactServiceAsync; +import org.dive4elements.river.client.client.services.CreateCollectionService; +import org.dive4elements.river.client.client.services.CreateCollectionServiceAsync; +import org.dive4elements.river.client.client.services.StepForwardService; +import org.dive4elements.river.client.client.services.StepForwardServiceAsync; +import org.dive4elements.river.client.client.ui.CollectionView; +import org.dive4elements.river.client.shared.model.Artifact; +import org.dive4elements.river.client.shared.model.Collection; +import org.dive4elements.river.client.shared.model.Data; +import org.dive4elements.river.client.shared.model.DataItem; +import org.dive4elements.river.client.shared.model.DefaultData; +import org.dive4elements.river.client.shared.model.DefaultDataItem; import org.dive4elements.river.client.shared.model.MeasurementStation; import org.dive4elements.river.client.shared.model.RiverInfo; @@ -30,6 +46,18 @@ extends InfoListGrid implements RecordClickHandler { + /** The ArtifactService used to communicate with the Artifact server. */ + protected ArtifactServiceAsync artifactService = + GWT.create(ArtifactService.class); + + /** The StepForwardService used to put data into an existing artifact. */ + protected StepForwardServiceAsync forwardService = + GWT.create(StepForwardService.class); + + /** The ArtifactService used to communicate with the Artifact server. */ + protected CreateCollectionServiceAsync createCollectionService = + GWT.create(CreateCollectionService.class); + public MeasurementStationListGrid(FLYS flys) { super(flys); ListGridField nfield = new ListGridField("name", "Messtelle"); @@ -109,9 +137,101 @@ @Override public void onRecordClick(RecordClickEvent event) { - MeasurementStationRecord station = + final MeasurementStationRecord station = (MeasurementStationRecord)event.getRecord(); - flys.newSQRelation(station.getRiverName(), station.getID()); + Config config = Config.getInstance(); + final String locale = config.getLocale(); + createCollectionService.create( + locale, + flys.getCurrentUser().identifier(), + new AsyncCallback<Collection>() { + @Override + public void onFailure(Throwable caught) { + GWT.log("Could not create the new collection."); + SC.warn(FLYS.getExceptionString(MSG, caught)); + } + + @Override + public void onSuccess(Collection collection) { + GWT.log("Successfully created a new collection."); + createArtifact(collection, locale, station); + } + } + ); + } + + private void createArtifact( + final Collection collection, + final String locale, + final MeasurementStationRecord station + ) { + artifactService.create( + locale, "staticsqrelation", null, + new AsyncCallback<Artifact>() { + @Override + public void onFailure(Throwable caught) { + GWT.log("Could not create the new artifact."); + SC.warn(FLYS.getExceptionString(MSG, caught)); + } + + @Override + public void onSuccess(Artifact artifact) { + GWT.log("Successfully created a new artifact."); + + DataItem riverItem = new DefaultDataItem( + "river", + "river", + station.getRiverName()); + Data river = new DefaultData( + "river", + null, + null, + new DataItem[]{riverItem}); + + DataItem refItem = new DefaultDataItem( + "station", + "station", + station.getID().toString()); + Data ref = new DefaultData( + "station", + null, + null, + new DataItem[]{refItem}); + + DataItem nameItem = new DefaultDataItem( + "station_name", + "station_name", + station.getID().toString()); + Data name = new DefaultData( + "station_name", + null, + null, + new DataItem[]{nameItem}); + + Data[] data = new Data[]{river, ref, name}; + forwardService.go(locale, artifact, data, + new AsyncCallback<Artifact>() { + @Override + public void onFailure(Throwable caught) { + GWT.log("Could not feed the artifact."); + SC.warn(caught.getMessage()); + } + + @Override + public void onSuccess(Artifact artifact) { + GWT.log("Successfully feed the artifact."); + CollectionView view = new CollectionView( + flys, + collection, + artifact); + flys.getWorkspace().addView( + collection.identifier(), + view); + view.addArtifactToCollection(artifact); + } + }); + } + }); } @Override