SiLeBAT/FSK-Lab

View on GitHub
de.bund.bfr.knime.pmm.common/src/de/bund/bfr/knime/pmm/common/TimeSeriesXml.java

Summary

Maintainability
A
1 hr
Test Coverage
/*******************************************************************************
 * Copyright (c) 2015 Federal Institute for Risk Assessment (BfR), Germany
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * Contributors:
 *     Department Biological Safety - BfR
 *******************************************************************************/
package de.bund.bfr.knime.pmm.common;

import org.jdom2.Element;

public class TimeSeriesXml implements PmmXmlElementConvertable {

    public static final String ELEMENT_TIMESERIES = "timeseriesxml";

    private static final String ATT_NAME = "name";
    private static final String ATT_TIME = "time";
    private static final String ATT_TIME_UNIT = "timeUnit";
    private static final String ATT_ORIG_TIME_UNIT = "origTimeUnit";
    private static final String ATT_CONCENTRATION = "concentration";
    private static final String ATT_CONCENTRATION_UNIT = "concentrationUnit";
    private static final String ATT_CONCENTRATION_UNIT_OBJECT_TYPE = "concentrationUnitObjectType";
    private static final String ATT_ORIG_CONCENTRATION_UNIT = "origConcentrationUnit";
    private static final String ATT_CONCENTRATION_STDDEV = "concentrationStdDev";
    private static final String ATT_NUMBER_OF_MEASUREMENTS = "numberOfMeasurements";

    public String name;
    public Double time;
    public String timeUnit;
    public String origTimeUnit;
    public Double concentration;
    public String concentrationUnit;
    public String concentrationUnitObjectType;
    public String origConcentrationUnit;
    public Double concentrationStdDev;
    public Integer numberOfMeasurements;

    /** Fully parameterized constructor. */
    public TimeSeriesXml(String name, Double time, String timeUnit, String origTimeUnit, Double concentration,
            String concentrationUnit, String concentrationUnitObjectType, String origConcentrationUnit,
            Double concentrationStdDev, Integer numberOfMeasurements) {
        this.name = name;
        this.time = time;
        this.timeUnit = timeUnit;
        this.origTimeUnit = origTimeUnit;
        this.concentration = concentration;
        this.concentrationUnit = concentrationUnit;
        this.concentrationUnitObjectType = concentrationUnitObjectType;
        this.origConcentrationUnit = origConcentrationUnit;
        this.concentrationStdDev = concentrationStdDev;
        this.numberOfMeasurements = numberOfMeasurements;
    }

    /**
     * Constructor with name, time, timeUnit, concentration, concentrationUnit,
     * concentrationStdDev and concentrationUnit.
     * 
     * <ul>
     * <li>origTimeUnit is assigned timeUnit
     * <li>concentrationUnitObjectType is assigned null
     * <li>origConcentrationUnit is assigned concentrationUnit
     * </ul>
     */
    public TimeSeriesXml(String name, Double time, String timeUnit, Double concentration, String concentrationUnit,
            Double concentrationStdDev, Integer numberOfMeasurements) {
        this(name, time, timeUnit, timeUnit, concentration, concentrationUnit, null, concentrationUnit,
                concentrationStdDev, numberOfMeasurements);
    }

    /**
     * Copy constructor. Take every property from a {@link org.jdom2.Element} with
     * properties:
     * 
     * <ul>
     * <li>String "name"
     * <li>Double "time"
     * <li>String "timeUnit"
     * <li>String "origTimeUnit"
     * <li>Double "concentration"
     * <li>String "concentrationUnit"
     * <li>String "concentrationUnitObjectType"
     * <li>String "origConcentrationUnit"
     * <li>Double "concentrationStdDev"
     * <li>Integer "numberOfMeasurements"
     * </ul>
     */
    public TimeSeriesXml(Element el) {
        this(XmlHelper.getString(el, ATT_NAME), XmlHelper.getDouble(el, ATT_TIME),
                XmlHelper.getString(el, ATT_TIME_UNIT), XmlHelper.getString(el, ATT_ORIG_TIME_UNIT),
                XmlHelper.getDouble(el, ATT_CONCENTRATION), XmlHelper.getString(el, ATT_CONCENTRATION_UNIT),
                XmlHelper.getString(el, ATT_CONCENTRATION_UNIT_OBJECT_TYPE),
                XmlHelper.getString(el, ATT_ORIG_CONCENTRATION_UNIT), XmlHelper.getDouble(el, ATT_CONCENTRATION_STDDEV),
                XmlHelper.getInt(el, ATT_NUMBER_OF_MEASUREMENTS));
    }

    /**
     * Generate a {@link org.jdom2.Element} with name "timeseriesxml" and
     * properties:
     * <ul>
     * <li>String "name"
     * <li>Double "time"
     * <li>String "timeUnit"
     * <li>String "origTimeUnit"
     * <li>String "concentration"
     * <li>String "concentrationUnit"
     * <li>String "concentrationUnitObjectType"
     * <li>String "origConcentrationUnit"
     * <li>Double "concentrationStdDev"
     * <li>Integer "numberOfMeasurements"
     * </ul>
     */
    @Override
    public Element toXmlElement() {
        Element ret = new Element(ELEMENT_TIMESERIES);

        ret.setAttribute(ATT_NAME, XmlHelper.getNonNull(name));
        ret.setAttribute(ATT_TIME, XmlHelper.getNonNull(time));
        ret.setAttribute(ATT_TIME_UNIT, XmlHelper.getNonNull(timeUnit));
        ret.setAttribute(ATT_ORIG_TIME_UNIT, XmlHelper.getNonNull(origTimeUnit));
        ret.setAttribute(ATT_CONCENTRATION, XmlHelper.getNonNull(concentration));
        ret.setAttribute(ATT_CONCENTRATION_UNIT, XmlHelper.getNonNull(concentrationUnit));
        ret.setAttribute(ATT_CONCENTRATION_UNIT_OBJECT_TYPE, XmlHelper.getNonNull(concentrationUnitObjectType));
        ret.setAttribute(ATT_ORIG_CONCENTRATION_UNIT, XmlHelper.getNonNull(origConcentrationUnit));
        ret.setAttribute(ATT_CONCENTRATION_STDDEV, XmlHelper.getNonNull(concentrationStdDev));
        ret.setAttribute(ATT_NUMBER_OF_MEASUREMENTS, XmlHelper.getNonNull(numberOfMeasurements));

        return ret;
    }
}