// Path: src/main/java/com/lyubenblagoev/postfixrest/service/model/AliasChangeRequest.java
// public class AliasChangeRequest {
// 	
// 	private Long id;
// 	private Long domainId;
// 	private Boolean enabled;
// 
// 	@NotEmpty
// 	@Pattern(regexp="^([a-z0-9]+((\\.|-)[a-z0-9]+)*)+$", message="must be a valid email prefix")
// 	private String name;
// 
// 	@Email
// 	@NotEmpty
// 	private String email;
// 
// 	public Long getId() {
// 		return id;
// 	}
// 	
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public Long getDomainId() {
// 		return domainId;
// 	}
// 
// 	public void setDomainId(Long domainId) {
// 		this.domainId = domainId;
// 	}
// 
// 	public String getEmail() {
// 		return email;
// 	}
// 
// 	public void setEmail(String email) {
// 		this.email = email;
// 	}
// 
// 	public Boolean getEnabled() {
// 		return enabled;
// 	}
// 
// 	public void setEnabled(Boolean enabled) {
// 		this.enabled = enabled;
// 	}
// 
// }
// 
// Path: src/main/java/com/lyubenblagoev/postfixrest/service/model/AliasResource.java
// public class AliasResource {
// 
// 	private Long id;
// 	
// 	private String name;
// 	
// 	private String email;
// 	
// 	@JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ssZ")
// 	private Date created;
// 	
// 	@JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ssZ")
// 	private Date updated;
// 	
// 	private boolean enabled;
// 	
// 	public static AliasResource fromAlias(Alias alias) {
// 		AliasResource resource = new AliasResource();
// 		resource.setId(alias.getId());
// 		resource.setName(alias.getAlias());
// 		resource.setEmail(alias.getEmail());
// 		resource.setEnabled(alias.isEnabled());
// 		resource.setCreated(alias.getCreated());
// 		resource.setUpdated(alias.getUpdated());
// 		return resource;
// 	}
// 
// 	public Long getId() {
// 		return id;
// 	}
// 
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public String getEmail() {
// 		return email;
// 	}
// 
// 	public void setEmail(String email) {
// 		this.email = email;
// 	}
// 
// 	public Date getCreated() {
// 		return created;
// 	}
// 
// 	public void setCreated(Date created) {
// 		this.created = created;
// 	}
// 
// 	public Date getUpdated() {
// 		return updated;
// 	}
// 
// 	public void setUpdated(Date updated) {
// 		this.updated = updated;
// 	}
// 
// 	public boolean isEnabled() {
// 		return enabled;
// 	}
// 
// 	public void setEnabled(boolean enabled) {
// 		this.enabled = enabled;
// 	}
// 
// }


import java.util.Collection;
import java.util.Optional;
import com.lyubenblagoev.postfixrest.service.model.AliasChangeRequest;
import com.lyubenblagoev.postfixrest.service.model.AliasResource;
package com.lyubenblagoev.postfixrest.service;



public interface AliasService {
	
	Optional<AliasResource> getAlias(Long id);

	Collection<AliasResource> getAliasesByDomainName(String domainName);

	Collection<AliasResource> getAliasByDomainNameAndName(String domainName, String name);

	Optional<AliasResource> getAliasByDomainNameAndNameAndEmail(String domainName, String name, String email);

// Path: src/main/java/com/lyubenblagoev/postfixrest/service/model/AliasChangeRequest.java
// public class AliasChangeRequest {
// 	
// 	private Long id;
// 	private Long domainId;
// 	private Boolean enabled;
// 
// 	@NotEmpty
// 	@Pattern(regexp="^([a-z0-9]+((\\.|-)[a-z0-9]+)*)+$", message="must be a valid email prefix")
// 	private String name;
// 
// 	@Email
// 	@NotEmpty
// 	private String email;
// 
// 	public Long getId() {
// 		return id;
// 	}
// 	
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public Long getDomainId() {
// 		return domainId;
// 	}
// 
// 	public void setDomainId(Long domainId) {
// 		this.domainId = domainId;
// 	}
// 
// 	public String getEmail() {
// 		return email;
// 	}
// 
// 	public void setEmail(String email) {
// 		this.email = email;
// 	}
// 
// 	public Boolean getEnabled() {
// 		return enabled;
// 	}
// 
// 	public void setEnabled(Boolean enabled) {
// 		this.enabled = enabled;
// 	}
// 
// }
// 
// Path: src/main/java/com/lyubenblagoev/postfixrest/service/model/AliasResource.java
// public class AliasResource {
// 
// 	private Long id;
// 	
// 	private String name;
// 	
// 	private String email;
// 	
// 	@JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ssZ")
// 	private Date created;
// 	
// 	@JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ssZ")
// 	private Date updated;
// 	
// 	private boolean enabled;
// 	
// 	public static AliasResource fromAlias(Alias alias) {
// 		AliasResource resource = new AliasResource();
// 		resource.setId(alias.getId());
// 		resource.setName(alias.getAlias());
// 		resource.setEmail(alias.getEmail());
// 		resource.setEnabled(alias.isEnabled());
// 		resource.setCreated(alias.getCreated());
// 		resource.setUpdated(alias.getUpdated());
// 		return resource;
// 	}
// 
// 	public Long getId() {
// 		return id;
// 	}
// 
// 	public void setId(Long id) {
// 		this.id = id;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public String getEmail() {
// 		return email;
// 	}
// 
// 	public void setEmail(String email) {
// 		this.email = email;
// 	}
// 
// 	public Date getCreated() {
// 		return created;
// 	}
// 
// 	public void setCreated(Date created) {
// 		this.created = created;
// 	}
// 
// 	public Date getUpdated() {
// 		return updated;
// 	}
// 
// 	public void setUpdated(Date updated) {
// 		this.updated = updated;
// 	}
// 
// 	public boolean isEnabled() {
// 		return enabled;
// 	}
// 
// 	public void setEnabled(boolean enabled) {
// 		this.enabled = enabled;
// 	}
// 
// }


// Path: src/main/java/com/lyubenblagoev/postfixrest/service/AliasService.java
import java.util.Collection;
import java.util.Optional;
import com.lyubenblagoev.postfixrest.service.model.AliasChangeRequest;
import com.lyubenblagoev.postfixrest.service.model.AliasResource;

package com.lyubenblagoev.postfixrest.service;



public interface AliasService {
	
	Optional<AliasResource> getAlias(Long id);

	Collection<AliasResource> getAliasesByDomainName(String domainName);

	Collection<AliasResource> getAliasByDomainNameAndName(String domainName, String name);

	Optional<AliasResource> getAliasByDomainNameAndNameAndEmail(String domainName, String name, String email);

	Optional<AliasResource> save(AliasChangeRequest name);