/*
* Copyright (c) 2014 Jacob D. Parr
*
* This software may not be used without permission.
*/
package com.cosmicpush.app.domain.clients;
import com.cosmicpush.pub.internal.CpIdGenerator;
import com.cosmicpush.app.domain.clients.actions.*;
import com.cosmicpush.app.domain.clients.config.*;
import com.cosmicpush.pub.internal.RequestErrors;
public class ApiClient {
private String apiClientId;
private String clientName;
private String clientPassword;
private String lastMessage;
private SmtpEmailConfig smtpEmailConfig;
private AwsEmailConfig awsEmailConfig;
private GoogleTalkConfig googleTalkConfig;
public ApiClient() {
}
public ApiClient create(CreateClientAction action) {
action.validate(new RequestErrors()).assertNoErrors();
this.apiClientId = CpIdGenerator.newId();
this.clientName = action.getClientName();
this.clientPassword = action.getClientPassword();
return this;
}
public String getApiClientId() {
return apiClientId;
}
public String getClientName() {
return clientName;
}
public String getClientPassword() {
return clientPassword;
}
public String getLastMessage() {
return lastMessage;
}
public void setLastMessage(String lastMessage) {
this.lastMessage = lastMessage;
}
public void apply(UpdateClientAction action) {
action.validate(new RequestErrors()).assertNoErrors();
this.clientName = action.getClientName();
this.clientPassword = action.getClientPassword();
this.lastMessage = "API Client configuration changed.";
}
public GoogleTalkConfig getGoogleTalkConfig() {
return googleTalkConfig;
}
public void createGoogleTalkConfig(CreateGoogleTalkConfigAction action) {
googleTalkConfig = new GoogleTalkConfig().create(action);
lastMessage = "Google Talk configuration updated.";
}
public void deleteGoogleTalkConfig() {
googleTalkConfig = null;
lastMessage = "Google Talk configuration deleted.";
}
public SmtpEmailConfig getSmtpEmailConfig() {
return smtpEmailConfig;
}
public void apply(CreateSmtpEmailConfigAction action) {
smtpEmailConfig = new SmtpEmailConfig().create(action);
lastMessage = "SMTP email configuration updated.";
}
public void deleteSmtpEmailConfig() {
smtpEmailConfig = null;
lastMessage = "SMTP email configuration deleted.";
}
public AwsEmailConfig getAwsEmailConfig() {
return awsEmailConfig;
}
public void apply(CreateAwsEmailConfigAction action) {
awsEmailConfig = new AwsEmailConfig().create(action);
lastMessage = "AWS Email configuration updated.";
}
public void deleteAwsEmailConfig() {
awsEmailConfig = null;
lastMessage = "AWS email configuration deleted.";
}
public boolean equals(Object object) {
if (object instanceof ApiClient) {
ApiClient that = (ApiClient)object;
return this.apiClientId.equals(that.apiClientId);
}
return false;
}
public String toString() {
return clientName;
}
}