public RoleAssignmentSet roleAssignments(User user, Dataverse dv) { RoleAssignmentSet retVal = new RoleAssignmentSet(user); while (dv != null) { retVal.add(directRoleAssignments(user, dv)); if (dv.isPermissionRoot()) break; dv = dv.getOwner(); } return retVal; }
/** * Get all the available roles in a given dataverse, mapped by the dataverse that defines them. * Map entries are ordered by reversed hierarchy (root is always last). * * @param dvId The id of dataverse whose available roles we query * @return map of available roles. */ public Set<DataverseRole> availableRoles(Long dvId) { Dataverse dv = em.find(Dataverse.class, dvId); Set<DataverseRole> roles = dv.getRoles(); roles.addAll(findBuiltinRoles()); while (!dv.isEffectivelyPermissionRoot()) { dv = dv.getOwner(); roles.addAll(dv.getRoles()); } return roles; }
public boolean isRequired() { if (required == null) { required = false; if (this.datasetFieldType.isPrimitive() && this.datasetFieldType.isRequired()) { required = true; } if (this.datasetFieldType.isHasRequiredChildren()) { required = true; } Dataverse dv = getDataverse(); while (!dv.isMetadataBlockRoot()) { if (dv.getOwner() == null) { break; // we are at the root; which by defintion is metadata blcok root, regarldess of the // value } dv = dv.getOwner(); } List<DataverseFieldTypeInputLevel> dftilListFirst = dv.getDataverseFieldTypeInputLevels(); if (!getDatasetFieldType().isHasChildren()) { for (DataverseFieldTypeInputLevel dsftil : dftilListFirst) { if (dsftil.getDatasetFieldType().equals(this.datasetFieldType)) { required = dsftil.isRequired(); } } } if (getDatasetFieldType().isHasChildren() && (!dftilListFirst.isEmpty())) { for (DatasetFieldType child : getDatasetFieldType().getChildDatasetFieldTypes()) { for (DataverseFieldTypeInputLevel dftilTest : dftilListFirst) { if (child.equals(dftilTest.getDatasetFieldType())) { if (dftilTest.isRequired()) { required = true; } } } } } } // System.out.print("at return " + this.datasetFieldType.getDisplayName() + " " + required); return required; }