// Path: core/src/main/java/edu/ucdavis/fiehnlab/spectra/hash/core/Splash.java
// public interface Splash {
// 
//     /**
//      * generates a new spectra hash based on the given spectrum
//      * @return
//      */
//     String splashIt(Spectrum spectrum);
// 
//     /**
//      * adds an optional listener to the
//      * @param listener
//      */
//     void addListener(SplashListener listener);
// }
// 
// Path: core/src/main/java/edu/ucdavis/fiehnlab/spectra/hash/core/SplashFactory.java
// public class SplashFactory {
// 
//     public static Splash create() {
//         return createVersion1Splash();
//     }
// 
//     /**
//      * the first official splash release
//      *
//      * @return
//      */
//     public static Splash createVersion1Splash() {
//         return new SplashVersion1();
//     }
// 
// }
// 
// 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/SpectraType.java
// public enum SpectraType {
//     MS('1'),
//     NMR('2'),
//     UV('3'),
//     IR('4'),
//     RAMAN('5');
// 
//     /**
//      * identifier has to be a single character
//      */
//     private final char identifier;
// 
//     /**
//      * creates a new spectra type with the assoicated reference number
//      *
//      * @param referenceNumber
//      */
//     SpectraType(char referenceNumber) {
//         this.identifier = referenceNumber;
//     }
// 
//     /**
//      * access to it's identifier
//      *
//      * @return
//      */
//     public char getIdentifier() {
//         return this.identifier;
//     }
// }
// 
// 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.Splash;
import edu.ucdavis.fiehnlab.spectra.hash.core.SplashFactory;
import edu.ucdavis.fiehnlab.spectra.hash.core.types.Ion;
import edu.ucdavis.fiehnlab.spectra.hash.core.types.SpectraType;
import edu.ucdavis.fiehnlab.spectra.hash.core.types.SpectrumImpl;
import org.junit.Test;
import java.util.Arrays;
import static org.junit.Assert.assertEquals;
package edu.ucdavis.fiehnlab.spectra.hash.core.util;




/**
 * Created with IntelliJ IDEA.
 * User: wohlgemuth
 * Date: 7/14/15
 * Time: 2:19 PM
 */
public class SplashUtilTest {

    @Test
    public void testSplash() throws Exception {

        String splashUtilGenerated = SplashUtil.splash("127:1 128:2", SpectraType.MS);

        Splash splash = SplashFactory.create();

// Path: core/src/main/java/edu/ucdavis/fiehnlab/spectra/hash/core/Splash.java
// public interface Splash {
// 
//     /**
//      * generates a new spectra hash based on the given spectrum
//      * @return
//      */
//     String splashIt(Spectrum spectrum);
// 
//     /**
//      * adds an optional listener to the
//      * @param listener
//      */
//     void addListener(SplashListener listener);
// }
// 
// Path: core/src/main/java/edu/ucdavis/fiehnlab/spectra/hash/core/SplashFactory.java
// public class SplashFactory {
// 
//     public static Splash create() {
//         return createVersion1Splash();
//     }
// 
//     /**
//      * the first official splash release
//      *
//      * @return
//      */
//     public static Splash createVersion1Splash() {
//         return new SplashVersion1();
//     }
// 
// }
// 
// 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/SpectraType.java
// public enum SpectraType {
//     MS('1'),
//     NMR('2'),
//     UV('3'),
//     IR('4'),
//     RAMAN('5');
// 
//     /**
//      * identifier has to be a single character
//      */
//     private final char identifier;
// 
//     /**
//      * creates a new spectra type with the assoicated reference number
//      *
//      * @param referenceNumber
//      */
//     SpectraType(char referenceNumber) {
//         this.identifier = referenceNumber;
//     }
// 
//     /**
//      * access to it's identifier
//      *
//      * @return
//      */
//     public char getIdentifier() {
//         return this.identifier;
//     }
// }
// 
// 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/util/SplashUtilTest.java
import edu.ucdavis.fiehnlab.spectra.hash.core.Splash;
import edu.ucdavis.fiehnlab.spectra.hash.core.SplashFactory;
import edu.ucdavis.fiehnlab.spectra.hash.core.types.Ion;
import edu.ucdavis.fiehnlab.spectra.hash.core.types.SpectraType;
import edu.ucdavis.fiehnlab.spectra.hash.core.types.SpectrumImpl;
import org.junit.Test;
import java.util.Arrays;
import static org.junit.Assert.assertEquals;

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




/**
 * Created with IntelliJ IDEA.
 * User: wohlgemuth
 * Date: 7/14/15
 * Time: 2:19 PM
 */
public class SplashUtilTest {

    @Test
    public void testSplash() throws Exception {

        String splashUtilGenerated = SplashUtil.splash("127:1 128:2", SpectraType.MS);

        Splash splash = SplashFactory.create();

        String splashDirectlyCreated = splash.splashIt(new SpectrumImpl(Arrays.asList(new Ion(127, 1), new Ion(128, 2)), SpectraType.MS));