package net.codjo.dataprocess.client;
import net.codjo.dataprocess.common.DataProcessConstants;
import net.codjo.dataprocess.common.exception.UserManagerException;
import net.codjo.dataprocess.common.userparam.DefaultUserCodec;
import net.codjo.dataprocess.common.userparam.User;
import net.codjo.dataprocess.common.userparam.UserCodec;
import net.codjo.mad.client.request.RequestException;
import net.codjo.mad.client.request.Row;
import net.codjo.mad.gui.framework.MutableGuiContext;
import java.util.HashMap;
import java.util.Map;
/**
*
*/
public class UserClientHelper {
private UserCodec userCodec;
public UserClientHelper() {
this(new DefaultUserCodec());
}
public UserClientHelper(UserCodec userCodec) {
this.userCodec = userCodec;
}
public void save(MutableGuiContext ctxt, User user) throws UserManagerException, RequestException {
Map<String, String> args = new HashMap<String, String>();
args.put("command", DataProcessConstants.USER_COMMAND_SAVE);
args.put("userName", user.getUserName());
args.put("userParam", userCodec.toXml(user));
HandlerCommandSender sender = new HandlerCommandSender();
Row row = sender.send(ctxt, args, "userManager");
String result = row.getFieldValue("result");
if (result.startsWith("ERROR")) {
throw new UserManagerException(result);
}
}
public void create(MutableGuiContext ctxt, User user) throws UserManagerException, RequestException {
Map<String, String> args = new HashMap<String, String>();
args.put("command", DataProcessConstants.USER_COMMAND_CREATE);
args.put("userName", user.getUserName());
args.put("userParam", userCodec.toXml(user));
HandlerCommandSender sender = new HandlerCommandSender();
Row row = sender.send(ctxt, args, "userManager");
String result = row.getFieldValue("result");
if (result.startsWith("ERROR")) {
throw new UserManagerException(result);
}
}
public User load(MutableGuiContext ctxt, String userName) throws UserManagerException, RequestException {
Map<String, String> args = new HashMap<String, String>();
args.put("command", DataProcessConstants.USER_COMMAND_LOAD);
args.put("userName", userName);
args.put("userParam", "");
HandlerCommandSender sender = new HandlerCommandSender();
Row row = sender.send(ctxt, args, "userManager");
String result = row.getFieldValue("result");
if (result.startsWith("ERROR")) {
throw new UserManagerException(result);
}
User user = userCodec.fromXml(result);
if (user.getUserName() == null) {
user.setUserName(userName);
save(ctxt, user);
}
return user;
}
public boolean isExist(MutableGuiContext ctxt, String userName)
throws UserManagerException, RequestException {
Map<String, String> args = new HashMap<String, String>();
args.put("command", DataProcessConstants.USER_COMMAND_IS_EXIST);
args.put("userName", userName);
args.put("userParam", "");
HandlerCommandSender sender = new HandlerCommandSender();
Row row = sender.send(ctxt, args, "userManager");
String result = row.getFieldValue("result");
if (result.startsWith("ERROR")) {
throw new UserManagerException(result);
}
return "TRUE".equalsIgnoreCase(result);
}
}