package com.knowgate.clocial;
import com.knowgate.storage.*;
import com.knowgate.misc.Gadgets;
import com.knowgate.clocial.Serials;
public class UserAccountAlias extends RecordDelegator {
private static final long serialVersionUID = Serials.UserAccountAlias;
private static final String tableName = "k_user_account_alias";
public UserAccountAlias(DataSource oDts) throws InstantiationException {
super(oDts,tableName);
}
public UserAccountAlias(DataSource oDts,Record oRec) throws InstantiationException {
super(oDts,tableName);
putAll(oRec);
}
public String store(Table oTbl) throws StorageException,NullPointerException {
put("id_acalias", makeId(getString("nm_service"),getString("nm_alias")));
if (!isNull("nm_display"))
put("nm_ascii", Gadgets.left(Gadgets.ASCIIEncode(getString("nm_display").toLowerCase()),100));
return super.store(oTbl);
}
public static String makeId(String sNmService, String sNmAlias) {
return sNmService.toLowerCase()+":"+sNmAlias.toLowerCase();
}
public static String getUserAccountId(DataSource oDts, String sUrl)
throws StorageException {
String sGuAccount;
Table oTbl = null;
try {
oTbl = oDts.openTable(new UserAccountAlias(oDts));
RecordSet oRSet = oTbl.fetch("url_addr", sUrl);
oTbl.close();
oTbl=null;
if (oRSet.size()>0) {
sGuAccount = oRSet.get(0).getString("gu_account");
} else {
sGuAccount = null;
}
} catch (Exception xcpt) {
if (null!=oTbl) { try { oTbl.close(); } catch (Exception ignore) {} }
throw new StorageException(xcpt.getMessage(), xcpt);
}
return sGuAccount;
} // getUserAccountId
public static String getUserAccountId(DataSource oDts, String sNmService, String sNmAlias)
throws StorageException {
String sGuAccount;
Table oTbl = null;
try {
oTbl = oDts.openTable(new UserAccountAlias(oDts));
Record oRec = oTbl.load(makeId(sNmService, sNmAlias));
oTbl.close();
oTbl=null;
if (oRec==null) {
sGuAccount = Gadgets.generateUUID();
UserAccount oAcc = new UserAccount(oDts);
oTbl = oDts.openTable(oAcc);
oAcc.put("gu_account", sGuAccount);
oAcc.put("id_domain", 0);
oAcc.put("nm_domain", "N/A");
oAcc.put("bo_active", false);
oAcc.put("bo_change_pwd", (short) 1);
oAcc.put("bo_searchable", (short) 1);
oAcc.put("nu_login_attempts", 0);
oAcc.put("tx_nickname", oAcc.getUniqueNickName(oTbl,sNmAlias));
oAcc.store(oTbl);
oTbl.close();
oTbl=null;
UserAccountAlias oUaa = new UserAccountAlias(oDts);
oTbl = oDts.openTable(oUaa);
oUaa.put("id_acalias", makeId(sNmService, sNmAlias));
oUaa.put("gu_account", sGuAccount);
oUaa.put("nm_service", sNmService);
oUaa.put("nm_alias", sNmAlias);
oUaa.store(oTbl);
oTbl.close();
oTbl=null;
} else {
sGuAccount = oRec.getString("gu_account");
}
} catch (Exception xcpt) {
if (null!=oTbl) { try { oTbl.close(); } catch (Exception ignore) {} }
throw new StorageException(xcpt.getMessage(), xcpt);
}
return sGuAccount;
} // getUserAccountId
}