comparison flys-client/src/main/java/de/intevation/flys/client/server/ArtifactHelper.java @ 3865:436eec3be6ff

Allow to create a discharge curve from a gauge info This is only a draft yet. flys-client/trunk@5639 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Bjoern Ricks <bjoern.ricks@intevation.de>
date Fri, 28 Sep 2012 08:57:48 +0000
parents ab8eb2f544f2
children b660090b417d
comparison
equal deleted inserted replaced
3864:c434dd2e84cf 3865:436eec3be6ff
1 package de.intevation.flys.client.server; 1 package de.intevation.flys.client.server;
2 2
3 import org.w3c.dom.Document; 3 import org.w3c.dom.Document;
4 import org.w3c.dom.Element;
4 5
5 import org.apache.log4j.Logger; 6 import org.apache.log4j.Logger;
6 7
7 import java.util.ArrayList; 8 import java.util.ArrayList;
8 import java.util.List; 9 import java.util.List;
12 import de.intevation.artifacts.common.utils.CreationFilter; 13 import de.intevation.artifacts.common.utils.CreationFilter;
13 14
14 import de.intevation.artifacts.httpclient.exceptions.ConnectionException; 15 import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
15 import de.intevation.artifacts.httpclient.http.HttpClient; 16 import de.intevation.artifacts.httpclient.http.HttpClient;
16 import de.intevation.artifacts.httpclient.http.HttpClientImpl; 17 import de.intevation.artifacts.httpclient.http.HttpClientImpl;
18 import de.intevation.artifacts.httpclient.utils.ArtifactNamespaceContext;
19 import de.intevation.artifacts.httpclient.utils.XMLUtils;
17 20
18 import de.intevation.flys.client.shared.exceptions.ServerException; 21 import de.intevation.flys.client.shared.exceptions.ServerException;
19 import de.intevation.flys.client.shared.model.Artifact; 22 import de.intevation.flys.client.shared.model.Artifact;
20 23
21 import de.intevation.flys.client.shared.model.Recommendation; 24 import de.intevation.flys.client.shared.model.Recommendation;
22
23 25
24 /** 26 /**
25 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> 27 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
26 */ 28 */
27 public class ArtifactHelper { 29 public class ArtifactHelper {
30 32
31 33
32 /** The error message key that is thrown if an error occured while artifact 34 /** The error message key that is thrown if an error occured while artifact
33 * creation.*/ 35 * creation.*/
34 public static final String ERROR_CREATE_ARTIFACT = "error_create_artifact"; 36 public static final String ERROR_CREATE_ARTIFACT = "error_create_artifact";
37
38 /**
39 * Name of the factory to generate a GaugeDischargeCurveArtifact
40 */
41 private static final String GAUGE_DISCHARGE_CURVE_ARTIFACT = "gaugedischargecurve";
35 42
36 43
37 private ArtifactHelper() { 44 private ArtifactHelper() {
38 } 45 }
39 46
66 } 73 }
67 74
68 Document create = ClientProtocolUtils.newCreateDocument( 75 Document create = ClientProtocolUtils.newCreateDocument(
69 factory, uuid, ids, filter); 76 factory, uuid, ids, filter);
70 77
78 return sendCreate(serverUrl, locale, create);
79
80 }
81
82 /**
83 * Creates a new GaugeDischargeCurverArtifact
84 *
85 * @param river the name of the river
86 * @param reference the reference id of the gauge (official number)
87 */
88 public static Artifact createGaugeDischargeCurveArtifact(
89 String serverUrl,
90 String locale,
91 String river,
92 Long reference)
93 throws ServerException
94 {
95 Document create = ClientProtocolUtils.newCreateDocument(
96 GAUGE_DISCHARGE_CURVE_ARTIFACT);
97
98 XMLUtils.ElementCreator ec = new XMLUtils.ElementCreator(
99 create,
100 ArtifactNamespaceContext.NAMESPACE_URI,
101 ArtifactNamespaceContext.NAMESPACE_PREFIX);
102
103 Element root = create.getDocumentElement();
104
105 Element eriver = ec.create("river");
106 ec.addAttr(eriver, "name", river);
107
108 Element egauge = ec.create("gauge");
109 ec.addAttr(egauge, "reference", reference.toString());
110
111 root.appendChild(eriver);
112 root.appendChild(egauge);
113
114 return sendCreate(serverUrl, locale, create);
115 }
116
117 /**
118 * Sends a create document to the artifact server
119 */
120 private static Artifact sendCreate(
121 String serverUrl,
122 String locale,
123 Document doc)
124 throws ServerException
125 {
71 HttpClient client = new HttpClientImpl(serverUrl, locale); 126 HttpClient client = new HttpClientImpl(serverUrl, locale);
72 127
73 try { 128 try {
74 return (Artifact) client.create(create, new FLYSArtifactCreator()); 129 return (Artifact) client.create(doc, new FLYSArtifactCreator());
75 } 130 }
76 catch (ConnectionException ce) { 131 catch (ConnectionException ce) {
77 logger.error(ce, ce); 132 logger.error(ce, ce);
78 } 133 }
79 134

http://dive4elements.wald.intevation.org