[PATCH 17 of 17] merged
Wald Commits
scm-commit at wald.intevation.org
Thu Feb 27 16:48:03 CET 2014
# HG changeset patch
# User Raimund Renkert <rrenkert at intevation.de>
# Date 1393515936 -3600
# Node ID 945d25675a322b19641a291c0976a84b6948f2d6
# Parent 03cb95071d21d337530ea3fb230ba500116c78c2
# Parent 819528f6fabb4388897887a3c6a5e716118298c1
merged.
diff -r 03cb95071d21 -r 945d25675a32 artifacts/doc/howto_commit_windows.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/artifacts/doc/howto_commit_windows.txt Thu Feb 27 16:45:36 2014 +0100
@@ -0,0 +1,89 @@
+Diese Anleitung erklärt wie man Änderungen an der Codebasis von
+D4E-River unter Windows durchführen kann. In dieser Anleitung
+wird dazu TortoiseHg und Putty verwendet.
+
+Hintergrund:
+D4E-River wird mit dem Versionskontrollsystem Mercurial
+( http://de.wikipedia.org/wiki/Mercurial ) verwaltet und ist auf
+der Plattform "Wald" ( http://wald.intevation.org/ ) gehostet.
+TortoiseHg ist eine Windows Explorer Erweiterung um ein graphisches
+Frontend für Mercurial zu bieten.
+
+
+Schritte 1-3 sind einmalig auszuführen. Schritt 4 muss immer wenn
+man eine Änderung durchführen möchte geschehen.
+
+Schritt 1: Registrieren eines Benutzerkontos auf wald.intevation.de
+
+* Browser öffnen auf Seite https://www.wald.intevation.org/account/register.php
+ Das zugehörige Wurzelzertifikat kann unter https://ssl.intevation.de
+ (Root CA 2010) beschafft werden.
+* Accountdetails eintragen (Nur Felder mit * müssen beachtet werden)
+* Registrieren drücken.
+-> Ihnen wird eine E-Mail mit einem Link zur Bestätigung gesendet.
+* Link aus der E-Mail öffnen.
+* Unter: https://wald.intevation.org/projects/dive4elements/ einen Beitrittsgesuch
+ (Link dafür ist Rechts unten auf der Seite unter den Mitgliedern)
+ Knappen Kommentar einfügen: "Beitrittsgesuch Frau Mustermann" o.Ä.
+-> Ein Admin in diesem Projekt muss Sie nun manuell freischalten.
+
+Schritt 2: SSH Schlüssel erstellen und in Wald hinterlegen
+
+(Dieser Teil geht davon aus das Putty bereits installiert ist)
+* Puttygen starten
+* "Generate a public/private key pair" Ausführen
+* ggf. Einen Key Comment z.B. "Wald Schluessel" angeben.
+* ggf. Eine passphrase angeben
+* Save private key -> Schlüssel abspeichern z.B: c:\Benutzer\name\wald-schluessel.ppk
+* Save public key -> Öffentlichen Schlüssel abspeichern z.B: c:\Benutzer\name\wald-schluessel-pub.txt
+* Kopieren Sie den Inhalt des Bereichs "Public key for pasting into OpenSSH authorized_keys file:"
+* Fügen Sie den öffentlichen Schlüssel in dem Eingabefeld unter:
+ http://wald.intevation.org/account/editsshkeys.php
+ ein.
+* Speichern des Schlüssels durch drücken auf den Button "Aktualisierung".
+
+! Achtung: Es kann bis zu einer Stunde dauern bis der Schlüssel im System
+ synchronisiert ist.
+
+
+Schritt 3: TortoiseHg (Software zur Versionskontrolle) installieren
+* Unter: http://tortoisehg.bitbucket.org/ TortoiseHg herunterladen
+ Die passende Version hängt von der Architektur ihres Systems (32/64-Bit ab)
+* TortoiseHg installieren. Die Standardoptionen sind ausreichend.
+* Fügen Sie nun den Privaten Schlüssel den Sie in Schritt 2 generiert haben
+ in Pageant ein.
+ (Wenn Pageant noch nicht installiert ist kann auch der Pageant aus TortoiseHg
+ verwendet werden. z.B. Installiert in (C:\Programme\TortoiseHg\Pageant.exe)
+* Navigieren Sie im Windows Explorer in ein Verzeichnis in welchem
+ das D4E-River Repository angelegt werden soll.
+* Rechtsklick im Windows Explorer zeigt nun neue Kontext Optionen für TortoiseHg.
+ TortoiseHg -> clone
+* Tragen Sie als Quelle ssh://<ihrbenutzername>@scm.wald.intevation.org/hg/dive4elements/river/
+ ein. Als Ziel einen Ordnernamen für ihr Lokales Repository.
+-> Bei der ersten Verbindung werden Sie darauf hingewiesen das der Host Key des Servers
+ noch unbekannt ist. Der RSA Fingerprint von Wald ist:
+ 24:d2:13:1f:fa:02:54:f1:79:4f:5d:a0:aa:d3:ed
+
+Tritt kein Fehler auf haben Sie nun einen Authentifizierten Klon des D4E-River
+Repositories.
+
+
+Schritt 4: Änderungen durchführen.
+* Sicherstellen das Pageant gestartet ist und den Key enthält.
+* Aktualisieren der lokalen Kopie im Ordner des Repositories
+ - Rechtsklick -> TortoiseHg -> Synchronize
+ - Auswählen "Nach dem Abfurfen" -> Update
+ - Eingehende Änderungen von der ausgewählten URL abrufen
+* Änderungen an den Dateien durchführen.
+* Rechtsklick auf die geänderte Datei -> Hg Commit...
+* Eine Versionsmeldung im Fenster die knapp zusammenfasst was / warum
+ Sie etwas geändert haben. (Am liebsten in Englisch)
+ z.B.: "Corrected usage of the word 'fixation' in english translations"
+* Änderungen zum Server übertragen
+ - Rechtsklick -> TortoiseHg -> Synchronize
+ - Ausgehende Änderungen an die ausgewählte URL übertragen
+
+Hinweis: Beim ersten "Commit" werden Sie gebeten sich zu Identifizieren.
+Im darauffolgenden Einstellungs Fenster müssen Sie dann einen Benutzernamen
+Angeben. Dieser sollte das Format vorname nachname <email> haben.
+z.B.: Andre Heinecke <aheinecke at intevation.de>
diff -r 03cb95071d21 -r 945d25675a32 artifacts/src/main/java/org/dive4elements/river/artifacts/D4EArtifact.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/D4EArtifact.java Thu Feb 27 16:43:24 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/D4EArtifact.java Thu Feb 27 16:45:36 2014 +0100
@@ -219,6 +219,16 @@
}
setCurrentState(states.get(0));
+ handleInitModel(data, context, callMeta);
+
+ filterFacets = buildFilterFacets(data);
+
+ extractOut(data);
+ }
+
+ protected void handleInitModel(Document data, Object context, CallMeta callMeta) {
+ RiverContext flysContext = RiverUtils.getFlysContext(context);
+
String model = XMLUtils.xpathString(
data,
XPATH_MODEL_ARTIFACT,
@@ -235,10 +245,6 @@
log.error(adbe, adbe);
}
}
-
- filterFacets = buildFilterFacets(data);
-
- extractOut(data);
}
protected void extractOut(Document data) {
@@ -1607,7 +1613,7 @@
String out = entry.getKey();
List<Facet> filters = entry.getValue();
- log.debug("There are " + filters.size() + " filters for: " +out);
+ log.debug("There are " + filters.size() + " filters for: " + out);
for (Facet filter: filters) {
log.debug(" filter: " + filter.getName());
diff -r 03cb95071d21 -r 945d25675a32 artifacts/src/main/java/org/dive4elements/river/artifacts/MapArtifact.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/MapArtifact.java Thu Feb 27 16:43:24 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/MapArtifact.java Thu Feb 27 16:45:36 2014 +0100
@@ -52,6 +52,9 @@
List<State> states = getStates(context);
setCurrentState(states.get(0));
+
+ // Needed if cloning another artifact.
+ super.handleInitModel(data, context, callmeta);
}
diff -r 03cb95071d21 -r 945d25675a32 artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/WMSDBLayerFacet.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/WMSDBLayerFacet.java Thu Feb 27 16:43:24 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/WMSDBLayerFacet.java Thu Feb 27 16:45:36 2014 +0100
@@ -9,6 +9,7 @@
package org.dive4elements.river.artifacts.model.map;
import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
+import org.dive4elements.artifactdatabase.state.Facet;
public class WMSDBLayerFacet extends WMSLayerFacet {
@@ -110,5 +111,27 @@
public boolean isQueryable() {
return true;
}
+
+ /** Clone Facet-bound data. */
+ protected void cloneData(WMSDBLayerFacet copy) {
+ super.cloneData(copy);
+ copy.setFilter(this.getFilter());
+ copy.setData(this.getData());
+ copy.setGeometryType(this.getGeometryType());
+ copy.setConnection(this.getConnection());
+ copy.setConnectionType(this.getConnectionType());
+ copy.setLabelItem(this.getLabelItem());
+ }
+
+ /** Copy deeply. */
+ @Override
+ public Facet deepCopy() {
+ WMSDBLayerFacet copy = new WMSDBLayerFacet();
+ copy.set(this);
+
+ cloneData(copy);
+
+ return copy;
+ }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
diff -r 03cb95071d21 -r 945d25675a32 artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/WMSLayerFacet.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/WMSLayerFacet.java Thu Feb 27 16:43:24 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/WMSLayerFacet.java Thu Feb 27 16:45:36 2014 +0100
@@ -173,18 +173,31 @@
}
+ /** Clone facet-bound data. */
+ protected void cloneData(WMSLayerFacet copy) {
+ copy.type = type;
+ copy.stateId = stateId;
+ copy.hash = hash;
+
+ if (layers != null) {
+ copy.layers = new ArrayList<String>(layers);
+ }
+ else {
+ copy.layers = new ArrayList<String>();
+ }
+
+ copy.originalExtent = originalExtent;
+ copy.url = url;
+ copy.extent = extent;
+ copy.srid = srid;
+ }
+
@Override
public Facet deepCopy() {
WMSLayerFacet copy = new WMSLayerFacet();
copy.set(this);
- copy.type = type;
- copy.layers = new ArrayList<String>(layers);
- copy.stateId = stateId;
- copy.hash = hash;
- copy.url = url;
- copy.extent = extent;
- copy.srid = srid;
+ cloneData(copy);
return copy;
}
diff -r 03cb95071d21 -r 945d25675a32 artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/WSPLGENLayerFacet.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/WSPLGENLayerFacet.java Thu Feb 27 16:43:24 2014 +0100
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/map/WSPLGENLayerFacet.java Thu Feb 27 16:45:36 2014 +0100
@@ -9,6 +9,7 @@
package org.dive4elements.river.artifacts.model.map;
import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
+import org.dive4elements.artifactdatabase.state.Facet;
public class WSPLGENLayerFacet
extends WMSLayerFacet
@@ -50,5 +51,17 @@
public boolean isQueryable() {
return true;
}
+
+
+ /** Copy deeply. */
+ @Override
+ public Facet deepCopy() {
+ WSPLGENLayerFacet copy = new WSPLGENLayerFacet();
+ copy.set(this);
+
+ cloneData(copy);
+
+ return copy;
+ }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
diff -r 03cb95071d21 -r 945d25675a32 backend/doc/schema/oracle.sql
--- a/backend/doc/schema/oracle.sql Thu Feb 27 16:43:24 2014 +0100
+++ b/backend/doc/schema/oracle.sql Thu Feb 27 16:45:36 2014 +0100
@@ -262,7 +262,7 @@
CREATE TABLE rivers (
id NUMBER(38,0) NOT NULL,
- uuid CHAR(37 CHAR),
+ model_uuid CHAR(36 CHAR) UNIQUE,
official_number NUMBER(38,0),
km_up NUMBER(38,0) DEFAULT 0 NOT NULL,
name VARCHAR2(255) NOT NULL UNIQUE,
diff -r 03cb95071d21 -r 945d25675a32 backend/doc/schema/postgresql.sql
--- a/backend/doc/schema/postgresql.sql Thu Feb 27 16:43:24 2014 +0100
+++ b/backend/doc/schema/postgresql.sql Thu Feb 27 16:45:36 2014 +0100
@@ -12,7 +12,7 @@
CREATE TABLE rivers (
id int PRIMARY KEY NOT NULL,
- uuid CHAR(37),
+ model_uuid CHAR(36) UNIQUE,
official_number int8,
name VARCHAR(256) NOT NULL UNIQUE,
km_up BOOLEAN NOT NULL DEFAULT true,
diff -r 03cb95071d21 -r 945d25675a32 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 Thu Feb 27 16:43:24 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java Thu Feb 27 16:45:36 2014 +0100
@@ -228,6 +228,8 @@
String wrongFormat();
+ String toShouldNotBeNegative();
+
String atLeastOneValue();
String missingInput();
diff -r 03cb95071d21 -r 945d25675a32 gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties Thu Feb 27 16:43:24 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties Thu Feb 27 16:45:36 2014 +0100
@@ -129,6 +129,7 @@
unitDiffInM = Diff [m]:
unitLocation = km
wrongFormat = Wrong format
+toShouldNotBeNegative = Field 'to' has to contain a positive value.
atLeastOneValue = You need to insert at least one value.
missingInput = You need to enter a value.
too_many_values = Only one value allowed
diff -r 03cb95071d21 -r 945d25675a32 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 Thu Feb 27 16:43:24 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties Thu Feb 27 16:45:36 2014 +0100
@@ -129,6 +129,7 @@
unitDiffInM = Diff [m]:
unitLocation = km
wrongFormat = Falsches Format
+toShouldNotBeNegative = Feld 'bis' muss einen positiven Wert enthalten.
atLeastOneValue = Sie m\u00fcssen mindestens einen Wert eingeben.
missingInput = Sie m\u00fcssen einen Wert eingeben.
too_many_values = Nur ein Eingabewert erlaubt
diff -r 03cb95071d21 -r 945d25675a32 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 Thu Feb 27 16:43:24 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_en.properties Thu Feb 27 16:45:36 2014 +0100
@@ -130,6 +130,7 @@
unitDiffInM = Diff [m]:
unitLocation = km
wrongFormat = Wrong format
+toShouldNotBeNegative = Field 'to' has to contain a positive value.
atLeastOneValue = You need to insert at least one value.
missingInput = You need to enter a value.
too_many_values = Only one value allowed
diff -r 03cb95071d21 -r 945d25675a32 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DistancePanel.java
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DistancePanel.java Thu Feb 27 16:43:24 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DistancePanel.java Thu Feb 27 16:45:36 2014 +0100
@@ -423,6 +423,7 @@
}
+ /** Gets the double from default in data, null if none. */
protected double getDefaultValue(Data data)
throws NumberFormatException
{
diff -r 03cb95071d21 -r 945d25675a32 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DoubleRangePanel.java
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DoubleRangePanel.java Thu Feb 27 16:43:24 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DoubleRangePanel.java Thu Feb 27 16:45:36 2014 +0100
@@ -54,6 +54,10 @@
public DoubleRangePanel() {
}
+ public FloatItem getToItem() {
+ return toItem;
+ }
+
/**
* Creates a new form with a single input field that displays an array of
@@ -153,7 +157,6 @@
stepItem.setValue(f.format(steps));
}
-
public boolean validateForm() {
try {
return
@@ -171,6 +174,9 @@
* there are values that doesn't represent a valid float, an error is
* displayed.
*
+ * Also if negativeToAllowed is false, an error is registered if
+ * the 'to' field contains a negative value.
+ *
* @param item The FormItem.
*/
@SuppressWarnings("unchecked")
diff -r 03cb95071d21 -r 945d25675a32 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/WaterlevelGroundPanel.java
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/WaterlevelGroundPanel.java Thu Feb 27 16:43:24 2014 +0100
+++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/WaterlevelGroundPanel.java Thu Feb 27 16:45:36 2014 +0100
@@ -8,7 +8,7 @@
package org.dive4elements.river.client.client.ui;
-import java.util.List;
+import com.smartgwt.client.widgets.form.validator.FloatRangeValidator;
public class WaterlevelGroundPanel extends DistancePanel {
@@ -21,6 +21,11 @@
public WaterlevelGroundPanel() {
super("left");
+
+ FloatRangeValidator frv = new FloatRangeValidator();
+ frv.setMin(0f);
+ frv.setMax(Float.MAX_VALUE);
+ distancePanel.getToItem().setValidators(frv);
}
@@ -125,16 +130,5 @@
// We don't need a helper panel here. But we have to override this
// method to avoid the table creation in the parent class.
}
-
- @Override
- protected void validateTo(List<String> errors) {
- double to = distancePanel.getTo();
-
- if (to < 0d) {
- distancePanel.setTo(max);
- errors.add(MSG.negative_values_not_allowed_for_to());
- }
- super.validateTo(errors);
- }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
More information about the Dive4elements-commits
mailing list