view 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 source
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