/** * method will filter any items that don't pass security checks WDEV-11071,WDEV-11109 */ public InvestigationSelectOrderVo getChildComponentsForInvestigationOrProfile(Integer investigationID, RoleDisciplineSecurityLevelLiteGCVo voSecurity) { Investigation doInvest = (Investigation)getDomainFactory().getDomainObject(Investigation.class, investigationID.intValue()); boolean isProfile = doInvest.getInvestigationIndex().isIsProfile(); InvestigationSelectOrderVo invest = InvestigationSelectOrderVoAssembler.create((Investigation)getDomainFactory().getDomainObject(Investigation.class, investigationID.intValue())); //enforce Security here for profiles to filter out children that do not pass the security check if(isProfile) { InvestigationSelectOrderVoCollection removableComponenets = new InvestigationSelectOrderVoCollection(); for(InvestigationSelectOrderVo comp : invest.getAssocInvestigations()) { if(voSecurity != null) { SecurityLevelAndServiceCheckVo voSecLevelAndService = getSecurityLevelAndServiceForInvestigation(comp.getID_Investigation()); if(voSecLevelAndService != null && voSecLevelAndService.getSecurityLevelIsNotNull() && voSecLevelAndService.getServiceIsNotNull()) { if(!voSecurity.doesInvPassSecurityCheck(voSecLevelAndService.getService(),voSecLevelAndService.getSecurityLevel(),true)) //WDEV-11622 { removableComponenets.add(comp); continue; } } } } if(removableComponenets.size() > 0) { for(InvestigationSelectOrderVo compToRemove : removableComponenets) { invest.getAssocInvestigations().remove(compToRemove); } } //if the profile now has no secure children return null which will tell ui that none of the children passed the security check if(invest.getAssocInvestigations().size() == 0) return null; } return invest; }