// Path: src/main/java/com/indeed/proctor/webapp/db/Environment.java
// public enum Environment {
//     WORKING("trunk", 0),
//     QA("qa", 1),
//     PRODUCTION("production", 2);
// 
//     private final String name;
//     private final int precedence;
//     private Environment(final String name, final int precedence) {
//         this.name = name;
//         this.precedence = precedence;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public int getPrecedence() {
//         return precedence;
//     }
// 
//     private static final Map<String, Environment> LOOKUP = Maps.uniqueIndex(ImmutableList.copyOf(Environment.values()), Functions.toStringFunction());
//     public static Environment fromName(String name) {
//         if(name == null) {
//             return null;
//         } else {
//             return LOOKUP.get(name.toLowerCase());
//         }
//     }
// 
//     @Override
//     public String toString() {
//         return this.getName();
//     }
// }


import com.indeed.proctor.store.Revision;
import com.indeed.proctor.webapp.db.Environment;
import java.util.Date;
        this.qa = qa;
        this.qaEffectiveRevision = qaEffectiveRevision;
        this.production = production;
        this.productionEffectiveRevision = productionEffectiveRevision;
    }

    public EnvironmentVersion(final String testName,
                              final Revision trunk,
                              final Revision qa,
                              final String qaEffectiveRevision,
                              final Revision production,
                              final String productionEffectiveRevision) {
        this(testName,
            trunk,
            trunk.getRevision(),
            qa,
            qaEffectiveRevision,
            production,
            productionEffectiveRevision);
    }

    /**
     * Creates a new EnvironmentVersion modifying the appropriate version and
     * effectiveRevision.
     *
     * @param branch
     * @param version
     * @param effectiveRevision
     * @return
     */
// Path: src/main/java/com/indeed/proctor/webapp/db/Environment.java
// public enum Environment {
//     WORKING("trunk", 0),
//     QA("qa", 1),
//     PRODUCTION("production", 2);
// 
//     private final String name;
//     private final int precedence;
//     private Environment(final String name, final int precedence) {
//         this.name = name;
//         this.precedence = precedence;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public int getPrecedence() {
//         return precedence;
//     }
// 
//     private static final Map<String, Environment> LOOKUP = Maps.uniqueIndex(ImmutableList.copyOf(Environment.values()), Functions.toStringFunction());
//     public static Environment fromName(String name) {
//         if(name == null) {
//             return null;
//         } else {
//             return LOOKUP.get(name.toLowerCase());
//         }
//     }
// 
//     @Override
//     public String toString() {
//         return this.getName();
//     }
// }


// Path: src/main/java/com/indeed/proctor/common/EnvironmentVersion.java
import com.indeed.proctor.store.Revision;
import com.indeed.proctor.webapp.db.Environment;
import java.util.Date;

        this.qa = qa;
        this.qaEffectiveRevision = qaEffectiveRevision;
        this.production = production;
        this.productionEffectiveRevision = productionEffectiveRevision;
    }

    public EnvironmentVersion(final String testName,
                              final Revision trunk,
                              final Revision qa,
                              final String qaEffectiveRevision,
                              final Revision production,
                              final String productionEffectiveRevision) {
        this(testName,
            trunk,
            trunk.getRevision(),
            qa,
            qaEffectiveRevision,
            production,
            productionEffectiveRevision);
    }

    /**
     * Creates a new EnvironmentVersion modifying the appropriate version and
     * effectiveRevision.
     *
     * @param branch
     * @param version
     * @param effectiveRevision
     * @return
     */
    public EnvironmentVersion update(final Environment branch, final Revision version, final String effectiveRevision ) {