diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/BedHeightAccess.java @ 3230:b888c5eb65b3

Added new *Access objects for bed height calculation and flow velocity calculation; removed methods for specific data access from MINFOArtifact. flys-artifacts/trunk@4859 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 03 Jul 2012 12:13:36 +0000
parents
children cdbc457e23e2
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/BedHeightAccess.java	Tue Jul 03 12:13:36 2012 +0000
@@ -0,0 +1,110 @@
+package de.intevation.flys.artifacts.access;
+
+import gnu.trove.TIntArrayList;
+
+import org.apache.log4j.Logger;
+
+import de.intevation.flys.artifacts.FLYSArtifact;
+import de.intevation.flys.artifacts.states.SoundingsSelect;
+
+
+public class BedHeightAccess extends Access {
+
+	private static final Logger logger = Logger.getLogger(BedHeightAccess.class);
+	
+	
+	private int[] singleIDs;
+	private int[] epochIDs;
+	
+	private Double lowerKM;
+	private Double upperKM;
+	
+	
+	public BedHeightAccess(FLYSArtifact artifact) {
+		super(artifact);
+	}
+	
+	
+	public Double getLowerKM() {
+    	if (lowerKM == null) {
+    		lowerKM = getDouble("ld_from");
+    	}
+    	
+    	return lowerKM;
+    }
+    
+    
+    public Double getUpperKM() {
+    	if (upperKM == null) {
+    		upperKM = getDouble("ld_to");
+    	}
+    	
+    	return upperKM;
+    }
+	
+    
+    public int[] getBedHeightSingleIDs() {
+    	if (singleIDs == null) {
+	        String data = getString("soundings");
+	
+	        if (data == null) {
+	            logger.warn("No 'soundings' parameter specified!");
+	            return null;
+	        }
+	
+	        String[] parts = data.split(";");
+	
+	        TIntArrayList ids = new TIntArrayList();
+	
+	        for (String part: parts) {
+	            if (part.indexOf(SoundingsSelect.PREFIX_SINGLE) >= 0) {
+	                String tmp = part.replace(SoundingsSelect.PREFIX_SINGLE, "");
+	
+	                try {
+	                    ids.add(Integer.parseInt(tmp));
+	                }
+	                catch (NumberFormatException nfe) {
+	                    logger.warn("Cannot parse int from string: '" + tmp + "'");
+	                }
+	            }
+	        }
+	        
+	        singleIDs = ids.toNativeArray();
+    	}
+
+    	return singleIDs;
+    }
+
+
+    public int[] getBedHeightEpochIDs() {
+    	if (epochIDs == null) {
+	        String data = getString("soundings");
+	
+	        if (data == null) {
+	            logger.warn("No 'soundings' parameter specified!");
+	            return null;
+	        }
+	
+	        String[] parts = data.split(";");
+	
+	        TIntArrayList ids = new TIntArrayList();
+	
+	        for (String part: parts) {
+	            if (part.indexOf(SoundingsSelect.PREFIX_EPOCH) >= 0) {
+	                String tmp = part.replace(SoundingsSelect.PREFIX_EPOCH, "");
+	
+	                try {
+	                    ids.add(Integer.parseInt(tmp));
+	                }
+	                catch (NumberFormatException nfe) {
+	                    logger.warn("Cannot parse int from string: '" + tmp + "'");
+	                }
+	            }
+	        }
+	
+	        epochIDs = ids.toNativeArray();
+    	}
+    	
+    	return epochIDs;
+    }
+}

http://dive4elements.wald.intevation.org