# HG changeset patch # User Raimund Renkert # Date 1411398680 -7200 # Node ID f5ed7698c4db7cc82cfe1ab59a796e70cdaf175f # Parent c4bd57172aa7e7c9f60928c1714a524b6b0dbfd8# Parent 2869a2e482e56ade08691ffba839d30b7345cd27 merged. diff -r 2869a2e482e5 -r f5ed7698c4db artifacts/doc/conf/artifacts/gaugedischargecurve.xml --- a/artifacts/doc/conf/artifacts/gaugedischargecurve.xml Fri Sep 19 16:29:11 2014 +0200 +++ b/artifacts/doc/conf/artifacts/gaugedischargecurve.xml Mon Sep 22 17:11:20 2014 +0200 @@ -1,39 +1,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 2869a2e482e5 -r f5ed7698c4db artifacts/doc/conf/conf.xml --- a/artifacts/doc/conf/conf.xml Fri Sep 19 16:29:11 2014 +0200 +++ b/artifacts/doc/conf/conf.xml Mon Sep 22 17:11:20 2014 +0200 @@ -11,6 +11,7 @@ + @@ -146,7 +147,7 @@ org.dive4elements.artifactdatabase.DefaultArtifactFactory + artifact="org.dive4elements.river.artifacts.D4EArtifact">org.dive4elements.artifactdatabase.DefaultArtifactFactory org.dive4elements.artifactdatabase.DefaultArtifactFactory @@ -289,10 +290,10 @@ - &porosity-artifact; + &gaugedischargecurve-artifact; &sedimentload-artifact; &sedimentload-ls-artifact; diff -r 2869a2e482e5 -r f5ed7698c4db artifacts/src/main/java/org/dive4elements/river/artifacts/model/GaugeDischargeCurveFacet.java --- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/GaugeDischargeCurveFacet.java Fri Sep 19 16:29:11 2014 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/GaugeDischargeCurveFacet.java Mon Sep 22 17:11:20 2014 +0200 @@ -31,14 +31,17 @@ * @author Björn Ricks */ public class GaugeDischargeCurveFacet -extends DefaultFacet +extends DataFacet implements FacetTypes { private static final Logger log = Logger.getLogger(GaugeDischargeCurveFacet.class); + public GaugeDischargeCurveFacet() { + } + public GaugeDischargeCurveFacet(String name, String description) { - super(0, name, description); + super(name, description); } @Override diff -r 2869a2e482e5 -r f5ed7698c4db artifacts/src/main/java/org/dive4elements/river/artifacts/states/GaugeDischargeCurveState.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/GaugeDischargeCurveState.java Mon Sep 22 17:11:20 2014 +0200 @@ -0,0 +1,37 @@ +package org.dive4elements.river.artifacts.states; + +import java.util.List; + +import org.dive4elements.artifactdatabase.state.Facet; +import org.dive4elements.artifacts.CallContext; +import org.dive4elements.river.artifacts.D4EArtifact; +import org.dive4elements.river.artifacts.access.RiverAccess; +import org.dive4elements.river.artifacts.model.GaugeDischargeCurveFacet; +import org.dive4elements.river.artifacts.resources.Resources; + + +public class GaugeDischargeCurveState +extends DefaultState +{ + + @Override + public Object computeAdvance( + D4EArtifact artifact, + String hash, + CallContext context, + List facets, + Object old + ) { + RiverAccess access = new RiverAccess(artifact); + String description = Resources.format(context.getMeta(), + "facet.gauge_discharge_curve.description", + "Discharge curve on gauge", + access.getRiverName(), + artifact.getDataAsString("gauge_name")); + facets.add(new GaugeDischargeCurveFacet("gauge_discharge_curve", description)); + facets.add(new GaugeDischargeCurveFacet("at", "gauge_discharge_curve")); + facets.add(new GaugeDischargeCurveFacet("csv", "gauge_discharge_curve")); + facets.add(new GaugeDischargeCurveFacet("pdf", "gauge_discharge_curve")); + return null; + } +} diff -r 2869a2e482e5 -r f5ed7698c4db artifacts/src/main/java/org/dive4elements/river/artifacts/states/GaugeDischargeInitState.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/GaugeDischargeInitState.java Mon Sep 22 17:11:20 2014 +0200 @@ -0,0 +1,12 @@ +package org.dive4elements.river.artifacts.states; + + +public class GaugeDischargeInitState +extends DefaultState +{ + + @Override + protected String getUIProvider() { + return "gauge_discharge_curve"; + } +} diff -r 2869a2e482e5 -r f5ed7698c4db artifacts/src/main/java/org/dive4elements/river/exports/injector/InjectorConstants.java --- a/artifacts/src/main/java/org/dive4elements/river/exports/injector/InjectorConstants.java Fri Sep 19 16:29:11 2014 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/injector/InjectorConstants.java Mon Sep 22 17:11:20 2014 +0200 @@ -4,5 +4,6 @@ public interface InjectorConstants { public static final String CURRENT_KM = "currentkm"; + public static final String PNP = "PNP"; public static final double GAUGE_EPSILON = 0.1; } diff -r 2869a2e482e5 -r f5ed7698c4db artifacts/src/main/java/org/dive4elements/river/exports/injector/PNPInjector.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/injector/PNPInjector.java Mon Sep 22 17:11:20 2014 +0200 @@ -0,0 +1,50 @@ +package org.dive4elements.river.exports.injector; + +import org.dive4elements.artifacts.Artifact; +import org.dive4elements.artifacts.CallContext; +import org.dive4elements.artifacts.ContextInjector; +import org.dive4elements.river.artifacts.D4EArtifact; +import org.dive4elements.river.artifacts.access.RiverAccess; +import org.dive4elements.river.model.Gauge; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import static org.dive4elements.river.exports.injector.InjectorConstants.CURRENT_KM; +import static org.dive4elements.river.exports.injector.InjectorConstants.PNP; +import static org.dive4elements.river.exports.injector.InjectorConstants.GAUGE_EPSILON; + +public class PNPInjector +implements ContextInjector +{ + + @Override + public void setup(Element cfg) { + // TODO Auto-generated method stub + + } + + @Override + public void injectContext( + CallContext ctx, + Artifact artifact, + Document request + ) { + Object currentKm = ctx.getContextValue(CURRENT_KM); + if (currentKm == null) { + return; + } + + RiverAccess access = new RiverAccess((D4EArtifact)artifact); + Double km = (Double)currentKm; + Gauge gauge = + access.getRiver().determineGaugeByStation( + km - GAUGE_EPSILON, + km + GAUGE_EPSILON); + + if (gauge == null) { + return; + } + ctx.putContextValue(PNP, gauge.getDatum()); + } + +} diff -r 2869a2e482e5 -r f5ed7698c4db 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 Fri Sep 19 16:29:11 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYS.java Mon Sep 22 17:11:20 2014 +0200 @@ -496,62 +496,6 @@ } - /** Open window with gauges discharge curve. */ - public void newGaugeDischargeCurve(String river, Long gaugeref) { - Config config = Config.getInstance(); - - final String locale = config.getLocale(); - final String riv = river; - final Long ref = gaugeref; - final FLYS flys = this; - - User user = getCurrentUser(); - - if (user == null) { - SC.warn(MSG.error_not_logged_in()); - return; - } - - // TODO 1081, this collection needs to be added a mainvalue artifact - 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.createGaugeDischargeCurveArtifact( - col, locale, riv, ref, - 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(); - } - }); - } - }); - } - public void newSQRelation(String river, int measurementStation) { Config config = Config.getInstance(); diff -r 2869a2e482e5 -r f5ed7698c4db 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 Fri Sep 19 16:29:11 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java Mon Sep 22 17:11:20 2014 +0200 @@ -1395,5 +1395,13 @@ String analyzed_range(); String minfo_type(); + + String river(); + + String ld_locations(); + + String gauge_name(); + + String reference_gauge(); } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 2869a2e482e5 -r f5ed7698c4db 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 Fri Sep 19 16:29:11 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties Mon Sep 22 17:11:20 2014 +0200 @@ -731,3 +731,7 @@ FEDSTATE_KM = Landes-Stationierung official_regulation = amtl. Festlegung negative_values_not_allowed_for_to=Keine negativen Werte bei 'bis' erlaubt. +river=Fluss +ld_locations=Ort +gauge_name=Pegel +reference_gauge=Pegelnummer \ No newline at end of file diff -r 2869a2e482e5 -r f5ed7698c4db 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 Fri Sep 19 16:29:11 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_en.properties Mon Sep 22 17:11:20 2014 +0200 @@ -672,3 +672,7 @@ PATH = Path official_regulation = Official Regulation negative_values_not_allowed_for_to=Negative are not allowed for 'to'. +river=River +ld_locations=Location +gauge_name=Gauge +reference_gauge=Gaugenumber \ No newline at end of file diff -r 2869a2e482e5 -r f5ed7698c4db 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 Fri Sep 19 16:29:11 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/services/ArtifactService.java Mon Sep 22 17:11:20 2014 +0200 @@ -42,20 +42,6 @@ ) throws ServerException; /** - * Create a new GaugeDischageCurveArtifact. - * - * @param collection the collection to add the artifact to. - * @param river the river. - * @param gaugeref reference id of the gauge. - */ - public Artifact createGaugeDischargeCurveArtifact( - Collection collection, - String locale, - String river, - Long gaugeref - ) throws ServerException; - - /** * Create a new SQRelationArtifact. * * @param collection the collection to add the artifact to. @@ -68,19 +54,5 @@ String river, int measurementStation ) throws ServerException; - - /** - * Create a new GaugeDischageCurveArtifact and also a Mainvalueartifact. - * - * @param collection the collection to add the artifacts to. - * @param river the river. - * @param gaugeref reference id of the gauge. - */ - public Artifact createGaugeDischargeView( - Collection collection, - String locale, - String river, - Long gaugeRef) - throws ServerException; } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 2869a2e482e5 -r f5ed7698c4db 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 Fri Sep 19 16:29:11 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/services/ArtifactServiceAsync.java Mon Sep 22 17:11:20 2014 +0200 @@ -29,14 +29,6 @@ Recommendation recommendation, AsyncCallback callback); - public void createGaugeDischargeCurveArtifact( - Collection collection, - String locale, - String river, - Long gaugeref, - AsyncCallback callback - ); - public void createSQRelationArtifact( Collection collection, String locale, @@ -44,12 +36,5 @@ int measurementStation, AsyncCallback callback ); - - public void createGaugeDischargeView( - Collection collection, - String locale, - String river, - Long gaugeRef, - AsyncCallback callback); } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 2869a2e482e5 -r f5ed7698c4db gwt-client/src/main/java/org/dive4elements/river/client/client/ui/StaticDataPanel.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/StaticDataPanel.java Fri Sep 19 16:29:11 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/StaticDataPanel.java Mon Sep 22 17:11:20 2014 +0200 @@ -57,7 +57,7 @@ for (DataItem item: items) { HLayout hLayout = new HLayout(); - hLayout.addMember(new Label(item.getLabel())); + hLayout.addMember(new Label(MSG.getString(data.getLabel()))); hLayout.addMember(new Label(item.getStringValue())); vLayout.addMember(hLayout); diff -r 2869a2e482e5 -r f5ed7698c4db gwt-client/src/main/java/org/dive4elements/river/client/client/ui/stationinfo/GaugeListGrid.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/stationinfo/GaugeListGrid.java Fri Sep 19 16:29:11 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/stationinfo/GaugeListGrid.java Mon Sep 22 17:11:20 2014 +0200 @@ -12,16 +12,32 @@ import java.util.List; 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.AdvanceService; +import org.dive4elements.river.client.client.services.AdvanceServiceAsync; +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.DataList; +import org.dive4elements.river.client.shared.model.DefaultData; +import org.dive4elements.river.client.shared.model.DefaultDataItem; import org.dive4elements.river.client.shared.model.GaugeInfo; import org.dive4elements.river.client.shared.model.RiverInfo; @@ -33,6 +49,22 @@ private static final int ABFLUSSTAFEL_COLUMN = 6; + /** 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); + + /** The StepForwardService used to put data into an existing artifact. */ + protected AdvanceServiceAsync advanceService = + GWT.create(AdvanceService.class); + public GaugeListGrid(FLYS flys) { super(flys); //TODO i18n!!! @@ -312,9 +344,110 @@ */ @Override public void onRecordClick(RecordClickEvent event) { - GaugeRecord gauge = (GaugeRecord)event.getRecord(); - flys.newGaugeDischargeCurve(gauge.getRiverName(), - gauge.getOfficialNumber()); + final GaugeRecord gauge = (GaugeRecord)event.getRecord(); + 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, gauge); + } + } + ); + } + + private void createArtifact( + final Collection collection, + final String locale, + final GaugeRecord gauge + ) { + artifactService.create( + locale, "gaugedischargecurve", 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", + gauge.getRiverName()); + Data river = new DefaultData( + "river", + null, + null, + new DataItem[]{riverItem}); + + DataItem refItem = new DefaultDataItem( + "reference_gauge", + "reference_gauge", + gauge.getOfficialNumber().toString()); + Data ref = new DefaultData( + "reference_gauge", + null, + null, + new DataItem[]{refItem}); + + DataItem locItem = new DefaultDataItem( + "ld_locations", + "ld_locations", + gauge.getStation().toString()); + Data loc = new DefaultData( + "ld_locations", + null, + null, + new DataItem[]{locItem}); + + DataItem nameItem = new DefaultDataItem( + "gauge_name", + "gauge_name", + gauge.getName()); + Data name = new DefaultData( + "gauge_name", + null, + null, + new DataItem[]{nameItem}); + + Data[] data = new Data[]{river, ref, loc, 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 2869a2e482e5 -r f5ed7698c4db 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 Fri Sep 19 16:29:11 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/server/ArtifactHelper.java Mon Sep 22 17:11:20 2014 +0200 @@ -132,40 +132,6 @@ return sendCreate(serverUrl, locale, create); } - /** - * Creates a new GaugeDischargeCurverArtifact - * - * @param river the name of the river - * @param reference the reference id of the gauge (official number) - */ - public static Artifact createGaugeDischargeCurveArtifact( - String serverUrl, - String locale, - String river, - Long reference) - throws ServerException - { - Document create = ClientProtocolUtils.newCreateDocument( - GAUGE_DISCHARGE_CURVE_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 egauge = ec.create("gauge"); - ec.addAttr(egauge, "reference", reference.toString()); - - root.appendChild(eriver); - root.appendChild(egauge); - - return sendCreate(serverUrl, locale, create); - } /** * Sends a create document to the artifact server. diff -r 2869a2e482e5 -r f5ed7698c4db 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 Fri Sep 19 16:29:11 2014 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/server/ArtifactServiceImpl.java Mon Sep 22 17:11:20 2014 +0200 @@ -58,71 +58,6 @@ return ArtifactHelper.createArtifact(url, locale, factory, recom); } - - /** - * Create a new GaugeDischageCurveArtifact and MainValueArtifact, stuff - * them into a collection. - * - * @param river the river. - * @param gaugeref reference id of the gauge. - */ - public Artifact createGaugeDischargeView( - Collection collection, - String locale, - String river, - Long gaugeRef) - throws ServerException - { - log.info("ArtifactServiceImpl.createGaugeDischargeCurveView"); - String url = getServletContext().getInitParameter("server-url"); - - Artifact artifact = ArtifactHelper.createGaugeDischargeCurveArtifact(url, - locale, river, gaugeRef); - if (artifact == null) { - return null; - } - log.info("GaugeDischargeCurveArtifact created successfully"); - - CollectionHelper.addArtifact(collection, artifact, url, locale); - Artifact mainVArtifact = ArtifactHelper.createMainvalueArtifact(url, - locale, river, gaugeRef); - if (mainVArtifact == null) { - log.info("Failed to create MainValueArtifact"); - return null; - } - CollectionHelper.addArtifact(collection, mainVArtifact, url, locale); - - return artifact; - } - - /** - * Create a new GaugeDischageCurveArtifact - * - * @param river the river - * @param gaugeref reference id of the gauge - */ - public Artifact createGaugeDischargeCurveArtifact( - Collection collection, - String locale, - String river, - Long gaugeref) - throws ServerException - { - log.info("ArtifactServiceImpl.createGaugeDischargeCurveArtifact"); - String url = getServletContext().getInitParameter("server-url"); - - Artifact artifact = ArtifactHelper.createGaugeDischargeCurveArtifact(url, - locale, river, gaugeref); - if (artifact == null) { - return null; - } - log.info("GaugeDischargeCurveArtifact created successfully"); - - CollectionHelper.addArtifact(collection, artifact, url, locale); - - return artifact; - } - @Override public Artifact createSQRelationArtifact( Collection collection,