/**
*
*/
package com.azwul.api.service.impl;
import java.util.HashMap;
import java.util.Map;
import com.azwul.api.model.Credentials;
import com.azwul.api.model.SessionToken;
import com.azwul.api.model.result.HttpResult;
import com.azwul.api.model.result.LoginResult;
import com.azwul.api.model.result.SignatureResult;
import com.azwul.api.model.tx.AzDealTransaction;
import com.azwul.api.service.AzDealService;
import com.azwul.api.util.ResponseUtil;
/**
* @author Theotime Jurzak
*
*/
public class AzDealServiceImpl extends AzServiceImpl implements AzDealService {
public SignatureResult doSign(AzDealTransaction azDealTransaction,
Credentials credentials) {
return doSign(azDealTransaction, credentials, null, false);
}
public SignatureResult doSign(AzDealTransaction azDealTransaction,
SessionToken sessionToken) {
return doSign(azDealTransaction, null, sessionToken, true);
}
protected SignatureResult doSign(AzDealTransaction azDealTransaction,
Credentials credentials, SessionToken sessionToken,
boolean keepAlive) {
if (credentials != null) {
LoginResult loginResult = login(credentials);
sessionToken = loginResult.getHttpResult().getSessionToken();
}
Map<String, String> params = new HashMap<String, String>();
int i = 0;
String recipientEmailString = "";
for (String recipientEmail : azDealTransaction.getRecipientEmails()) {
if (i != 0) {
recipientEmailString += ",";
}
recipientEmailString += recipientEmail;
i++;
}
params.put("recipientEmail", recipientEmailString);
params.put("resourceName", azDealTransaction.getDocumentTitle());
params.put("message", azDealTransaction.getMessage());
if (azDealTransaction.getInternalFolderReference() != null
&& !"".equals(azDealTransaction.getInternalFolderReference())) {
params.put("internalFolderReference",
azDealTransaction.getInternalFolderReference());
}
if (azDealTransaction.getFileName() != null
&& !"".equals(azDealTransaction.getFileName())) {
params.put("fileName", azDealTransaction.getFileName());
}
params.put("mailAttachement",
Boolean.toString(azDealTransaction.isMailAttachement()));
params.put("storeStrategy", azDealTransaction.getStoreStrategy().name());
HttpResult httpResult = httpHelper.doPostMultipart("/basic/deal",
httpConfiguration, sessionToken, azDealTransaction.getFile(),
"file", params);
String resSign = ResponseUtil.getBasicResponse(httpResult);
SignatureResult result = new SignatureResult();
result.setHttpResult(httpResult);
result.setBasicResponse(resSign);
String resSignSplit[] = resSign.split("\\s");
if (resSignSplit[1].equals("OK")) {
result.setOk(true);
result.setSignatureId(resSignSplit[3]);
}
if (!keepAlive) {
logout(httpResult.getSessionToken());
}
return result;
}
public SignatureResult processSign(String dealId, String message,
Credentials credentials) {
return processSign(dealId, message, credentials, null, false);
}
public SignatureResult processSign(String dealId, String message,
SessionToken sessionToken) {
return processSign(dealId, message, null, sessionToken, true);
}
protected SignatureResult processSign(String dealId, String message,
Credentials credentials, SessionToken sessionToken,
boolean keepAlive) {
if (credentials != null) {
LoginResult loginResult = login(credentials);
sessionToken = loginResult.getHttpResult().getSessionToken();
}
Map<String, String> params = new HashMap<String, String>();
params.put("dealId", dealId);
params.put("message", message);
HttpResult httpResult = httpHelper.doPost("/basic/deal/process",
httpConfiguration, sessionToken, params);
String resSign = ResponseUtil.getBasicResponse(httpResult);
SignatureResult result = new SignatureResult();
result.setHttpResult(httpResult);
result.setBasicResponse(resSign);
String resSignSplit[] = resSign.split("\\s");
if (resSignSplit[1].equals("OK")) {
result.setOk(true);
result.setSignatureId(resSignSplit[3]);
}
if (!keepAlive) {
logout(sessionToken);
}
return result;
}
}