# HG changeset patch # User Raimund Renkert # Date 1411552957 -7200 # Node ID 5294660df81bde3ba1f5aed14a6f706304b77b19 # Parent e3a63d9c5bb175b557e926f7332144be01768535# Parent e3a8aa6eee3256a54b6f212d1306a2d5d68baab8 merged. diff -r e3a8aa6eee32 -r 5294660df81b artifacts/doc/conf/artifacts/sqrelation.xml --- a/artifacts/doc/conf/artifacts/sqrelation.xml Tue Sep 23 16:45:47 2014 +0200 +++ b/artifacts/doc/conf/artifacts/sqrelation.xml Wed Sep 24 12:02:37 2014 +0200 @@ -1,9 +1,16 @@ + + + + + + + + + - - @@ -47,17 +54,6 @@ - - - - - - - - - - - diff -r e3a8aa6eee32 -r 5294660df81b artifacts/doc/conf/conf.xml --- a/artifacts/doc/conf/conf.xml Tue Sep 23 16:45:47 2014 +0200 +++ b/artifacts/doc/conf/conf.xml Wed Sep 24 12:02:37 2014 +0200 @@ -12,6 +12,7 @@ + @@ -140,7 +141,7 @@ artifact="org.dive4elements.river.artifacts.BedHeightsArtifact">org.dive4elements.artifactdatabase.DefaultArtifactFactory org.dive4elements.artifactdatabase.DefaultArtifactFactory + artifact="org.dive4elements.river.artifacts.D4EArtifact">org.dive4elements.artifactdatabase.DefaultArtifactFactory org.dive4elements.artifactdatabase.DefaultArtifactFactory @@ -291,7 +292,7 @@ - + &sqrelation-artifact; &porosity-artifact; &gaugedischargecurve-artifact; &sedimentload-artifact; diff -r e3a8aa6eee32 -r 5294660df81b artifacts/src/main/java/org/dive4elements/river/artifacts/states/GaugeDischargeInitState.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/GaugeDischargeInitState.java Tue Sep 23 16:45:47 2014 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/GaugeDischargeInitState.java Wed Sep 24 12:02:37 2014 +0200 @@ -7,6 +7,6 @@ @Override protected String getUIProvider() { - return "gauge_discharge_curve"; + return "static_data"; } } diff -r e3a8aa6eee32 -r 5294660df81b artifacts/src/main/java/org/dive4elements/river/artifacts/states/sq/SQInitState.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/sq/SQInitState.java Wed Sep 24 12:02:37 2014 +0200 @@ -0,0 +1,14 @@ +package org.dive4elements.river.artifacts.states.sq; + +import org.dive4elements.river.artifacts.states.DefaultState; + + +public class SQInitState +extends DefaultState +{ + + @Override + protected String getUIProvider() { + return "static_data"; + } +} diff -r e3a8aa6eee32 -r 5294660df81b artifacts/src/main/java/org/dive4elements/river/artifacts/states/sq/SQStaticState.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/sq/SQStaticState.java Tue Sep 23 16:45:47 2014 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/sq/SQStaticState.java Wed Sep 24 12:02:37 2014 +0200 @@ -15,9 +15,12 @@ import org.apache.log4j.Logger; import org.dive4elements.artifactdatabase.state.Facet; +import org.dive4elements.artifacts.CallContext; import org.dive4elements.artifacts.CallMeta; import org.dive4elements.river.artifacts.D4EArtifact; import org.dive4elements.river.artifacts.access.StaticSQRelationAccess; +import org.dive4elements.river.artifacts.model.DataFacet; +import org.dive4elements.river.artifacts.model.FacetTypes; import org.dive4elements.river.artifacts.model.sq.StaticSQContainer; import org.dive4elements.river.artifacts.model.sq.StaticSQFactory; import org.dive4elements.river.artifacts.model.sq.StaticSQRelation; @@ -27,6 +30,7 @@ public class SQStaticState extends StaticState +implements FacetTypes { private static final Logger log = @@ -44,6 +48,61 @@ } @Override + public Object computeAdvance( + D4EArtifact artifact, + String hash, + CallContext context, + List facets, + Object old) { + StaticSQContainer sqRelations; + StaticSQRelationAccess access = new StaticSQRelationAccess(artifact); + String river = access.getRiverName(); + String measurementStation = access.getMeasurementStation(); + + int ms = -1; + try { + ms = Integer.parseInt(measurementStation); + } + catch (NumberFormatException nfe) { + log.error("Unparseable measurement station: " + measurementStation); + return null; + } + log.debug("Parsed measurement station: " + ms); + + sqRelations = StaticSQFactory.getSQRelations(river, ms); + DateFormat df = new SimpleDateFormat("yyyy"); + + for (StaticSQRelation.Parameter p: StaticSQRelation.Parameter.values()) { + log.debug("parameter: " + p.toString()); + List relations = + sqRelations.getRelationsByParameter(p); + + if (!relations.isEmpty()) { + int count = 0; + + for (StaticSQRelation relation : relations) { + log.debug("add facet for " + p.toString().toLowerCase()); + String name = "sq_" + p.toString().toLowerCase() + "_curve"; + String desc = + Resources.getMsg(context.getMeta(), + FACET_DESCRIPTION, + FACET_DESCRIPTION, + new Object[] { + df.format(relation.getStartTime()), + df.format(relation.getStopTime())}); + facets.add(new StaticSQRelationFacet( + count, + name, + desc, + relation)); + count++; + } + } + } + return null; + } + + @Override public Object computeInit( D4EArtifact artifact, String hash, diff -r e3a8aa6eee32 -r 5294660df81b gwt-client/src/main/java/org/dive4elements/river/client/client/FLYS.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYS.java Tue Sep 23 16:45:47 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYS.java Wed Sep 24 12:02:37 2014 +0200 @@ -496,60 +496,6 @@ } - public void newSQRelation(String river, int measurementStation) { - Config config = Config.getInstance(); - - final String locale = config.getLocale(); - final String riv = river; - final int mStation = measurementStation; - final FLYS flys = this; - - User user = getCurrentUser(); - - if (user == null) { - SC.warn(MSG.error_not_logged_in()); - return; - } - - collectionService.create(locale, user.identifier(), - new AsyncCallback() { - @Override - public void onFailure(Throwable caught) { - GWT.log("Could not create new collection."); - SC.warn(getExceptionString(MSG, caught)); - } - - @Override - public void onSuccess(Collection collection) { - GWT.log("Successfully created a new collection."); - final Collection col = collection; - artifactService.createSQRelationArtifact( - col, locale, riv, mStation, - new AsyncCallback() { - @Override - public void onFailure(Throwable caught) { - GWT.log("Could not create the new artifact."); - SC.warn(getExceptionString(MSG, caught)); - } - - @Override - public void onSuccess(Artifact artifact) { - GWT.log("Successfully created a new artifact."); - CollectionView view = new CollectionView(flys, - col, artifact); - workspace.addView(col.identifier(), view); - - view.addCollectionChangeHandler(getProjectList()); - view.addCloseClickHandler( - new CloseCollectionViewHandler( - FLYS.this, col.identifier())); - projectList.updateUserCollections(); - } - }); - } - }); - } - @Override public void onCollectionChange(CollectionChangeEvent event) { Collection oldC = event.getOldValue(); diff -r e3a8aa6eee32 -r 5294660df81b gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java Tue Sep 23 16:45:47 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java Wed Sep 24 12:02:37 2014 +0200 @@ -1403,5 +1403,9 @@ String gauge_name(); String reference_gauge(); + + String station(); + + String station_name(); } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r e3a8aa6eee32 -r 5294660df81b gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties Tue Sep 23 16:45:47 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties Wed Sep 24 12:02:37 2014 +0200 @@ -734,4 +734,6 @@ river=Fluss ld_locations=Ort gauge_name=Pegel -reference_gauge=Pegelnummer \ No newline at end of file +reference_gauge=Pegelnummer +station=Messstellennummer +station_name=Messstelle \ No newline at end of file diff -r e3a8aa6eee32 -r 5294660df81b gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_en.properties --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_en.properties Tue Sep 23 16:45:47 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_en.properties Wed Sep 24 12:02:37 2014 +0200 @@ -675,4 +675,6 @@ river=River ld_locations=Location gauge_name=Gauge -reference_gauge=Gaugenumber \ No newline at end of file +reference_gauge=Gaugenumber +station=Measurementstationnumber +station_name=Measurementstation \ No newline at end of file diff -r e3a8aa6eee32 -r 5294660df81b gwt-client/src/main/java/org/dive4elements/river/client/client/services/ArtifactService.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/services/ArtifactService.java Tue Sep 23 16:45:47 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/services/ArtifactService.java Wed Sep 24 12:02:37 2014 +0200 @@ -40,19 +40,5 @@ String factory, Recommendation recommendation ) throws ServerException; - - /** - * Create a new SQRelationArtifact. - * - * @param collection the collection to add the artifact to. - * @param river the river. - * @param measurementStation the measurement station id. - */ - public Artifact createSQRelationArtifact( - Collection collection, - String locale, - String river, - int measurementStation - ) throws ServerException; } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r e3a8aa6eee32 -r 5294660df81b gwt-client/src/main/java/org/dive4elements/river/client/client/services/ArtifactServiceAsync.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/services/ArtifactServiceAsync.java Tue Sep 23 16:45:47 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/services/ArtifactServiceAsync.java Wed Sep 24 12:02:37 2014 +0200 @@ -28,13 +28,5 @@ String factory, Recommendation recommendation, AsyncCallback callback); - - public void createSQRelationArtifact( - Collection collection, - String locale, - String river, - int measurementStation, - AsyncCallback callback - ); } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r e3a8aa6eee32 -r 5294660df81b gwt-client/src/main/java/org/dive4elements/river/client/client/ui/CollectionView.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/CollectionView.java Tue Sep 23 16:45:47 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/CollectionView.java Wed Sep 24 12:02:37 2014 +0200 @@ -635,7 +635,7 @@ @Override public void onSuccess(Collection newCollection) { GWT.log("Successfully added artifacts."); - setCollection(newCollection, true); + setCollection(newCollection); } } ); diff -r e3a8aa6eee32 -r 5294660df81b gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java Tue Sep 23 16:45:47 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/UIProviderFactory.java Wed Sep 24 12:02:37 2014 +0200 @@ -173,7 +173,7 @@ else if (uiProvider.equals("minfo.sedimentload_unit_select")) { return new RadioPanel(); } - else if (uiProvider.equals("gauge_discharge_curve")) { + else if (uiProvider.equals("static_data")) { return new StaticDataPanel(); } else if (uiProvider.equals("minfo.sedimentload_distance_select")) { diff -r e3a8aa6eee32 -r 5294660df81b gwt-client/src/main/java/org/dive4elements/river/client/client/ui/stationinfo/MeasurementStationListGrid.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/stationinfo/MeasurementStationListGrid.java Tue Sep 23 16:45:47 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/stationinfo/MeasurementStationListGrid.java Wed Sep 24 12:02:37 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() { + @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() { + @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() { + @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 diff -r e3a8aa6eee32 -r 5294660df81b gwt-client/src/main/java/org/dive4elements/river/client/server/ArtifactHelper.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/server/ArtifactHelper.java Tue Sep 23 16:45:47 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/server/ArtifactHelper.java Wed Sep 24 12:02:37 2014 +0200 @@ -192,35 +192,5 @@ return cf; } - - - public static Artifact createSQRelationArtifact( - String serverUrl, - String locale, - String river, - int measurementStation) - throws ServerException - { - Document create = ClientProtocolUtils.newCreateDocument( - SQ_RELATION_ARTIFACT); - - XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator( - create, - ArtifactNamespaceContext.NAMESPACE_URI, - ArtifactNamespaceContext.NAMESPACE_PREFIX); - - Element root = create.getDocumentElement(); - - Element eriver = ec.create("river"); - ec.addAttr(eriver, "name", river); - - Element estation = ec.create("measurement_station"); - ec.addAttr(estation, "number", String.valueOf(measurementStation)); - - root.appendChild(eriver); - root.appendChild(estation); - - return sendCreate(serverUrl, locale, create); - } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r e3a8aa6eee32 -r 5294660df81b gwt-client/src/main/java/org/dive4elements/river/client/server/ArtifactServiceImpl.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/server/ArtifactServiceImpl.java Tue Sep 23 16:45:47 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/server/ArtifactServiceImpl.java Wed Sep 24 12:02:37 2014 +0200 @@ -57,29 +57,5 @@ return ArtifactHelper.createArtifact(url, locale, factory, recom); } - - @Override - public Artifact createSQRelationArtifact( - Collection collection, - String locale, - String river, - int measurementStation) - throws ServerException - { - log.info("ArtifactServiceImpl.createSQRelationArtifact"); - String url = getServletContext().getInitParameter("server-url"); - - Artifact artifact = ArtifactHelper.createSQRelationArtifact(url, - locale, river, measurementStation); - if (artifact == null) { - return null; - } - log.info("SQRelationArtifact created successfully"); - - CollectionHelper.addArtifact(collection, artifact, url, locale); - - return artifact; - } - } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :