ingo@2693: package de.intevation.flys.artifacts; ingo@2693: ingo@2693: import de.intevation.flys.artifacts.model.FacetTypes; ingo@2693: ingo@2713: import de.intevation.flys.artifacts.states.SoundingsSelect; ingo@2693: ingo@2693: import de.intevation.flys.utils.FLYSUtils; ingo@2693: ingo@2713: import gnu.trove.TIntArrayList; ingo@2713: ingo@2693: import org.apache.log4j.Logger; ingo@2693: ingo@2693: /** ingo@2693: * The default MINFO artifact. ingo@2693: * ingo@2693: * @author Ingo Weinzierl ingo@2693: */ ingo@2693: public class MINFOArtifact ingo@2693: extends FLYSArtifact ingo@2693: implements FacetTypes { ingo@2693: ingo@2693: /** The logger for this class. */ ingo@2693: private static Logger logger = Logger.getLogger(MINFOArtifact.class); ingo@2693: ingo@2693: /** The name of the artifact. */ ingo@2693: public static final String ARTIFACT_NAME = "minfo"; ingo@2693: ingo@2693: /** XPath */ ingo@2693: public static final String XPATH_STATIC_UI ="/art:result/art:ui/art:static"; ingo@2693: ingo@2693: ingo@2693: /** ingo@2693: * The default constructor. ingo@2693: */ ingo@2693: public MINFOArtifact() { ingo@2693: } ingo@2693: ingo@2693: /** ingo@2693: * Returns the name of the concrete artifact. ingo@2693: * ingo@2693: * @return the name of the concrete artifact. ingo@2693: */ sascha@3193: @Override ingo@2693: public String getName() { ingo@2693: return ARTIFACT_NAME; ingo@2693: } ingo@2693: ingo@2702: public int[] getMainChannels() { ingo@2702: String data = getDataAsString("main.channel"); ingo@2702: ingo@2702: if (data == null) { ingo@2702: logger.warn("No 'main.channel' parameter specified!"); ingo@2702: return null; ingo@2702: } ingo@2702: ingo@2702: return FLYSUtils.intArrayFromString(data); ingo@2702: } ingo@2702: ingo@2702: ingo@2702: public int[] getTotalChannels() { ingo@2702: String data = getDataAsString("total.channel"); ingo@2702: ingo@2702: if (data == null) { ingo@2702: logger.warn("No 'total.channel' parameter specified!"); ingo@2702: return null; ingo@2702: } ingo@2702: ingo@2702: return FLYSUtils.intArrayFromString(data); ingo@2702: } ingo@2713: ingo@2713: ingo@2713: public int[] getBedHeightSingleIDs() { ingo@2713: String data = getDataAsString("soundings"); ingo@2713: ingo@2713: if (data == null) { ingo@2713: logger.warn("No 'soundings' parameter specified!"); ingo@2713: return null; ingo@2713: } ingo@2713: ingo@2713: String[] parts = data.split(";"); ingo@2713: ingo@2713: TIntArrayList ids = new TIntArrayList(); ingo@2713: ingo@2713: for (String part: parts) { ingo@2713: if (part.indexOf(SoundingsSelect.PREFIX_SINGLE) >= 0) { ingo@2713: String tmp = part.replace(SoundingsSelect.PREFIX_SINGLE, ""); ingo@2713: ingo@2713: try { ingo@2713: ids.add(Integer.parseInt(tmp)); ingo@2713: } ingo@2713: catch (NumberFormatException nfe) { ingo@2713: logger.warn("Cannot parse int from string: '" + tmp + "'"); ingo@2713: } ingo@2713: } ingo@2713: } ingo@2713: ingo@2713: return ids.toNativeArray(); ingo@2713: } ingo@2713: ingo@2713: ingo@2713: public int[] getBedHeightEpochIDs() { ingo@2713: String data = getDataAsString("soundings"); ingo@2713: ingo@2713: if (data == null) { ingo@2713: logger.warn("No 'soundings' parameter specified!"); ingo@2713: return null; ingo@2713: } ingo@2713: ingo@2713: String[] parts = data.split(";"); ingo@2713: ingo@2713: TIntArrayList ids = new TIntArrayList(); ingo@2713: ingo@2713: for (String part: parts) { ingo@2713: if (part.indexOf(SoundingsSelect.PREFIX_EPOCH) >= 0) { ingo@2713: String tmp = part.replace(SoundingsSelect.PREFIX_EPOCH, ""); ingo@2713: ingo@2713: try { ingo@2713: ids.add(Integer.parseInt(tmp)); ingo@2713: } ingo@2713: catch (NumberFormatException nfe) { ingo@2713: logger.warn("Cannot parse int from string: '" + tmp + "'"); ingo@2713: } ingo@2713: } ingo@2713: } ingo@2713: ingo@2713: return ids.toNativeArray(); ingo@2713: } ingo@2693: } ingo@2693: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :