// Path: modules/common/app/edu/berkeley/ground/common/exception/GroundException.java
// public class GroundException extends Exception {
// 
//   private static final long serialVersionUID = 1L;
// 
//   private final String message;
//   private final ExceptionType exceptionType;
// 
//   public enum ExceptionType {
//     DB("Database Exception:", "%s"),
//     ITEM_NOT_FOUND("GroundItemNotFoundException", "No %s \'%s\' found."),
//     VERSION_NOT_FOUND("GroundVersionNotFoundException", "No %s \'%s\' found."),
//     ITEM_ALREADY_EXISTS("GroundItemAlreadyExistsException", "%s %s already exists."),
//     OTHER("GroundException", "%s");
// 
//     String name;
//     String description;
// 
//     ExceptionType(String name, String description) {
//       this.name = name;
//       this.description = description;
//     }
// 
//     public String format(String... values) {
//       return String.format(this.description, values);
//     }
//   }
// 
//   public GroundException(ExceptionType exceptionType, String... values) {
//     this.exceptionType = exceptionType;
//     this.message = this.exceptionType.format(values);
//   }
// 
//   public GroundException(Exception exception) {
//     this.exceptionType = ExceptionType.OTHER;
//     this.message = this.exceptionType.format(exception.getMessage());
//   }
// 
//   @Override
//   public String getMessage() {
//     return this.message;
//   }
// 
//   public ExceptionType getExceptionType() {
//     return this.exceptionType;
//   }
// }
// 
// Path: modules/common/app/edu/berkeley/ground/common/model/version/GroundType.java
// public enum GroundType {
//   STRING(String.class, "string", Types.VARCHAR) {
//     @Override
//     public Object parse(String str) {
//       return str;
//     }
//   },
//   INTEGER(Integer.class, "integer", Types.INTEGER) {
//     @Override
//     public Object parse(String str) {
//       return Integer.parseInt(str);
//     }
//   },
//   BOOLEAN(Boolean.class, "boolean", Types.BOOLEAN) {
//     @Override
//     public Object parse(String str) {
//       return Boolean.parseBoolean(str);
//     }
//   },
//   LONG(Long.class, "long", Types.BIGINT) {
//     @Override
//     public Object parse(String str) {
//       return Long.parseLong(str);
//     }
//   };
// 
//   private final Class<?> klass;
//   private final String name;
//   private final int sqlType;
// 
//   GroundType(Class<?> klass, String name, int sqlType) {
//     this.klass = klass;
//     this.name = name;
//     this.sqlType = sqlType;
//   }
// 
//   /**
//    * Returns the SQL type as defined in java.sql.Types corresponding to this GroundType
//    *
//    * @return an integer the corresponding SQL Type
//    */
//   public int getSqlType() {
//     return sqlType;
//   }
// 
//   public abstract Object parse(String str);
// 
//   public Class<?> getTypeClass() {
//     return this.klass;
//   }
// 
//   /**
//    * Return a type based on the string name.
//    *
//    * @param str the name of the type
//    * @return the corresponding GroundType
//    * @throws GroundException no such type
//    */
//   @JsonCreator
//   public static GroundType fromString(String str) throws GroundException {
//     if (str == null) {
//       return null;
//     }
//     try {
//       return GroundType.valueOf(str.toUpperCase());
//     } catch (IllegalArgumentException iae) {
//       throw new GroundException(ExceptionType.OTHER, String.format("Invalid type: %s.", str));
//     }
//   }
// 
//   @Override
//   public String toString() {
//     return this.name;
//   }
// }


import static org.junit.Assert.assertEquals;
import edu.berkeley.ground.common.exception.GroundException;
import edu.berkeley.ground.common.model.version.GroundType;
import org.junit.Test;
package edu.berkeley.ground.common.model.versions;



public class GroundTypeTest {

  @Test
  public void testGetTypeFromString() throws GroundException {
    assertEquals(GroundType.BOOLEAN, GroundType.fromString("boolean"));
    assertEquals(GroundType.INTEGER, GroundType.fromString("integer"));
    assertEquals(GroundType.LONG, GroundType.fromString("long"));
// Path: modules/common/app/edu/berkeley/ground/common/exception/GroundException.java
// public class GroundException extends Exception {
// 
//   private static final long serialVersionUID = 1L;
// 
//   private final String message;
//   private final ExceptionType exceptionType;
// 
//   public enum ExceptionType {
//     DB("Database Exception:", "%s"),
//     ITEM_NOT_FOUND("GroundItemNotFoundException", "No %s \'%s\' found."),
//     VERSION_NOT_FOUND("GroundVersionNotFoundException", "No %s \'%s\' found."),
//     ITEM_ALREADY_EXISTS("GroundItemAlreadyExistsException", "%s %s already exists."),
//     OTHER("GroundException", "%s");
// 
//     String name;
//     String description;
// 
//     ExceptionType(String name, String description) {
//       this.name = name;
//       this.description = description;
//     }
// 
//     public String format(String... values) {
//       return String.format(this.description, values);
//     }
//   }
// 
//   public GroundException(ExceptionType exceptionType, String... values) {
//     this.exceptionType = exceptionType;
//     this.message = this.exceptionType.format(values);
//   }
// 
//   public GroundException(Exception exception) {
//     this.exceptionType = ExceptionType.OTHER;
//     this.message = this.exceptionType.format(exception.getMessage());
//   }
// 
//   @Override
//   public String getMessage() {
//     return this.message;
//   }
// 
//   public ExceptionType getExceptionType() {
//     return this.exceptionType;
//   }
// }
// 
// Path: modules/common/app/edu/berkeley/ground/common/model/version/GroundType.java
// public enum GroundType {
//   STRING(String.class, "string", Types.VARCHAR) {
//     @Override
//     public Object parse(String str) {
//       return str;
//     }
//   },
//   INTEGER(Integer.class, "integer", Types.INTEGER) {
//     @Override
//     public Object parse(String str) {
//       return Integer.parseInt(str);
//     }
//   },
//   BOOLEAN(Boolean.class, "boolean", Types.BOOLEAN) {
//     @Override
//     public Object parse(String str) {
//       return Boolean.parseBoolean(str);
//     }
//   },
//   LONG(Long.class, "long", Types.BIGINT) {
//     @Override
//     public Object parse(String str) {
//       return Long.parseLong(str);
//     }
//   };
// 
//   private final Class<?> klass;
//   private final String name;
//   private final int sqlType;
// 
//   GroundType(Class<?> klass, String name, int sqlType) {
//     this.klass = klass;
//     this.name = name;
//     this.sqlType = sqlType;
//   }
// 
//   /**
//    * Returns the SQL type as defined in java.sql.Types corresponding to this GroundType
//    *
//    * @return an integer the corresponding SQL Type
//    */
//   public int getSqlType() {
//     return sqlType;
//   }
// 
//   public abstract Object parse(String str);
// 
//   public Class<?> getTypeClass() {
//     return this.klass;
//   }
// 
//   /**
//    * Return a type based on the string name.
//    *
//    * @param str the name of the type
//    * @return the corresponding GroundType
//    * @throws GroundException no such type
//    */
//   @JsonCreator
//   public static GroundType fromString(String str) throws GroundException {
//     if (str == null) {
//       return null;
//     }
//     try {
//       return GroundType.valueOf(str.toUpperCase());
//     } catch (IllegalArgumentException iae) {
//       throw new GroundException(ExceptionType.OTHER, String.format("Invalid type: %s.", str));
//     }
//   }
// 
//   @Override
//   public String toString() {
//     return this.name;
//   }
// }


// Path: modules/common/test/edu/berkeley/ground/common/model/versions/GroundTypeTest.java
import static org.junit.Assert.assertEquals;
import edu.berkeley.ground.common.exception.GroundException;
import edu.berkeley.ground.common.model.version.GroundType;
import org.junit.Test;

package edu.berkeley.ground.common.model.versions;



public class GroundTypeTest {

  @Test
  public void testGetTypeFromString() throws GroundException {
    assertEquals(GroundType.BOOLEAN, GroundType.fromString("boolean"));
    assertEquals(GroundType.INTEGER, GroundType.fromString("integer"));
    assertEquals(GroundType.LONG, GroundType.fromString("long"));
    assertEquals(GroundType.STRING, GroundType.fromString("string"));