Beispiel #1
0
  protected void mapFromObjects() throws RaplaException {
    classificationField.mapFrom(objectList);
    permissionListField.mapFrom(objectList);
    Set<Boolean> values = new HashSet<Boolean>();
    boolean canAdmin = true;
    boolean allPermissions = true;
    boolean internal = false;
    final User user = getUser();

    for (Allocatable alloc : objectList) {
      if (isInternalType(alloc)) {
        internal = true;
      }
      if (((DynamicTypeImpl) alloc.getClassification().getType()).isInternal()) {
        allPermissions = false;
      }
      String annotation = alloc.getAnnotation(ResourceAnnotations.KEY_CONFLICT_CREATION);
      boolean holdBackConflicts =
          annotation != null
              && annotation.equals(ResourceAnnotations.VALUE_CONFLICT_CREATION_IGNORE);
      values.add(holdBackConflicts);
      if (!permissionController.canAdmin(alloc, user)) {
        canAdmin = false;
      }
    }
    if (canAdmin == false) {
      permissionListField.getComponent().setVisible(false);
    }
    if (allPermissions) {
      permissionListField.setPermissionLevels(
          Permission.DENIED,
          Permission.READ_NO_ALLOCATION,
          Permission.READ,
          Permission.ALLOCATE,
          Permission.ALLOCATE_CONFLICTS,
          Permission.EDIT,
          Permission.ADMIN);
    } else {
      permissionListField.setPermissionLevels(Permission.DENIED, Permission.READ);
    }
    if (internal) {
      holdBackConflictPanel.setVisible(false);
      classificationField.setTypeChooserVisible(false);
    } else {
      if (values.size() == 1) {
        Boolean singleValue = values.iterator().next();
        holdBackConflictsField.setValue(singleValue);
      }
      if (values.size() > 1) {
        holdBackConflictsField.setFieldForMultipleValues();
      }
      holdBackConflictPanel.setVisible(true);
      classificationField.setTypeChooserVisible(true);
    }
  }