
org.butor.auth.dao.GroupDaoImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of butor-auth-dao Show documentation
Show all versions of butor-auth-dao Show documentation
This project is an authentication module (DAO).
package org.butor.auth.dao;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.butor.auth.common.AuthDataFilter;
import org.butor.auth.common.SecurityConstants;
import org.butor.auth.common.group.Group;
import org.butor.auth.common.group.GroupItem;
import org.butor.auth.common.group.GroupItemKey;
import org.butor.auth.common.group.GroupKey;
import org.butor.dao.AbstractDao;
import org.butor.dao.DAOMessageID;
import org.butor.json.CommonRequestArgs;
import org.butor.utils.AccessMode;
import org.butor.utils.ApplicationException;
import org.butor.utils.CommonMessageID;
import com.google.common.base.Strings;
public class GroupDaoImpl extends AbstractDao implements GroupDao {
private final String PROC_LIST_GROUP = getClass().getName() +".listGroup";
private final String PROC_READ_ITEM = getClass().getName() +".readItem";
private final String PROC_READ_GROUP = getClass().getName() +".readGroup";
private final String PROC_INSERT_ITEM = getClass().getName() +".insertItem";
private final String PROC_IS_GROUP_REFERED = getClass().getName() +".isGroupRefered";
private final String PROC_DELETE_GROUP = getClass().getName() +".deleteGroup";
private final String PROC_DELETE_ITEM = getClass().getName() +".deleteItem";
private String listGroupSql;
private String readGroupSql;
private String readItemSql;
private String deleteGroupSql;
private String deleteItemSql;
private String isGroupReferedSql;
private String insertItemSql;
@Override
public List listGroup(String member, String func, CommonRequestArgs cra) {
AuthDataFilter authData = new AuthDataFilter();
authData.setSys(SecurityConstants.SYSTEM_ID);
authData.setFunc(Strings.isNullOrEmpty(func) ? SecurityConstants.SEC_FUNC_GROUPS : func);
authData.setDataTypes("group");
authData.setMode((AccessMode.READ).value());
authData.setMember(cra.getUserId());
Map args = new HashMap();
args.put("groupMember", Strings.isNullOrEmpty(member) ? null : member);
return queryList(PROC_LIST_GROUP, listGroupSql, Group.class, args, cra, authData);
}
public void setListGroupSql(String listSql_) {
this.listGroupSql = listSql_;
}
public void setReadGroupSql(String readSql) {
this.readGroupSql = readSql;
}
@Override
public GroupItem readItem(GroupItemKey gik, CommonRequestArgs cra) {
return queryFirst(PROC_READ_ITEM, this.readItemSql, GroupItem.class, gik, cra);
}
@Override
public List readGroup(String groupId, CommonRequestArgs cra) {
AuthDataFilter authData = new AuthDataFilter();
authData.setSys(SecurityConstants.SYSTEM_ID);
authData.setFunc(SecurityConstants.SEC_FUNC_GROUPS);
authData.setDataTypes("group", "firm", "user");
authData.setMode((AccessMode.READ).value());
authData.setMember(cra.getUserId());
Map args = new HashMap();
args.put("groupId", groupId);
return queryList(PROC_READ_GROUP, this.readGroupSql, GroupItem.class, args, cra, authData);
}
@Override
public GroupItemKey insertItem(GroupItem item, CommonRequestArgs cra) {
item.setStamp(new Date());
item.setRevNo(0);
UpdateResult ur = insert(PROC_INSERT_ITEM, insertItemSql, item, cra);
if (ur.numberOfRowAffected == 0) {
ApplicationException.exception(DAOMessageID.UPDATE_FAILURE.getMessage());
}
return new GroupItemKey(item.getGroupId(), item.getMember(), 0);
}
@Override
public boolean isGroupRefered(String groupId, CommonRequestArgs cra) {
Map args = new HashMap();
args.put("groupId", groupId);
int refs = queryForInt(PROC_IS_GROUP_REFERED, isGroupReferedSql, args, cra);
return refs > 0;
}
@Override
public void updateGroup(Group group, CommonRequestArgs cra) {
List members = group.getItems();
group.setIdType("group");
List oldMembers = readGroup(group.getId(), cra);
Iterator it = oldMembers.iterator();
while (it.hasNext()) {
boolean memberRemoved = true;
GroupItem ogi = it.next();
for (GroupItem gi : members) {
if (gi.getMember().equalsIgnoreCase(ogi.getMember())) {
memberRemoved = false;
continue; // member still exists
}
}
if (memberRemoved) {
GroupItemKey gik = new GroupItemKey(group.getId(), ogi.getMember(), ogi.getRevNo());
deleteItem(gik, cra);
it.remove();
}
}
for (GroupItem gi : members) {
boolean memberAdded = true;
for (GroupItem ogi : oldMembers) {
if (gi.getMember().equalsIgnoreCase(ogi.getMember())) {
memberAdded = false;
continue; // member still exists
}
}
if (memberAdded) {
gi.setGroupId(group.getId());
GroupItemKey uk = insertItem(gi, cra);
if (uk == null) {
ApplicationException.exception(
CommonMessageID.SERVICE_FAILURE.getMessage());
return;
}
}
}
}
@Override
public void deleteGroup(GroupKey groupKey, CommonRequestArgs cra) {
Map args = new HashMap();
args.put("groupId", groupKey.getId());
UpdateResult ur = delete(PROC_DELETE_GROUP, deleteGroupSql, args, cra);
if (ur.numberOfRowAffected == 0) {
ApplicationException.exception(DAOMessageID.UPDATE_FAILURE.getMessage());
}
}
@Override
public void deleteItem(GroupItemKey rik, CommonRequestArgs cra) {
UpdateResult ur = delete(PROC_DELETE_ITEM, deleteItemSql, rik, cra);
if (ur.numberOfRowAffected == 0) {
ApplicationException.exception(DAOMessageID.UPDATE_FAILURE.getMessage());
}
}
public void setIsGroupReferedSql(String isGroupReferedSql) {
this.isGroupReferedSql = isGroupReferedSql;
}
public void setInsertItemSql(String insertSql) {
this.insertItemSql = insertSql;
}
public String getInsertItemSql() {
return this.insertItemSql;
}
public void setDeleteGroupSql(String deleteGroupSql) {
this.deleteGroupSql = deleteGroupSql;
}
public void setDeleteItemSql(String deleteItemSql) {
this.deleteItemSql = deleteItemSql;
}
public String getReadItemSql() {
return readItemSql;
}
public void setReadItemSql(String readItemSql) {
this.readItemSql = readItemSql;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy