// Path: breakerbox-store/src/main/java/com/yammer/breakerbox/store/DependencyId.java
// public class DependencyId implements TenacityPropertyKey {
//     private final String id;
// 
//     private DependencyId(String id) {
//         this.id = id.toUpperCase();
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public static DependencyId from(String id) {
//         return new DependencyId(id);
//     }
// 
//     @Override
//     public String name() {
//         return id;
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(id);
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj) {
//             return true;
//         }
//         if (obj == null || getClass() != obj.getClass()) {
//             return false;
//         }
//         final DependencyId other = (DependencyId) obj;
//         return Objects.equals(this.id, other.id);
//     }
// 
//     @Override
//     public String toString() {
//         return id;
//     }
// }
// 
// Path: breakerbox-store/src/main/java/com/yammer/breakerbox/store/ServiceId.java
// public class ServiceId {
//     private final String id;
// 
//     private ServiceId(String id) {
//         this.id = id;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public static ServiceId from(String id) {
//         return new ServiceId(id);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(id);
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj) {
//             return true;
//         }
//         if (obj == null || getClass() != obj.getClass()) {
//             return false;
//         }
//         final ServiceId other = (ServiceId) obj;
//         return Objects.equals(this.id, other.id);
//     }
// 
//     @Override
//     public String toString() {
//         return id;
//     }
// }
// 
// Path: breakerbox-store/src/main/java/com/yammer/breakerbox/store/model/DependencyModel.java
// public class DependencyModel {
//     private final DependencyId dependencyId;
//     private final DateTime dateTime;
//     private final TenacityConfiguration tenacityConfiguration;
//     private final String user;
//     private final ServiceId serviceId;
// 
//     public DependencyModel(DependencyId dependencyId,
//                            DateTime dateTime,
//                            TenacityConfiguration tenacityConfiguration,
//                            String user,
//                            ServiceId serviceId) {
//         this.dependencyId = dependencyId;
//         this.dateTime = dateTime;
//         this.tenacityConfiguration = tenacityConfiguration;
//         this.user = user;
//         this.serviceId = serviceId;
//     }
// 
//     public DependencyId getDependencyId() {
//         return dependencyId;
//     }
// 
//     public DateTime getDateTime() {
//         return dateTime;
//     }
// 
//     public TenacityConfiguration getTenacityConfiguration() {
//         return tenacityConfiguration;
//     }
// 
//     public String getUser() {
//         return user;
//     }
// 
//     public ServiceId getServiceId() {
//         return serviceId;
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(dependencyId, dateTime, tenacityConfiguration, user, serviceId);
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj) {
//             return true;
//         }
//         if (obj == null || getClass() != obj.getClass()) {
//             return false;
//         }
//         final DependencyModel other = (DependencyModel) obj;
//         return Objects.equals(this.dependencyId, other.dependencyId)
//                 && Objects.equals(this.dateTime, other.dateTime)
//                 && Objects.equals(this.tenacityConfiguration, other.tenacityConfiguration)
//                 && Objects.equals(this.user, other.user)
//                 && Objects.equals(this.serviceId, other.serviceId);
//     }
// }
// 
// Path: breakerbox-store/src/main/java/com/yammer/breakerbox/store/model/ServiceModel.java
// public class ServiceModel {
//     private final ServiceId serviceId;
//     private final DependencyId dependencyId;
// 
//     public ServiceModel(ServiceId serviceId, DependencyId dependencyId) {
//         this.serviceId = serviceId;
//         this.dependencyId = dependencyId;
//     }
// 
//     public ServiceId getServiceId() {
//         return serviceId;
//     }
// 
//     public DependencyId getDependencyId() {
//         return dependencyId;
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(serviceId, dependencyId);
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj) {
//             return true;
//         }
//         if (obj == null || getClass() != obj.getClass()) {
//             return false;
//         }
//         final ServiceModel other = (ServiceModel) obj;
//         return Objects.equals(this.serviceId, other.serviceId)
//                 && Objects.equals(this.dependencyId, other.dependencyId);
//     }
// }


import com.fasterxml.jackson.databind.ObjectMapper;
import com.yammer.breakerbox.store.DependencyId;
import com.yammer.breakerbox.store.ServiceId;
import com.yammer.breakerbox.store.model.DependencyModel;
import com.yammer.breakerbox.store.model.ServiceModel;
import com.yammer.tenacity.core.config.TenacityConfiguration;
import io.dropwizard.jackson.Jackson;
import org.joda.time.DateTime;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.validation.Validation;
import javax.validation.Validator;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Optional;
import java.util.Set;
package com.yammer.breakerbox.jdbi;



public class Mappers {
    public static class ServiceModelMapper implements ResultSetMapper<ServiceModel> {
        @Override
        public ServiceModel map(int index, ResultSet r, StatementContext ctx) throws SQLException {
// Path: breakerbox-store/src/main/java/com/yammer/breakerbox/store/DependencyId.java
// public class DependencyId implements TenacityPropertyKey {
//     private final String id;
// 
//     private DependencyId(String id) {
//         this.id = id.toUpperCase();
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public static DependencyId from(String id) {
//         return new DependencyId(id);
//     }
// 
//     @Override
//     public String name() {
//         return id;
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(id);
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj) {
//             return true;
//         }
//         if (obj == null || getClass() != obj.getClass()) {
//             return false;
//         }
//         final DependencyId other = (DependencyId) obj;
//         return Objects.equals(this.id, other.id);
//     }
// 
//     @Override
//     public String toString() {
//         return id;
//     }
// }
// 
// Path: breakerbox-store/src/main/java/com/yammer/breakerbox/store/ServiceId.java
// public class ServiceId {
//     private final String id;
// 
//     private ServiceId(String id) {
//         this.id = id;
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public static ServiceId from(String id) {
//         return new ServiceId(id);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(id);
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj) {
//             return true;
//         }
//         if (obj == null || getClass() != obj.getClass()) {
//             return false;
//         }
//         final ServiceId other = (ServiceId) obj;
//         return Objects.equals(this.id, other.id);
//     }
// 
//     @Override
//     public String toString() {
//         return id;
//     }
// }
// 
// Path: breakerbox-store/src/main/java/com/yammer/breakerbox/store/model/DependencyModel.java
// public class DependencyModel {
//     private final DependencyId dependencyId;
//     private final DateTime dateTime;
//     private final TenacityConfiguration tenacityConfiguration;
//     private final String user;
//     private final ServiceId serviceId;
// 
//     public DependencyModel(DependencyId dependencyId,
//                            DateTime dateTime,
//                            TenacityConfiguration tenacityConfiguration,
//                            String user,
//                            ServiceId serviceId) {
//         this.dependencyId = dependencyId;
//         this.dateTime = dateTime;
//         this.tenacityConfiguration = tenacityConfiguration;
//         this.user = user;
//         this.serviceId = serviceId;
//     }
// 
//     public DependencyId getDependencyId() {
//         return dependencyId;
//     }
// 
//     public DateTime getDateTime() {
//         return dateTime;
//     }
// 
//     public TenacityConfiguration getTenacityConfiguration() {
//         return tenacityConfiguration;
//     }
// 
//     public String getUser() {
//         return user;
//     }
// 
//     public ServiceId getServiceId() {
//         return serviceId;
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(dependencyId, dateTime, tenacityConfiguration, user, serviceId);
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj) {
//             return true;
//         }
//         if (obj == null || getClass() != obj.getClass()) {
//             return false;
//         }
//         final DependencyModel other = (DependencyModel) obj;
//         return Objects.equals(this.dependencyId, other.dependencyId)
//                 && Objects.equals(this.dateTime, other.dateTime)
//                 && Objects.equals(this.tenacityConfiguration, other.tenacityConfiguration)
//                 && Objects.equals(this.user, other.user)
//                 && Objects.equals(this.serviceId, other.serviceId);
//     }
// }
// 
// Path: breakerbox-store/src/main/java/com/yammer/breakerbox/store/model/ServiceModel.java
// public class ServiceModel {
//     private final ServiceId serviceId;
//     private final DependencyId dependencyId;
// 
//     public ServiceModel(ServiceId serviceId, DependencyId dependencyId) {
//         this.serviceId = serviceId;
//         this.dependencyId = dependencyId;
//     }
// 
//     public ServiceId getServiceId() {
//         return serviceId;
//     }
// 
//     public DependencyId getDependencyId() {
//         return dependencyId;
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(serviceId, dependencyId);
//     }
// 
//     @Override
//     public boolean equals(Object obj) {
//         if (this == obj) {
//             return true;
//         }
//         if (obj == null || getClass() != obj.getClass()) {
//             return false;
//         }
//         final ServiceModel other = (ServiceModel) obj;
//         return Objects.equals(this.serviceId, other.serviceId)
//                 && Objects.equals(this.dependencyId, other.dependencyId);
//     }
// }


// Path: breakerbox-jdbi/src/main/java/com/yammer/breakerbox/jdbi/Mappers.java
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yammer.breakerbox.store.DependencyId;
import com.yammer.breakerbox.store.ServiceId;
import com.yammer.breakerbox.store.model.DependencyModel;
import com.yammer.breakerbox.store.model.ServiceModel;
import com.yammer.tenacity.core.config.TenacityConfiguration;
import io.dropwizard.jackson.Jackson;
import org.joda.time.DateTime;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.validation.Validation;
import javax.validation.Validator;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Optional;
import java.util.Set;

package com.yammer.breakerbox.jdbi;



public class Mappers {
    public static class ServiceModelMapper implements ResultSetMapper<ServiceModel> {
        @Override
        public ServiceModel map(int index, ResultSet r, StatementContext ctx) throws SQLException {
            return new ServiceModel(ServiceId.from(r.getString("name")), DependencyId.from(r.getString("dependency")));