All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jcamp.spectrum.Assignment Maven / Gradle / Ivy

Go to download

The JCAMP-DX project is the reference implemention of the IUPAC JCAMP-DX spectroscopy data standard.

There is a newer version: 0.9.2
Show newest version
package org.jcamp.spectrum;
import org.jcamp.spectrum.assignments.AtomReference;
/**
 * peak assignment
 * @author Thomas Weber
 */
public class Assignment implements ISpectrumLabel, Cloneable {
    private IAssignmentTarget[] targets = null;
    private Pattern pattern = null;

    /**
     * Assignment constructor comment.
     */
    public Assignment(Pattern pattern) {
        super();
        this.pattern = (Pattern) pattern.clone();
    }

    /**
     * Assignment constructor comment.
     */
    public Assignment(Pattern pattern, int[] atoms) {
        super();
        this.pattern = (Pattern) pattern.clone();
        targets = new AtomReference[atoms.length];
        for (int i = 0; i < atoms.length; i++) {
            this.targets[i] = new AtomReference(null, atoms[i]);
        }
    }

    /**
     * Assignment constructor comment.
     */
    public Assignment(Pattern pattern, IAssignmentTarget[] assigned) {
        super();
        this.pattern = (Pattern) pattern.clone();
        this.targets = assigned;
    }

    /**
     * cloning.
     * @return java.lang.Object
     */
    public Object clone() {

        Assignment assign = null;
        try {
            assign = (Assignment) super.clone();
        } catch (CloneNotSupportedException e) {
        }
        assign.setPattern(this.pattern);
        assign.setTargets(this.targets);
        return assign;
    }

    /**
     * compareTo method comment.
     */
    public int compareTo(java.lang.Object obj) {
        double p0 = getPosition()[0];
        double p1 = ((ISpectrumLabel) obj).getPosition()[0];
        if (p0 < p1)
            return -1;
        if (p0 > p1)
            return 1;
        return 0;
    }

    /**
     * formats peak label.
     * @return java.lang.String
     */
    private String formatLabel() {
        if (targets == null || targets.length == 0)
            return "";

        StringBuffer astr = new StringBuffer();
        astr.append("<");
        for (int i = 0; i < targets.length; i++) {
            astr.append(targets[i].getLabel());
            if (i < targets.length - 1)
                astr.append(",");
        }
        astr.append(">");
        return astr.toString();
    }

    /**
     * getLabel method comment.
     */
    public String getLabel() {
        return formatLabel();
    }

    /**
     * gets the pattern of the assignement
     * @return Pattern
     */
    public Pattern getPattern() {
        return pattern;
    }

    /**
     * gets the position (y is always 1.0)
     * @return double[]
     */
    public double[] getPosition() {
        return pattern.getPosition();
    }

    /**
     * gets corresponding spectrum.
     * @return Spectrum1D
     */
    public Spectrum1D getSpectrum() {
        return pattern.getSpectrum();
    }

    /**
     * gets assigned targets.
     * @return java.util.Vector
     */
    public IAssignmentTarget[] getTargets() {
        return targets;
    }

    /**
     * sets new pattern.
     * @param newPattern Pattern
     */
    public void setPattern(Pattern newPattern) {
        pattern = (Pattern) newPattern.clone();
    }

    /**
     * sets assignment to new position.
     * @param newPosition double[]
     */
    public void setPosition(double[] newPosition) {
        pattern.setPosition(newPosition);
    }

    /**
     * sets spectrum the assignment belongs to.
     * @param spectrum Spectrum1D
     */
    public void setSpectrum(Spectrum1D spectrum) {
        pattern.setSpectrum(spectrum);
    }

    /**
     * sets assigned targets.
     * @param newAssigned IAssignmentTarget[]
     */
    public void setTargets(IAssignmentTarget[] newAssigned) {
        targets = newAssigned;
    }

    /**
     * translate assignment position.
     */
    public void translate(double[] amount) {
        pattern.translate(amount);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy