private Map<String, String> getDirectories() { Map<String, String> directories = new LinkedHashMap<String, String>(); // switch keys and values because the Crowd map is back-to-front for (Directory directory : crowdDirectoryService.findAllDirectories()) { if (directory.getType() == DirectoryType.INTERNAL || directory.getType() == DirectoryType.DELEGATING) { directories.put(directory.getId().toString(), directory.getName()); } } return directories; }
private Directory validateDirectory( final Long directoryId, final BindException errors, String field) { if (directoryId == -1) { errors.addError( new FieldError( "migration", field, i18nResolver.getText( "embedded.crowd.directory.migrate.users.field.directory.required"))); return null; } Directory directory = crowdDirectoryService.findDirectoryById(directoryId); if (directory == null) { errors.addError( new FieldError( "migration", field, i18nResolver.getText( "embedded.crowd.directory.migrate.users.field.directory.not.found"))); } else { if (directory.getType() != DirectoryType.INTERNAL && directory.getType() != DirectoryType.DELEGATING) { errors.addError( new FieldError( "migration", field, i18nResolver.getText( "embedded.crowd.directory.migrate.users.field.directory.wrong.type"))); } final Set<OperationType> allowedOperations = directory.getAllowedOperations(); if (!allowedOperations.contains(OperationType.CREATE_USER) || !allowedOperations.contains(OperationType.CREATE_GROUP) || !allowedOperations.contains(OperationType.DELETE_USER) || !allowedOperations.contains(OperationType.DELETE_GROUP)) { errors.addError( new FieldError( "migration", field, i18nResolver.getText( "embedded.crowd.directory.migrate.users.field.directory.read.only"))); } } return directory; }