// Path: core/src/main/java/edu/ucdavis/fiehnlab/spectra/hash/core/Spectrum.java
// public interface Spectrum {
// 
//     /**
//      * ion of a spectra
//      * @return
//      */
//     public List<Ion> getIons();
// 
//     /**
//      * convmerts the spectrum to a relative spectra
//      * @return
//      * @param scale
//      */
//     Spectrum toRelative(int scale);
// 
//     /**
//      *
//      * @return
//      */
//     String getOrigin();
// 
//     /**
//      * what kind of a spectra do we have
//      * @return
//      */
//     public SpectraType getType();
// }
// 
// Path: core/src/main/java/edu/ucdavis/fiehnlab/spectra/hash/core/types/Ion.java
// public class Ion implements Comparable<Ion> {
//     private static String SEPERATOR = ":";
//     private static int PRECESSION = 6;
// 
//     private Double mass;
//     private Double intensity;
// 
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (!(o instanceof Ion)) return false;
// 
//         Ion ion = (Ion) o;
// 
//         if (!getMass().equals(ion.getMass())) return false;
//         return getIntensity().equals(ion.getIntensity());
// 
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = getMass().hashCode();
//         result = 31 * result + getIntensity().hashCode();
//         return result;
//     }
// 
//     public Ion() {}
// 
//     public Ion(double mass, double intensity) {
//         this.mass = mass;
//         this.intensity = intensity;
//     }
// 
//     public Double getIntensity() {
//         return intensity;
//     }
// 
//     public void setIntensity(Double intensity) {
//         this.intensity = intensity;
//     }
// 
//     public Double getMass() {
//         return mass;
//     }
// 
//     public void setMass(Double mass) {
//         this.mass = mass;
//     }
// 
//     public String toString() {
//         return String.format("%."+PRECESSION+"f",this.getMass()) + SEPERATOR + String.format("%." + PRECESSION + "f", this.getIntensity());
//     }
// 
//     public int compareTo(Ion o) {
//         return getMass().compareTo(o.getMass());
//     }
// }
// 
// Path: core/src/main/java/edu/ucdavis/fiehnlab/spectra/hash/core/types/SpectrumImpl.java
// public class SpectrumImpl implements Spectrum {
// 
//     private String origin;
//     private List<Ion> ions;
//     private SpectraType type;
// 
//     public SpectrumImpl(List<Ion> ions,  String origin, SpectraType type) {
//         this.ions = ions;
//         this.origin = origin;
//         this.type = type;
//     }
// 
// 
//     protected SpectrumImpl(){
// 
//     }
// 
//     public SpectrumImpl(List<Ion> ions, SpectraType ms) {
//         this(ions,"unknown",ms);
// 
//     }
// 
//     public String getOrigin() {
//         return origin;
//     }
// 
//     public void setOrigin(String origin) {
//         this.origin = origin;
//     }
// 
//     public SpectraType getType() {
//         return type;
//     }
// 
//     public void setType(SpectraType type) {
//         this.type = type;
//     }
// 
//     public List<Ion> getIons() {
//         return ions;
//     }
// 
//     public void setIons(List<Ion> ions) {
//         this.ions = ions;
//     }
// 
// 
//     public Spectrum toRelative(int scale) {
//         double max = 0;
// 
//         for (Ion ion : getIons()) {
//             if (ion.getIntensity() > max) {
//                 max = ion.getIntensity();
//             }
//         }
// 
//         ArrayList<Ion> ions = new ArrayList<Ion>(getIons().size());
//         for (Ion ion : getIons()) {
//             ions.add(new Ion(ion.getMass(), ion.getIntensity() / max * scale));
//         }
//         return new SpectrumImpl(ions, getOrigin(), getType());
//     }
// 
// }


import edu.ucdavis.fiehnlab.spectra.hash.core.Spectrum;
import edu.ucdavis.fiehnlab.spectra.hash.core.types.Ion;
import edu.ucdavis.fiehnlab.spectra.hash.core.types.SpectrumImpl;
import java.util.ArrayList;
package edu.ucdavis.fiehnlab.spectra.hash.core.impl;



/**
 * simple implementations needed for testing
 */
public class TestSpectraImpl extends SpectrumImpl {

    public void setHash(String hash) {
        this.hash = hash;
    }

    private String hash;

    public TestSpectraImpl() {
    }

// Path: core/src/main/java/edu/ucdavis/fiehnlab/spectra/hash/core/Spectrum.java
// public interface Spectrum {
// 
//     /**
//      * ion of a spectra
//      * @return
//      */
//     public List<Ion> getIons();
// 
//     /**
//      * convmerts the spectrum to a relative spectra
//      * @return
//      * @param scale
//      */
//     Spectrum toRelative(int scale);
// 
//     /**
//      *
//      * @return
//      */
//     String getOrigin();
// 
//     /**
//      * what kind of a spectra do we have
//      * @return
//      */
//     public SpectraType getType();
// }
// 
// Path: core/src/main/java/edu/ucdavis/fiehnlab/spectra/hash/core/types/Ion.java
// public class Ion implements Comparable<Ion> {
//     private static String SEPERATOR = ":";
//     private static int PRECESSION = 6;
// 
//     private Double mass;
//     private Double intensity;
// 
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (!(o instanceof Ion)) return false;
// 
//         Ion ion = (Ion) o;
// 
//         if (!getMass().equals(ion.getMass())) return false;
//         return getIntensity().equals(ion.getIntensity());
// 
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = getMass().hashCode();
//         result = 31 * result + getIntensity().hashCode();
//         return result;
//     }
// 
//     public Ion() {}
// 
//     public Ion(double mass, double intensity) {
//         this.mass = mass;
//         this.intensity = intensity;
//     }
// 
//     public Double getIntensity() {
//         return intensity;
//     }
// 
//     public void setIntensity(Double intensity) {
//         this.intensity = intensity;
//     }
// 
//     public Double getMass() {
//         return mass;
//     }
// 
//     public void setMass(Double mass) {
//         this.mass = mass;
//     }
// 
//     public String toString() {
//         return String.format("%."+PRECESSION+"f",this.getMass()) + SEPERATOR + String.format("%." + PRECESSION + "f", this.getIntensity());
//     }
// 
//     public int compareTo(Ion o) {
//         return getMass().compareTo(o.getMass());
//     }
// }
// 
// Path: core/src/main/java/edu/ucdavis/fiehnlab/spectra/hash/core/types/SpectrumImpl.java
// public class SpectrumImpl implements Spectrum {
// 
//     private String origin;
//     private List<Ion> ions;
//     private SpectraType type;
// 
//     public SpectrumImpl(List<Ion> ions,  String origin, SpectraType type) {
//         this.ions = ions;
//         this.origin = origin;
//         this.type = type;
//     }
// 
// 
//     protected SpectrumImpl(){
// 
//     }
// 
//     public SpectrumImpl(List<Ion> ions, SpectraType ms) {
//         this(ions,"unknown",ms);
// 
//     }
// 
//     public String getOrigin() {
//         return origin;
//     }
// 
//     public void setOrigin(String origin) {
//         this.origin = origin;
//     }
// 
//     public SpectraType getType() {
//         return type;
//     }
// 
//     public void setType(SpectraType type) {
//         this.type = type;
//     }
// 
//     public List<Ion> getIons() {
//         return ions;
//     }
// 
//     public void setIons(List<Ion> ions) {
//         this.ions = ions;
//     }
// 
// 
//     public Spectrum toRelative(int scale) {
//         double max = 0;
// 
//         for (Ion ion : getIons()) {
//             if (ion.getIntensity() > max) {
//                 max = ion.getIntensity();
//             }
//         }
// 
//         ArrayList<Ion> ions = new ArrayList<Ion>(getIons().size());
//         for (Ion ion : getIons()) {
//             ions.add(new Ion(ion.getMass(), ion.getIntensity() / max * scale));
//         }
//         return new SpectrumImpl(ions, getOrigin(), getType());
//     }
// 
// }


// Path: core/src/test/java/edu/ucdavis/fiehnlab/spectra/hash/core/impl/TestSpectraImpl.java
import edu.ucdavis.fiehnlab.spectra.hash.core.Spectrum;
import edu.ucdavis.fiehnlab.spectra.hash.core.types.Ion;
import edu.ucdavis.fiehnlab.spectra.hash.core.types.SpectrumImpl;
import java.util.ArrayList;

package edu.ucdavis.fiehnlab.spectra.hash.core.impl;



/**
 * simple implementations needed for testing
 */
public class TestSpectraImpl extends SpectrumImpl {

    public void setHash(String hash) {
        this.hash = hash;
    }

    private String hash;

    public TestSpectraImpl() {
    }

    public TestSpectraImpl(Spectrum s, String hash) {