// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/interactors/Interactor.java
// public interface Interactor<T extends InteractorResponse> extends Callable<T> {
//   @Override T call() throws Exception;
// }
// 
// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/interactors/InteractorResponse.java
// public class InteractorResponse<T> {
// 
//   private InteractorError error;
//   private T result;
// 
//   public InteractorResponse(InteractorError error) {
//     this.error = error;
//   }
// 
//   public InteractorResponse(T result) {
//     this.result = result;
//   }
// 
//   public InteractorError getError() {
//     return error;
//   }
// 
//   public T getResult() {
//     return result;
//   }
// 
//   public boolean hasError() {
//     return error != null;
//   }
// }
// 
// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/model/Contact.java
// public class Contact {
// 
//   public String gender;
//   public Name name;
//   public Location location;
//   public String email;
//   public String username;
//   public String password;
//   public String salt;
//   public String md5;
//   public String sha1;
//   public String sha256;
//   public String registered;
//   public String dob;
//   public String phone;
//   public String cell;
//   public String ssn;
//   public Picture picture;
//   public String version;
// 
//   public String getGender() {
//     return gender;
//   }
// 
//   public void setGender(String gender) {
//     this.gender = gender;
//   }
// 
//   public Name getName() {
//     return name;
//   }
// 
//   public void setName(Name name) {
//     this.name = name;
//   }
// 
//   public Location getLocation() {
//     return location;
//   }
// 
//   public void setLocation(Location location) {
//     this.location = location;
//   }
// 
//   public String getEmail() {
//     return email;
//   }
// 
//   public void setEmail(String email) {
//     this.email = email;
//   }
// 
//   public String getUsername() {
//     return username;
//   }
// 
//   public void setUsername(String username) {
//     this.username = username;
//   }
// 
//   public String getPassword() {
//     return password;
//   }
// 
//   public void setPassword(String password) {
//     this.password = password;
//   }
// 
//   public String getSalt() {
//     return salt;
//   }
// 
//   public void setSalt(String salt) {
//     this.salt = salt;
//   }
// 
//   public String getMd5() {
//     return md5;
//   }
// 
//   public void setMd5(String md5) {
//     this.md5 = md5;
//   }
// 
//   public String getSha1() {
//     return sha1;
//   }
// 
//   public void setSha1(String sha1) {
//     this.sha1 = sha1;
//   }
// 
//   public String getSha256() {
//     return sha256;
//   }
// 
//   public void setSha256(String sha256) {
//     this.sha256 = sha256;
//   }
// 
//   public String getRegistered() {
//     return registered;
//   }
// 
//   public void setRegistered(String registered) {
//     this.registered = registered;
//   }
// 
//   public String getDob() {
//     return dob;
//   }
// 
//   public void setDob(String dob) {
//     this.dob = dob;
//   }
// 
//   public String getPhone() {
//     return phone;
//   }
// 
//   public void setPhone(String phone) {
//     this.phone = phone;
//   }
// 
//   public String getCell() {
//     return cell;
//   }
// 
//   public void setCell(String cell) {
//     this.cell = cell;
//   }
// 
//   public String getSsn() {
//     return ssn;
//   }
// 
//   public void setSsn(String ssn) {
//     this.ssn = ssn;
//   }
// 
//   public Picture getPicture() {
//     return picture;
//   }
// 
//   public void setPicture(Picture picture) {
//     this.picture = picture;
//   }
// 
//   public String getVersion() {
//     return version;
//   }
// 
//   public void setVersion(String version) {
//     this.version = version;
//   }
// 
// }
// 
// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/model/ContactsLocalGateway.java
// public interface ContactsLocalGateway extends ContactProvider {
// 
//   void persist(List<Contact> contacts);
// 
//   Contact obtain(String md5);
// 
//   void delete(List<Contact> deleted);
// }
// 
// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/model/LocalException.java
// public class LocalException extends RuntimeException {
// }


import me.panavtec.cleancontacts.domain.interactors.Interactor;
import me.panavtec.cleancontacts.domain.interactors.InteractorResponse;
import me.panavtec.cleancontacts.domain.model.Contact;
import me.panavtec.cleancontacts.domain.model.ContactsLocalGateway;
import me.panavtec.cleancontacts.domain.model.LocalException;
package me.panavtec.cleancontacts.domain.interactors.contacts;


public class GetContactInteractor implements Interactor<InteractorResponse<Contact>> {

  private ContactsLocalGateway localGateway;
  private String contactMd5;

  public GetContactInteractor(ContactsLocalGateway localGateway) {
// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/interactors/Interactor.java
// public interface Interactor<T extends InteractorResponse> extends Callable<T> {
//   @Override T call() throws Exception;
// }
// 
// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/interactors/InteractorResponse.java
// public class InteractorResponse<T> {
// 
//   private InteractorError error;
//   private T result;
// 
//   public InteractorResponse(InteractorError error) {
//     this.error = error;
//   }
// 
//   public InteractorResponse(T result) {
//     this.result = result;
//   }
// 
//   public InteractorError getError() {
//     return error;
//   }
// 
//   public T getResult() {
//     return result;
//   }
// 
//   public boolean hasError() {
//     return error != null;
//   }
// }
// 
// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/model/Contact.java
// public class Contact {
// 
//   public String gender;
//   public Name name;
//   public Location location;
//   public String email;
//   public String username;
//   public String password;
//   public String salt;
//   public String md5;
//   public String sha1;
//   public String sha256;
//   public String registered;
//   public String dob;
//   public String phone;
//   public String cell;
//   public String ssn;
//   public Picture picture;
//   public String version;
// 
//   public String getGender() {
//     return gender;
//   }
// 
//   public void setGender(String gender) {
//     this.gender = gender;
//   }
// 
//   public Name getName() {
//     return name;
//   }
// 
//   public void setName(Name name) {
//     this.name = name;
//   }
// 
//   public Location getLocation() {
//     return location;
//   }
// 
//   public void setLocation(Location location) {
//     this.location = location;
//   }
// 
//   public String getEmail() {
//     return email;
//   }
// 
//   public void setEmail(String email) {
//     this.email = email;
//   }
// 
//   public String getUsername() {
//     return username;
//   }
// 
//   public void setUsername(String username) {
//     this.username = username;
//   }
// 
//   public String getPassword() {
//     return password;
//   }
// 
//   public void setPassword(String password) {
//     this.password = password;
//   }
// 
//   public String getSalt() {
//     return salt;
//   }
// 
//   public void setSalt(String salt) {
//     this.salt = salt;
//   }
// 
//   public String getMd5() {
//     return md5;
//   }
// 
//   public void setMd5(String md5) {
//     this.md5 = md5;
//   }
// 
//   public String getSha1() {
//     return sha1;
//   }
// 
//   public void setSha1(String sha1) {
//     this.sha1 = sha1;
//   }
// 
//   public String getSha256() {
//     return sha256;
//   }
// 
//   public void setSha256(String sha256) {
//     this.sha256 = sha256;
//   }
// 
//   public String getRegistered() {
//     return registered;
//   }
// 
//   public void setRegistered(String registered) {
//     this.registered = registered;
//   }
// 
//   public String getDob() {
//     return dob;
//   }
// 
//   public void setDob(String dob) {
//     this.dob = dob;
//   }
// 
//   public String getPhone() {
//     return phone;
//   }
// 
//   public void setPhone(String phone) {
//     this.phone = phone;
//   }
// 
//   public String getCell() {
//     return cell;
//   }
// 
//   public void setCell(String cell) {
//     this.cell = cell;
//   }
// 
//   public String getSsn() {
//     return ssn;
//   }
// 
//   public void setSsn(String ssn) {
//     this.ssn = ssn;
//   }
// 
//   public Picture getPicture() {
//     return picture;
//   }
// 
//   public void setPicture(Picture picture) {
//     this.picture = picture;
//   }
// 
//   public String getVersion() {
//     return version;
//   }
// 
//   public void setVersion(String version) {
//     this.version = version;
//   }
// 
// }
// 
// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/model/ContactsLocalGateway.java
// public interface ContactsLocalGateway extends ContactProvider {
// 
//   void persist(List<Contact> contacts);
// 
//   Contact obtain(String md5);
// 
//   void delete(List<Contact> deleted);
// }
// 
// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/model/LocalException.java
// public class LocalException extends RuntimeException {
// }


// Path: domain/src/main/java/me/panavtec/cleancontacts/domain/interactors/contacts/GetContactInteractor.java
import me.panavtec.cleancontacts.domain.interactors.Interactor;
import me.panavtec.cleancontacts.domain.interactors.InteractorResponse;
import me.panavtec.cleancontacts.domain.model.Contact;
import me.panavtec.cleancontacts.domain.model.ContactsLocalGateway;
import me.panavtec.cleancontacts.domain.model.LocalException;

package me.panavtec.cleancontacts.domain.interactors.contacts;


public class GetContactInteractor implements Interactor<InteractorResponse<Contact>> {

  private ContactsLocalGateway localGateway;
  private String contactMd5;

  public GetContactInteractor(ContactsLocalGateway localGateway) {
    this.localGateway = localGateway;