Search in sources :

Example 1 with GroupDao

use of io.lumeer.storage.api.dao.GroupDao in project engine by Lumeer.

the class CollectionFacade method runRule.

public void runRule(final Collection collection, final String ruleId) {
    if (adapter.getDocumentsCountByCollection(collection.getId()) > 2_000) {
        throw new UnsuccessfulOperationException("Too many documents in the source collection");
    }
    final Rule rule = collection.getRules().get(ruleId);
    if (rule != null && rule.getType() == Rule.RuleType.AUTO_LINK) {
        final AutoLinkRule autoLinkRule = new AutoLinkRule(rule);
        final String otherCollectionId = autoLinkRule.getCollection2().equals(collection.getId()) ? autoLinkRule.getCollection1() : autoLinkRule.getCollection2();
        final String attributeId = autoLinkRule.getCollection1().equals(collection.getId()) ? autoLinkRule.getAttribute1() : autoLinkRule.getAttribute2();
        final Attribute attribute = collection.getAttributes().stream().filter(a -> a.getId().equals(attributeId)).findFirst().orElse(null);
        final Collection otherCollection = getCollection(otherCollectionId);
        final String otherAttributeId = autoLinkRule.getCollection2().equals(collection.getId()) ? autoLinkRule.getAttribute1() : autoLinkRule.getAttribute2();
        final Attribute otherAttribute = otherCollection.getAttributes().stream().filter(a -> a.getId().equals(otherAttributeId)).findFirst().orElse(null);
        final Map<String, AllowedPermissions> permissions = permissionsChecker.getCollectionsPermissions(List.of(collection, otherCollection));
        if (adapter.getDocumentsCountByCollection(otherCollectionId) > 10_000) {
            throw new UnsuccessfulOperationException("Too many documents in the target collection");
        }
        final LinkType linkType = linkTypeDao.getLinkType(autoLinkRule.getLinkType());
        final AutoLinkBatchTask task = taskFactory.getInstance(AutoLinkBatchTask.class);
        task.setupBatch(autoLinkRule, linkType, collection, attribute, otherCollection, otherAttribute, getCurrentUser(), permissions);
        taskExecutor.submitTask(task);
    } else if (rule != null && rule.getType() == Rule.RuleType.CRON) {
        final CronRule cronRule = new CronRule(rule);
        List<Document> documents = new ArrayList<>();
        if (cronRule.getViewId() != null) {
            try {
                final View view = viewDao.getViewById(cronRule.getViewId());
                final User user = AuthenticatedUser.getMachineUser();
                final AllowedPermissions allowedPermissions = AllowedPermissions.allAllowed();
                documents = DocumentUtils.getDocuments(collectionDao, documentDao, dataDao, userDao, groupDao, selectionListDao, getOrganization(), getProject(), view.getQuery(), user, cronRule.getLanguage(), allowedPermissions, null);
                documents = documents.stream().filter(document -> document.getCollectionId().equals(collection.getId())).collect(Collectors.toList());
            } catch (ResourceNotFoundException ignore) {
            }
        }
        RuleTask task = taskFactory.getInstance(RuleTask.class);
        task.setRule(rule.getName(), rule, collection, documents);
        taskExecutor.submitTask(task);
    }
}
Also used : AutoLinkBatchTask(io.lumeer.core.task.AutoLinkBatchTask) TaskExecutor(io.lumeer.core.task.TaskExecutor) CollectionUtil(io.lumeer.api.util.CollectionUtil) ZonedDateTime(java.time.ZonedDateTime) User(io.lumeer.api.model.User) AuthenticatedUser(io.lumeer.core.auth.AuthenticatedUser) LinkTypeDao(io.lumeer.storage.api.dao.LinkTypeDao) AutoLinkRule(io.lumeer.api.model.rule.AutoLinkRule) CollectionDao(io.lumeer.storage.api.dao.CollectionDao) ResourceType(io.lumeer.api.model.ResourceType) DefaultViewConfigDao(io.lumeer.storage.api.dao.DefaultViewConfigDao) Map(java.util.Map) ResourceCommentDao(io.lumeer.storage.api.dao.ResourceCommentDao) CollectionAdapter(io.lumeer.core.adapter.CollectionAdapter) Permission(io.lumeer.api.model.Permission) RoleType(io.lumeer.api.model.RoleType) View(io.lumeer.api.model.View) ResourceNotFoundException(io.lumeer.storage.api.exception.ResourceNotFoundException) Document(io.lumeer.api.model.Document) Set(java.util.Set) NoResourcePermissionException(io.lumeer.core.exception.NoResourcePermissionException) Collectors(java.util.stream.Collectors) LinkType(io.lumeer.api.model.LinkType) Objects(java.util.Objects) AttributesResource(io.lumeer.api.model.common.AttributesResource) List(java.util.List) ResourceUtils(io.lumeer.api.util.ResourceUtils) PostConstruct(javax.annotation.PostConstruct) FavoriteItemDao(io.lumeer.storage.api.dao.FavoriteItemDao) Attribute(io.lumeer.api.model.Attribute) ContextualTaskFactory(io.lumeer.core.task.ContextualTaskFactory) UserDao(io.lumeer.storage.api.dao.UserDao) HashMap(java.util.HashMap) SelectionListDao(io.lumeer.storage.api.dao.SelectionListDao) AllowedPermissions(io.lumeer.api.model.AllowedPermissions) Function(java.util.function.Function) CollectionPurpose(io.lumeer.api.model.CollectionPurpose) GroupDao(io.lumeer.storage.api.dao.GroupDao) ArrayList(java.util.ArrayList) Inject(javax.inject.Inject) DataDao(io.lumeer.storage.api.dao.DataDao) ViewDao(io.lumeer.storage.api.dao.ViewDao) CodeGenerator(io.lumeer.core.util.CodeGenerator) Rule(io.lumeer.api.model.Rule) DocumentDao(io.lumeer.storage.api.dao.DocumentDao) Permissions(io.lumeer.api.model.Permissions) ResourceAdapter(io.lumeer.core.adapter.ResourceAdapter) DocumentUtils(io.lumeer.core.util.DocumentUtils) FileAttachment(io.lumeer.api.model.FileAttachment) Project(io.lumeer.api.model.Project) LinkInstanceDao(io.lumeer.storage.api.dao.LinkInstanceDao) UnsuccessfulOperationException(io.lumeer.engine.api.exception.UnsuccessfulOperationException) ConversionFacade(io.lumeer.core.facade.conversion.ConversionFacade) RuleTask(io.lumeer.core.task.RuleTask) RequestScoped(javax.enterprise.context.RequestScoped) CronRule(io.lumeer.api.model.rule.CronRule) AutoLinkBatchTask(io.lumeer.core.task.AutoLinkBatchTask) Collection(io.lumeer.api.model.Collection) User(io.lumeer.api.model.User) AuthenticatedUser(io.lumeer.core.auth.AuthenticatedUser) Attribute(io.lumeer.api.model.Attribute) View(io.lumeer.api.model.View) AllowedPermissions(io.lumeer.api.model.AllowedPermissions) UnsuccessfulOperationException(io.lumeer.engine.api.exception.UnsuccessfulOperationException) Collection(io.lumeer.api.model.Collection) List(java.util.List) ArrayList(java.util.ArrayList) RuleTask(io.lumeer.core.task.RuleTask) AutoLinkRule(io.lumeer.api.model.rule.AutoLinkRule) Rule(io.lumeer.api.model.Rule) CronRule(io.lumeer.api.model.rule.CronRule) LinkType(io.lumeer.api.model.LinkType) ResourceNotFoundException(io.lumeer.storage.api.exception.ResourceNotFoundException) AutoLinkRule(io.lumeer.api.model.rule.AutoLinkRule) CronRule(io.lumeer.api.model.rule.CronRule)

Example 2 with GroupDao

use of io.lumeer.storage.api.dao.GroupDao in project engine by Lumeer.

the class PermissionsCheckerTest method preparePermissionsChecker.

@Before
public void preparePermissionsChecker() {
    User user = Mockito.mock(User.class);
    Mockito.when(user.getId()).thenReturn(USER);
    Mockito.when(user.getOrganizations()).thenReturn(Collections.singleton("LMR"));
    AuthenticatedUser authenticatedUser = Mockito.mock(AuthenticatedUser.class);
    Mockito.when(authenticatedUser.getCurrentUserId()).thenReturn(USER);
    Mockito.when(authenticatedUser.getUserEmail()).thenReturn(USER);
    Organization organization = Mockito.mock(Organization.class);
    preparePermissions(organization, Collections.singleton(new Role(RoleType.Read)), Collections.emptySet());
    Mockito.when(organization.getId()).thenReturn("LMR");
    Project project = Mockito.mock(Project.class);
    preparePermissions(project, Collections.singleton(new Role(RoleType.Read)), Collections.emptySet());
    Mockito.when(project.getId()).thenReturn("LMR");
    WorkspaceKeeper workspaceKeeper = Mockito.mock(WorkspaceKeeper.class);
    Mockito.when(workspaceKeeper.getOrganization()).thenReturn(Optional.of(organization));
    Mockito.when(workspaceKeeper.getProject()).thenReturn(Optional.of(project));
    CollectionDao collectionDao = Mockito.mock(CollectionDao.class);
    LinkTypeDao linkTypeDao = Mockito.mock(LinkTypeDao.class);
    ViewDao viewDao = Mockito.mock(ViewDao.class);
    UserDao userDao = Mockito.mock(UserDao.class);
    Mockito.when(userDao.getUserById(USER)).thenReturn(user);
    GroupDao groupDao = Mockito.mock(GroupDao.class);
    Group group = Mockito.mock(Group.class);
    Mockito.when(group.getId()).thenReturn(GROUP);
    Mockito.when(group.getUsers()).thenReturn(Collections.singletonList(USER));
    Mockito.when(groupDao.getAllGroups("LMR")).thenReturn(Collections.singletonList(group));
    FavoriteItemDao favoriteItemDao = Mockito.mock(FavoriteItemDao.class);
    DocumentDao documentDao = Mockito.mock(DocumentDao.class);
    permissionsChecker = new PermissionsChecker(authenticatedUser, workspaceKeeper, userDao, groupDao, collectionDao, viewDao, linkTypeDao, favoriteItemDao, documentDao);
    permissionsChecker.init();
}
Also used : Group(io.lumeer.api.model.Group) User(io.lumeer.api.model.User) Organization(io.lumeer.api.model.Organization) WorkspaceKeeper(io.lumeer.core.WorkspaceKeeper) ViewDao(io.lumeer.storage.api.dao.ViewDao) DocumentDao(io.lumeer.storage.api.dao.DocumentDao) Role(io.lumeer.api.model.Role) Project(io.lumeer.api.model.Project) UserDao(io.lumeer.storage.api.dao.UserDao) LinkTypeDao(io.lumeer.storage.api.dao.LinkTypeDao) GroupDao(io.lumeer.storage.api.dao.GroupDao) FavoriteItemDao(io.lumeer.storage.api.dao.FavoriteItemDao) CollectionDao(io.lumeer.storage.api.dao.CollectionDao) Before(org.junit.Before)

Aggregations

Project (io.lumeer.api.model.Project)2 User (io.lumeer.api.model.User)2 CollectionDao (io.lumeer.storage.api.dao.CollectionDao)2 DocumentDao (io.lumeer.storage.api.dao.DocumentDao)2 FavoriteItemDao (io.lumeer.storage.api.dao.FavoriteItemDao)2 GroupDao (io.lumeer.storage.api.dao.GroupDao)2 LinkTypeDao (io.lumeer.storage.api.dao.LinkTypeDao)2 AllowedPermissions (io.lumeer.api.model.AllowedPermissions)1 Attribute (io.lumeer.api.model.Attribute)1 Collection (io.lumeer.api.model.Collection)1 CollectionPurpose (io.lumeer.api.model.CollectionPurpose)1 Document (io.lumeer.api.model.Document)1 FileAttachment (io.lumeer.api.model.FileAttachment)1 Group (io.lumeer.api.model.Group)1 LinkType (io.lumeer.api.model.LinkType)1 Organization (io.lumeer.api.model.Organization)1 Permission (io.lumeer.api.model.Permission)1 Permissions (io.lumeer.api.model.Permissions)1 ResourceType (io.lumeer.api.model.ResourceType)1 Role (io.lumeer.api.model.Role)1