use of org.bimserver.database.query.conditions.AndCondition in project BIMserver by opensourceBIM.
the class GetAllNonAuthorizedUsersOfProjectDatabaseAction method execute.
@Override
public Set<User> execute() throws UserException, BimserverLockConflictException, BimserverDatabaseException {
Project project = getProjectByPoid(poid);
if (project == null) {
throw new UserException("No Project with oid " + poid + " found");
}
Condition condition = new AndCondition(new AndCondition(new Not(new HasReferenceToCondition(StorePackage.eINSTANCE.getUser_HasRightsOn(), project)), new AttributeCondition(StorePackage.eINSTANCE.getUser_State(), new EnumLiteral(ObjectState.ACTIVE))), new Not(new AttributeCondition(StorePackage.eINSTANCE.getUser_UserType(), new EnumLiteral(UserType.SYSTEM))));
return CollectionUtils.mapToSet(getDatabaseSession().query(condition, User.class, OldQuery.getDefault()));
}
use of org.bimserver.database.query.conditions.AndCondition in project BIMserver by opensourceBIM.
the class GetAllProjectsDatabaseAction method execute.
@Override
public Set<Project> execute() throws UserException, BimserverLockConflictException, BimserverDatabaseException {
User user = getUserByUoid(authorization.getUoid());
Not notStoreProject = new Not(new AttributeCondition(StorePackage.eINSTANCE.getProject_Name(), new StringLiteral(Database.STORE_PROJECT_NAME)));
HasReferenceToCondition authorized = new HasReferenceToCondition(StorePackage.eINSTANCE.getProject_HasAuthorizedUsers(), user);
Condition condition = new IsOfTypeCondition(StorePackage.eINSTANCE.getProject()).and(notStoreProject);
// }
if (onlyActive) {
condition = new AndCondition(condition, new AttributeCondition(StorePackage.eINSTANCE.getProject_State(), new EnumLiteral(ObjectState.ACTIVE)));
}
if (user.getUserType() != UserType.ADMIN && user.getUserType() != UserType.SYSTEM) {
condition = condition.and(authorized);
condition = condition.and(new AttributeCondition(StorePackage.eINSTANCE.getProject_State(), new EnumLiteral(ObjectState.ACTIVE)));
}
Map<Long, Project> results = getDatabaseSession().query(condition, Project.class, OldQuery.getDefault());
Set<Project> resultSet = new HashSet<Project>();
for (Project p : results.values()) {
if (p.getParent() == null || !onlyTopLevel) {
resultSet.add(p);
}
}
for (Project project : results.values()) {
addParentProjects(resultSet, project);
}
return resultSet;
}
Aggregations