// Path: src/org/addition/epanet/util/ENException.java
// public class ENException extends Exception{
// 
//     /**
//      * Error text bundle.
//      */
//     private static final ResourceBundle errorBundle = PropertyResourceBundle.getBundle("Error");
// 
//     /**
//      * Array of arguments to be used in the error string creation.
//      */
//     private Object [] arguments;
// 
//     /**
//      * Epanet error code.
//      */
//     private int codeID;
// 
//     /**
//      * Get error code.
//      * @return Code id.
//      */
//     public int getCodeID(){
//         return codeID;
//     }
// 
//     /**
//      * Contructor from error code id.
//      * @param id Error code id.
//      */
//     public ENException(int id){
//         arguments = null;
//         codeID = id;
//     }
// 
//     /**
//      * Contructor from error code id and multiple arguments.
//      * @param id Error code id.
//      * @param arg Extra arguments.
//      */
//     public ENException(int id, Object ... arg){
//         codeID = id;
//         arguments = arg;
//     }
// 
//     /**
//      * Contructor from other exception and multiple arguments.
//      * @param e
//      * @param arg
//      */
//     public ENException(ENException e, Object ... arg){
//         arguments = arg;
//         codeID = e.getCodeID();
//     }
// 
//     /**
//      * Get arguments array.
//      */
//     public Object [] getArguments(){
//         return arguments;
//     }
// 
//     /**
//      * Handles the exception string conversion.
//      * @return Final error string.
//      */
//     public String toString(){
//         String str = errorBundle.getString("ERR"+codeID);
//         if(str==null)
//             return String.format("Unknown error message (%d)",codeID);
//         else if(arguments!=null)
//             return String.format(str,arguments);
//         return str;
//     }
// 
// }
// 
// Path: src/org/addition/epanet/msx/Structures/Species.java
// public class Species {
//     String          id;                 // name
//     String          units;              // mass units code [MAXUNITS]
//     double          aTol;               // absolute tolerance
//     double          rTol;               // relative tolerance
//     SpeciesType     type;               // BULK or WALL
//     ExpressionType  pipeExprType;       // type of pipe chemistry
//     ExpressionType  tankExprType;       // type of tank chemistry
//     int             precision;          // reporting precision
//     char            rpt;                // reporting flag
//     MathExpr        pipeExpr;           // pipe chemistry expression
//     MathExpr        tankExpr;           // tank chemistry expression
// 
//     public Species() {
//         id="";
//         units="";
//         pipeExpr     = null;
//         tankExpr     = null;
//         pipeExprType = ExpressionType.NO_EXPR;
//         tankExprType = ExpressionType.NO_EXPR;
//         precision    = 2;
//         rpt = 0;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getUnits() {
//         return units;
//     }
// 
//     public void setUnits(String units) {
//         this.units = units;
//         if(this.units.length()> Constants.MAXUNITS)
//             this.units = this.units.substring(0,Constants.MAXUNITS);
//     }
// 
//     public double getaTol() {
//         return aTol;
//     }
// 
//     public void setaTol(double aTol) {
//         this.aTol = aTol;
//     }
// 
//     public double getrTol() {
//         return rTol;
//     }
// 
//     public void setrTol(double rTol) {
//         this.rTol = rTol;
//     }
// 
//     public SpeciesType getType() {
//         return type;
//     }
// 
//     public void setType(SpeciesType type) {
//         this.type = type;
//     }
// 
//     public ExpressionType getPipeExprType() {
//         return pipeExprType;
//     }
// 
//     public void setPipeExprType(ExpressionType pipeExprType) {
//         this.pipeExprType = pipeExprType;
//     }
// 
//     public ExpressionType getTankExprType() {
//         return tankExprType;
//     }
// 
//     public void setTankExprType(ExpressionType tankExprType) {
//         this.tankExprType = tankExprType;
//     }
// 
//     public int getPrecision() {
//         return precision;
//     }
// 
//     public void setPrecision(int precision) {
//         this.precision = precision;
//     }
// 
//     public char getRpt() {
//         return rpt;
//     }
// 
//     public void setRpt(char rpt) {
//         this.rpt = rpt;
//     }
// 
//     public MathExpr getPipeExpr() {
//         return pipeExpr;
//     }
// 
//     public void setPipeExpr(MathExpr pipeExpr) {
//         this.pipeExpr = pipeExpr;
//     }
// 
//     public MathExpr getTankExpr() {
//         return tankExpr;
//     }
// 
//     public void setTankExpr(MathExpr tankExpr) {
//         this.tankExpr = tankExpr;
//     }
// }


import java.io.IOException;
import org.addition.epanet.util.ENException;
import org.addition.epanet.msx.Structures.Species;
import java.io.File;
    }

    Chemical getChemical() {
        return mChemical;
    }

    Quality getQuality() {
        return mQuality;
    }

    //public Epanet getEpanet() {
    //    return mEpanet;
    //}

    public ENToolkit2 getENToolkit() {
        return mENToolkit;
    }

    public Output getOutput() {
        return mOutput;
    }

    public int load(File msxFile) throws IOException {
        int err = 0;
        err = Utilities.CALL(err, mProject.MSXproj_open(msxFile));
        err = Utilities.CALL(err, mQuality.MSXqual_open());
        return err;
    }


// Path: src/org/addition/epanet/util/ENException.java
// public class ENException extends Exception{
// 
//     /**
//      * Error text bundle.
//      */
//     private static final ResourceBundle errorBundle = PropertyResourceBundle.getBundle("Error");
// 
//     /**
//      * Array of arguments to be used in the error string creation.
//      */
//     private Object [] arguments;
// 
//     /**
//      * Epanet error code.
//      */
//     private int codeID;
// 
//     /**
//      * Get error code.
//      * @return Code id.
//      */
//     public int getCodeID(){
//         return codeID;
//     }
// 
//     /**
//      * Contructor from error code id.
//      * @param id Error code id.
//      */
//     public ENException(int id){
//         arguments = null;
//         codeID = id;
//     }
// 
//     /**
//      * Contructor from error code id and multiple arguments.
//      * @param id Error code id.
//      * @param arg Extra arguments.
//      */
//     public ENException(int id, Object ... arg){
//         codeID = id;
//         arguments = arg;
//     }
// 
//     /**
//      * Contructor from other exception and multiple arguments.
//      * @param e
//      * @param arg
//      */
//     public ENException(ENException e, Object ... arg){
//         arguments = arg;
//         codeID = e.getCodeID();
//     }
// 
//     /**
//      * Get arguments array.
//      */
//     public Object [] getArguments(){
//         return arguments;
//     }
// 
//     /**
//      * Handles the exception string conversion.
//      * @return Final error string.
//      */
//     public String toString(){
//         String str = errorBundle.getString("ERR"+codeID);
//         if(str==null)
//             return String.format("Unknown error message (%d)",codeID);
//         else if(arguments!=null)
//             return String.format(str,arguments);
//         return str;
//     }
// 
// }
// 
// Path: src/org/addition/epanet/msx/Structures/Species.java
// public class Species {
//     String          id;                 // name
//     String          units;              // mass units code [MAXUNITS]
//     double          aTol;               // absolute tolerance
//     double          rTol;               // relative tolerance
//     SpeciesType     type;               // BULK or WALL
//     ExpressionType  pipeExprType;       // type of pipe chemistry
//     ExpressionType  tankExprType;       // type of tank chemistry
//     int             precision;          // reporting precision
//     char            rpt;                // reporting flag
//     MathExpr        pipeExpr;           // pipe chemistry expression
//     MathExpr        tankExpr;           // tank chemistry expression
// 
//     public Species() {
//         id="";
//         units="";
//         pipeExpr     = null;
//         tankExpr     = null;
//         pipeExprType = ExpressionType.NO_EXPR;
//         tankExprType = ExpressionType.NO_EXPR;
//         precision    = 2;
//         rpt = 0;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getUnits() {
//         return units;
//     }
// 
//     public void setUnits(String units) {
//         this.units = units;
//         if(this.units.length()> Constants.MAXUNITS)
//             this.units = this.units.substring(0,Constants.MAXUNITS);
//     }
// 
//     public double getaTol() {
//         return aTol;
//     }
// 
//     public void setaTol(double aTol) {
//         this.aTol = aTol;
//     }
// 
//     public double getrTol() {
//         return rTol;
//     }
// 
//     public void setrTol(double rTol) {
//         this.rTol = rTol;
//     }
// 
//     public SpeciesType getType() {
//         return type;
//     }
// 
//     public void setType(SpeciesType type) {
//         this.type = type;
//     }
// 
//     public ExpressionType getPipeExprType() {
//         return pipeExprType;
//     }
// 
//     public void setPipeExprType(ExpressionType pipeExprType) {
//         this.pipeExprType = pipeExprType;
//     }
// 
//     public ExpressionType getTankExprType() {
//         return tankExprType;
//     }
// 
//     public void setTankExprType(ExpressionType tankExprType) {
//         this.tankExprType = tankExprType;
//     }
// 
//     public int getPrecision() {
//         return precision;
//     }
// 
//     public void setPrecision(int precision) {
//         this.precision = precision;
//     }
// 
//     public char getRpt() {
//         return rpt;
//     }
// 
//     public void setRpt(char rpt) {
//         this.rpt = rpt;
//     }
// 
//     public MathExpr getPipeExpr() {
//         return pipeExpr;
//     }
// 
//     public void setPipeExpr(MathExpr pipeExpr) {
//         this.pipeExpr = pipeExpr;
//     }
// 
//     public MathExpr getTankExpr() {
//         return tankExpr;
//     }
// 
//     public void setTankExpr(MathExpr tankExpr) {
//         this.tankExpr = tankExpr;
//     }
// }


// Path: src/org/addition/epanet/msx/EpanetMSX.java
import java.io.IOException;
import org.addition.epanet.util.ENException;
import org.addition.epanet.msx.Structures.Species;
import java.io.File;

    }

    Chemical getChemical() {
        return mChemical;
    }

    Quality getQuality() {
        return mQuality;
    }

    //public Epanet getEpanet() {
    //    return mEpanet;
    //}

    public ENToolkit2 getENToolkit() {
        return mENToolkit;
    }

    public Output getOutput() {
        return mOutput;
    }

    public int load(File msxFile) throws IOException {
        int err = 0;
        err = Utilities.CALL(err, mProject.MSXproj_open(msxFile));
        err = Utilities.CALL(err, mQuality.MSXqual_open());
        return err;
    }


    public int run(File outFile) throws IOException, ENException {