use of io.lumeer.api.model.Group in project engine by Lumeer.
the class GroupCodec method decode.
@Override
public Group decode(final BsonReader bsonReader, final DecoderContext decoderContext) {
Document bson = documentCodec.decode(bsonReader, decoderContext);
String id = bson.getObjectId(ID).toHexString();
String name = bson.getString(NAME);
String description = bson.getString(DESCRIPTION);
String icon = bson.getString(ICON);
String color = bson.getString(COLOR);
List<String> usersList = bson.getList(USERS, String.class);
List<String> users = usersList != null ? new ArrayList<>(usersList) : Collections.emptyList();
return new Group(id, name, description, icon, color, users);
}
use of io.lumeer.api.model.Group in project engine by Lumeer.
the class MongoGroupDao method deleteGroup.
@Override
public void deleteGroup(final String id) {
Group group = getGroup(id);
DeleteResult result = databaseCollection().deleteOne(idFilter(id));
if (result.getDeletedCount() != 1) {
throw new StorageException("Group '" + id + "' has not been deleted.");
}
if (removeGroupEvent != null) {
group.setOrganizationId(getOrganization().get().getId());
removeGroupEvent.fire(new RemoveGroup(getOrganization().get().getId(), group));
}
}
use of io.lumeer.api.model.Group in project engine by Lumeer.
the class MongoGroupDao method updateGroup.
@Override
public Group updateGroup(final String id, final Group group) {
FindOneAndReplaceOptions options = new FindOneAndReplaceOptions().returnDocument(ReturnDocument.AFTER).upsert(true);
try {
Group returnedGroup = databaseCollection().findOneAndReplace(idFilter(id), group, options);
if (returnedGroup == null) {
throw new StorageException("Group '" + id + "' has not been updated.");
}
if (createOrUpdateGroupEvent != null) {
returnedGroup.setOrganizationId(getOrganization().get().getId());
createOrUpdateGroupEvent.fire(new CreateOrUpdateGroup(getOrganization().get().getId(), returnedGroup));
}
return returnedGroup;
} catch (MongoException ex) {
throw new StorageException("Cannot update group " + group, ex);
}
}
use of io.lumeer.api.model.Group in project engine by Lumeer.
the class ViewServiceIT method configureProject.
@Before
public void configureProject() {
User user = new User(USER);
this.user = userDao.createUser(user);
userPermission = Permission.buildWithRoles(this.user.getId(), USER_ROLES);
Organization organization = new Organization();
organization.setCode(ORGANIZATION_CODE);
organization.setPermissions(new Permissions());
Organization storedOrganization = organizationDao.createOrganization(organization);
this.organization = storedOrganization;
Permissions organizationPermissions = new Permissions();
Permission userPermission = Permission.buildWithRoles(this.user.getId(), Organization.ROLES);
organizationPermissions.updateUserPermissions(userPermission);
storedOrganization.setPermissions(organizationPermissions);
organizationDao.updateOrganization(storedOrganization.getId(), storedOrganization);
projectDao.setOrganization(storedOrganization);
groupDao.setOrganization(storedOrganization);
group = groupDao.createGroup(new Group(GROUP, Collections.singletonList(user.getId())));
groupPermission = Permission.buildWithRoles(group.getId(), GROUP_ROLES);
Project project = new Project();
project.setCode(PROJECT_CODE);
project.setPermissions(new Permissions());
Project storedProject = projectDao.createProject(project);
this.project = storedProject;
Permissions projectPermissions = new Permissions();
Permission userProjectPermission = Permission.buildWithRoles(this.user.getId(), Project.ROLES);
projectPermissions.updateUserPermissions(userProjectPermission);
storedProject.setPermissions(projectPermissions);
storedProject = projectDao.updateProject(storedProject.getId(), storedProject);
workspaceKeeper.setWorkspaceIds(storedOrganization.getId(), storedProject.getId());
viewDao.setProject(storedProject);
Collection collection = collectionFacade.createCollection(new Collection("abc", "abc random", ICON, COLOR, projectPermissions));
collectionFacade.updateUserPermissions(collection.getId(), Set.of(Permission.buildWithRoles(this.user.getId(), Collections.singleton(new Role(RoleType.Read)))));
query = new Query(new QueryStem(collection.getId()));
viewsUrl = projectPath(storedOrganization, storedProject) + "views";
PermissionCheckerUtil.allowGroups();
}
Aggregations