package edu.ualberta.med.biobank.common.action.site; import java.util.Set; import edu.ualberta.med.biobank.common.action.ActionContext; import edu.ualberta.med.biobank.common.action.IdResult; import edu.ualberta.med.biobank.common.action.center.CenterSaveAction; import edu.ualberta.med.biobank.common.action.exception.ActionException; import edu.ualberta.med.biobank.common.permission.Permission; import edu.ualberta.med.biobank.common.permission.site.SiteCreatePermission; import edu.ualberta.med.biobank.common.permission.site.SiteUpdatePermission; import edu.ualberta.med.biobank.model.Site; import edu.ualberta.med.biobank.model.Study; public class SiteSaveAction extends CenterSaveAction { private static final long serialVersionUID = 1L; private Set<Integer> studyIds; public void setStudyIds(Set<Integer> studyIds) { if (studyIds == null) { throw new IllegalArgumentException(); } this.studyIds = studyIds; } @Override public boolean isAllowed(ActionContext context) { Permission permission; if (centerId == null) permission = new SiteCreatePermission(); else permission = new SiteUpdatePermission(centerId); return permission.isAllowed(context); } @Override public IdResult run(ActionContext context) throws ActionException { Site site = context.load(Site.class, centerId, new Site()); Set<Study> studies = context.load(Study.class, studyIds); site.getStudies().clear(); site.getStudies().addAll(studies); return run(context, site); } }