package edu.harvard.i2b2.crc.ejb.role; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import edu.harvard.i2b2.common.exception.I2B2Exception; import edu.harvard.i2b2.crc.dao.IDAOFactory; import edu.harvard.i2b2.crc.dao.role.IPriviledgeDao; import edu.harvard.i2b2.crc.datavo.db.QtPriviledge; public class PriviledgeBean implements PriviledgeLocal { // public static ApplicationContext ac; // log private static Log log = LogFactory.getLog(PriviledgeBean.class); public QtPriviledge checkPriviledge(IDAOFactory daoFactory, String protectionLabel, List<String> roles) throws MissingRoleException, I2B2Exception { IPriviledgeDao priviledgeDao = daoFactory.getSetFinderDAOFactory() .getPriviledgeDao(); QtPriviledge priviledge = priviledgeDao .getPriviledgeByProtectionLabel(protectionLabel); String dataTrck = priviledge.getDataProtCd(); String mgmtTrck = priviledge.getHivemgmtCd(); // check if dataTrck in roles boolean dataTrckPassFlag = roles.contains(dataTrck); // check for mgmtTrck in roles boolean mgmtTrckPassFlag = roles.contains(mgmtTrck); if (dataTrckPassFlag && mgmtTrckPassFlag) { return priviledge; } else { String errorMsg = "This operation required privilege : "; String andMsg = " "; if (dataTrckPassFlag == false) { errorMsg += dataTrck; andMsg = " and "; } if (mgmtTrckPassFlag == false) { errorMsg += andMsg + mgmtTrck; } throw new MissingRoleException(errorMsg); } } public QtPriviledge checkPluginPrivilege(IDAOFactory daoFactory, String pluginId, List<String> roles) throws MissingRoleException, I2B2Exception { QtPriviledge privilege = null; IPriviledgeDao priviledgeDao = daoFactory.getSetFinderDAOFactory() .getPriviledgeDao(); List<QtPriviledge> priviledgeList = priviledgeDao .getPriviledgeByPluginId(pluginId); if (priviledgeList.size() < 1) { return privilege; } privilege = priviledgeList.get(0); String dataTrck = privilege.getDataProtCd(); String mgmtTrck = privilege.getHivemgmtCd(); // check if dataTrck in roles boolean dataTrckPassFlag = roles.contains(dataTrck); // check for mgmtTrck in roles boolean mgmtTrckPassFlag = roles.contains(mgmtTrck); if (dataTrckPassFlag && mgmtTrckPassFlag) { return privilege; } else { String errorMsg = "This operation required privilege : "; String andMsg = " "; if (dataTrckPassFlag == false) { errorMsg += dataTrck; andMsg = " and "; } if (mgmtTrckPassFlag == false) { errorMsg += andMsg + mgmtTrck; } throw new MissingRoleException(errorMsg); } } }