ingo@3230: package de.intevation.flys.artifacts.access; ingo@3230: ingo@3230: import gnu.trove.TIntArrayList; ingo@3230: ingo@3230: import org.apache.log4j.Logger; ingo@3230: ingo@3230: import de.intevation.flys.artifacts.FLYSArtifact; ingo@3230: import de.intevation.flys.artifacts.states.SoundingsSelect; ingo@3230: ingo@3230: ingo@3230: public class BedHeightAccess extends Access { ingo@3230: ingo@3230: private static final Logger logger = Logger.getLogger(BedHeightAccess.class); ingo@3230: ingo@3230: ingo@3230: private int[] singleIDs; ingo@3230: private int[] epochIDs; ingo@3230: ingo@3230: private Double lowerKM; ingo@3230: private Double upperKM; ingo@3230: ingo@3230: ingo@3230: public BedHeightAccess(FLYSArtifact artifact) { ingo@3230: super(artifact); ingo@3230: } ingo@3230: ingo@3230: ingo@3230: public Double getLowerKM() { ingo@3230: if (lowerKM == null) { ingo@3230: lowerKM = getDouble("ld_from"); ingo@3230: } ingo@3230: ingo@3230: return lowerKM; ingo@3230: } ingo@3230: ingo@3230: ingo@3230: public Double getUpperKM() { ingo@3230: if (upperKM == null) { ingo@3230: upperKM = getDouble("ld_to"); ingo@3230: } ingo@3230: ingo@3230: return upperKM; ingo@3230: } ingo@3230: ingo@3230: ingo@3230: public int[] getBedHeightSingleIDs() { ingo@3230: if (singleIDs == null) { ingo@3230: String data = getString("soundings"); ingo@3230: ingo@3230: if (data == null) { ingo@3230: logger.warn("No 'soundings' parameter specified!"); ingo@3230: return null; ingo@3230: } ingo@3230: ingo@3230: String[] parts = data.split(";"); ingo@3230: ingo@3230: TIntArrayList ids = new TIntArrayList(); ingo@3230: ingo@3230: for (String part: parts) { ingo@3230: if (part.indexOf(SoundingsSelect.PREFIX_SINGLE) >= 0) { ingo@3230: String tmp = part.replace(SoundingsSelect.PREFIX_SINGLE, ""); ingo@3230: ingo@3230: try { ingo@3230: ids.add(Integer.parseInt(tmp)); ingo@3230: } ingo@3230: catch (NumberFormatException nfe) { ingo@3230: logger.warn("Cannot parse int from string: '" + tmp + "'"); ingo@3230: } ingo@3230: } ingo@3230: } ingo@3230: ingo@3230: singleIDs = ids.toNativeArray(); ingo@3230: } ingo@3230: ingo@3230: return singleIDs; ingo@3230: } ingo@3230: ingo@3230: ingo@3230: public int[] getBedHeightEpochIDs() { ingo@3230: if (epochIDs == null) { ingo@3230: String data = getString("soundings"); ingo@3230: ingo@3230: if (data == null) { ingo@3230: logger.warn("No 'soundings' parameter specified!"); ingo@3230: return null; ingo@3230: } ingo@3230: ingo@3230: String[] parts = data.split(";"); ingo@3230: ingo@3230: TIntArrayList ids = new TIntArrayList(); ingo@3230: ingo@3230: for (String part: parts) { ingo@3230: if (part.indexOf(SoundingsSelect.PREFIX_EPOCH) >= 0) { ingo@3230: String tmp = part.replace(SoundingsSelect.PREFIX_EPOCH, ""); ingo@3230: ingo@3230: try { ingo@3230: ids.add(Integer.parseInt(tmp)); ingo@3230: } ingo@3230: catch (NumberFormatException nfe) { ingo@3230: logger.warn("Cannot parse int from string: '" + tmp + "'"); ingo@3230: } ingo@3230: } ingo@3230: } ingo@3230: ingo@3230: epochIDs = ids.toNativeArray(); ingo@3230: } ingo@3230: ingo@3230: return epochIDs; ingo@3230: } ingo@3230: }