From 7f9fa9fe0a284f64ef4b680bad24e281ae4357ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kov=C3=A1=C4=8Dik?= Date: Mon, 28 Apr 2025 12:33:00 +0200 Subject: [PATCH 01/13] [NAE-2072] Workspaces - add workspace id to import - add workspace to tests --- .../application/engine/DevConsole.groovy | 12 +++-- .../engine/migration/ActionMigration.groovy | 3 +- .../engine/startup/ImportHelper.groovy | 16 ++---- .../engine/auth/web/UserController.java | 16 ++++++ .../web/requestbodies/UpdateUserRequest.java | 2 + .../domain/ElasticPetriNetRepository.java | 2 +- .../elastic/service/ElasticCaseService.java | 1 + .../service/ElasticPetriNetService.java | 8 ++- .../elastic/service/ElasticTaskService.java | 1 + .../service/ElasticViewPermissionService.java | 6 +++ .../repositories/PetriNetRepository.java | 14 +++--- .../domain/roles/ProcessRoleRepository.java | 12 +++-- .../petrinet/service/PetriNetService.java | 49 ++++++++++++------- .../petrinet/service/ProcessRoleService.java | 18 +++---- .../service/interfaces/IPetriNetService.java | 12 ++--- .../petrinet/web/PetriNetController.java | 5 +- .../service/SecurityContextService.java | 2 + .../startup/runner/AnonymousRoleRunner.java | 6 ++- .../startup/runner/DefaultRoleRunner.java | 6 ++- .../domain/repositories/CaseRepository.java | 4 +- .../domain/repositories/TaskRepository.java | 6 +-- .../workflow/service/CaseSearchService.java | 1 + .../workflow/service/TaskSearchService.java | 2 + .../engine/workflow/service/TaskService.java | 3 +- .../engine/action/AssignActionTest.groovy | 5 +- .../engine/action/AssignRemoveTest.groovy | 3 +- .../engine/action/RemoveActionTest.groovy | 3 +- .../auth/AuthenticationControllerTest.groovy | 3 +- .../engine/auth/SecurityContextTest.groovy | 3 +- .../auth/TaskAuthorizationServiceTest.groovy | 5 +- .../WorkflowAuthorizationServiceTest.groovy | 5 +- .../elastic/DataSearchRequestTest.groovy | 3 +- .../engine/elastic/ElasticSearchTest.groovy | 5 +- .../engine/elastic/ElasticTaskTest.groovy | 3 +- .../engine/elastic/ReindexTest.groovy | 3 +- .../PredefinedRolesPermissionsTest.groovy | 3 +- .../engine/importer/UserListTest.groovy | 3 +- .../ipc/AssignCancelFinishWithCaseTest.groovy | 3 +- .../application/engine/ipc/CaseApiTest.groovy | 5 +- .../application/engine/ipc/TaskApiTest.groovy | 15 +++--- .../pdf/service/PdfGeneratorTest.groovy | 27 +++++----- .../petrinet/domain/ActionRefTest.groovy | 3 +- .../petrinet/domain/ArcOrderTest.groovy | 3 +- .../engine/petrinet/domain/EventTest.groovy | 3 +- .../petrinet/domain/FunctionsTest.groovy | 31 ++++++------ .../petrinet/domain/ImporterTest.groovy | 18 ++++--- .../petrinet/domain/PetriNetTest.groovy | 9 ++-- .../domain/dataset/CaseFieldTest.groovy | 7 +-- .../dataset/ChangeCasePropertyTest.groovy | 3 +- .../dataset/ChangeFieldValueInitTest.groovy | 3 +- .../domain/dataset/ChoiceFieldTest.groovy | 3 +- .../domain/dataset/DynamicCaseNameTest.groovy | 3 +- .../domain/dataset/DynamicChoicesTest.groovy | 3 +- .../dataset/DynamicDefaultValueTest.groovy | 3 +- .../dataset/DynamicEnumerationTest.groovy | 3 +- .../DynamicValidationPerformanceTest.groovy | 5 +- .../dataset/DynamicValidationTest.groovy | 3 +- .../domain/dataset/FileFieldTest.groovy | 3 +- .../domain/dataset/FileListFieldTest.groovy | 3 +- .../domain/dataset/MapFieldTest.groovy | 7 +-- .../domain/roles/ProcessRoleTest.groovy | 3 +- .../service/PetriNetServiceTest.groovy | 2 +- .../web/PetriNetControllerTest.groovy | 3 +- .../ConstructorAndDestructorTest.java | 4 +- .../engine/importer/ImporterTest.java | 16 +++--- .../service/ProcessRoleServiceTest.java | 11 +++-- .../workflow/service/TaskServiceTest.java | 6 ++- .../engine/workflow/web/VariableArcsTest.java | 4 +- 68 files changed, 290 insertions(+), 179 deletions(-) diff --git a/src/main/groovy/com/netgrif/application/engine/DevConsole.groovy b/src/main/groovy/com/netgrif/application/engine/DevConsole.groovy index c62367a221e..f7ccdc2ada7 100644 --- a/src/main/groovy/com/netgrif/application/engine/DevConsole.groovy +++ b/src/main/groovy/com/netgrif/application/engine/DevConsole.groovy @@ -1,5 +1,6 @@ package com.netgrif.application.engine +import com.netgrif.core.auth.domain.LoggedUser import com.netgrif.core.importer.model.Document import com.netgrif.application.engine.petrinet.domain.repositories.PetriNetRepository import com.netgrif.application.engine.workflow.domain.repositories.CaseRepository @@ -7,6 +8,7 @@ import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.annotation.Profile +import org.springframework.security.core.Authentication import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.RequestMapping @@ -33,15 +35,17 @@ class DevConsole { private PetriNetRepository netRepository @GetMapping(value = "/dataset/{title}", produces = APPLICATION_JSON_VALUE) - String dataset(@PathVariable String title) { - def useCase = caseRepository.findAll().find { it.title == title } + String dataset(@PathVariable String title, Authentication auth) { + LoggedUser loggedUser = (LoggedUser) auth.getPrincipal(); + def useCase = caseRepository.findAllByWorkspaceId(loggedUser.getWorkspaceId()).find { it.title == title } return "{ ${useCase?.dataSet?.collect { "\"${useCase?.petriNet?.dataSet?.get(it?.key)?.importId}:${useCase?.petriNet?.dataSet?.get(it?.key)?.name?.toString()?.replaceAll("\n[ ]{2}", "")}\":\"${it?.value?.value as String}\"" }?.join(", ")} }" } @GetMapping(value = "/net/{title}", produces = APPLICATION_XML_VALUE) - String netSnapshot(@PathVariable String title) { + String netSnapshot(@PathVariable String title, Authentication auth) { try { - def useCase = caseRepository.findAll().find { it.title == title } + LoggedUser loggedUser = (LoggedUser) auth.getPrincipal(); + def useCase = caseRepository.findAllByWorkspaceId(loggedUser.getWorkspaceId()).find { it.title == title } def net = useCase.petriNet def xml = new File(net.importXmlPath) diff --git a/src/main/groovy/com/netgrif/application/engine/migration/ActionMigration.groovy b/src/main/groovy/com/netgrif/application/engine/migration/ActionMigration.groovy index c630ede57d5..3a2e6b71eb8 100644 --- a/src/main/groovy/com/netgrif/application/engine/migration/ActionMigration.groovy +++ b/src/main/groovy/com/netgrif/application/engine/migration/ActionMigration.groovy @@ -1,5 +1,6 @@ package com.netgrif.application.engine.migration +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.auth.service.UserService import com.netgrif.core.petrinet.domain.PetriNet import com.netgrif.core.petrinet.domain.VersionType @@ -24,7 +25,7 @@ class ActionMigration { void migrateActions(String petriNetPath) { InputStream netStream = new ClassPathResource(petriNetPath).inputStream - ImportPetriNetEventOutcome newPetriNet = petriNetService.importPetriNet(netStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())) + ImportPetriNetEventOutcome newPetriNet = petriNetService.importPetriNet(netStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) List oldPetriNets if(newPetriNet.getNet() != null) { diff --git a/src/main/groovy/com/netgrif/application/engine/startup/ImportHelper.groovy b/src/main/groovy/com/netgrif/application/engine/startup/ImportHelper.groovy index 7d1684b4a43..c811f5be226 100644 --- a/src/main/groovy/com/netgrif/application/engine/startup/ImportHelper.groovy +++ b/src/main/groovy/com/netgrif/application/engine/startup/ImportHelper.groovy @@ -3,11 +3,9 @@ package com.netgrif.application.engine.startup import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.node.ObjectNode import com.netgrif.adapter.petrinet.service.ProcessRoleService -import com.netgrif.application.engine.petrinet.domain.repositories.PetriNetRepository import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.application.engine.petrinet.service.interfaces.IUriService import com.netgrif.application.engine.startup.runner.SuperCreatorRunner -import com.netgrif.application.engine.workflow.domain.repositories.CaseRepository import com.netgrif.application.engine.workflow.service.interfaces.IDataService import com.netgrif.application.engine.workflow.service.interfaces.ITaskService import com.netgrif.application.engine.workflow.service.interfaces.IWorkflowService @@ -52,15 +50,9 @@ class ImportHelper { private static final Logger log = LoggerFactory.getLogger(ImportHelper.class.name) - @Autowired - private PetriNetRepository petriNetRepository - @Autowired private UserService userService - @Autowired - private CaseRepository caseRepository - @Autowired private AuthorityService authorityService @@ -113,13 +105,13 @@ class ImportHelper { return authorityService.getOrCreate(name) } - Optional createNet(String fileName, String release, LoggedUser author = userService.transformToLoggedUser(userService.getSystem()), String uriNodeId = uriService.getDefault().stringId) { - return createNet(fileName, VersionType.valueOf(release.trim().toUpperCase()), author, uriNodeId) + Optional createNet(String fileName, String release, LoggedUser author = userService.transformToLoggedUser(userService.getSystem()), String uriNodeId = uriService.getDefault().stringId, String workspaceId = WorkspaceConstants.DEFAULT_WORKSPACE_ID) { + return createNet(fileName, VersionType.valueOf(release.trim().toUpperCase()), author, uriNodeId, workspaceId) } - Optional createNet(String fileName, VersionType release = VersionType.MAJOR, LoggedUser author = userService.transformToLoggedUser(userService.getSystem()), String uriNodeId = uriService.getDefault().stringId) { + Optional createNet(String fileName, VersionType release = VersionType.MAJOR, LoggedUser author = userService.transformToLoggedUser(userService.getSystem()), String uriNodeId = uriService.getDefault().stringId, String workspaceId = WorkspaceConstants.DEFAULT_WORKSPACE_ID) { InputStream netStream = new ClassPathResource("petriNets/$fileName" as String).inputStream - PetriNet petriNet = petriNetService.importPetriNet(netStream, release, author, uriNodeId).getNet() + PetriNet petriNet = petriNetService.importPetriNet(netStream, release, author, uriNodeId, workspaceId).getNet() log.info("Imported '${petriNet?.title?.defaultValue}' ['${petriNet?.identifier}', ${petriNet?.stringId}]") return Optional.of(petriNet) } diff --git a/src/main/java/com/netgrif/application/engine/auth/web/UserController.java b/src/main/java/com/netgrif/application/engine/auth/web/UserController.java index e8c3d507ff6..27a5c4090f7 100644 --- a/src/main/java/com/netgrif/application/engine/auth/web/UserController.java +++ b/src/main/java/com/netgrif/application/engine/auth/web/UserController.java @@ -245,4 +245,20 @@ public MessageResource savePreferences(@RequestBody Preferences preferences, Aut return MessageResource.errorMessage("Saving user preferences failed"); } } + + @Operation(summary = "Change Workspace", security = {@SecurityRequirement(name = "BasicAuth")}) + @PostMapping(value = "/workspace/{id}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaTypes.HAL_JSON_VALUE) + public MessageResource changeWorkspace(@PathVariable("id") String workspaceId, Authentication auth, Locale locale) { + try { + LoggedUser loggedUser = (LoggedUser) auth.getPrincipal(); + loggedUser.setWorkspaceId(workspaceId); + securityContextService.forceReloadSecurityContext(loggedUser); + log.info("Changing active workspace for user " + loggedUser.getEmail()); + return MessageResource.successMessage("User workspace changed"); + } catch (Exception e) { + log.error(e.getMessage(), e); + return MessageResource.errorMessage("Changing user workspace failed"); + } + } + } diff --git a/src/main/java/com/netgrif/application/engine/auth/web/requestbodies/UpdateUserRequest.java b/src/main/java/com/netgrif/application/engine/auth/web/requestbodies/UpdateUserRequest.java index 5f50b221576..e99c628fd43 100644 --- a/src/main/java/com/netgrif/application/engine/auth/web/requestbodies/UpdateUserRequest.java +++ b/src/main/java/com/netgrif/application/engine/auth/web/requestbodies/UpdateUserRequest.java @@ -25,6 +25,8 @@ public class UpdateUserRequest implements IUser, Serializable { public String surname; + public String workspaceId; + public UpdateUserRequest() { } diff --git a/src/main/java/com/netgrif/application/engine/elastic/domain/ElasticPetriNetRepository.java b/src/main/java/com/netgrif/application/engine/elastic/domain/ElasticPetriNetRepository.java index e912c447bb2..3a7a9aa95e9 100644 --- a/src/main/java/com/netgrif/application/engine/elastic/domain/ElasticPetriNetRepository.java +++ b/src/main/java/com/netgrif/application/engine/elastic/domain/ElasticPetriNetRepository.java @@ -11,7 +11,7 @@ public interface ElasticPetriNetRepository extends ElasticsearchRepository findAllByUriNodeId(String uriNodeId); + List findAllByUriNodeIdAndWorkspaceId(String uriNodeId, String workspaceId); void deleteAllByStringId(String id); } diff --git a/src/main/java/com/netgrif/application/engine/elastic/service/ElasticCaseService.java b/src/main/java/com/netgrif/application/engine/elastic/service/ElasticCaseService.java index 55e962426c9..962825b1c36 100644 --- a/src/main/java/com/netgrif/application/engine/elastic/service/ElasticCaseService.java +++ b/src/main/java/com/netgrif/application/engine/elastic/service/ElasticCaseService.java @@ -215,6 +215,7 @@ protected BoolQuery.Builder buildSingleQuery(CaseSearchRequest request, LoggedUs buildCaseIdQuery(request, query); buildUriNodeIdQuery(request, query); buildTagsQuery(request, query); + buildWorkspaceQuery(query, user); boolean resultAlwaysEmpty = buildGroupQuery(request, user, locale, query); // TODO: filtered query https://stackoverflow.com/questions/28116404/filtered-query-using-nativesearchquerybuilder-in-spring-data-elasticsearch diff --git a/src/main/java/com/netgrif/application/engine/elastic/service/ElasticPetriNetService.java b/src/main/java/com/netgrif/application/engine/elastic/service/ElasticPetriNetService.java index 1cff92296bb..76b24302635 100644 --- a/src/main/java/com/netgrif/application/engine/elastic/service/ElasticPetriNetService.java +++ b/src/main/java/com/netgrif/application/engine/elastic/service/ElasticPetriNetService.java @@ -1,5 +1,6 @@ package com.netgrif.application.engine.elastic.service; +import com.netgrif.auth.service.UserService; import com.netgrif.core.elastic.domain.ElasticPetriNet; import com.netgrif.application.engine.elastic.domain.ElasticPetriNetRepository; import com.netgrif.application.engine.elastic.service.executors.Executor; @@ -21,12 +22,15 @@ public class ElasticPetriNetService implements IElasticPetriNetService { private final ElasticPetriNetRepository repository; + private final UserService userService; + private final Executor executors; private IPetriNetService petriNetService; - public ElasticPetriNetService(ElasticPetriNetRepository repository, Executor executors) { + public ElasticPetriNetService(ElasticPetriNetRepository repository, UserService userService, Executor executors) { this.repository = repository; + this.userService = userService; this.executors = executors; } @@ -86,7 +90,7 @@ public String findUriNodeId(PetriNet net) { @Override public List findAllByUriNodeId(String uriNodeId) { - List elasticPetriNets = repository.findAllByUriNodeId(uriNodeId); + List elasticPetriNets = repository.findAllByUriNodeIdAndWorkspaceId(uriNodeId, userService.getLoggedOrSystem().getWorkspaceId()); return petriNetService.findAllById(elasticPetriNets.stream().map(ElasticPetriNet::getStringId).collect(Collectors.toList())); } } diff --git a/src/main/java/com/netgrif/application/engine/elastic/service/ElasticTaskService.java b/src/main/java/com/netgrif/application/engine/elastic/service/ElasticTaskService.java index 9a736ff01c3..59f48cdc93a 100644 --- a/src/main/java/com/netgrif/application/engine/elastic/service/ElasticTaskService.java +++ b/src/main/java/com/netgrif/application/engine/elastic/service/ElasticTaskService.java @@ -204,6 +204,7 @@ protected BoolQuery.Builder buildSingleQuery(ElasticTaskSearchRequest request, L buildTransitionQuery(request, query); buildTagsQuery(request, query); buildStringQuery(request, query, user); + buildWorkspaceQuery(query, user); boolean resultAlwaysEmpty = buildGroupQuery(request, user, locale, query); if (resultAlwaysEmpty) diff --git a/src/main/java/com/netgrif/application/engine/elastic/service/ElasticViewPermissionService.java b/src/main/java/com/netgrif/application/engine/elastic/service/ElasticViewPermissionService.java index 3ac158b874e..341c1d5d2fb 100644 --- a/src/main/java/com/netgrif/application/engine/elastic/service/ElasticViewPermissionService.java +++ b/src/main/java/com/netgrif/application/engine/elastic/service/ElasticViewPermissionService.java @@ -92,4 +92,10 @@ private BoolQuery union(BoolQuery setA, BoolQuery setB) { unionSet.should(setB._toQuery()); return unionSet.build(); } + + protected void buildWorkspaceQuery(BoolQuery.Builder query, LoggedUser user) { + BoolQuery.Builder workspaceQuery = new BoolQuery.Builder(); + workspaceQuery.must(termQuery("workspaceId", user.getWorkspaceId())._toQuery()); + query.filter(workspaceQuery.build()._toQuery()); + } } diff --git a/src/main/java/com/netgrif/application/engine/petrinet/domain/repositories/PetriNetRepository.java b/src/main/java/com/netgrif/application/engine/petrinet/domain/repositories/PetriNetRepository.java index 77f4ba930c3..5aa135030c6 100644 --- a/src/main/java/com/netgrif/application/engine/petrinet/domain/repositories/PetriNetRepository.java +++ b/src/main/java/com/netgrif/application/engine/petrinet/domain/repositories/PetriNetRepository.java @@ -16,17 +16,19 @@ public interface PetriNetRepository extends MongoRepository, Q PetriNet findByImportId(String id); - List findAllByIdentifier(String identifier); + List findAllByIdentifierAndWorkspaceId(String identifier, String workspaceId); - PetriNet findByIdentifierAndVersion(String identifier, Version version); + PetriNet findByIdentifierAndVersionAndWorkspaceId(String identifier, Version version, String workspaceId); - Page findByIdentifier(String identifier, Pageable pageable); + Page findByIdentifierAndWorkspaceId(String identifier, String workspaceId, Pageable pageable); - Page findByIdentifierIn(List identifier, Pageable pageable); + Page findByIdentifierInAndWorkspaceId(List identifier, String workspaceId, Pageable pageable); - List findAllByVersion(Version version); + List findAllByVersionAndWorkspaceId(Version version, String workspaceId); - List findAllByUriNodeId(String uri); + List findAllByUriNodeIdAndWorkspaceId(String uri, String workspaceId); + + List findAllByWorkspaceId(String workspaceId); void deleteBy_id(ObjectId id); } \ No newline at end of file diff --git a/src/main/java/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleRepository.java b/src/main/java/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleRepository.java index 726e6251b53..68983db7d64 100755 --- a/src/main/java/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleRepository.java +++ b/src/main/java/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleRepository.java @@ -16,22 +16,24 @@ public interface ProcessRoleRepository extends MongoRepository findAllByWorkspaceId(String workspaceId); + Set findAllByProcessId(String netId); Set findAllByImportIdIn(Set importIds); - Set findAllByName_DefaultValue(String name); + Set findAllByName_DefaultValueAndWorkspaceId(String name, String workspaceId); - Set findAllByImportId(String importId); + Set findAllByImportIdAndWorkspaceId(String importId, String workspaceId); - Set findAllByGlobalIsTrue(); + Set findAllByGlobalIsTrueAndWorkspaceId(String workspaceId); @Query("{ '_id.objectId': ?0 }") - Optional findByIdObjectId(ObjectId objectId); - void deleteAllBy_idIn(Collection ids); + Optional findByIdObjectId(ObjectId objectId); + void deleteAllBy_idIn(Collection ids); //TODO: It goes one at a time... make bulk default Set findAllById(Set ids) { return ids.stream() diff --git a/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java b/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java index 934c35a4f99..6daa9258a6d 100644 --- a/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java +++ b/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java @@ -187,33 +187,33 @@ public List get(List petriNetIds) { @Override @Deprecated - public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, String releaseType, LoggedUser author) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException { - return importPetriNet(xmlFile, VersionType.valueOf(releaseType.trim().toUpperCase()), author, uriService.getDefault().getStringId()); + public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, String releaseType, LoggedUser author, String workspaceId) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException { + return importPetriNet(xmlFile, VersionType.valueOf(releaseType.trim().toUpperCase()), author, uriService.getDefault().getStringId(), workspaceId); } @Override @Deprecated - public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, String releaseType, LoggedUser author, String uriNodeId) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException { - return importPetriNet(xmlFile, VersionType.valueOf(releaseType.trim().toUpperCase()), author, uriNodeId); + public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, String releaseType, LoggedUser author, String uriNodeId, String workspaceId) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException { + return importPetriNet(xmlFile, VersionType.valueOf(releaseType.trim().toUpperCase()), author, uriNodeId, workspaceId); } @Override - public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser author) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException { - return importPetriNet(xmlFile, releaseType, author, uriService.getDefault().getStringId()); + public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser author, String workspaceId) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException { + return importPetriNet(xmlFile, releaseType, author, uriService.getDefault().getStringId(), workspaceId); } @Override - public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser author, Map params) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException { - return importPetriNet(xmlFile, releaseType, author, uriService.getDefault().getStringId(), params); + public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser author, String workspaceId, Map params) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException { + return importPetriNet(xmlFile, releaseType, author, uriService.getDefault().getStringId(), workspaceId, params); } @Override - public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser author, String uriNodeId) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException { - return importPetriNet(xmlFile, releaseType, author, uriNodeId, new HashMap<>()); + public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser author, String uriNodeId, String workspaceId) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException { + return importPetriNet(xmlFile, releaseType, author, uriNodeId, workspaceId, new HashMap<>()); } @Override - public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser author, String uriNodeId, Map params) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException { + public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser author, String uriNodeId, String workspaceId, Map params) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException { ImportPetriNetEventOutcome outcome = new ImportPetriNetEventOutcome(); ByteArrayOutputStream xmlCopy = new ByteArrayOutputStream(); IOUtils.copy(xmlFile, xmlCopy); @@ -223,12 +223,19 @@ public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionTyp } PetriNet net = imported.get(); net.setUriNodeId(uriNodeId); + if (workspaceId == null || workspaceId.isEmpty()) { + throw new MissingPetriNetMetaDataException(Arrays.asList("WorkspaceId")); + } + net.setWorkspaceId(workspaceId); + net.setUri(workspaceId + "/" + uriNodeId); PetriNet existingNet = getNewestVersionByIdentifier(net.getIdentifier()); if (existingNet != null) { net.setVersion(existingNet.getVersion()); net.incrementVersion(releaseType); } + net.getRoles().values().forEach(role -> role.setWorkspaceId(net.getWorkspaceId())); + net.getTransitions().values().forEach(transition -> transition.setWorkspaceId(net.getWorkspaceId())); processRoleService.saveAll(net.getRoles().values()); net.setAuthor(author.transformToAuthor()); functionCacheService.cachePetriNetFunctions(net); @@ -286,7 +293,7 @@ public PetriNet getPetriNet(String id) { @Override @Cacheable(value = "petriNetByIdentifier", key = "#identifier+#version.toString()", unless = "#result == null") public PetriNet getPetriNet(String identifier, Version version) { - PetriNet net = repository.findByIdentifierAndVersion(identifier, version); + PetriNet net = repository.findByIdentifierAndVersionAndWorkspaceId(identifier, version, userService.getLoggedOrSystem().getWorkspaceId()); if (net == null) { return null; } @@ -296,7 +303,7 @@ public PetriNet getPetriNet(String identifier, Version version) { @Override public List getByIdentifier(String identifier) { - List nets = repository.findAllByIdentifier(identifier); + List nets = repository.findAllByIdentifierAndWorkspaceId(identifier, userService.getLoggedOrSystem().getWorkspaceId()); nets.forEach(PetriNet::initializeArcs); return nets; } @@ -316,7 +323,7 @@ public List findAllById(List ids) { @Override @Cacheable(value = "petriNetNewest", unless = "#result == null") public PetriNet getNewestVersionByIdentifier(String identifier) { - List nets = repository.findByIdentifier(identifier, PageRequest.of(0, 1, Sort.Direction.DESC, "version.major", "version.minor", "version.patch")).getContent(); + List nets = repository.findByIdentifierAndWorkspaceId(identifier, userService.getLoggedOrSystem().getWorkspaceId(), PageRequest.of(0, 1, Sort.Direction.DESC, "version.major", "version.minor", "version.patch")).getContent(); if (nets.isEmpty()) { return null; } @@ -332,7 +339,7 @@ public PetriNet getNewestVersionByIdentifier(String identifier) { @Override public List getExistingPetriNetIdentifiersFromIdentifiersList(List identifiers) { Aggregation agg = Aggregation.newAggregation( - Aggregation.match(Criteria.where("identifier").in(identifiers)), + Aggregation.match(Criteria.where("identifier").in(identifiers).andOperator(Criteria.where("workspaceId").is(userService.getLoggedOrSystem().getWorkspaceId()))), Aggregation.group("identifier"), Aggregation.project("identifier").and("identifier").previousOperation() ); @@ -361,7 +368,7 @@ public PetriNetImportReference getNetFromCase(String caseId) { @Override public List getAll() { - List nets = repository.findAll(); + List nets = repository.findAllByWorkspaceId(userService.getLoggedOrSystem().getWorkspaceId()); nets.forEach(PetriNet::initializeArcs); return nets; } @@ -395,7 +402,10 @@ public List getReferencesByVersion(Version version, LoggedUse if (version == null) { GroupOperation groupByIdentifier = Aggregation.group("identifier").max("version").as("version"); - Aggregation aggregation = Aggregation.newAggregation(groupByIdentifier); + Aggregation aggregation = Aggregation.newAggregation( + Aggregation.match(Criteria.where("workspaceId").is(userService.getLoggedOrSystem().getWorkspaceId())), + groupByIdentifier + ); AggregationResults results = mongoTemplate.aggregate(aggregation, "petriNet", Document.class); references = results.getMappedResults().stream() .map(doc -> { @@ -405,7 +415,7 @@ public List getReferencesByVersion(Version version, LoggedUse }) .collect(Collectors.toList()); } else { - references = repository.findAllByVersion(version).stream() + references = repository.findAllByVersionAndWorkspaceId(version, userService.getLoggedOrSystem().getWorkspaceId()).stream() .map(net -> transformToReference(net, locale)).collect(Collectors.toList()); } @@ -414,7 +424,7 @@ public List getReferencesByVersion(Version version, LoggedUse @Override public List getReferencesByUsersProcessRoles(LoggedUser user, Locale locale) { - Query query = Query.query(getProcessRolesCriteria(user)); + Query query = Query.query(getProcessRolesCriteria(user)).addCriteria(Criteria.where("workspaceId").is(userService.getLoggedOrSystem().getWorkspaceId())); return mongoTemplate.find(query, PetriNet.class).stream().map(net -> transformToReference(net, locale)).collect(Collectors.toList()); } @@ -465,6 +475,7 @@ public Page search(PetriNetSearch criteriaClass, LoggedUser u Query query = new Query(); Query queryTotal = new Query(); + this.addValueCriteria(query, queryTotal, Criteria.where("workspaceId").is(user.getWorkspaceId())); if (!user.getSelfOrImpersonated().isAdmin()) query.addCriteria(getProcessRolesCriteria(user.getSelfOrImpersonated())); diff --git a/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java b/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java index 6b8c16754b4..7aeca0df3c0 100644 --- a/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java +++ b/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java @@ -63,7 +63,7 @@ public ProcessRole save(ProcessRole processRole) { @Override public List getAll() { - return processRoleRepository.findAll(); + return processRoleRepository.findAllByWorkspaceId(userService.getLoggedOrSystem().getWorkspaceId()); } @Override @@ -116,7 +116,7 @@ public ProcessRole findById(ProcessResourceId processResourceId) { @Override public List saveAll(Iterable entities) { return StreamSupport.stream(entities.spliterator(), false).map(processRole -> { - if (!processRole.isGlobal() || processRoleRepository.findAllByImportId(processRole.getImportId()).isEmpty()) { + if (!processRole.isGlobal() || processRoleRepository.findAllByImportIdAndWorkspaceId(processRole.getImportId(), userService.getLoggedOrSystem().getWorkspaceId()).isEmpty()) { return processRoleRepository.save(processRole); } return null; @@ -290,12 +290,12 @@ private void removeOldAndAssignNewRolesToUser(IUser user, Set reque @Override public List findAll() { - return processRoleRepository.findAll(); + return processRoleRepository.findAllByWorkspaceId(userService.getLoggedOrSystem().getWorkspaceId()); } @Override public Set findAllGlobalRoles() { - return processRoleRepository.findAllByGlobalIsTrue(); + return processRoleRepository.findAllByGlobalIsTrueAndWorkspaceId(userService.getLoggedOrSystem().getWorkspaceId()); } @Override @@ -313,7 +313,7 @@ private List findAll(PetriNet net) { @Override public ProcessRole defaultRole() { if (defaultRole == null) { - Set roles = processRoleRepository.findAllByName_DefaultValue(ProcessRole.DEFAULT_ROLE); + Set roles = processRoleRepository.findAllByName_DefaultValueAndWorkspaceId(ProcessRole.DEFAULT_ROLE, userService.getLoggedOrSystem().getWorkspaceId()); if (roles.isEmpty()) throw new IllegalStateException("No default process role has been found!"); if (roles.size() > 1) @@ -326,7 +326,7 @@ public ProcessRole defaultRole() { @Override public ProcessRole anonymousRole() { if (anonymousRole == null) { - Set roles = processRoleRepository.findAllByImportId(ProcessRole.ANONYMOUS_ROLE); + Set roles = processRoleRepository.findAllByImportIdAndWorkspaceId(ProcessRole.ANONYMOUS_ROLE, userService.getLoggedOrSystem().getWorkspaceId()); if (roles.isEmpty()) throw new IllegalStateException("No anonymous process role has been found!"); if (roles.size() > 1) @@ -344,17 +344,17 @@ public ProcessRole anonymousRole() { @Deprecated(forRemoval = true, since = "6.2.0") @Override public ProcessRole findByImportId(String importId) { - return processRoleRepository.findAllByImportId(importId).stream().findFirst().orElse(null); + return processRoleRepository.findAllByImportIdAndWorkspaceId(importId, userService.getLoggedOrSystem().getWorkspaceId()).stream().findFirst().orElse(null); } @Override public Set findAllByImportId(String importId) { - return processRoleRepository.findAllByImportId(importId); + return processRoleRepository.findAllByImportIdAndWorkspaceId(importId, userService.getLoggedOrSystem().getWorkspaceId()); } @Override public Set findAllByDefaultName(String name) { - return processRoleRepository.findAllByName_DefaultValue(name); + return processRoleRepository.findAllByName_DefaultValueAndWorkspaceId(name, userService.getLoggedOrSystem().getWorkspaceId()); } @Override diff --git a/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java b/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java index 01fa3fd0471..6e878bb1ce2 100644 --- a/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java +++ b/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java @@ -42,18 +42,18 @@ static DataFieldReference transformToReference(PetriNet net, Transition transiti } @Deprecated - ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, String releaseType, LoggedUser user) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException; + ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, String releaseType, LoggedUser user, String workspaceId) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException; @Deprecated - ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, String releaseType, LoggedUser user, String uriNodeId) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException; + ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, String releaseType, LoggedUser user, String uriNodeId, String workspaceId) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException; - ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser user) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException; + ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser user, String workspaceId) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException; - ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser user, Map params) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException; + ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser user, String workspaceId, Map params) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException; - ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser user, String uriNodeId) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException; + ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser user, String uriNodeId, String workspaceId) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException; - ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser user, String uriNodeId, Map params) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException; + ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser user, String uriNodeId, String workspaceId, Map params) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException; Optional save(PetriNet petriNet); diff --git a/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java b/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java index 277065edc11..64f2230bfd5 100644 --- a/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java +++ b/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java @@ -1,6 +1,7 @@ package com.netgrif.application.engine.petrinet.web; import com.netgrif.application.engine.AsyncRunner; +import com.netgrif.application.engine.petrinet.service.PetriNetService; import com.netgrif.application.engine.petrinet.web.responsebodies.PetriNetImportReference; import com.netgrif.application.engine.petrinet.web.responsebodies.PetriNetReferenceResources; import com.netgrif.application.engine.petrinet.web.responsebodies.ProcessRolesResource; @@ -18,6 +19,7 @@ import com.netgrif.adapter.petrinet.service.ProcessRoleService; import com.netgrif.application.engine.workflow.domain.FileStorageConfiguration; import com.netgrif.application.engine.petrinet.web.responsebodies.*; +import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import com.netgrif.core.workflow.domain.eventoutcomes.petrinetoutcomes.ImportPetriNetEventOutcome; import com.netgrif.application.engine.workflow.domain.eventoutcomes.response.EventOutcomeWithMessage; import com.netgrif.application.engine.workflow.domain.eventoutcomes.response.EventOutcomeWithMessageResource; @@ -108,12 +110,13 @@ public static String decodeUrl(String s1) { public EntityModel importPetriNet( @RequestParam(value = "file", required = true) MultipartFile multipartFile, @RequestParam(value = "uriNodeId", required = true) String uriNodeId, + @RequestParam(value = "workspaceId", required = true) String workspaceId, @RequestParam(value = "meta", required = false) String releaseType, Authentication auth, Locale locale) throws MissingPetriNetMetaDataException, MissingIconKeyException { try { String decodedUriNodeId = new String(Base64.decodeBase64(uriNodeId)); VersionType release = releaseType == null ? VersionType.MAJOR : VersionType.valueOf(releaseType.trim().toUpperCase()); - ImportPetriNetEventOutcome importPetriNetOutcome = service.importPetriNet(multipartFile.getInputStream(), release, (LoggedUser) auth.getPrincipal(), decodedUriNodeId); + ImportPetriNetEventOutcome importPetriNetOutcome = service.importPetriNet(multipartFile.getInputStream(), release, (LoggedUser) auth.getPrincipal(), decodedUriNodeId, workspaceId == null ? WorkspaceConstants.DEFAULT_WORKSPACE_ID : workspaceId); return EventOutcomeWithMessageResource.successMessage("Petri net " + multipartFile.getOriginalFilename() + " imported successfully", LocalisedEventOutcomeFactory.from(importPetriNetOutcome, locale)); } catch (IOException e) { diff --git a/src/main/java/com/netgrif/application/engine/security/service/SecurityContextService.java b/src/main/java/com/netgrif/application/engine/security/service/SecurityContextService.java index 178d5ef25a8..420bff5e0a3 100644 --- a/src/main/java/com/netgrif/application/engine/security/service/SecurityContextService.java +++ b/src/main/java/com/netgrif/application/engine/security/service/SecurityContextService.java @@ -66,7 +66,9 @@ public void forceReloadSecurityContext(LoggedUser loggedUser) { private void reloadSecurityContext(LoggedUser loggedUser, boolean forceRefresh) { if (isUserLogged(loggedUser) && cachedTokens.contains(loggedUser.getId())) { if (forceRefresh) { + String workspaceId = loggedUser.getWorkspaceId(); loggedUser = (LoggedUser) userService.transformToLoggedUser(userService.findById(loggedUser.getId(), null)); + loggedUser.setWorkspaceId(workspaceId); } UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(loggedUser, SecurityContextHolder.getContext().getAuthentication().getCredentials(), ((LoggedUserImpl) loggedUser).getAuthorities()); SecurityContextHolder.getContext().setAuthentication(token); diff --git a/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java b/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java index 5f50851c11f..a9e6ddd225f 100644 --- a/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java +++ b/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java @@ -1,5 +1,6 @@ package com.netgrif.application.engine.startup.runner; +import com.netgrif.auth.service.UserService; import com.netgrif.core.petrinet.domain.I18nString; import com.netgrif.core.petrinet.domain.events.Event; import com.netgrif.core.petrinet.domain.events.EventType; @@ -7,6 +8,7 @@ import com.netgrif.application.engine.petrinet.domain.roles.ProcessRoleRepository; import com.netgrif.application.engine.startup.ApplicationEngineStartupRunner; import com.netgrif.application.engine.startup.annotation.RunnerOrder; +import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; @@ -23,10 +25,12 @@ public class AnonymousRoleRunner implements ApplicationEngineStartupRunner { private final ProcessRoleRepository repository; + private final UserService userService; + @Override public void run(ApplicationArguments args) throws Exception { log.info("Creating anonymous process role"); - Set role = repository.findAllByImportId(ProcessRole.ANONYMOUS_ROLE); + Set role = repository.findAllByImportIdAndWorkspaceId(ProcessRole.ANONYMOUS_ROLE, WorkspaceConstants.DEFAULT_WORKSPACE_ID); if (role != null && !role.isEmpty()) { log.info("Anonymous role already exists"); return; diff --git a/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java b/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java index 2e5f4e966b4..34710c2fed1 100644 --- a/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java +++ b/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java @@ -1,5 +1,6 @@ package com.netgrif.application.engine.startup.runner; +import com.netgrif.auth.service.UserService; import com.netgrif.core.petrinet.domain.I18nString; import com.netgrif.core.petrinet.domain.events.Event; import com.netgrif.core.petrinet.domain.events.EventType; @@ -7,6 +8,7 @@ import com.netgrif.application.engine.petrinet.domain.roles.ProcessRoleRepository; import com.netgrif.application.engine.startup.ApplicationEngineStartupRunner; import com.netgrif.application.engine.startup.annotation.RunnerOrder; +import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; @@ -25,10 +27,12 @@ public class DefaultRoleRunner implements ApplicationEngineStartupRunner { private final ProcessRoleRepository repository; + private final UserService userService; + @Override public void run(ApplicationArguments args) throws Exception { log.info("Creating default process role"); - Set role = repository.findAllByName_DefaultValue(ProcessRole.DEFAULT_ROLE); + Set role = repository.findAllByName_DefaultValueAndWorkspaceId(ProcessRole.DEFAULT_ROLE, WorkspaceConstants.DEFAULT_WORKSPACE_ID); if (role != null && !role.isEmpty()) { log.info("Default role already exists"); return; diff --git a/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/CaseRepository.java b/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/CaseRepository.java index 2c2a51f533c..ecb92259e27 100644 --- a/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/CaseRepository.java +++ b/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/CaseRepository.java @@ -19,10 +19,12 @@ @Repository public interface CaseRepository extends MongoRepository, QuerydslPredicateExecutor, QuerydslBinderCustomizer { - List findAllByProcessIdentifier(String identifier); + List findAllByProcessIdentifierAndWorkspaceId(String identifier, String workspaceId); List findAllBy_idIn(Iterable id); + List findAllByWorkspaceId(String workspaceId); + @Query("{ '_id.objectId': { $in: ?0 } }") List findAllByObjectIdsIn(List objectIds); diff --git a/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/TaskRepository.java b/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/TaskRepository.java index 74ade76e9bf..6183b37f675 100644 --- a/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/TaskRepository.java +++ b/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/TaskRepository.java @@ -22,13 +22,13 @@ public interface TaskRepository extends MongoRepository, QuerydslP Page findByCaseIdIn(Pageable pageable, Collection ids); - Page findByTransitionIdIn(Pageable pageable, Collection ids); + Page findByTransitionIdInAndWorkspaceId(Pageable pageable, Collection ids, String workspaceId); - List findAllByTransitionIdIn(Collection ids); + List findAllByTransitionIdInAndWorkspaceId(Collection ids, String workspaceId); Page findByUserId(Pageable pageable, String userId); - List findByUserIdAndFinishDateNotNull(Long userId); + List findByUserIdAndWorkspaceIdAndFinishDateNotNull(Long userId, String workspaceId); Task findByTransitionIdAndCaseId(String transitionId, String caseId); diff --git a/src/main/java/com/netgrif/application/engine/workflow/service/CaseSearchService.java b/src/main/java/com/netgrif/application/engine/workflow/service/CaseSearchService.java index afba1a25837..e669e46856f 100644 --- a/src/main/java/com/netgrif/application/engine/workflow/service/CaseSearchService.java +++ b/src/main/java/com/netgrif/application/engine/workflow/service/CaseSearchService.java @@ -94,6 +94,7 @@ public Predicate buildQuery(Map requestQuery, LoggedUser user, L permissionConstraints.or(buildViewUserQueryConstraint(loggedOrImpersonated)); permissionConstraints.andNot(buildNegativeViewUsersQueryConstraint(loggedOrImpersonated)); builder.and(permissionConstraints); + builder.and(QCase.case$.workspaceId.eq(loggedOrImpersonated.getWorkspaceId())); return builder; } diff --git a/src/main/java/com/netgrif/application/engine/workflow/service/TaskSearchService.java b/src/main/java/com/netgrif/application/engine/workflow/service/TaskSearchService.java index 575d90fc998..aa341921983 100644 --- a/src/main/java/com/netgrif/application/engine/workflow/service/TaskSearchService.java +++ b/src/main/java/com/netgrif/application/engine/workflow/service/TaskSearchService.java @@ -1,5 +1,6 @@ package com.netgrif.application.engine.workflow.service; +import com.netgrif.adapter.workflow.domain.QCase; import com.netgrif.core.auth.domain.LoggedUser; import com.netgrif.core.petrinet.domain.PetriNetSearch; import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService; @@ -113,6 +114,7 @@ private Predicate buildSingleQuery(TaskSearchRequest request, LoggedUser user, L buildFullTextQuery(request, builder); buildTransitionQuery(request, builder); buildTagsQuery(request, builder); + builder.and(QTask.task.workspaceId.eq(user.getWorkspaceId())); boolean resultAlwaysEmpty = buildGroupQuery(request, user, locale, builder); if (resultAlwaysEmpty) diff --git a/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java b/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java index 66057b06e5a..d8270de4554 100644 --- a/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java +++ b/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java @@ -723,7 +723,7 @@ public Page findByUser(Pageable pageable, IUser user) { @Override public Page findByTransitions(Pageable pageable, List transitions) { - return loadUsers(taskRepository.findByTransitionIdIn(pageable, transitions)); + return loadUsers(taskRepository.findByTransitionIdInAndWorkspaceId(pageable, transitions, userService.getLoggedOrSystem().getWorkspaceId())); } @Override @@ -811,6 +811,7 @@ private Task createFromTransition(Transition transition, Case useCase) { .processId(useCase.getPetriNetId()) .caseId(useCase.get_id().toString()) .transitionId(transition.getImportId()) + .workspaceId(transition.getWorkspaceId()) .layout(transition.getLayout()) .tags(transition.getTags()) .caseColor(useCase.getColor()) diff --git a/src/test/groovy/com/netgrif/application/engine/action/AssignActionTest.groovy b/src/test/groovy/com/netgrif/application/engine/action/AssignActionTest.groovy index a7b492131a0..ab1eed4eab1 100644 --- a/src/test/groovy/com/netgrif/application/engine/action/AssignActionTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/action/AssignActionTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.action import com.netgrif.adapter.auth.domain.AuthorityImpl +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.auth.service.UserService import com.netgrif.application.engine.TestHelper import com.netgrif.core.auth.domain.Authority @@ -106,10 +107,10 @@ class AssignActionTest { } private void createMainAndSecondaryNet() { - def mainNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/assignRoleMainNet_test_.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + def mainNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/assignRoleMainNet_test_.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert mainNet.getNet() != null - def secondaryNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/assignRoleSecondaryNet_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + def secondaryNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/assignRoleSecondaryNet_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert secondaryNet.getNet() != null this.mainNet = mainNet.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/action/AssignRemoveTest.groovy b/src/test/groovy/com/netgrif/application/engine/action/AssignRemoveTest.groovy index fa24cba9abc..203b558e54f 100644 --- a/src/test/groovy/com/netgrif/application/engine/action/AssignRemoveTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/action/AssignRemoveTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.action import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.auth.service.UserService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.core.petrinet.domain.throwable.MissingPetriNetMetaDataException @@ -65,7 +66,7 @@ class AssignRemoveTest { @Test @Disabled("Create functions or update test") public void testAssignAndRemoveRole() throws MissingPetriNetMetaDataException, IOException { - ImportPetriNetEventOutcome netOptional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/role_assign_remove_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + ImportPetriNetEventOutcome netOptional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/role_assign_remove_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); assert netOptional.getNet() != null; def net = netOptional.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/action/RemoveActionTest.groovy b/src/test/groovy/com/netgrif/application/engine/action/RemoveActionTest.groovy index e947ed5e4cd..b12d2298fea 100644 --- a/src/test/groovy/com/netgrif/application/engine/action/RemoveActionTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/action/RemoveActionTest.groovy @@ -1,5 +1,6 @@ package com.netgrif.application.engine.action +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.auth.service.UserService import com.netgrif.adapter.petrinet.service.ProcessRoleService import com.netgrif.application.engine.TestHelper @@ -92,7 +93,7 @@ class RemoveActionTest { .apply(springSecurity()) .build() - def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/removeRole_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/removeRole_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert net.getNet() != null this.petriNet = net.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/auth/AuthenticationControllerTest.groovy b/src/test/groovy/com/netgrif/application/engine/auth/AuthenticationControllerTest.groovy index 3b365d368ec..ae0f78123ef 100644 --- a/src/test/groovy/com/netgrif/application/engine/auth/AuthenticationControllerTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/auth/AuthenticationControllerTest.groovy @@ -3,6 +3,7 @@ package com.netgrif.application.engine.auth import com.icegreen.greenmail.configuration.GreenMailConfiguration import com.icegreen.greenmail.util.GreenMail import com.icegreen.greenmail.util.ServerSetup +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.auth.service.AuthorityService import com.netgrif.auth.service.UserService import com.netgrif.application.engine.TestHelper @@ -84,7 +85,7 @@ class AuthenticationControllerTest { smtpServer = new GreenMail(new ServerSetup(2525, null, "smtp")).withConfiguration(GreenMailConfiguration.aConfig().withDisabledAuthentication()) smtpServer.start() - def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/insurance_portal_demo_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/insurance_portal_demo_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert net.getNet() != null if (authorityService.findAll().size() == 0) importHelper.createAuthority(Authority.user) diff --git a/src/test/groovy/com/netgrif/application/engine/auth/SecurityContextTest.groovy b/src/test/groovy/com/netgrif/application/engine/auth/SecurityContextTest.groovy index 67c002e6c59..9c11eaddc07 100644 --- a/src/test/groovy/com/netgrif/application/engine/auth/SecurityContextTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/auth/SecurityContextTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.auth import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.auth.domain.IUser import com.netgrif.core.auth.domain.LoggedUser import com.netgrif.core.auth.domain.PasswordCredential @@ -71,7 +72,7 @@ class SecurityContextTest { user = userService.saveUser(user, null) assert user != null - net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() + net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert net != null } diff --git a/src/test/groovy/com/netgrif/application/engine/auth/TaskAuthorizationServiceTest.groovy b/src/test/groovy/com/netgrif/application/engine/auth/TaskAuthorizationServiceTest.groovy index 835678e4e97..85242aef73c 100644 --- a/src/test/groovy/com/netgrif/application/engine/auth/TaskAuthorizationServiceTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/auth/TaskAuthorizationServiceTest.groovy @@ -1,5 +1,6 @@ package com.netgrif.application.engine.auth +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.auth.service.UserService import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.application.engine.TestHelper @@ -157,11 +158,11 @@ class TaskAuthorizationServiceTest { @BeforeEach void init() { testHelper.truncateDbs() - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/task_authorization_service_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/task_authorization_service_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert net.getNet() != null this.net = net.getNet() - ImportPetriNetEventOutcome netWithUserRefs = petriNetService.importPetriNet(new FileInputStream("src/test/resources/task_authorization_service_test_with_userRefs.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + ImportPetriNetEventOutcome netWithUserRefs = petriNetService.importPetriNet(new FileInputStream("src/test/resources/task_authorization_service_test_with_userRefs.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netWithUserRefs.getNet() != null this.netWithUserRefs = netWithUserRefs.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/auth/WorkflowAuthorizationServiceTest.groovy b/src/test/groovy/com/netgrif/application/engine/auth/WorkflowAuthorizationServiceTest.groovy index 31a8eddd8bc..01eacfe0903 100644 --- a/src/test/groovy/com/netgrif/application/engine/auth/WorkflowAuthorizationServiceTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/auth/WorkflowAuthorizationServiceTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.auth import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.auth.domain.Authority; import com.netgrif.core.auth.domain.IUser import com.netgrif.core.auth.domain.User @@ -118,11 +119,11 @@ class WorkflowAuthorizationServiceTest { @BeforeEach void init() { testHelper.truncateDbs() - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/workflow_authorization_service_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/workflow_authorization_service_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert net.getNet() != null this.net = net.getNet() - ImportPetriNetEventOutcome netWithUserRefs = petriNetService.importPetriNet(new FileInputStream("src/test/resources/workflow_authorization_service_test_with_userRefs.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + ImportPetriNetEventOutcome netWithUserRefs = petriNetService.importPetriNet(new FileInputStream("src/test/resources/workflow_authorization_service_test_with_userRefs.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netWithUserRefs.getNet() != null this.netWithUserRefs = netWithUserRefs.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/elastic/DataSearchRequestTest.groovy b/src/test/groovy/com/netgrif/application/engine/elastic/DataSearchRequestTest.groovy index 54ca8edd9bc..674a5cb1062 100644 --- a/src/test/groovy/com/netgrif/application/engine/elastic/DataSearchRequestTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/elastic/DataSearchRequestTest.groovy @@ -2,6 +2,7 @@ package com.netgrif.application.engine.elastic import com.netgrif.application.engine.MockService import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.auth.service.UserService import com.netgrif.application.engine.elastic.domain.ElasticCaseRepository import com.netgrif.application.engine.elastic.service.interfaces.IElasticCaseService @@ -95,7 +96,7 @@ class DataSearchRequestTest { void before() { testHelper.truncateDbs() - def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert net.getNet() != null def users = userService.findAllUsers(null) diff --git a/src/test/groovy/com/netgrif/application/engine/elastic/ElasticSearchTest.groovy b/src/test/groovy/com/netgrif/application/engine/elastic/ElasticSearchTest.groovy index 9c803db0876..6f55b96b60b 100644 --- a/src/test/groovy/com/netgrif/application/engine/elastic/ElasticSearchTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/elastic/ElasticSearchTest.groovy @@ -2,6 +2,7 @@ package com.netgrif.application.engine.elastic import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.ApplicationEngine +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.auth.domain.Authority; import com.netgrif.core.auth.domain.User import com.netgrif.core.auth.domain.enums.UserState @@ -100,8 +101,8 @@ class ElasticSearchTest { auth = new UsernamePasswordAuthenticationToken(USER_EMAIL, USER_PASSW) testHelper.truncateDbs() - def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()).getNet() - def net2 = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()).getNet() + def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def net2 = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert net assert net2 diff --git a/src/test/groovy/com/netgrif/application/engine/elastic/ElasticTaskTest.groovy b/src/test/groovy/com/netgrif/application/engine/elastic/ElasticTaskTest.groovy index e5a6a982fb6..c49140a5b61 100644 --- a/src/test/groovy/com/netgrif/application/engine/elastic/ElasticTaskTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/elastic/ElasticTaskTest.groovy @@ -2,6 +2,7 @@ package com.netgrif.application.engine.elastic import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.ApplicationEngine +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.elastic.domain.ElasticTask import com.netgrif.application.engine.elastic.domain.ElasticTaskRepository import com.netgrif.application.engine.elastic.service.ReindexingTask @@ -79,7 +80,7 @@ class ElasticTaskTest { @Test void taskReindexTest() { - def optional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + def optional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert optional.getNet() != null def net = optional.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/elastic/ReindexTest.groovy b/src/test/groovy/com/netgrif/application/engine/elastic/ReindexTest.groovy index 20604bb3c03..72260cd9219 100644 --- a/src/test/groovy/com/netgrif/application/engine/elastic/ReindexTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/elastic/ReindexTest.groovy @@ -4,6 +4,7 @@ import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.elastic.service.ReindexingTask import com.netgrif.application.engine.elastic.service.interfaces.IElasticCaseService import com.netgrif.application.engine.elastic.web.requestbodies.CaseSearchRequest +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.application.engine.startup.runner.SuperCreatorRunner @@ -50,7 +51,7 @@ class ReindexTest { @Test void reindexTest() { - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert net.getNet() != null int countTread = Thread.activeCount() List threads = [] diff --git a/src/test/groovy/com/netgrif/application/engine/importer/PredefinedRolesPermissionsTest.groovy b/src/test/groovy/com/netgrif/application/engine/importer/PredefinedRolesPermissionsTest.groovy index 01900c0335c..52d151c6227 100644 --- a/src/test/groovy/com/netgrif/application/engine/importer/PredefinedRolesPermissionsTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/importer/PredefinedRolesPermissionsTest.groovy @@ -2,6 +2,7 @@ package com.netgrif.application.engine.importer import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.importer.service.RoleFactory +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.PetriNet import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.core.petrinet.domain.roles.ProcessRolePermission @@ -445,7 +446,7 @@ class PredefinedRolesPermissionsTest { } private NetCaseTask importAndCreate(Resource model) { - ImportPetriNetEventOutcome importOutcome = petriNetService.importPetriNet(model.inputStream, VersionType.MAJOR, superCreator.loggedSuper) + ImportPetriNetEventOutcome importOutcome = petriNetService.importPetriNet(model.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert importOutcome.getNet() != null diff --git a/src/test/groovy/com/netgrif/application/engine/importer/UserListTest.groovy b/src/test/groovy/com/netgrif/application/engine/importer/UserListTest.groovy index ada823fe01d..a28de5fe75d 100644 --- a/src/test/groovy/com/netgrif/application/engine/importer/UserListTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/importer/UserListTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.importer import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.core.petrinet.domain.throwable.MissingPetriNetMetaDataException import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService @@ -54,7 +55,7 @@ class UserListTest { @Test void testUserList() throws MissingPetriNetMetaDataException, IOException { - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/user_list.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/user_list.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); assert net.getNet() != null; Optional caseOpt = caseRepository.findOne(QCase.case$.title.eq("User List")); diff --git a/src/test/groovy/com/netgrif/application/engine/ipc/AssignCancelFinishWithCaseTest.groovy b/src/test/groovy/com/netgrif/application/engine/ipc/AssignCancelFinishWithCaseTest.groovy index 55eb985e2c0..6443a560d35 100644 --- a/src/test/groovy/com/netgrif/application/engine/ipc/AssignCancelFinishWithCaseTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/ipc/AssignCancelFinishWithCaseTest.groovy @@ -2,6 +2,7 @@ package com.netgrif.application.engine.ipc import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.importer.service.Importer +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.application.engine.startup.ImportHelper @@ -57,7 +58,7 @@ class AssignCancelFinishWithCaseTest { @Test void testAssignCancelFinish() { - def testNet = petriNetService.importPetriNet(stream(ASSIGN_CANCEL_FINISH_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + def testNet = petriNetService.importPetriNet(stream(ASSIGN_CANCEL_FINISH_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert testNet.getNet() != null diff --git a/src/test/groovy/com/netgrif/application/engine/ipc/CaseApiTest.groovy b/src/test/groovy/com/netgrif/application/engine/ipc/CaseApiTest.groovy index 699a9297178..fe573f0642d 100644 --- a/src/test/groovy/com/netgrif/application/engine/ipc/CaseApiTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/ipc/CaseApiTest.groovy @@ -2,6 +2,7 @@ package com.netgrif.application.engine.ipc import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.importer.service.Importer +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.application.engine.startup.ImportHelper @@ -55,7 +56,7 @@ class CaseApiTest { @Test void testCreate() { - testNet = petriNetService.importPetriNet(stream(CREATE_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + testNet = petriNetService.importPetriNet(stream(CREATE_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert testNet.getNet() != null @@ -72,7 +73,7 @@ class CaseApiTest { void testSearch() { testHelper.truncateDbs() - testNet = petriNetService.importPetriNet(stream(SEARCH_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + testNet = petriNetService.importPetriNet(stream(SEARCH_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert testNet.getNet() != null diff --git a/src/test/groovy/com/netgrif/application/engine/ipc/TaskApiTest.groovy b/src/test/groovy/com/netgrif/application/engine/ipc/TaskApiTest.groovy index 2722f1b4af0..fd4e43676b2 100644 --- a/src/test/groovy/com/netgrif/application/engine/ipc/TaskApiTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/ipc/TaskApiTest.groovy @@ -1,5 +1,6 @@ package com.netgrif.application.engine.ipc +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.auth.service.UserService import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.adapter.workflow.domain.QTask @@ -68,7 +69,7 @@ class TaskApiTest { @Test @Disabled("GroovyRuntime Could not find matching constructor") void testTaskSearch() { - def netOptional = petriNetService.importPetriNet(stream(TASK_SEARCH_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + def netOptional = petriNetService.importPetriNet(stream(TASK_SEARCH_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional.getNet() != null @@ -99,7 +100,7 @@ class TaskApiTest { @Test @Disabled() void testTaskEventActions() { - def netOptional = petriNetService.importPetriNet(stream(TASK_EVENTS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + def netOptional = petriNetService.importPetriNet(stream(TASK_EVENTS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional.getNet() != null @@ -121,8 +122,8 @@ class TaskApiTest { @Test @Disabled("spusta 2 krat") void testTaskExecution() { - def limitsNetOptional = petriNetService.importPetriNet(stream(LIMITS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) - def leasingNetOptional = petriNetService.importPetriNet(stream(LEASING_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + def limitsNetOptional = petriNetService.importPetriNet(stream(LIMITS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def leasingNetOptional = petriNetService.importPetriNet(stream(LEASING_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert limitsNetOptional.getNet() != null assert leasingNetOptional.getNet() != null @@ -196,7 +197,7 @@ class TaskApiTest { @Test void testTaskBulkActions() { - def netOptional = petriNetService.importPetriNet(stream(TASK_BULK_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + def netOptional = petriNetService.importPetriNet(stream(TASK_BULK_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional.getNet() != null PetriNet net = netOptional.getNet() @@ -221,7 +222,7 @@ class TaskApiTest { @Test void testGetData() { - def netOptional = petriNetService.importPetriNet(stream(TASK_GETTER_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + def netOptional = petriNetService.importPetriNet(stream(TASK_GETTER_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional.getNet() != null PetriNet net = netOptional.getNet() @@ -256,7 +257,7 @@ class TaskApiTest { @Test void testSetData() { - def netOptional = petriNetService.importPetriNet(stream(TASK_SETTER_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + def netOptional = petriNetService.importPetriNet(stream(TASK_SETTER_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional.getNet() != null PetriNet net = netOptional.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/pdf/service/PdfGeneratorTest.groovy b/src/test/groovy/com/netgrif/application/engine/pdf/service/PdfGeneratorTest.groovy index 8e32d1705d0..41d86c71163 100644 --- a/src/test/groovy/com/netgrif/application/engine/pdf/service/PdfGeneratorTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/pdf/service/PdfGeneratorTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.pdf.service import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.auth.service.UserService import com.netgrif.application.engine.importer.service.Importer import com.netgrif.application.engine.ipc.TaskApiTest @@ -89,7 +90,7 @@ class PdfGeneratorTest { @Test void testActionDelegateFunction() { - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[3]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem())) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[3]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) String taskId = testCase.getTasks().find(taskPair -> taskPair.transition.equals("1")).task @@ -101,7 +102,7 @@ class PdfGeneratorTest { @Test void testAllData() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[3]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem())) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[3]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[3] + "_.pdf")) @@ -115,7 +116,7 @@ class PdfGeneratorTest { @Test void testingNormal() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[0]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem())) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[0]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[0] + "_.pdf")) @@ -129,7 +130,7 @@ class PdfGeneratorTest { @Test void testingWithTemplate() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[1]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem())) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[1]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[1] + "_.pdf")) @@ -148,7 +149,7 @@ class PdfGeneratorTest { @Test void testingCustomFunction() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[1]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem())) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[1]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) String filename = pdfResource.getOutputDefaultName() @@ -168,7 +169,7 @@ class PdfGeneratorTest { @Test void testingLongDocument() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[2]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem())) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[2]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[2] + "_.pdf")) @@ -182,7 +183,7 @@ class PdfGeneratorTest { @Test void testingPageNumber() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[2]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem())) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[2]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setNumberFormat(Locale.US) @@ -209,7 +210,7 @@ class PdfGeneratorTest { pdfResource.getLineHeight(), pdfResource) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[2]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem())) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[2]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_custom_field.pdf")) @@ -224,7 +225,7 @@ class PdfGeneratorTest { @Test void testFlowLayout() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[4]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem())) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[4]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("t1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[4] + "_.pdf")) @@ -238,7 +239,7 @@ class PdfGeneratorTest { @Test void testDataGroup() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[5]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem())) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[5]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[5] + "_.pdf")) pdfGenerator.setupPdfGenerator(pdfResource) @@ -251,7 +252,7 @@ class PdfGeneratorTest { @Test void testTaskRef() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[6]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem())) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[6]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[6] + "_.pdf")) pdfGenerator.setupPdfGenerator(pdfResource) @@ -263,7 +264,7 @@ class PdfGeneratorTest { @Test void testRunGenerateAction() { - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[7]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem())) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[7]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assertNotNull(net.getNet()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() assertNotNull(testCase) @@ -282,7 +283,7 @@ class PdfGeneratorTest { @Test void testRunGenerateActionToAnotherCase() { - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[7]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem())) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[7]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assertNotNull(net.getNet()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() assertNotNull(testCase) diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ActionRefTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ActionRefTest.groovy index eadd5edaa8e..8594c25d181 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ActionRefTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ActionRefTest.groovy @@ -1,5 +1,6 @@ package com.netgrif.application.engine.petrinet.domain +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.auth.service.UserService import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.petrinet.domain.repositories.PetriNetRepository @@ -59,7 +60,7 @@ class ActionRefTest { @Disabled("TODO: deprecated action ref") void testEventImport() { - PetriNet net = petriNetService.importPetriNet(new FileInputStream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()).getNet() + PetriNet net = petriNetService.importPetriNet(new FileInputStream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert net.dataSet.get("text_1").events.size() == 8 assert net.transitions.get("task").dataSet.get("text_1").events.size() == 8 diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ArcOrderTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ArcOrderTest.groovy index bb0c4dd928c..9fb5ff32452 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ArcOrderTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ArcOrderTest.groovy @@ -3,6 +3,7 @@ package com.netgrif.application.engine.petrinet.domain import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.importer.service.Importer import com.netgrif.application.engine.petrinet.domain.arcs.ArcOrderComparator +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.core.petrinet.domain.arcs.ResetArc import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService @@ -51,7 +52,7 @@ class ArcOrderTest { @Test void testOrder() { - def net = petriNetService.importPetriNet(stream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()).getNet() + def net = petriNetService.importPetriNet(stream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() def arcs = net.getArcsOfTransition(NET_TASK) def sorted = arcs.sort { a1, a2 -> ArcOrderComparator.getInstance().compare(a1, a2) } diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/EventTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/EventTest.groovy index c8f953c528a..a2bf644869c 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/EventTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/EventTest.groovy @@ -1,5 +1,6 @@ package com.netgrif.application.engine.petrinet.domain +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.auth.service.UserService import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.importer.service.Importer @@ -87,7 +88,7 @@ class EventTest { void testEventImport() { testHelper.truncateDbs() - PetriNet net = petriNetService.importPetriNet(stream(EVENT_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()).getNet() + PetriNet net = petriNetService.importPetriNet(stream(EVENT_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() instance = helper.createCase(EVENT_NET_CASE, net) outcome = helper.assignTaskToSuper(EVENT_NET_TASK, instance.stringId) diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/FunctionsTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/FunctionsTest.groovy index bb0e2a14239..6f9a42b4b1d 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/FunctionsTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/FunctionsTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.petrinet.domain import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.auth.domain.User import com.netgrif.auth.service.UserService import com.netgrif.core.petrinet.domain.VersionType @@ -87,8 +88,8 @@ class FunctionsTest { void testNamespaceFunction() { assert userService.findUserByUsername("test@test.com", null) == null - def functionResNet = petriNetService.importPetriNet(functionResNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() - def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() + def functionResNet = petriNetService.importPetriNet(functionResNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert functionResNet assert functionTestNet @@ -106,7 +107,7 @@ class FunctionsTest { @Test void testProcessFunctions() { - def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() + def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert functionTestNet Case aCase = workflowService.createCase(functionTestNet.stringId, "Test", "", userService.transformToLoggedUser(userService.getLoggedOrSystem())).getCase() @@ -130,7 +131,7 @@ class FunctionsTest { } } - def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() + def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert functionTestNet Case aCase = workflowService.createCase(functionTestNet.stringId, "Test", "", userService.transformToLoggedUser(userService.getLoggedOrSystem())).getCase() @@ -148,13 +149,13 @@ class FunctionsTest { } } - def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() + def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert functionTestNet Case aCase = workflowService.createCase(functionTestNet.stringId, "Test", "", userService.transformToLoggedUser(userService.getLoggedOrSystem())).getCase() dataService.setData(aCase.tasks.first().task, ImportHelper.populateDataset(["text": ["value": "20", "type": "text"]])) - functionTestNet = petriNetService.importPetriNet(functionTestNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() + functionTestNet = petriNetService.importPetriNet(functionTestNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert functionTestNet dataService.setData(aCase.tasks.first().task, ImportHelper.populateDataset(["text": ["value": "20", "type": "text"]])) @@ -164,7 +165,7 @@ class FunctionsTest { @Test void testProcessFunctionException() { assertThrows(MissingMethodException.class, () -> { - def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() + def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert functionTestNet Case aCase = workflowService.createCase(functionTestNet.stringId, "Test", "", userService.transformToLoggedUser(userService.getLoggedOrSystem())).getCase() @@ -174,8 +175,8 @@ class FunctionsTest { @Test void testNewVersionOfNamespaceFunction() { - def functionResNet = petriNetService.importPetriNet(functionResNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() - def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() + def functionResNet = petriNetService.importPetriNet(functionResNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert functionResNet assert functionTestNet @@ -186,7 +187,7 @@ class FunctionsTest { assert aCase.getFieldValue("number2") == 20 + 20 - functionResNet = petriNetService.importPetriNet(functionResNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() + functionResNet = petriNetService.importPetriNet(functionResNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert functionResNet dataService.setData(aCase.tasks.first().task, ImportHelper.populateDataset(["number": ["value": "20", "type": "number"]])) @@ -198,14 +199,14 @@ class FunctionsTest { @Test void testNamespaceMethodOverloadingFail() { assertThrows(IllegalArgumentException.class, () -> { - petriNetService.importPetriNet(functionOverloadingFailNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())) + petriNetService.importPetriNet(functionOverloadingFailNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) }) } @Test void testNamespaceUseCaseUpdate() { - def functionResV2Net = petriNetService.importPetriNet(functionResNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() - def functionTestV2Net = petriNetService.importPetriNet(functionTestNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() + def functionResV2Net = petriNetService.importPetriNet(functionResNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def functionTestV2Net = petriNetService.importPetriNet(functionTestNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() Case aCase = workflowService.createCase(functionTestV2Net.stringId, "Test", "", userService.transformToLoggedUser(userService.getLoggedOrSystem())).getCase() dataService.setData(aCase.tasks.first().task, ImportHelper.populateDataset(["updateOtherField": ["value": "true", "type": "boolean"]])) @@ -223,7 +224,7 @@ class FunctionsTest { @Test void testProcessMethodOverloadingFail() { assertThrows(IllegalArgumentException.class, () -> { - petriNetService.importPetriNet(functionOverloadingFailNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())) + petriNetService.importPetriNet(functionOverloadingFailNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) }) } @@ -233,7 +234,7 @@ class FunctionsTest { } private void testMethodOverloading(Resource resource) { - def petriNet = petriNetService.importPetriNet(resource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() + def petriNet = petriNetService.importPetriNet(resource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert petriNet diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ImporterTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ImporterTest.groovy index 27d89f42c9c..ff8e7a16cfb 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ImporterTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ImporterTest.groovy @@ -2,6 +2,7 @@ package com.netgrif.application.engine.petrinet.domain import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.importer.service.Importer +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.PetriNet import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.core.petrinet.domain.dataset.ChoiceField @@ -85,7 +86,8 @@ class ImporterTest { def netOptional = petriNetService.importPetriNet( firstVersionResource.inputStream, VersionType.MAJOR, - superCreator.loggedSuper + superCreator.loggedSuper, + WorkspaceConstants.DEFAULT_WORKSPACE_ID ) assert netOptional.getNet() != null assert processRoleRepository.count() == beforeImportNet + 2 @@ -171,7 +173,8 @@ class ImporterTest { def netOptional2 = petriNetService.importPetriNet( secondVersionResource.inputStream, VersionType.MAJOR, - superCreator.loggedSuper + superCreator.loggedSuper, + WorkspaceConstants.DEFAULT_WORKSPACE_ID ) assert processRoleRepository.count() == statusImportRole + 1 @@ -284,7 +287,7 @@ class ImporterTest { @Test void thisKeywordInDataEventsTest() { - PetriNet net = petriNetService.importPetriNet(new ClassPathResource("/this_kw_test.xml").getInputStream(), VersionType.MAJOR, superCreator.getLoggedSuper()).getNet() + PetriNet net = petriNetService.importPetriNet(new ClassPathResource("/this_kw_test.xml").getInputStream(), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert net != null Case testCase = workflowService.createCase(net.stringId, "Test case", "", superCreator.loggedSuper).getCase() @@ -295,7 +298,7 @@ class ImporterTest { @Test void initialBehaviorTest() { - PetriNet net = petriNetService.importPetriNet(new ClassPathResource("/initial_behavior.xml").getInputStream(), VersionType.MAJOR, superCreator.getLoggedSuper()).getNet() + PetriNet net = petriNetService.importPetriNet(new ClassPathResource("/initial_behavior.xml").getInputStream(), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert net Case testCase = workflowService.createCase(net.stringId, "Test case", "", superCreator.loggedSuper).getCase() @@ -318,7 +321,7 @@ class ImporterTest { @Test void enumerationMultichoiceOptionsTest() throws IOException, MissingPetriNetMetaDataException { - PetriNet net = petriNetService.importPetriNet(new ClassPathResource("/enumeration_multichoice_options.xml").getInputStream(), VersionType.MAJOR, superCreator.getLoggedSuper()).getNet() + PetriNet net = petriNetService.importPetriNet(new ClassPathResource("/enumeration_multichoice_options.xml").getInputStream(), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert net != null @@ -343,7 +346,8 @@ class ImporterTest { def netOutcome = petriNetService.importPetriNet( new FileInputStream("src/test/resources/datagroup_no_id_test.xml"), VersionType.MAJOR, - superCreator.loggedSuper) + superCreator.loggedSuper, + WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOutcome.getNet() != null @@ -355,7 +359,7 @@ class ImporterTest { @Test void createTransitionNoLabel(){ - PetriNet net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/importTest/NoLabel.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()).getNet() + PetriNet net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/importTest/NoLabel.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert net PetriNet importNet = petriNetService.findByImportId(net.getImportId()).get() assert importNet diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/PetriNetTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/PetriNetTest.groovy index 7f9f470bacf..5b23cee96ff 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/PetriNetTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/PetriNetTest.groovy @@ -2,6 +2,7 @@ package com.netgrif.application.engine.petrinet.domain import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.importer.service.Importer +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.PetriNet import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.core.petrinet.domain.arcs.Arc @@ -58,7 +59,7 @@ class PetriNetTest { void testClone() { int beforeImportNet = processRoleRepository.count() - def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper) + def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional.getNet() != null @@ -79,13 +80,13 @@ class PetriNetTest { @Test void testVersioning() { - def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper) + def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional.getNet() != null - def netOptional2 = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper) + def netOptional2 = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional2.getNet() != null - def netOptional3 = petriNetService.importPetriNet(netResource2.inputStream, VersionType.MAJOR, superCreator.loggedSuper) + def netOptional3 = petriNetService.importPetriNet(netResource2.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional3.getNet() != null def nets = petriNetService.getReferencesByVersion(null, superCreator.loggedSuper, Locale.UK) diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/CaseFieldTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/CaseFieldTest.groovy index 02187a51d25..e572935a24f 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/CaseFieldTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/CaseFieldTest.groovy @@ -2,6 +2,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.ipc.TaskApiTest +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.application.engine.startup.ImportHelper @@ -114,7 +115,7 @@ class CaseFieldTest { @Test void testImmediateAllowedNets() { - def testNet = petriNetService.importPetriNet(stream(ALLOWED_NETS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + def testNet = petriNetService.importPetriNet(stream(ALLOWED_NETS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert testNet.getNet() != null Case aCase = importHelper.createCase("Case 1", testNet.getNet()) @@ -168,10 +169,10 @@ class CaseFieldTest { @Test @Disabled("Please fix this test") void testChangeValueAction() { - def notAllowedNet = petriNetService.importPetriNet(stream(ALLOWED_NETS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + def notAllowedNet = petriNetService.importPetriNet(stream(ALLOWED_NETS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert notAllowedNet.getNet() != null - def testNet = petriNetService.importPetriNet(stream(CHANGE_VALUE_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + def testNet = petriNetService.importPetriNet(stream(CHANGE_VALUE_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert testNet.getNet() != null Case aCase = importHelper.createCase("Case 1", testNet.getNet()) diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeCasePropertyTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeCasePropertyTest.groovy index 5eab925acf2..8ea0b7b3f29 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeCasePropertyTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeCasePropertyTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.auth.service.UserService import com.netgrif.core.petrinet.domain.PetriNet import com.netgrif.core.petrinet.domain.VersionType @@ -56,7 +57,7 @@ class ChangeCasePropertyTest { @BeforeEach void initNet() { testHelper.truncateDbs() - net = petriNetService.importPetriNet(new FileInputStream(RESOURCE_PATH), VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem())).getNet() + net = petriNetService.importPetriNet(new FileInputStream(RESOURCE_PATH), VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() assert net != null } diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeFieldValueInitTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeFieldValueInitTest.groovy index 8cfbe0874f2..cdd415e6efb 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeFieldValueInitTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeFieldValueInitTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.application.engine.startup.ImportHelper @@ -49,7 +50,7 @@ class ChangeFieldValueInitTest { @Test void testInitValues() { - ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/change_field_value_init.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/change_field_value_init.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); Case useCase = importHelper.createCase("test", optNet.getNet()) assert useCase.dataSet["text_static"].value == "TEST VALUE" diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChoiceFieldTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChoiceFieldTest.groovy index e3b43f18397..12201904087 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChoiceFieldTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChoiceFieldTest.groovy @@ -3,6 +3,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.importer.service.Importer import com.netgrif.application.engine.ipc.TaskApiTest +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.I18nString import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService @@ -56,7 +57,7 @@ class ChoiceFieldTest { @Test void testChoices() { - def netOptional = petriNetService.importPetriNet(stream(LIMITS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + def netOptional = petriNetService.importPetriNet(stream(LIMITS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional.getNet() != null def net = netOptional.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicCaseNameTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicCaseNameTest.groovy index e66cf462b76..7fcf156465e 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicCaseNameTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicCaseNameTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.application.engine.startup.runner.SuperCreatorRunner @@ -39,7 +40,7 @@ class DynamicCaseNameTest { @Test void testInitValues() { - ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_case_name_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_case_name_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) Case useCase = workflowService.createCase(optNet.getNet().stringId, null, "", superCreator.loggedSuper, Locale.forLanguageTag("sk-SK")).getCase() assert useCase.title == "SK text value 6" diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicChoicesTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicChoicesTest.groovy index 0341fc6cfc0..8b8198acc8a 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicChoicesTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicChoicesTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.application.engine.startup.ImportHelper @@ -50,7 +51,7 @@ class DynamicChoicesTest { @Test void testDynamicEnum() { - ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_choices.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_choices.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); assert optNet.getNet() != null; def net = optNet.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicDefaultValueTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicDefaultValueTest.groovy index 3695c4ba7e9..0fcb567f643 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicDefaultValueTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicDefaultValueTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.application.engine.startup.ImportHelper @@ -40,7 +41,7 @@ class DynamicDefaultValueTest { @Test void testInitValues() { - ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_init.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_init.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); Case useCase = importHelper.createCase("test", optNet.getNet()) assert useCase.dataSet["text"].value == superCreator.superUser.name diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicEnumerationTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicEnumerationTest.groovy index 3c368d5551a..d3d480e2f80 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicEnumerationTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicEnumerationTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.application.engine.startup.ImportHelper @@ -54,7 +55,7 @@ class DynamicEnumerationTest { @Test void testDynamicEnum() { - ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/test_autocomplete_dynamic.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/test_autocomplete_dynamic.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); assert optNet.getNet() != null; def net = optNet.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationPerformanceTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationPerformanceTest.groovy index 3abb037f419..b3730a906ac 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationPerformanceTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationPerformanceTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.application.engine.startup.ImportHelper @@ -61,8 +62,8 @@ class DynamicValidationPerformanceTest { @Test void testValidations() { - ImportPetriNetEventOutcome optNet1 = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_validations_performance_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) - ImportPetriNetEventOutcome optNet2 = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_validations_performance_test_comparison.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + ImportPetriNetEventOutcome optNet1 = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_validations_performance_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome optNet2 = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_validations_performance_test_comparison.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) def aCase1 = importHelper.createCase("Case 1", optNet1.getNet()) def aCase2 = importHelper.createCase("Case 2", optNet2.getNet()) diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationTest.groovy index ffa83034a5a..f4fd7b21a70 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.core.petrinet.domain.dataset.Field import com.netgrif.core.petrinet.domain.dataset.logic.validation.DynamicValidation @@ -57,7 +58,7 @@ class DynamicValidationTest { @Test @Disabled void testValidations() { - ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_validations.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_validations.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) Case useCase = importHelper.createCase("test", optNet.getNet()) Map data = getData(useCase) assert (data["number"]).validations[0] instanceof DynamicValidation diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileFieldTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileFieldTest.groovy index 74617cb5528..1b0bed476de 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileFieldTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileFieldTest.groovy @@ -3,6 +3,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset import com.fasterxml.jackson.databind.ObjectMapper import com.netgrif.application.engine.ApplicationEngine import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.auth.domain.IUser import com.netgrif.auth.service.UserService import com.netgrif.application.engine.importer.service.Importer @@ -99,7 +100,7 @@ class FileFieldTest { } PetriNet getNet() { - def netOptional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/remoteFileField.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + def netOptional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/remoteFileField.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional.getNet() != null return netOptional.getNet() } diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileListFieldTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileListFieldTest.groovy index f4619b12196..a8aa59761b2 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileListFieldTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileListFieldTest.groovy @@ -3,6 +3,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset import com.fasterxml.jackson.databind.ObjectMapper import com.netgrif.application.engine.ApplicationEngine import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.auth.domain.IUser import com.netgrif.auth.service.UserService import com.netgrif.application.engine.importer.service.Importer @@ -163,7 +164,7 @@ class FileListFieldTest { } PetriNet getNet() { - def netOptional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/remoteFileListField.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + def netOptional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/remoteFileListField.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional.getNet() != null return netOptional.getNet() } diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/MapFieldTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/MapFieldTest.groovy index 2d3cc37a3d8..c77850dfa92 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/MapFieldTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/MapFieldTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.petrinet.domain.VersionType import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService import com.netgrif.application.engine.startup.ImportHelper @@ -46,7 +47,7 @@ class MapFieldTest { @Test void testImport() { - def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper) + def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional.getNet() != null def net = netOptional.getNet() @@ -70,7 +71,7 @@ class MapFieldTest { @Test void testValue() { - def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper) + def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional.getNet() != null Case aCase = importHelper.createCase("Case", netOptional.getNet()) @@ -107,7 +108,7 @@ class MapFieldTest { @Test void testImportMultichoice() { - def netOptional = petriNetService.importPetriNet(netResource2.inputStream, VersionType.MAJOR, superCreator.loggedSuper) + def netOptional = petriNetService.importPetriNet(netResource2.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert netOptional.getNet() != null def net = netOptional.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleTest.groovy index 01adb922b2a..b3d51d853cb 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.petrinet.domain.roles import com.netgrif.application.engine.TestHelper +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.core.auth.domain.Authority import com.netgrif.core.auth.domain.enums.UserState import com.netgrif.application.engine.importer.service.Importer @@ -86,7 +87,7 @@ class ProcessRoleTest { .apply(springSecurity()) .build() - def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/rolref_view.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()) + def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/rolref_view.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert net.getNet() != null String netId = net.getNet().getStringId() diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/service/PetriNetServiceTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/service/PetriNetServiceTest.groovy index c4d3792983a..032c16defa4 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/service/PetriNetServiceTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/service/PetriNetServiceTest.groovy @@ -108,7 +108,7 @@ class PetriNetServiceTest { long taskCount = taskRepository.count() - ImportPetriNetEventOutcome testNetOptional = petriNetService.importPetriNet(stream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + ImportPetriNetEventOutcome testNetOptional = petriNetService.importPetriNet(stream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert testNetOptional.getNet() != null assert petriNetRepository.count() == processCount + 1 PetriNet testNet = testNetOptional.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/web/PetriNetControllerTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/web/PetriNetControllerTest.groovy index 0495a34a96d..dc59123c9a9 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/web/PetriNetControllerTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/web/PetriNetControllerTest.groovy @@ -1,6 +1,7 @@ package com.netgrif.application.engine.petrinet.webprocessRolesAndPermissionses import com.netgrif.adapter.auth.domain.AuthorityImpl +import com.netgrif.application.engine.petrinet.service.PetriNetService import com.netgrif.auth.service.UserService import com.netgrif.application.engine.TestHelper import com.netgrif.core.auth.domain.Authority @@ -81,7 +82,7 @@ class PetriNetControllerTest { void before() { testHelper.truncateDbs() - def net = petriNetService.importPetriNet(stream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper()) + def net = petriNetService.importPetriNet(stream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) assert net.getNet() != null this.net = net.getNet() diff --git a/src/test/java/com/netgrif/application/engine/importer/ConstructorAndDestructorTest.java b/src/test/java/com/netgrif/application/engine/importer/ConstructorAndDestructorTest.java index cef8988bbb7..705bc5f38fa 100644 --- a/src/test/java/com/netgrif/application/engine/importer/ConstructorAndDestructorTest.java +++ b/src/test/java/com/netgrif/application/engine/importer/ConstructorAndDestructorTest.java @@ -2,10 +2,12 @@ import com.netgrif.application.engine.TestHelper; import com.netgrif.application.engine.importer.service.throwable.MissingIconKeyException; +import com.netgrif.application.engine.petrinet.service.PetriNetService; import com.netgrif.core.petrinet.domain.VersionType; import com.netgrif.core.petrinet.domain.throwable.MissingPetriNetMetaDataException; import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService; import com.netgrif.application.engine.startup.runner.SuperCreatorRunner; +import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import com.netgrif.core.workflow.domain.Case; import com.netgrif.adapter.workflow.domain.QCase; import com.netgrif.core.workflow.domain.eventoutcomes.petrinetoutcomes.ImportPetriNetEventOutcome; @@ -46,7 +48,7 @@ public void before() { @Test public void testConstructorAndDestructor() throws MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/constructor_destructor.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/constructor_destructor.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); assert outcome.getNet() != null; Optional caseOpt = caseRepository.findOne(QCase.case$.title.eq("Construct")); diff --git a/src/test/java/com/netgrif/application/engine/importer/ImporterTest.java b/src/test/java/com/netgrif/application/engine/importer/ImporterTest.java index 63ebec77430..2dc35bc0617 100644 --- a/src/test/java/com/netgrif/application/engine/importer/ImporterTest.java +++ b/src/test/java/com/netgrif/application/engine/importer/ImporterTest.java @@ -1,6 +1,7 @@ package com.netgrif.application.engine.importer; import com.netgrif.application.engine.TestHelper; +import com.netgrif.application.engine.petrinet.service.PetriNetService; import com.netgrif.core.auth.domain.LoggedUser; import com.netgrif.application.engine.importer.service.throwable.MissingIconKeyException; import com.netgrif.core.petrinet.domain.PetriNet; @@ -10,6 +11,7 @@ import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService; import com.netgrif.application.engine.startup.runner.SuperCreatorRunner; import com.netgrif.application.engine.utils.FullPageRequest; +import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import com.netgrif.core.workflow.domain.eventoutcomes.caseoutcomes.CreateCaseEventOutcome; import com.netgrif.core.workflow.domain.eventoutcomes.petrinetoutcomes.ImportPetriNetEventOutcome; import com.netgrif.application.engine.workflow.service.interfaces.IWorkflowService; @@ -62,13 +64,13 @@ public void before() { @Test public void importPetriNet() throws MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - petriNetService.importPetriNet(new FileInputStream("src/test/resources/prikladFM_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/prikladFM_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); assertNetProperlyImported(); } @Test public void priorityTest() throws MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/priority_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/priority_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); assert outcome.getNet() != null; CreateCaseEventOutcome caseOutcome = workflowService.createCase(outcome.getNet().getStringId(), outcome.getNet().getTitle().getDefaultValue(), "color", superCreator.getLoggedSuper()); @@ -78,19 +80,19 @@ public void priorityTest() throws MissingPetriNetMetaDataException, IOException, @Test public void dataGroupTest() throws MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/datagroup_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/datagroup_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); assert outcome.getNet() != null; } @Test public void readArcImportTest() throws MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - petriNetService.importPetriNet(new FileInputStream("src/test/resources/read_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/read_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); } @Test public void externalMappingTest() throws MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/mapping_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/mapping_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); assertExternalMappingImport(outcome.getNet()); } @@ -102,7 +104,7 @@ void importInvalidDataRefLayoutTest() throws FileNotFoundException { FileInputStream fileInputStream = new FileInputStream("src/test/resources/invalid_data_ref_layout.xml"); - assertThatThrownBy(() -> petriNetService.importPetriNet(fileInputStream, VersionType.MAJOR, loggedUser)) + assertThatThrownBy(() -> petriNetService.importPetriNet(fileInputStream, VersionType.MAJOR, loggedUser, WorkspaceConstants.DEFAULT_WORKSPACE_ID)) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("doesn't have a layout"); @@ -133,7 +135,7 @@ private void assertExternalMappingImport(PetriNet imported) { private void assertNetProperlyImported() { assert repository.count() > 0; - Page nets = repository.findByIdentifier(NET_ID, new FullPageRequest()); + Page nets = repository.findByIdentifierAndWorkspaceId(NET_ID, WorkspaceConstants.DEFAULT_WORKSPACE_ID, new FullPageRequest()); PetriNet net = nets.getContent().get(0); assert net.getTitle().getDefaultValue().equals(NET_TITLE); assert net.getInitials().equals(NET_INITIALS); diff --git a/src/test/java/com/netgrif/application/engine/petrinet/service/ProcessRoleServiceTest.java b/src/test/java/com/netgrif/application/engine/petrinet/service/ProcessRoleServiceTest.java index 77c0681ae32..acd26565c19 100644 --- a/src/test/java/com/netgrif/application/engine/petrinet/service/ProcessRoleServiceTest.java +++ b/src/test/java/com/netgrif/application/engine/petrinet/service/ProcessRoleServiceTest.java @@ -7,6 +7,7 @@ import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService; import com.netgrif.adapter.petrinet.service.ProcessRoleService; import com.netgrif.application.engine.startup.runner.SuperCreatorRunner; +import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import com.netgrif.core.workflow.domain.eventoutcomes.petrinetoutcomes.ImportPetriNetEventOutcome; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -55,8 +56,8 @@ public void before() { void shouldFindAllProcessRoles() throws IOException, MissingPetriNetMetaDataException { List roles = processRoleService.findAll(); int originalRoles = roles.size(); - petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); - petriNetService.importPetriNet(new FileInputStream("src/test/resources/role_all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/role_all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); roles = processRoleService.findAll(); assertNotNull(roles); assertFalse(roles.isEmpty()); @@ -65,7 +66,7 @@ void shouldFindAllProcessRoles() throws IOException, MissingPetriNetMetaDataExce @Test void shouldFindAllProcessRolesByPetriNet() throws IOException, MissingPetriNetMetaDataException { - ImportPetriNetEventOutcome eventOutcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + ImportPetriNetEventOutcome eventOutcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); List roles = processRoleService.findAll(eventOutcome.getNet().getStringId()); assertNotNull(roles); assertFalse(roles.isEmpty()); @@ -92,7 +93,7 @@ void shouldGetAnonymousRole() { @Test void shouldFindAllProcessRolesByImportId() throws IOException, MissingPetriNetMetaDataException { - petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); Set roles = processRoleService.findAllByImportId(ROLE_IMPORT_ID); assertNotNull(roles); assertFalse(roles.isEmpty()); @@ -102,7 +103,7 @@ void shouldFindAllProcessRolesByImportId() throws IOException, MissingPetriNetMe @Test void shouldFindAllProcessRolesByName() throws IOException, MissingPetriNetMetaDataException { - petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); Collection roles = processRoleService.findAllByDefaultName("Process role"); assertNotNull(roles); assertFalse(roles.isEmpty()); diff --git a/src/test/java/com/netgrif/application/engine/workflow/service/TaskServiceTest.java b/src/test/java/com/netgrif/application/engine/workflow/service/TaskServiceTest.java index 21697ae3765..9c7a2a083d8 100644 --- a/src/test/java/com/netgrif/application/engine/workflow/service/TaskServiceTest.java +++ b/src/test/java/com/netgrif/application/engine/workflow/service/TaskServiceTest.java @@ -1,6 +1,7 @@ package com.netgrif.application.engine.workflow.service; import com.netgrif.adapter.auth.domain.LoggedUserImpl; +import com.netgrif.application.engine.petrinet.service.PetriNetService; import com.netgrif.application.engine.startup.runner.DefaultRealmRunner; import com.netgrif.auth.service.UserService; import com.netgrif.core.auth.domain.Authority; @@ -18,6 +19,7 @@ import com.netgrif.application.engine.startup.runner.SuperCreatorRunner; import com.netgrif.application.engine.startup.runner.SystemUserRunner; import com.netgrif.application.engine.startup.runner.UriRunner; +import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import com.netgrif.core.workflow.domain.Case; import com.netgrif.core.workflow.domain.Task; import com.netgrif.core.workflow.domain.eventoutcomes.caseoutcomes.CreateCaseEventOutcome; @@ -91,14 +93,14 @@ public void setUp() throws Exception { userRunner.run(null); uriRunner.run(null); - petriNetService.importPetriNet(new FileInputStream("src/test/resources/prikladFM.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/prikladFM.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); PetriNet net = petriNetRepository.findAll().get(0); workflowService.createCase(net.getStringId(), "Storage Unit", "color", mockLoggedUser()); } @Test public void resetArcTest() throws TransitionNotExecutableException, MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - PetriNet net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/reset_inhibitor_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper()).getNet(); + PetriNet net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/reset_inhibitor_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet(); LoggedUser loggedUser = mockLoggedUser(); CreateCaseEventOutcome outcome = workflowService.createCase(net.getStringId(), "Reset test", "color", loggedUser); User user = new com.netgrif.adapter.auth.domain.User(); diff --git a/src/test/java/com/netgrif/application/engine/workflow/web/VariableArcsTest.java b/src/test/java/com/netgrif/application/engine/workflow/web/VariableArcsTest.java index 19fb6fd19a7..a7f34dd7d43 100644 --- a/src/test/java/com/netgrif/application/engine/workflow/web/VariableArcsTest.java +++ b/src/test/java/com/netgrif/application/engine/workflow/web/VariableArcsTest.java @@ -1,5 +1,6 @@ package com.netgrif.application.engine.workflow.web; +import com.netgrif.application.engine.petrinet.service.PetriNetService; import com.netgrif.auth.service.UserService; import com.netgrif.application.engine.MockService; import com.netgrif.application.engine.TestHelper; @@ -21,6 +22,7 @@ import com.netgrif.application.engine.startup.runner.SuperCreatorRunner; import com.netgrif.application.engine.startup.runner.SystemUserRunner; import com.netgrif.application.engine.startup.runner.DefaultRoleRunner; +import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import com.netgrif.core.workflow.domain.Case; import com.netgrif.adapter.workflow.domain.QTask; import com.netgrif.core.workflow.domain.Task; @@ -108,7 +110,7 @@ public void before() throws Exception { repository.deleteAll(); assertNotNull(processRoleService.defaultRole()); testHelper.truncateDbs(); - ImportPetriNetEventOutcome outcome = service.importPetriNet(new FileInputStream(NET_PATH), VersionType.MAJOR, superCreator.getLoggedSuper()); + ImportPetriNetEventOutcome outcome = service.importPetriNet(new FileInputStream(NET_PATH), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); assert outcome.getNet() != null; PetriNet net = outcome.getNet(); From 1ae3c85e7369f09f13252e3d75fb741e1c73d347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kov=C3=A1=C4=8Dik?= Date: Mon, 28 Apr 2025 15:28:01 +0200 Subject: [PATCH 02/13] [NAE-2072] Workspaces - change WorkspaceConstants to get workspace from user --- .../engine/migration/ActionMigration.groovy | 2 +- .../engine/startup/ImportHelper.groovy | 4 +-- .../DefaultWorkspaceServiceImpl.java | 24 +++++++++++++++ .../petrinet/web/PetriNetController.java | 3 +- .../startup/runner/AnonymousRoleRunner.java | 3 +- .../startup/runner/DefaultRoleRunner.java | 3 +- .../startup/runner/SuperCreatorRunner.java | 4 +++ .../engine/action/AssignActionTest.groovy | 4 +-- .../engine/action/AssignRemoveTest.groovy | 2 +- .../engine/action/RemoveActionTest.groovy | 2 +- .../auth/AuthenticationControllerTest.groovy | 2 +- .../engine/auth/SecurityContextTest.groovy | 2 +- .../auth/TaskAuthorizationServiceTest.groovy | 4 +-- .../WorkflowAuthorizationServiceTest.groovy | 4 +-- .../elastic/DataSearchRequestTest.groovy | 2 +- .../engine/elastic/ElasticSearchTest.groovy | 4 +-- .../engine/elastic/ElasticTaskTest.groovy | 2 +- .../engine/elastic/ReindexTest.groovy | 2 +- .../PredefinedRolesPermissionsTest.groovy | 2 +- .../engine/importer/UserListTest.groovy | 2 +- .../ipc/AssignCancelFinishWithCaseTest.groovy | 2 +- .../application/engine/ipc/CaseApiTest.groovy | 4 +-- .../application/engine/ipc/TaskApiTest.groovy | 14 ++++----- .../pdf/service/PdfGeneratorTest.groovy | 26 ++++++++-------- .../petrinet/domain/ActionRefTest.groovy | 2 +- .../petrinet/domain/ArcOrderTest.groovy | 2 +- .../engine/petrinet/domain/EventTest.groovy | 2 +- .../petrinet/domain/FunctionsTest.groovy | 30 +++++++++---------- .../petrinet/domain/ImporterTest.groovy | 14 ++++----- .../petrinet/domain/PetriNetTest.groovy | 8 ++--- .../domain/dataset/CaseFieldTest.groovy | 6 ++-- .../dataset/ChangeCasePropertyTest.groovy | 2 +- .../dataset/ChangeFieldValueInitTest.groovy | 2 +- .../domain/dataset/ChoiceFieldTest.groovy | 2 +- .../domain/dataset/DynamicCaseNameTest.groovy | 2 +- .../domain/dataset/DynamicChoicesTest.groovy | 2 +- .../dataset/DynamicDefaultValueTest.groovy | 2 +- .../dataset/DynamicEnumerationTest.groovy | 2 +- .../DynamicValidationPerformanceTest.groovy | 4 +-- .../dataset/DynamicValidationTest.groovy | 2 +- .../domain/dataset/FileFieldTest.groovy | 2 +- .../domain/dataset/FileListFieldTest.groovy | 2 +- .../domain/dataset/MapFieldTest.groovy | 6 ++-- .../domain/roles/ProcessRoleTest.groovy | 2 +- .../service/PetriNetServiceTest.groovy | 2 +- .../web/PetriNetControllerTest.groovy | 2 +- .../ConstructorAndDestructorTest.java | 4 +-- .../engine/importer/ImporterTest.java | 15 +++++----- .../service/ProcessRoleServiceTest.java | 11 ++++--- .../workflow/service/TaskServiceTest.java | 5 ++-- .../engine/workflow/web/VariableArcsTest.java | 3 +- 51 files changed, 140 insertions(+), 121 deletions(-) create mode 100644 src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java diff --git a/src/main/groovy/com/netgrif/application/engine/migration/ActionMigration.groovy b/src/main/groovy/com/netgrif/application/engine/migration/ActionMigration.groovy index 3a2e6b71eb8..d758761519a 100644 --- a/src/main/groovy/com/netgrif/application/engine/migration/ActionMigration.groovy +++ b/src/main/groovy/com/netgrif/application/engine/migration/ActionMigration.groovy @@ -25,7 +25,7 @@ class ActionMigration { void migrateActions(String petriNetPath) { InputStream netStream = new ClassPathResource(petriNetPath).inputStream - ImportPetriNetEventOutcome newPetriNet = petriNetService.importPetriNet(netStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome newPetriNet = petriNetService.importPetriNet(netStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()) List oldPetriNets if(newPetriNet.getNet() != null) { diff --git a/src/main/groovy/com/netgrif/application/engine/startup/ImportHelper.groovy b/src/main/groovy/com/netgrif/application/engine/startup/ImportHelper.groovy index c811f5be226..a282838169a 100644 --- a/src/main/groovy/com/netgrif/application/engine/startup/ImportHelper.groovy +++ b/src/main/groovy/com/netgrif/application/engine/startup/ImportHelper.groovy @@ -105,11 +105,11 @@ class ImportHelper { return authorityService.getOrCreate(name) } - Optional createNet(String fileName, String release, LoggedUser author = userService.transformToLoggedUser(userService.getSystem()), String uriNodeId = uriService.getDefault().stringId, String workspaceId = WorkspaceConstants.DEFAULT_WORKSPACE_ID) { + Optional createNet(String fileName, String release, LoggedUser author = userService.transformToLoggedUser(userService.getSystem()), String uriNodeId = uriService.getDefault().stringId, String workspaceId = userService.getLoggedOrSystem().getWorkspaceId()) { return createNet(fileName, VersionType.valueOf(release.trim().toUpperCase()), author, uriNodeId, workspaceId) } - Optional createNet(String fileName, VersionType release = VersionType.MAJOR, LoggedUser author = userService.transformToLoggedUser(userService.getSystem()), String uriNodeId = uriService.getDefault().stringId, String workspaceId = WorkspaceConstants.DEFAULT_WORKSPACE_ID) { + Optional createNet(String fileName, VersionType release = VersionType.MAJOR, LoggedUser author = userService.transformToLoggedUser(userService.getSystem()), String uriNodeId = uriService.getDefault().stringId, String workspaceId = userService.getLoggedOrSystem().getWorkspaceId()) { InputStream netStream = new ClassPathResource("petriNets/$fileName" as String).inputStream PetriNet petriNet = petriNetService.importPetriNet(netStream, release, author, uriNodeId, workspaceId).getNet() log.info("Imported '${petriNet?.title?.defaultValue}' ['${petriNet?.identifier}', ${petriNet?.stringId}]") diff --git a/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java b/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java new file mode 100644 index 00000000000..6ea5eefbc29 --- /dev/null +++ b/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java @@ -0,0 +1,24 @@ +package com.netgrif.application.engine.petrinet.service.workspace; + +import com.netgrif.core.petrinet.domain.workspace.DefaultWorkspaceService; +import com.netgrif.core.petrinet.domain.workspace.Workspace; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +public class DefaultWorkspaceServiceImpl implements DefaultWorkspaceService { + + private final Workspace defaultWorkspace; + + public DefaultWorkspaceServiceImpl() { + this.defaultWorkspace = new Workspace(); + this.defaultWorkspace.setId(DefaultWorkspaceService.DEFAULT_WORKSPACE_ID); + this.defaultWorkspace.setDefaultWorkspace(true); + } + + @Override + public Workspace getDefaultWorkspace() { + return defaultWorkspace; + } +} diff --git a/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java b/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java index 64f2230bfd5..6abf3e57446 100644 --- a/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java +++ b/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java @@ -19,7 +19,6 @@ import com.netgrif.adapter.petrinet.service.ProcessRoleService; import com.netgrif.application.engine.workflow.domain.FileStorageConfiguration; import com.netgrif.application.engine.petrinet.web.responsebodies.*; -import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import com.netgrif.core.workflow.domain.eventoutcomes.petrinetoutcomes.ImportPetriNetEventOutcome; import com.netgrif.application.engine.workflow.domain.eventoutcomes.response.EventOutcomeWithMessage; import com.netgrif.application.engine.workflow.domain.eventoutcomes.response.EventOutcomeWithMessageResource; @@ -116,7 +115,7 @@ public EntityModel importPetriNet( try { String decodedUriNodeId = new String(Base64.decodeBase64(uriNodeId)); VersionType release = releaseType == null ? VersionType.MAJOR : VersionType.valueOf(releaseType.trim().toUpperCase()); - ImportPetriNetEventOutcome importPetriNetOutcome = service.importPetriNet(multipartFile.getInputStream(), release, (LoggedUser) auth.getPrincipal(), decodedUriNodeId, workspaceId == null ? WorkspaceConstants.DEFAULT_WORKSPACE_ID : workspaceId); + ImportPetriNetEventOutcome importPetriNetOutcome = service.importPetriNet(multipartFile.getInputStream(), release, (LoggedUser) auth.getPrincipal(), decodedUriNodeId, workspaceId == null ? ((LoggedUser) auth.getPrincipal()).getWorkspaceId() : workspaceId); return EventOutcomeWithMessageResource.successMessage("Petri net " + multipartFile.getOriginalFilename() + " imported successfully", LocalisedEventOutcomeFactory.from(importPetriNetOutcome, locale)); } catch (IOException e) { diff --git a/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java b/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java index a9e6ddd225f..66b02eb62c9 100644 --- a/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java +++ b/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java @@ -8,7 +8,6 @@ import com.netgrif.application.engine.petrinet.domain.roles.ProcessRoleRepository; import com.netgrif.application.engine.startup.ApplicationEngineStartupRunner; import com.netgrif.application.engine.startup.annotation.RunnerOrder; -import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; @@ -30,7 +29,7 @@ public class AnonymousRoleRunner implements ApplicationEngineStartupRunner { @Override public void run(ApplicationArguments args) throws Exception { log.info("Creating anonymous process role"); - Set role = repository.findAllByImportIdAndWorkspaceId(ProcessRole.ANONYMOUS_ROLE, WorkspaceConstants.DEFAULT_WORKSPACE_ID); + Set role = repository.findAllByImportIdAndWorkspaceId(ProcessRole.ANONYMOUS_ROLE, userService.getLoggedOrSystem().getWorkspaceId()); if (role != null && !role.isEmpty()) { log.info("Anonymous role already exists"); return; diff --git a/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java b/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java index 34710c2fed1..f74c40f2913 100644 --- a/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java +++ b/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java @@ -8,7 +8,6 @@ import com.netgrif.application.engine.petrinet.domain.roles.ProcessRoleRepository; import com.netgrif.application.engine.startup.ApplicationEngineStartupRunner; import com.netgrif.application.engine.startup.annotation.RunnerOrder; -import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; @@ -32,7 +31,7 @@ public class DefaultRoleRunner implements ApplicationEngineStartupRunner { @Override public void run(ApplicationArguments args) throws Exception { log.info("Creating default process role"); - Set role = repository.findAllByName_DefaultValueAndWorkspaceId(ProcessRole.DEFAULT_ROLE, WorkspaceConstants.DEFAULT_WORKSPACE_ID); + Set role = repository.findAllByName_DefaultValueAndWorkspaceId(ProcessRole.DEFAULT_ROLE, userService.getLoggedOrSystem().getWorkspaceId()); if (role != null && !role.isEmpty()) { log.info("Default role already exists"); return; diff --git a/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java b/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java index 310a971b677..d54b1bae166 100644 --- a/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java +++ b/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java @@ -8,6 +8,7 @@ import com.netgrif.application.engine.startup.ApplicationEngineStartupRunner; import com.netgrif.application.engine.startup.annotation.RunnerOrder; import com.netgrif.core.auth.domain.enums.UserState; +import com.netgrif.core.petrinet.domain.workspace.DefaultWorkspaceService; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -37,6 +38,7 @@ public class SuperCreatorRunner implements ApplicationEngineStartupRunner { private final UserService userService; private final GroupService groupService; private final ProcessRoleService processRoleService; + private final DefaultWorkspaceService defaultWorkspaceService; @Getter private IUser superUser; @@ -72,6 +74,7 @@ private IUser createSuperUser() { this.superUser = superUser.get(); } + this.superUser.setWorkspaceId(defaultWorkspaceService.getDefaultWorkspace().getId()); return this.superUser; } @@ -97,6 +100,7 @@ public void setAllAuthorities() { } public LoggedUser getLoggedSuper() { + this.superUser.setWorkspaceId(defaultWorkspaceService.getDefaultWorkspace().getId()); return userService.transformToLoggedUser(superUser); } diff --git a/src/test/groovy/com/netgrif/application/engine/action/AssignActionTest.groovy b/src/test/groovy/com/netgrif/application/engine/action/AssignActionTest.groovy index ab1eed4eab1..a5a05514785 100644 --- a/src/test/groovy/com/netgrif/application/engine/action/AssignActionTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/action/AssignActionTest.groovy @@ -107,10 +107,10 @@ class AssignActionTest { } private void createMainAndSecondaryNet() { - def mainNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/assignRoleMainNet_test_.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def mainNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/assignRoleMainNet_test_.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert mainNet.getNet() != null - def secondaryNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/assignRoleSecondaryNet_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def secondaryNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/assignRoleSecondaryNet_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert secondaryNet.getNet() != null this.mainNet = mainNet.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/action/AssignRemoveTest.groovy b/src/test/groovy/com/netgrif/application/engine/action/AssignRemoveTest.groovy index 203b558e54f..d011dc5368b 100644 --- a/src/test/groovy/com/netgrif/application/engine/action/AssignRemoveTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/action/AssignRemoveTest.groovy @@ -66,7 +66,7 @@ class AssignRemoveTest { @Test @Disabled("Create functions or update test") public void testAssignAndRemoveRole() throws MissingPetriNetMetaDataException, IOException { - ImportPetriNetEventOutcome netOptional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/role_assign_remove_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + ImportPetriNetEventOutcome netOptional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/role_assign_remove_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()); assert netOptional.getNet() != null; def net = netOptional.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/action/RemoveActionTest.groovy b/src/test/groovy/com/netgrif/application/engine/action/RemoveActionTest.groovy index b12d2298fea..488ab065c48 100644 --- a/src/test/groovy/com/netgrif/application/engine/action/RemoveActionTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/action/RemoveActionTest.groovy @@ -93,7 +93,7 @@ class RemoveActionTest { .apply(springSecurity()) .build() - def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/removeRole_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/removeRole_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert net.getNet() != null this.petriNet = net.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/auth/AuthenticationControllerTest.groovy b/src/test/groovy/com/netgrif/application/engine/auth/AuthenticationControllerTest.groovy index ae0f78123ef..7461625c921 100644 --- a/src/test/groovy/com/netgrif/application/engine/auth/AuthenticationControllerTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/auth/AuthenticationControllerTest.groovy @@ -85,7 +85,7 @@ class AuthenticationControllerTest { smtpServer = new GreenMail(new ServerSetup(2525, null, "smtp")).withConfiguration(GreenMailConfiguration.aConfig().withDisabledAuthentication()) smtpServer.start() - def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/insurance_portal_demo_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/insurance_portal_demo_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert net.getNet() != null if (authorityService.findAll().size() == 0) importHelper.createAuthority(Authority.user) diff --git a/src/test/groovy/com/netgrif/application/engine/auth/SecurityContextTest.groovy b/src/test/groovy/com/netgrif/application/engine/auth/SecurityContextTest.groovy index 9c11eaddc07..8f0f5a72cac 100644 --- a/src/test/groovy/com/netgrif/application/engine/auth/SecurityContextTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/auth/SecurityContextTest.groovy @@ -72,7 +72,7 @@ class SecurityContextTest { user = userService.saveUser(user, null) assert user != null - net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert net != null } diff --git a/src/test/groovy/com/netgrif/application/engine/auth/TaskAuthorizationServiceTest.groovy b/src/test/groovy/com/netgrif/application/engine/auth/TaskAuthorizationServiceTest.groovy index 85242aef73c..6648038c9ca 100644 --- a/src/test/groovy/com/netgrif/application/engine/auth/TaskAuthorizationServiceTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/auth/TaskAuthorizationServiceTest.groovy @@ -158,11 +158,11 @@ class TaskAuthorizationServiceTest { @BeforeEach void init() { testHelper.truncateDbs() - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/task_authorization_service_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/task_authorization_service_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert net.getNet() != null this.net = net.getNet() - ImportPetriNetEventOutcome netWithUserRefs = petriNetService.importPetriNet(new FileInputStream("src/test/resources/task_authorization_service_test_with_userRefs.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome netWithUserRefs = petriNetService.importPetriNet(new FileInputStream("src/test/resources/task_authorization_service_test_with_userRefs.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert netWithUserRefs.getNet() != null this.netWithUserRefs = netWithUserRefs.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/auth/WorkflowAuthorizationServiceTest.groovy b/src/test/groovy/com/netgrif/application/engine/auth/WorkflowAuthorizationServiceTest.groovy index 01eacfe0903..855bf8f87fc 100644 --- a/src/test/groovy/com/netgrif/application/engine/auth/WorkflowAuthorizationServiceTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/auth/WorkflowAuthorizationServiceTest.groovy @@ -119,11 +119,11 @@ class WorkflowAuthorizationServiceTest { @BeforeEach void init() { testHelper.truncateDbs() - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/workflow_authorization_service_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/workflow_authorization_service_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert net.getNet() != null this.net = net.getNet() - ImportPetriNetEventOutcome netWithUserRefs = petriNetService.importPetriNet(new FileInputStream("src/test/resources/workflow_authorization_service_test_with_userRefs.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome netWithUserRefs = petriNetService.importPetriNet(new FileInputStream("src/test/resources/workflow_authorization_service_test_with_userRefs.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert netWithUserRefs.getNet() != null this.netWithUserRefs = netWithUserRefs.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/elastic/DataSearchRequestTest.groovy b/src/test/groovy/com/netgrif/application/engine/elastic/DataSearchRequestTest.groovy index 674a5cb1062..c18e663b019 100644 --- a/src/test/groovy/com/netgrif/application/engine/elastic/DataSearchRequestTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/elastic/DataSearchRequestTest.groovy @@ -96,7 +96,7 @@ class DataSearchRequestTest { void before() { testHelper.truncateDbs() - def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert net.getNet() != null def users = userService.findAllUsers(null) diff --git a/src/test/groovy/com/netgrif/application/engine/elastic/ElasticSearchTest.groovy b/src/test/groovy/com/netgrif/application/engine/elastic/ElasticSearchTest.groovy index 6f55b96b60b..8f493826ab7 100644 --- a/src/test/groovy/com/netgrif/application/engine/elastic/ElasticSearchTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/elastic/ElasticSearchTest.groovy @@ -101,8 +101,8 @@ class ElasticSearchTest { auth = new UsernamePasswordAuthenticationToken(USER_EMAIL, USER_PASSW) testHelper.truncateDbs() - def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() - def net2 = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()).getNet() + def net2 = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert net assert net2 diff --git a/src/test/groovy/com/netgrif/application/engine/elastic/ElasticTaskTest.groovy b/src/test/groovy/com/netgrif/application/engine/elastic/ElasticTaskTest.groovy index c49140a5b61..60954700892 100644 --- a/src/test/groovy/com/netgrif/application/engine/elastic/ElasticTaskTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/elastic/ElasticTaskTest.groovy @@ -80,7 +80,7 @@ class ElasticTaskTest { @Test void taskReindexTest() { - def optional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def optional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert optional.getNet() != null def net = optional.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/elastic/ReindexTest.groovy b/src/test/groovy/com/netgrif/application/engine/elastic/ReindexTest.groovy index 72260cd9219..3d4d76b058d 100644 --- a/src/test/groovy/com/netgrif/application/engine/elastic/ReindexTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/elastic/ReindexTest.groovy @@ -51,7 +51,7 @@ class ReindexTest { @Test void reindexTest() { - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert net.getNet() != null int countTread = Thread.activeCount() List threads = [] diff --git a/src/test/groovy/com/netgrif/application/engine/importer/PredefinedRolesPermissionsTest.groovy b/src/test/groovy/com/netgrif/application/engine/importer/PredefinedRolesPermissionsTest.groovy index 52d151c6227..1f14b188fb7 100644 --- a/src/test/groovy/com/netgrif/application/engine/importer/PredefinedRolesPermissionsTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/importer/PredefinedRolesPermissionsTest.groovy @@ -446,7 +446,7 @@ class PredefinedRolesPermissionsTest { } private NetCaseTask importAndCreate(Resource model) { - ImportPetriNetEventOutcome importOutcome = petriNetService.importPetriNet(model.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome importOutcome = petriNetService.importPetriNet(model.inputStream, VersionType.MAJOR, superCreator.loggedSuper, userService.getLoggedOrSystem().getWorkspaceId()) assert importOutcome.getNet() != null diff --git a/src/test/groovy/com/netgrif/application/engine/importer/UserListTest.groovy b/src/test/groovy/com/netgrif/application/engine/importer/UserListTest.groovy index a28de5fe75d..ff3288b68b7 100644 --- a/src/test/groovy/com/netgrif/application/engine/importer/UserListTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/importer/UserListTest.groovy @@ -55,7 +55,7 @@ class UserListTest { @Test void testUserList() throws MissingPetriNetMetaDataException, IOException { - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/user_list.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/user_list.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()); assert net.getNet() != null; Optional caseOpt = caseRepository.findOne(QCase.case$.title.eq("User List")); diff --git a/src/test/groovy/com/netgrif/application/engine/ipc/AssignCancelFinishWithCaseTest.groovy b/src/test/groovy/com/netgrif/application/engine/ipc/AssignCancelFinishWithCaseTest.groovy index 6443a560d35..f212051bdaa 100644 --- a/src/test/groovy/com/netgrif/application/engine/ipc/AssignCancelFinishWithCaseTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/ipc/AssignCancelFinishWithCaseTest.groovy @@ -58,7 +58,7 @@ class AssignCancelFinishWithCaseTest { @Test void testAssignCancelFinish() { - def testNet = petriNetService.importPetriNet(stream(ASSIGN_CANCEL_FINISH_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def testNet = petriNetService.importPetriNet(stream(ASSIGN_CANCEL_FINISH_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert testNet.getNet() != null diff --git a/src/test/groovy/com/netgrif/application/engine/ipc/CaseApiTest.groovy b/src/test/groovy/com/netgrif/application/engine/ipc/CaseApiTest.groovy index fe573f0642d..2b347a83685 100644 --- a/src/test/groovy/com/netgrif/application/engine/ipc/CaseApiTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/ipc/CaseApiTest.groovy @@ -56,7 +56,7 @@ class CaseApiTest { @Test void testCreate() { - testNet = petriNetService.importPetriNet(stream(CREATE_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + testNet = petriNetService.importPetriNet(stream(CREATE_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert testNet.getNet() != null @@ -73,7 +73,7 @@ class CaseApiTest { void testSearch() { testHelper.truncateDbs() - testNet = petriNetService.importPetriNet(stream(SEARCH_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + testNet = petriNetService.importPetriNet(stream(SEARCH_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert testNet.getNet() != null diff --git a/src/test/groovy/com/netgrif/application/engine/ipc/TaskApiTest.groovy b/src/test/groovy/com/netgrif/application/engine/ipc/TaskApiTest.groovy index fd4e43676b2..e764d890510 100644 --- a/src/test/groovy/com/netgrif/application/engine/ipc/TaskApiTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/ipc/TaskApiTest.groovy @@ -69,7 +69,7 @@ class TaskApiTest { @Test @Disabled("GroovyRuntime Could not find matching constructor") void testTaskSearch() { - def netOptional = petriNetService.importPetriNet(stream(TASK_SEARCH_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional = petriNetService.importPetriNet(stream(TASK_SEARCH_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional.getNet() != null @@ -100,7 +100,7 @@ class TaskApiTest { @Test @Disabled() void testTaskEventActions() { - def netOptional = petriNetService.importPetriNet(stream(TASK_EVENTS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional = petriNetService.importPetriNet(stream(TASK_EVENTS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional.getNet() != null @@ -122,8 +122,8 @@ class TaskApiTest { @Test @Disabled("spusta 2 krat") void testTaskExecution() { - def limitsNetOptional = petriNetService.importPetriNet(stream(LIMITS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) - def leasingNetOptional = petriNetService.importPetriNet(stream(LEASING_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def limitsNetOptional = petriNetService.importPetriNet(stream(LIMITS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) + def leasingNetOptional = petriNetService.importPetriNet(stream(LEASING_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert limitsNetOptional.getNet() != null assert leasingNetOptional.getNet() != null @@ -197,7 +197,7 @@ class TaskApiTest { @Test void testTaskBulkActions() { - def netOptional = petriNetService.importPetriNet(stream(TASK_BULK_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional = petriNetService.importPetriNet(stream(TASK_BULK_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional.getNet() != null PetriNet net = netOptional.getNet() @@ -222,7 +222,7 @@ class TaskApiTest { @Test void testGetData() { - def netOptional = petriNetService.importPetriNet(stream(TASK_GETTER_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional = petriNetService.importPetriNet(stream(TASK_GETTER_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional.getNet() != null PetriNet net = netOptional.getNet() @@ -257,7 +257,7 @@ class TaskApiTest { @Test void testSetData() { - def netOptional = petriNetService.importPetriNet(stream(TASK_SETTER_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional = petriNetService.importPetriNet(stream(TASK_SETTER_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional.getNet() != null PetriNet net = netOptional.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/pdf/service/PdfGeneratorTest.groovy b/src/test/groovy/com/netgrif/application/engine/pdf/service/PdfGeneratorTest.groovy index 41d86c71163..a1d784330f0 100644 --- a/src/test/groovy/com/netgrif/application/engine/pdf/service/PdfGeneratorTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/pdf/service/PdfGeneratorTest.groovy @@ -90,7 +90,7 @@ class PdfGeneratorTest { @Test void testActionDelegateFunction() { - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[3]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[3]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), userService.getLoggedOrSystem().getWorkspaceId()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) String taskId = testCase.getTasks().find(taskPair -> taskPair.transition.equals("1")).task @@ -102,7 +102,7 @@ class PdfGeneratorTest { @Test void testAllData() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[3]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[3]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), userService.getLoggedOrSystem().getWorkspaceId()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[3] + "_.pdf")) @@ -116,7 +116,7 @@ class PdfGeneratorTest { @Test void testingNormal() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[0]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[0]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), userService.getLoggedOrSystem().getWorkspaceId()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[0] + "_.pdf")) @@ -130,7 +130,7 @@ class PdfGeneratorTest { @Test void testingWithTemplate() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[1]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[1]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), userService.getLoggedOrSystem().getWorkspaceId()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[1] + "_.pdf")) @@ -149,7 +149,7 @@ class PdfGeneratorTest { @Test void testingCustomFunction() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[1]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[1]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), userService.getLoggedOrSystem().getWorkspaceId()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) String filename = pdfResource.getOutputDefaultName() @@ -169,7 +169,7 @@ class PdfGeneratorTest { @Test void testingLongDocument() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[2]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[2]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), userService.getLoggedOrSystem().getWorkspaceId()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[2] + "_.pdf")) @@ -183,7 +183,7 @@ class PdfGeneratorTest { @Test void testingPageNumber() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[2]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[2]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), userService.getLoggedOrSystem().getWorkspaceId()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setNumberFormat(Locale.US) @@ -210,7 +210,7 @@ class PdfGeneratorTest { pdfResource.getLineHeight(), pdfResource) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[2]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[2]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), userService.getLoggedOrSystem().getWorkspaceId()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_custom_field.pdf")) @@ -225,7 +225,7 @@ class PdfGeneratorTest { @Test void testFlowLayout() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[4]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[4]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), userService.getLoggedOrSystem().getWorkspaceId()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() testCase.getPetriNet().getTransition("t1").setDataGroups(getDataGroupMap(dataService.getDataGroups(testCase.getTasks()[0].getTask(), Locale.ENGLISH).getData())) pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[4] + "_.pdf")) @@ -239,7 +239,7 @@ class PdfGeneratorTest { @Test void testDataGroup() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[5]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[5]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), userService.getLoggedOrSystem().getWorkspaceId()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[5] + "_.pdf")) pdfGenerator.setupPdfGenerator(pdfResource) @@ -252,7 +252,7 @@ class PdfGeneratorTest { @Test void testTaskRef() { PdfResource pdfResource = applicationContext.getBean(PdfResource.class) - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[6]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[6]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), userService.getLoggedOrSystem().getWorkspaceId()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() pdfResource.setOutputResource(new ClassPathResource(pdfOutputFolder + "/out_" + TESTING_DATA[6] + "_.pdf")) pdfGenerator.setupPdfGenerator(pdfResource) @@ -264,7 +264,7 @@ class PdfGeneratorTest { @Test void testRunGenerateAction() { - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[7]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[7]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), userService.getLoggedOrSystem().getWorkspaceId()) assertNotNull(net.getNet()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() assertNotNull(testCase) @@ -283,7 +283,7 @@ class PdfGeneratorTest { @Test void testRunGenerateActionToAnotherCase() { - ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[7]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome net = petriNetService.importPetriNet(stream(TESTING_DATA[7]), VersionType.MAJOR, userService.transformToLoggedUser(userService.getSystem()), userService.getLoggedOrSystem().getWorkspaceId()) assertNotNull(net.getNet()) Case testCase = workflowService.createCase(net.getNet().getStringId(), "Test PDF", "", userService.transformToLoggedUser(userService.getSystem())).getCase() assertNotNull(testCase) diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ActionRefTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ActionRefTest.groovy index 8594c25d181..d72b1f3308a 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ActionRefTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ActionRefTest.groovy @@ -60,7 +60,7 @@ class ActionRefTest { @Disabled("TODO: deprecated action ref") void testEventImport() { - PetriNet net = petriNetService.importPetriNet(new FileInputStream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + PetriNet net = petriNetService.importPetriNet(new FileInputStream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert net.dataSet.get("text_1").events.size() == 8 assert net.transitions.get("task").dataSet.get("text_1").events.size() == 8 diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ArcOrderTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ArcOrderTest.groovy index 9fb5ff32452..8939a47e1df 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ArcOrderTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ArcOrderTest.groovy @@ -52,7 +52,7 @@ class ArcOrderTest { @Test void testOrder() { - def net = petriNetService.importPetriNet(stream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def net = petriNetService.importPetriNet(stream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()).getNet() def arcs = net.getArcsOfTransition(NET_TASK) def sorted = arcs.sort { a1, a2 -> ArcOrderComparator.getInstance().compare(a1, a2) } diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/EventTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/EventTest.groovy index a2bf644869c..a6111cb0ea2 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/EventTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/EventTest.groovy @@ -88,7 +88,7 @@ class EventTest { void testEventImport() { testHelper.truncateDbs() - PetriNet net = petriNetService.importPetriNet(stream(EVENT_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + PetriNet net = petriNetService.importPetriNet(stream(EVENT_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()).getNet() instance = helper.createCase(EVENT_NET_CASE, net) outcome = helper.assignTaskToSuper(EVENT_NET_TASK, instance.stringId) diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/FunctionsTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/FunctionsTest.groovy index 6f9a42b4b1d..32ae5e8dc69 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/FunctionsTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/FunctionsTest.groovy @@ -88,8 +88,8 @@ class FunctionsTest { void testNamespaceFunction() { assert userService.findUserByUsername("test@test.com", null) == null - def functionResNet = petriNetService.importPetriNet(functionResNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() - def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def functionResNet = petriNetService.importPetriNet(functionResNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() + def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert functionResNet assert functionTestNet @@ -107,7 +107,7 @@ class FunctionsTest { @Test void testProcessFunctions() { - def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert functionTestNet Case aCase = workflowService.createCase(functionTestNet.stringId, "Test", "", userService.transformToLoggedUser(userService.getLoggedOrSystem())).getCase() @@ -131,7 +131,7 @@ class FunctionsTest { } } - def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert functionTestNet Case aCase = workflowService.createCase(functionTestNet.stringId, "Test", "", userService.transformToLoggedUser(userService.getLoggedOrSystem())).getCase() @@ -149,13 +149,13 @@ class FunctionsTest { } } - def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert functionTestNet Case aCase = workflowService.createCase(functionTestNet.stringId, "Test", "", userService.transformToLoggedUser(userService.getLoggedOrSystem())).getCase() dataService.setData(aCase.tasks.first().task, ImportHelper.populateDataset(["text": ["value": "20", "type": "text"]])) - functionTestNet = petriNetService.importPetriNet(functionTestNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + functionTestNet = petriNetService.importPetriNet(functionTestNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert functionTestNet dataService.setData(aCase.tasks.first().task, ImportHelper.populateDataset(["text": ["value": "20", "type": "text"]])) @@ -165,7 +165,7 @@ class FunctionsTest { @Test void testProcessFunctionException() { assertThrows(MissingMethodException.class, () -> { - def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert functionTestNet Case aCase = workflowService.createCase(functionTestNet.stringId, "Test", "", userService.transformToLoggedUser(userService.getLoggedOrSystem())).getCase() @@ -175,8 +175,8 @@ class FunctionsTest { @Test void testNewVersionOfNamespaceFunction() { - def functionResNet = petriNetService.importPetriNet(functionResNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() - def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def functionResNet = petriNetService.importPetriNet(functionResNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() + def functionTestNet = petriNetService.importPetriNet(functionTestNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert functionResNet assert functionTestNet @@ -187,7 +187,7 @@ class FunctionsTest { assert aCase.getFieldValue("number2") == 20 + 20 - functionResNet = petriNetService.importPetriNet(functionResNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + functionResNet = petriNetService.importPetriNet(functionResNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert functionResNet dataService.setData(aCase.tasks.first().task, ImportHelper.populateDataset(["number": ["value": "20", "type": "number"]])) @@ -199,14 +199,14 @@ class FunctionsTest { @Test void testNamespaceMethodOverloadingFail() { assertThrows(IllegalArgumentException.class, () -> { - petriNetService.importPetriNet(functionOverloadingFailNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + petriNetService.importPetriNet(functionOverloadingFailNetResource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()) }) } @Test void testNamespaceUseCaseUpdate() { - def functionResV2Net = petriNetService.importPetriNet(functionResNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() - def functionTestV2Net = petriNetService.importPetriNet(functionTestNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def functionResV2Net = petriNetService.importPetriNet(functionResNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() + def functionTestV2Net = petriNetService.importPetriNet(functionTestNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() Case aCase = workflowService.createCase(functionTestV2Net.stringId, "Test", "", userService.transformToLoggedUser(userService.getLoggedOrSystem())).getCase() dataService.setData(aCase.tasks.first().task, ImportHelper.populateDataset(["updateOtherField": ["value": "true", "type": "boolean"]])) @@ -224,7 +224,7 @@ class FunctionsTest { @Test void testProcessMethodOverloadingFail() { assertThrows(IllegalArgumentException.class, () -> { - petriNetService.importPetriNet(functionOverloadingFailNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + petriNetService.importPetriNet(functionOverloadingFailNetResourceV2.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()) }) } @@ -234,7 +234,7 @@ class FunctionsTest { } private void testMethodOverloading(Resource resource) { - def petriNet = petriNetService.importPetriNet(resource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + def petriNet = petriNetService.importPetriNet(resource.inputStream, VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert petriNet diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ImporterTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ImporterTest.groovy index ff8e7a16cfb..7c0ea7c34fd 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ImporterTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ImporterTest.groovy @@ -87,7 +87,7 @@ class ImporterTest { firstVersionResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, - WorkspaceConstants.DEFAULT_WORKSPACE_ID + userService.getLoggedOrSystem().getWorkspaceId() ) assert netOptional.getNet() != null assert processRoleRepository.count() == beforeImportNet + 2 @@ -174,7 +174,7 @@ class ImporterTest { secondVersionResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, - WorkspaceConstants.DEFAULT_WORKSPACE_ID + userService.getLoggedOrSystem().getWorkspaceId() ) assert processRoleRepository.count() == statusImportRole + 1 @@ -287,7 +287,7 @@ class ImporterTest { @Test void thisKeywordInDataEventsTest() { - PetriNet net = petriNetService.importPetriNet(new ClassPathResource("/this_kw_test.xml").getInputStream(), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + PetriNet net = petriNetService.importPetriNet(new ClassPathResource("/this_kw_test.xml").getInputStream(), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert net != null Case testCase = workflowService.createCase(net.stringId, "Test case", "", superCreator.loggedSuper).getCase() @@ -298,7 +298,7 @@ class ImporterTest { @Test void initialBehaviorTest() { - PetriNet net = petriNetService.importPetriNet(new ClassPathResource("/initial_behavior.xml").getInputStream(), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + PetriNet net = petriNetService.importPetriNet(new ClassPathResource("/initial_behavior.xml").getInputStream(), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert net Case testCase = workflowService.createCase(net.stringId, "Test case", "", superCreator.loggedSuper).getCase() @@ -321,7 +321,7 @@ class ImporterTest { @Test void enumerationMultichoiceOptionsTest() throws IOException, MissingPetriNetMetaDataException { - PetriNet net = petriNetService.importPetriNet(new ClassPathResource("/enumeration_multichoice_options.xml").getInputStream(), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + PetriNet net = petriNetService.importPetriNet(new ClassPathResource("/enumeration_multichoice_options.xml").getInputStream(), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert net != null @@ -347,7 +347,7 @@ class ImporterTest { new FileInputStream("src/test/resources/datagroup_no_id_test.xml"), VersionType.MAJOR, superCreator.loggedSuper, - WorkspaceConstants.DEFAULT_WORKSPACE_ID) + userService.getLoggedOrSystem().getWorkspaceId()) assert netOutcome.getNet() != null @@ -359,7 +359,7 @@ class ImporterTest { @Test void createTransitionNoLabel(){ - PetriNet net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/importTest/NoLabel.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + PetriNet net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/importTest/NoLabel.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert net PetriNet importNet = petriNetService.findByImportId(net.getImportId()).get() assert importNet diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/PetriNetTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/PetriNetTest.groovy index 5b23cee96ff..14561406d7c 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/PetriNetTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/PetriNetTest.groovy @@ -59,7 +59,7 @@ class PetriNetTest { void testClone() { int beforeImportNet = processRoleRepository.count() - def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional.getNet() != null @@ -80,13 +80,13 @@ class PetriNetTest { @Test void testVersioning() { - def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional.getNet() != null - def netOptional2 = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional2 = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional2.getNet() != null - def netOptional3 = petriNetService.importPetriNet(netResource2.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional3 = petriNetService.importPetriNet(netResource2.inputStream, VersionType.MAJOR, superCreator.loggedSuper, userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional3.getNet() != null def nets = petriNetService.getReferencesByVersion(null, superCreator.loggedSuper, Locale.UK) diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/CaseFieldTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/CaseFieldTest.groovy index e572935a24f..95f3c84af72 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/CaseFieldTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/CaseFieldTest.groovy @@ -115,7 +115,7 @@ class CaseFieldTest { @Test void testImmediateAllowedNets() { - def testNet = petriNetService.importPetriNet(stream(ALLOWED_NETS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def testNet = petriNetService.importPetriNet(stream(ALLOWED_NETS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert testNet.getNet() != null Case aCase = importHelper.createCase("Case 1", testNet.getNet()) @@ -169,10 +169,10 @@ class CaseFieldTest { @Test @Disabled("Please fix this test") void testChangeValueAction() { - def notAllowedNet = petriNetService.importPetriNet(stream(ALLOWED_NETS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def notAllowedNet = petriNetService.importPetriNet(stream(ALLOWED_NETS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert notAllowedNet.getNet() != null - def testNet = petriNetService.importPetriNet(stream(CHANGE_VALUE_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def testNet = petriNetService.importPetriNet(stream(CHANGE_VALUE_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert testNet.getNet() != null Case aCase = importHelper.createCase("Case 1", testNet.getNet()) diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeCasePropertyTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeCasePropertyTest.groovy index 8ea0b7b3f29..c1909182596 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeCasePropertyTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeCasePropertyTest.groovy @@ -57,7 +57,7 @@ class ChangeCasePropertyTest { @BeforeEach void initNet() { testHelper.truncateDbs() - net = petriNetService.importPetriNet(new FileInputStream(RESOURCE_PATH), VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet() + net = petriNetService.importPetriNet(new FileInputStream(RESOURCE_PATH), VersionType.MAJOR, userService.transformToLoggedUser(userService.getLoggedOrSystem()), userService.getLoggedOrSystem().getWorkspaceId()).getNet() assert net != null } diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeFieldValueInitTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeFieldValueInitTest.groovy index cdd415e6efb..1d7f5f5ed5c 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeFieldValueInitTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChangeFieldValueInitTest.groovy @@ -50,7 +50,7 @@ class ChangeFieldValueInitTest { @Test void testInitValues() { - ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/change_field_value_init.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/change_field_value_init.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()); Case useCase = importHelper.createCase("test", optNet.getNet()) assert useCase.dataSet["text_static"].value == "TEST VALUE" diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChoiceFieldTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChoiceFieldTest.groovy index 12201904087..bf0093bee2b 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChoiceFieldTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ChoiceFieldTest.groovy @@ -57,7 +57,7 @@ class ChoiceFieldTest { @Test void testChoices() { - def netOptional = petriNetService.importPetriNet(stream(LIMITS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional = petriNetService.importPetriNet(stream(LIMITS_NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional.getNet() != null def net = netOptional.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicCaseNameTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicCaseNameTest.groovy index 7fcf156465e..ad940ce77cb 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicCaseNameTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicCaseNameTest.groovy @@ -40,7 +40,7 @@ class DynamicCaseNameTest { @Test void testInitValues() { - ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_case_name_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_case_name_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) Case useCase = workflowService.createCase(optNet.getNet().stringId, null, "", superCreator.loggedSuper, Locale.forLanguageTag("sk-SK")).getCase() assert useCase.title == "SK text value 6" diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicChoicesTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicChoicesTest.groovy index 8b8198acc8a..7817a213247 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicChoicesTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicChoicesTest.groovy @@ -51,7 +51,7 @@ class DynamicChoicesTest { @Test void testDynamicEnum() { - ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_choices.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_choices.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()); assert optNet.getNet() != null; def net = optNet.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicDefaultValueTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicDefaultValueTest.groovy index 0fcb567f643..9734481be8a 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicDefaultValueTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicDefaultValueTest.groovy @@ -41,7 +41,7 @@ class DynamicDefaultValueTest { @Test void testInitValues() { - ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_init.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_init.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()); Case useCase = importHelper.createCase("test", optNet.getNet()) assert useCase.dataSet["text"].value == superCreator.superUser.name diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicEnumerationTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicEnumerationTest.groovy index d3d480e2f80..9b5ecb08a0d 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicEnumerationTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicEnumerationTest.groovy @@ -55,7 +55,7 @@ class DynamicEnumerationTest { @Test void testDynamicEnum() { - ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/test_autocomplete_dynamic.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/test_autocomplete_dynamic.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()); assert optNet.getNet() != null; def net = optNet.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationPerformanceTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationPerformanceTest.groovy index b3730a906ac..4185e56fe2b 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationPerformanceTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationPerformanceTest.groovy @@ -62,8 +62,8 @@ class DynamicValidationPerformanceTest { @Test void testValidations() { - ImportPetriNetEventOutcome optNet1 = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_validations_performance_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) - ImportPetriNetEventOutcome optNet2 = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_validations_performance_test_comparison.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome optNet1 = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_validations_performance_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) + ImportPetriNetEventOutcome optNet2 = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_validations_performance_test_comparison.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) def aCase1 = importHelper.createCase("Case 1", optNet1.getNet()) def aCase2 = importHelper.createCase("Case 2", optNet2.getNet()) diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationTest.groovy index f4fd7b21a70..efe70118f34 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/DynamicValidationTest.groovy @@ -58,7 +58,7 @@ class DynamicValidationTest { @Test @Disabled void testValidations() { - ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_validations.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome optNet = petriNetService.importPetriNet(new FileInputStream("src/test/resources/petriNets/dynamic_validations.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) Case useCase = importHelper.createCase("test", optNet.getNet()) Map data = getData(useCase) assert (data["number"]).validations[0] instanceof DynamicValidation diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileFieldTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileFieldTest.groovy index 1b0bed476de..58fde59de89 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileFieldTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileFieldTest.groovy @@ -100,7 +100,7 @@ class FileFieldTest { } PetriNet getNet() { - def netOptional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/remoteFileField.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/remoteFileField.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional.getNet() != null return netOptional.getNet() } diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileListFieldTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileListFieldTest.groovy index a8aa59761b2..bc7c07ce382 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileListFieldTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FileListFieldTest.groovy @@ -164,7 +164,7 @@ class FileListFieldTest { } PetriNet getNet() { - def netOptional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/remoteFileListField.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional = petriNetService.importPetriNet(new FileInputStream("src/test/resources/remoteFileListField.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional.getNet() != null return netOptional.getNet() } diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/MapFieldTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/MapFieldTest.groovy index c77850dfa92..d81355dd70c 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/MapFieldTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/MapFieldTest.groovy @@ -47,7 +47,7 @@ class MapFieldTest { @Test void testImport() { - def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional.getNet() != null def net = netOptional.getNet() @@ -71,7 +71,7 @@ class MapFieldTest { @Test void testValue() { - def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional = petriNetService.importPetriNet(netResource.inputStream, VersionType.MAJOR, superCreator.loggedSuper, userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional.getNet() != null Case aCase = importHelper.createCase("Case", netOptional.getNet()) @@ -108,7 +108,7 @@ class MapFieldTest { @Test void testImportMultichoice() { - def netOptional = petriNetService.importPetriNet(netResource2.inputStream, VersionType.MAJOR, superCreator.loggedSuper, WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def netOptional = petriNetService.importPetriNet(netResource2.inputStream, VersionType.MAJOR, superCreator.loggedSuper, userService.getLoggedOrSystem().getWorkspaceId()) assert netOptional.getNet() != null def net = netOptional.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleTest.groovy index b3d51d853cb..cd7f101ceee 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/domain/roles/ProcessRoleTest.groovy @@ -87,7 +87,7 @@ class ProcessRoleTest { .apply(springSecurity()) .build() - def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/rolref_view.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/rolref_view.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert net.getNet() != null String netId = net.getNet().getStringId() diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/service/PetriNetServiceTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/service/PetriNetServiceTest.groovy index 032c16defa4..998af594435 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/service/PetriNetServiceTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/service/PetriNetServiceTest.groovy @@ -108,7 +108,7 @@ class PetriNetServiceTest { long taskCount = taskRepository.count() - ImportPetriNetEventOutcome testNetOptional = petriNetService.importPetriNet(stream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + ImportPetriNetEventOutcome testNetOptional = petriNetService.importPetriNet(stream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert testNetOptional.getNet() != null assert petriNetRepository.count() == processCount + 1 PetriNet testNet = testNetOptional.getNet() diff --git a/src/test/groovy/com/netgrif/application/engine/petrinet/web/PetriNetControllerTest.groovy b/src/test/groovy/com/netgrif/application/engine/petrinet/web/PetriNetControllerTest.groovy index dc59123c9a9..1a90e34afc5 100644 --- a/src/test/groovy/com/netgrif/application/engine/petrinet/web/PetriNetControllerTest.groovy +++ b/src/test/groovy/com/netgrif/application/engine/petrinet/web/PetriNetControllerTest.groovy @@ -82,7 +82,7 @@ class PetriNetControllerTest { void before() { testHelper.truncateDbs() - def net = petriNetService.importPetriNet(stream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID) + def net = petriNetService.importPetriNet(stream(NET_FILE), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()) assert net.getNet() != null this.net = net.getNet() diff --git a/src/test/java/com/netgrif/application/engine/importer/ConstructorAndDestructorTest.java b/src/test/java/com/netgrif/application/engine/importer/ConstructorAndDestructorTest.java index 705bc5f38fa..09d36b19159 100644 --- a/src/test/java/com/netgrif/application/engine/importer/ConstructorAndDestructorTest.java +++ b/src/test/java/com/netgrif/application/engine/importer/ConstructorAndDestructorTest.java @@ -2,12 +2,10 @@ import com.netgrif.application.engine.TestHelper; import com.netgrif.application.engine.importer.service.throwable.MissingIconKeyException; -import com.netgrif.application.engine.petrinet.service.PetriNetService; import com.netgrif.core.petrinet.domain.VersionType; import com.netgrif.core.petrinet.domain.throwable.MissingPetriNetMetaDataException; import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService; import com.netgrif.application.engine.startup.runner.SuperCreatorRunner; -import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import com.netgrif.core.workflow.domain.Case; import com.netgrif.adapter.workflow.domain.QCase; import com.netgrif.core.workflow.domain.eventoutcomes.petrinetoutcomes.ImportPetriNetEventOutcome; @@ -48,7 +46,7 @@ public void before() { @Test public void testConstructorAndDestructor() throws MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/constructor_destructor.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/constructor_destructor.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), superCreator.getLoggedSuper().getWorkspaceId()); assert outcome.getNet() != null; Optional caseOpt = caseRepository.findOne(QCase.case$.title.eq("Construct")); diff --git a/src/test/java/com/netgrif/application/engine/importer/ImporterTest.java b/src/test/java/com/netgrif/application/engine/importer/ImporterTest.java index 2dc35bc0617..d38b1c53a95 100644 --- a/src/test/java/com/netgrif/application/engine/importer/ImporterTest.java +++ b/src/test/java/com/netgrif/application/engine/importer/ImporterTest.java @@ -11,7 +11,6 @@ import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService; import com.netgrif.application.engine.startup.runner.SuperCreatorRunner; import com.netgrif.application.engine.utils.FullPageRequest; -import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import com.netgrif.core.workflow.domain.eventoutcomes.caseoutcomes.CreateCaseEventOutcome; import com.netgrif.core.workflow.domain.eventoutcomes.petrinetoutcomes.ImportPetriNetEventOutcome; import com.netgrif.application.engine.workflow.service.interfaces.IWorkflowService; @@ -64,13 +63,13 @@ public void before() { @Test public void importPetriNet() throws MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - petriNetService.importPetriNet(new FileInputStream("src/test/resources/prikladFM_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/prikladFM_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), superCreator.getLoggedSuper().getWorkspaceId()); assertNetProperlyImported(); } @Test public void priorityTest() throws MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/priority_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/priority_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), superCreator.getLoggedSuper().getWorkspaceId()); assert outcome.getNet() != null; CreateCaseEventOutcome caseOutcome = workflowService.createCase(outcome.getNet().getStringId(), outcome.getNet().getTitle().getDefaultValue(), "color", superCreator.getLoggedSuper()); @@ -80,19 +79,19 @@ public void priorityTest() throws MissingPetriNetMetaDataException, IOException, @Test public void dataGroupTest() throws MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/datagroup_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/datagroup_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), superCreator.getLoggedSuper().getWorkspaceId()); assert outcome.getNet() != null; } @Test public void readArcImportTest() throws MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - petriNetService.importPetriNet(new FileInputStream("src/test/resources/read_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/read_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), superCreator.getLoggedSuper().getWorkspaceId()); } @Test public void externalMappingTest() throws MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/mapping_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + ImportPetriNetEventOutcome outcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/mapping_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), superCreator.getLoggedSuper().getWorkspaceId()); assertExternalMappingImport(outcome.getNet()); } @@ -104,7 +103,7 @@ void importInvalidDataRefLayoutTest() throws FileNotFoundException { FileInputStream fileInputStream = new FileInputStream("src/test/resources/invalid_data_ref_layout.xml"); - assertThatThrownBy(() -> petriNetService.importPetriNet(fileInputStream, VersionType.MAJOR, loggedUser, WorkspaceConstants.DEFAULT_WORKSPACE_ID)) + assertThatThrownBy(() -> petriNetService.importPetriNet(fileInputStream, VersionType.MAJOR, loggedUser, superCreator.getLoggedSuper().getWorkspaceId())) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("doesn't have a layout"); @@ -135,7 +134,7 @@ private void assertExternalMappingImport(PetriNet imported) { private void assertNetProperlyImported() { assert repository.count() > 0; - Page nets = repository.findByIdentifierAndWorkspaceId(NET_ID, WorkspaceConstants.DEFAULT_WORKSPACE_ID, new FullPageRequest()); + Page nets = repository.findByIdentifierAndWorkspaceId(NET_ID, superCreator.getLoggedSuper().getWorkspaceId(), new FullPageRequest()); PetriNet net = nets.getContent().get(0); assert net.getTitle().getDefaultValue().equals(NET_TITLE); assert net.getInitials().equals(NET_INITIALS); diff --git a/src/test/java/com/netgrif/application/engine/petrinet/service/ProcessRoleServiceTest.java b/src/test/java/com/netgrif/application/engine/petrinet/service/ProcessRoleServiceTest.java index acd26565c19..b5e0afee0cc 100644 --- a/src/test/java/com/netgrif/application/engine/petrinet/service/ProcessRoleServiceTest.java +++ b/src/test/java/com/netgrif/application/engine/petrinet/service/ProcessRoleServiceTest.java @@ -7,7 +7,6 @@ import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService; import com.netgrif.adapter.petrinet.service.ProcessRoleService; import com.netgrif.application.engine.startup.runner.SuperCreatorRunner; -import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import com.netgrif.core.workflow.domain.eventoutcomes.petrinetoutcomes.ImportPetriNetEventOutcome; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -56,8 +55,8 @@ public void before() { void shouldFindAllProcessRoles() throws IOException, MissingPetriNetMetaDataException { List roles = processRoleService.findAll(); int originalRoles = roles.size(); - petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); - petriNetService.importPetriNet(new FileInputStream("src/test/resources/role_all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), superCreator.getLoggedSuper().getWorkspaceId()); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/role_all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), superCreator.getLoggedSuper().getWorkspaceId()); roles = processRoleService.findAll(); assertNotNull(roles); assertFalse(roles.isEmpty()); @@ -66,7 +65,7 @@ void shouldFindAllProcessRoles() throws IOException, MissingPetriNetMetaDataExce @Test void shouldFindAllProcessRolesByPetriNet() throws IOException, MissingPetriNetMetaDataException { - ImportPetriNetEventOutcome eventOutcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + ImportPetriNetEventOutcome eventOutcome = petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), superCreator.getLoggedSuper().getWorkspaceId()); List roles = processRoleService.findAll(eventOutcome.getNet().getStringId()); assertNotNull(roles); assertFalse(roles.isEmpty()); @@ -93,7 +92,7 @@ void shouldGetAnonymousRole() { @Test void shouldFindAllProcessRolesByImportId() throws IOException, MissingPetriNetMetaDataException { - petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), superCreator.getLoggedSuper().getWorkspaceId()); Set roles = processRoleService.findAllByImportId(ROLE_IMPORT_ID); assertNotNull(roles); assertFalse(roles.isEmpty()); @@ -103,7 +102,7 @@ void shouldFindAllProcessRolesByImportId() throws IOException, MissingPetriNetMe @Test void shouldFindAllProcessRolesByName() throws IOException, MissingPetriNetMetaDataException { - petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/all_data.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), superCreator.getLoggedSuper().getWorkspaceId()); Collection roles = processRoleService.findAllByDefaultName("Process role"); assertNotNull(roles); assertFalse(roles.isEmpty()); diff --git a/src/test/java/com/netgrif/application/engine/workflow/service/TaskServiceTest.java b/src/test/java/com/netgrif/application/engine/workflow/service/TaskServiceTest.java index 9c7a2a083d8..ed876c4f53b 100644 --- a/src/test/java/com/netgrif/application/engine/workflow/service/TaskServiceTest.java +++ b/src/test/java/com/netgrif/application/engine/workflow/service/TaskServiceTest.java @@ -19,7 +19,6 @@ import com.netgrif.application.engine.startup.runner.SuperCreatorRunner; import com.netgrif.application.engine.startup.runner.SystemUserRunner; import com.netgrif.application.engine.startup.runner.UriRunner; -import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import com.netgrif.core.workflow.domain.Case; import com.netgrif.core.workflow.domain.Task; import com.netgrif.core.workflow.domain.eventoutcomes.caseoutcomes.CreateCaseEventOutcome; @@ -93,14 +92,14 @@ public void setUp() throws Exception { userRunner.run(null); uriRunner.run(null); - petriNetService.importPetriNet(new FileInputStream("src/test/resources/prikladFM.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + petriNetService.importPetriNet(new FileInputStream("src/test/resources/prikladFM.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()); PetriNet net = petriNetRepository.findAll().get(0); workflowService.createCase(net.getStringId(), "Storage Unit", "color", mockLoggedUser()); } @Test public void resetArcTest() throws TransitionNotExecutableException, MissingPetriNetMetaDataException, IOException, MissingIconKeyException { - PetriNet net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/reset_inhibitor_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID).getNet(); + PetriNet net = petriNetService.importPetriNet(new FileInputStream("src/test/resources/reset_inhibitor_test.xml"), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()).getNet(); LoggedUser loggedUser = mockLoggedUser(); CreateCaseEventOutcome outcome = workflowService.createCase(net.getStringId(), "Reset test", "color", loggedUser); User user = new com.netgrif.adapter.auth.domain.User(); diff --git a/src/test/java/com/netgrif/application/engine/workflow/web/VariableArcsTest.java b/src/test/java/com/netgrif/application/engine/workflow/web/VariableArcsTest.java index a7f34dd7d43..086d098dfc1 100644 --- a/src/test/java/com/netgrif/application/engine/workflow/web/VariableArcsTest.java +++ b/src/test/java/com/netgrif/application/engine/workflow/web/VariableArcsTest.java @@ -22,7 +22,6 @@ import com.netgrif.application.engine.startup.runner.SuperCreatorRunner; import com.netgrif.application.engine.startup.runner.SystemUserRunner; import com.netgrif.application.engine.startup.runner.DefaultRoleRunner; -import com.netgrif.core.petrinet.domain.workspace.WorkspaceConstants; import com.netgrif.core.workflow.domain.Case; import com.netgrif.adapter.workflow.domain.QTask; import com.netgrif.core.workflow.domain.Task; @@ -110,7 +109,7 @@ public void before() throws Exception { repository.deleteAll(); assertNotNull(processRoleService.defaultRole()); testHelper.truncateDbs(); - ImportPetriNetEventOutcome outcome = service.importPetriNet(new FileInputStream(NET_PATH), VersionType.MAJOR, superCreator.getLoggedSuper(), WorkspaceConstants.DEFAULT_WORKSPACE_ID); + ImportPetriNetEventOutcome outcome = service.importPetriNet(new FileInputStream(NET_PATH), VersionType.MAJOR, superCreator.getLoggedSuper(), userService.getLoggedOrSystem().getWorkspaceId()); assert outcome.getNet() != null; PetriNet net = outcome.getNet(); From 8c991c74bdc8fff20c7c273071413fcefcc5eab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kov=C3=A1=C4=8Dik?= Date: Tue, 29 Apr 2025 15:19:57 +0200 Subject: [PATCH 03/13] [NAE-2072] Workspaces - add changes from netgrif-modules --- .../application/engine/DevConsole.groovy | 1 + .../service/ElasticPetriNetService.java | 1 + .../petrinet/service/ProcessRoleService.java | 7 +++++- .../DefaultWorkspaceConfiguration.java | 16 +++++++++++++ .../DefaultWorkspaceServiceImpl.java | 6 ++--- .../startup/runner/AnonymousRoleRunner.java | 3 +++ .../startup/runner/DefaultRoleRunner.java | 7 +++--- .../startup/runner/SuperCreatorRunner.java | 5 ++-- .../engine/objects/auth/domain/IUser.java | 4 ++++ .../objects/auth/domain/LoggedUser.java | 2 ++ .../objects/elastic/domain/ElasticCase.java | 4 ++++ .../elastic/domain/ElasticPetriNet.java | 4 ++++ .../objects/elastic/domain/ElasticTask.java | 4 ++++ .../objects/petrinet/domain/PetriNet.java | 8 +++++++ .../objects/petrinet/domain/Transition.java | 4 ++++ .../petrinet/domain/roles/ProcessRole.java | 3 +++ .../workspace/DefaultWorkspaceService.java | 8 +++++++ .../petrinet/domain/workspace/Workspace.java | 21 +++++++++++++++++ .../domain/workspace/WorkspaceService.java | 23 +++++++++++++++++++ .../engine/objects/workflow/domain/Case.java | 4 ++++ .../engine/objects/workflow/domain/Task.java | 4 ++++ .../spring/auth/domain/AnonymousUser.java | 1 + .../spring/auth/domain/LoggedUserImpl.java | 4 ++-- .../adapter/spring/auth/domain/User.java | 7 ++++++ .../auth/domain/mapper/LoggedUserMapper.java | 3 ++- .../spring/elastic/domain/ElasticCase.java | 5 ++++ .../elastic/domain/ElasticPetriNet.java | 6 +++++ .../spring/elastic/domain/ElasticTask.java | 6 +++++ .../petrinet/service/ProcessRoleService.java | 1 + .../adapter/spring/workflow/domain/Task.java | 4 ++-- .../engine/auth/service/UserServiceImpl.java | 8 +++++-- 31 files changed, 167 insertions(+), 17 deletions(-) create mode 100644 application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceConfiguration.java rename {src => application-engine/src}/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java (74%) create mode 100644 nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/DefaultWorkspaceService.java create mode 100644 nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/Workspace.java create mode 100644 nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceService.java diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/DevConsole.groovy b/application-engine/src/main/groovy/com/netgrif/application/engine/DevConsole.groovy index 940915c4f22..93f98a4bc39 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/DevConsole.groovy +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/DevConsole.groovy @@ -1,5 +1,6 @@ package com.netgrif.application.engine +import com.netgrif.application.engine.objects.auth.domain.LoggedUser import com.netgrif.application.engine.objects.importer.model.Document import com.netgrif.application.engine.petrinet.domain.repositories.PetriNetRepository import com.netgrif.application.engine.workflow.domain.repositories.CaseRepository diff --git a/application-engine/src/main/java/com/netgrif/application/engine/elastic/service/ElasticPetriNetService.java b/application-engine/src/main/java/com/netgrif/application/engine/elastic/service/ElasticPetriNetService.java index 98dfb302c74..da20d90cbcb 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/elastic/service/ElasticPetriNetService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/elastic/service/ElasticPetriNetService.java @@ -1,5 +1,6 @@ package com.netgrif.application.engine.elastic.service; +import com.netgrif.application.engine.auth.service.UserService; import com.netgrif.application.engine.objects.elastic.domain.ElasticPetriNet; import com.netgrif.application.engine.elastic.domain.ElasticPetriNetRepository; import com.netgrif.application.engine.elastic.service.executors.Executor; diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java index 7ce172ca8ec..78b64e34a4e 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java @@ -63,7 +63,7 @@ public ProcessRole save(ProcessRole processRole) { @Override public List getAll() { - return processRoleRepository.findAllByWorkspaceId(userService.getLoggedOrSystem().getWorkspaceId()); + return processRoleRepository.findAll(); } @Override @@ -293,6 +293,11 @@ public List findAll() { return processRoleRepository.findAllByWorkspaceId(userService.getLoggedOrSystem().getWorkspaceId()); } + @Override + public List findAllByWorkspaceId(String workspaceId) { + return processRoleRepository.findAllByWorkspaceId(workspaceId); + } + @Override public Set findAllGlobalRoles() { return processRoleRepository.findAllByGlobalIsTrueAndWorkspaceId(userService.getLoggedOrSystem().getWorkspaceId()); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceConfiguration.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceConfiguration.java new file mode 100644 index 00000000000..2d3beafa209 --- /dev/null +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceConfiguration.java @@ -0,0 +1,16 @@ +package com.netgrif.application.engine.petrinet.service.workspace; + +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class DefaultWorkspaceConfiguration { + + @Bean + @ConditionalOnMissingBean + public DefaultWorkspaceService defaultWorkspaceService() { + return new DefaultWorkspaceServiceImpl(); + } +} diff --git a/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java similarity index 74% rename from src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java rename to application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java index 6ea5eefbc29..686d7d86e12 100644 --- a/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java @@ -1,12 +1,10 @@ package com.netgrif.application.engine.petrinet.service.workspace; -import com.netgrif.core.petrinet.domain.workspace.DefaultWorkspaceService; -import com.netgrif.core.petrinet.domain.workspace.Workspace; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.Workspace; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; @Slf4j -@Service public class DefaultWorkspaceServiceImpl implements DefaultWorkspaceService { private final Workspace defaultWorkspace; diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java index 39e98f3f08c..750bb8879a8 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java @@ -1,9 +1,11 @@ package com.netgrif.application.engine.startup.runner; +import com.netgrif.application.engine.auth.service.UserService; import com.netgrif.application.engine.objects.petrinet.domain.I18nString; import com.netgrif.application.engine.objects.petrinet.domain.events.Event; import com.netgrif.application.engine.objects.petrinet.domain.events.EventType; import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import com.netgrif.application.engine.petrinet.domain.roles.ProcessRoleRepository; import com.netgrif.application.engine.startup.ApplicationEngineStartupRunner; import com.netgrif.application.engine.startup.annotation.RunnerOrder; @@ -39,6 +41,7 @@ public void run(ApplicationArguments args) throws Exception { anonymousRole.setName(new I18nString(ProcessRole.ANONYMOUS_ROLE)); anonymousRole.setDescription("Anonymous system process role"); anonymousRole.setEvents(new LinkedHashMap()); + anonymousRole.setWorkspaceId(DefaultWorkspaceService.DEFAULT_WORKSPACE_ID); repository.save(anonymousRole); } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java index 4d58f5d257b..6696db82485 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java @@ -1,9 +1,11 @@ package com.netgrif.application.engine.startup.runner; +import com.netgrif.application.engine.auth.service.UserService; import com.netgrif.application.engine.objects.petrinet.domain.I18nString; import com.netgrif.application.engine.objects.petrinet.domain.events.Event; import com.netgrif.application.engine.objects.petrinet.domain.events.EventType; import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import com.netgrif.application.engine.petrinet.domain.roles.ProcessRoleRepository; import com.netgrif.application.engine.startup.ApplicationEngineStartupRunner; import com.netgrif.application.engine.startup.annotation.RunnerOrder; @@ -25,12 +27,10 @@ public class DefaultRoleRunner implements ApplicationEngineStartupRunner { private final ProcessRoleRepository repository; - private final UserService userService; - @Override public void run(ApplicationArguments args) throws Exception { log.info("Creating default process role"); - Set role = repository.findAllByName_DefaultValueAndWorkspaceId(ProcessRole.DEFAULT_ROLE, userService.getLoggedOrSystem().getWorkspaceId()); + Set role = repository.findAllByName_DefaultValueAndWorkspaceId(ProcessRole.DEFAULT_ROLE, DefaultWorkspaceService.DEFAULT_WORKSPACE_ID); if (role != null && !role.isEmpty()) { log.info("Default role already exists"); return; @@ -41,6 +41,7 @@ public void run(ApplicationArguments args) throws Exception { defaultRole.setName(new I18nString(ProcessRole.DEFAULT_ROLE)); defaultRole.setDescription("Default system process role"); defaultRole.setEvents(new LinkedHashMap()); + defaultRole.setWorkspaceId(DefaultWorkspaceService.DEFAULT_WORKSPACE_ID); defaultRole = repository.save(defaultRole); if (defaultRole == null) { diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java index 7fad1e9e8fe..7fbc6de90e0 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java @@ -5,6 +5,7 @@ import com.netgrif.application.engine.auth.service.UserService; import com.netgrif.application.engine.auth.service.GroupService; import com.netgrif.application.engine.adapter.spring.petrinet.service.ProcessRoleService; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import com.netgrif.application.engine.startup.ApplicationEngineStartupRunner; import com.netgrif.application.engine.startup.annotation.RunnerOrder; import com.netgrif.application.engine.objects.auth.domain.enums.UserState; @@ -65,7 +66,7 @@ private IUser createSuperUser() { user.setPassword(superAdminPassword); user.setState(UserState.ACTIVE); user.setAuthorities(authorities); - user.setProcessRoles(new HashSet<>(processRoleService.findAll())); + user.setProcessRoles(new HashSet<>(processRoleService.getAll())); this.superUser = userService.createUser(user, null); log.info("Super user created"); } else { @@ -89,7 +90,7 @@ public void setAllGroups() { } public void setAllProcessRoles() { - superUser.setProcessRoles(Set.copyOf(processRoleService.findAll())); + superUser.setProcessRoles(Set.copyOf(processRoleService.getAll())); superUser = userService.saveUser(superUser, null); } diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/IUser.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/IUser.java index 6a70c1063e2..2b473b517f6 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/IUser.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/IUser.java @@ -14,6 +14,10 @@ public interface IUser extends Actor { void setRealmId(String realmId); + String getWorkspaceId(); + + void setWorkspaceId(String workspaceId); + String getUsername(); void setUsername(String username); diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/LoggedUser.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/LoggedUser.java index 1d4ebae9555..6397466ce42 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/LoggedUser.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/domain/LoggedUser.java @@ -23,6 +23,8 @@ public abstract class LoggedUser implements Serializable { private String realmId; + private String workspaceId; + private String createMethod; private String username; diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java index 2cee43c0a60..25ad62b4ef4 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java @@ -33,6 +33,8 @@ public abstract class ElasticCase implements Serializable { private String uriNodeId; + private String workspaceId; + private Long version; private Long lastModified; @@ -85,6 +87,7 @@ public abstract class ElasticCase implements Serializable { public ElasticCase(Case useCase) { stringId = useCase.getStringId(); uriNodeId = useCase.getUriNodeId(); + workspaceId = useCase.getWorkspaceId(); mongoId = useCase.getStringId(); //TODO: Duplication lastModified = Timestamp.valueOf(useCase.getLastModified()).getTime(); processIdentifier = useCase.getProcessIdentifier(); @@ -115,6 +118,7 @@ public void update(ElasticCase useCase) { if (useCase.getUriNodeId() != null) { uriNodeId = useCase.getUriNodeId(); } + workspaceId = useCase.getWorkspaceId(); title = useCase.getTitle(); taskIds = useCase.getTaskIds(); taskMongoIds = useCase.getTaskMongoIds(); diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticPetriNet.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticPetriNet.java index 064e8ca610d..8bdfca94251 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticPetriNet.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticPetriNet.java @@ -26,6 +26,8 @@ public abstract class ElasticPetriNet { private String uriNodeId; + private String workspaceId; + private String stringId; private I18nString title; @@ -40,6 +42,7 @@ public ElasticPetriNet(PetriNet net) { this.identifier = net.getIdentifier(); this.version = net.getVersion(); this.uriNodeId = net.getUriNodeId(); + this.workspaceId = net.getWorkspaceId(); this.stringId = net.getStringId(); this.title = net.getTitle(); this.initials = net.getInitials(); @@ -51,6 +54,7 @@ public void update(ElasticPetriNet net) { if (net.getUriNodeId() != null) { this.uriNodeId = net.getUriNodeId(); } + this.workspaceId = net.getWorkspaceId(); this.title = net.getTitle(); this.initials = net.getInitials(); } diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticTask.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticTask.java index 37bf1de7b43..a78181e84a8 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticTask.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticTask.java @@ -33,6 +33,8 @@ public abstract class ElasticTask { private String transitionId; + private String workspaceId; + private I18nString title; private String titleSortable; @@ -81,6 +83,7 @@ public ElasticTask(Task task) { this.taskId = task.getStringId(); this.caseId = task.getCaseId(); this.transitionId = task.getTransitionId(); + this.workspaceId = task.getWorkspaceId(); this.title = task.getTitle(); this.titleSortable = title.getDefaultValue(); this.caseTitle = task.getCaseTitle(); @@ -101,6 +104,7 @@ public ElasticTask(Task task) { public void update(ElasticTask task) { this.title = task.getTitle(); this.titleSortable = title.getDefaultValue(); + this.workspaceId = task.getWorkspaceId(); this.caseTitle = task.getCaseTitle(); this.caseTitleSortable = this.caseTitle; this.priority = task.getPriority(); diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java index 04b1db7de64..25aef12c5a9 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java @@ -36,6 +36,14 @@ public abstract class PetriNet extends PetriNetObject { @Setter private String uriNodeId; + @Getter + @Setter + private String uri; + + @Getter + @Setter + private String workspaceId; + @Getter private I18nString title; diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/Transition.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/Transition.java index 5522ed50535..929e57990fd 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/Transition.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/Transition.java @@ -22,6 +22,10 @@ public class Transition extends Node { + @Getter + @Setter + private String workspaceId; + @Getter @Setter private Map dataGroups; diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/roles/ProcessRole.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/roles/ProcessRole.java index c31ca2c6fc1..ba7918343c3 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/roles/ProcessRole.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/roles/ProcessRole.java @@ -35,6 +35,9 @@ public abstract class ProcessRole extends Imported { @Getter private ProcessResourceId _id; + @Setter + private String workspaceId; + @Getter private I18nString name; diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/DefaultWorkspaceService.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/DefaultWorkspaceService.java new file mode 100644 index 00000000000..b87b8950d98 --- /dev/null +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/DefaultWorkspaceService.java @@ -0,0 +1,8 @@ +package com.netgrif.application.engine.objects.petrinet.domain.workspace; + +public interface DefaultWorkspaceService { + + public static final String DEFAULT_WORKSPACE_ID = "default"; + + Workspace getDefaultWorkspace(); +} diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/Workspace.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/Workspace.java new file mode 100644 index 00000000000..078ce2d242b --- /dev/null +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/Workspace.java @@ -0,0 +1,21 @@ +package com.netgrif.application.engine.objects.petrinet.domain.workspace; + +import com.netgrif.application.engine.objects.auth.domain.Author; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +@Data +public class Workspace implements Serializable { + + @Serial + private static final long serialVersionUID = 2708949961379974800L; + + private String id; + + private Author owner; + + private boolean defaultWorkspace; + +} \ No newline at end of file diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceService.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceService.java new file mode 100644 index 00000000000..c29fdfb39cf --- /dev/null +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceService.java @@ -0,0 +1,23 @@ +package com.netgrif.application.engine.objects.petrinet.domain.workspace; + +import java.util.List; +import java.util.Optional; + +public interface WorkspaceService { + + Workspace save(Workspace workspace); + + Optional get(String id); + + List getAll(); + + Workspace createDefaultWorkspace(); + + Workspace setDefaultWorkspace(String workspaceId); + + Workspace setDefaultWorkspace(Workspace workspace); + + Workspace getDefaultWorkspace(); + + void delete(String identifier); +} diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/workflow/domain/Case.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/workflow/domain/Case.java index 51d11b58465..44624f8ed47 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/workflow/domain/Case.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/workflow/domain/Case.java @@ -33,6 +33,9 @@ public abstract class Case implements Serializable { @Setter private String uriNodeId; + @Setter + private String workspaceId; + @Setter private LocalDateTime lastModified; @@ -153,6 +156,7 @@ public Case(PetriNet petriNet) { icon = petriNet.getIcon(); userRefs = petriNet.getUserRefs(); tags = new HashMap<>(petriNet.getTags()); + workspaceId = petriNet.getWorkspaceId(); permissions = petriNet.getPermissions().entrySet().stream() .filter(role -> role.getValue().containsKey("delete") || role.getValue().containsKey("view")) diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/workflow/domain/Task.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/workflow/domain/Task.java index 012443c4eaa..b9921b9c825 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/workflow/domain/Task.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/workflow/domain/Task.java @@ -42,6 +42,10 @@ public abstract class Task implements Serializable { @Setter private String transitionId; + @Getter + @Setter + private String workspaceId; + @Getter @Setter private TaskLayout layout; diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/AnonymousUser.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/AnonymousUser.java index 5bd065a4cab..11d0f3dc922 100644 --- a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/AnonymousUser.java +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/AnonymousUser.java @@ -19,6 +19,7 @@ public class AnonymousUser extends AbstractUser implements IUser { private String email; private String firstName; private String lastName; + private String workspaceId; private transient Duration sessionTimeout = Duration.ofHours(2); diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/LoggedUserImpl.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/LoggedUserImpl.java index e7321b6fcd8..e26d7e18f2b 100644 --- a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/LoggedUserImpl.java +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/LoggedUserImpl.java @@ -22,8 +22,8 @@ public LoggedUserImpl(String id, String username, String password, Set authoritySet, Set groups, boolean enabled, boolean emailVerified, boolean accountNonExpired, boolean accountNonLocked, boolean credentialsNonExpired, LoggedUser impersonated, Set processRoles, Set MFAMethod, Duration sessionTimeout, Map> attributes) { - super(id, realmId, createMethod, username, email, password, firstName, lastName, authoritySet, groups, enabled, emailVerified, accountNonExpired, accountNonLocked, credentialsNonExpired, impersonated, processRoles, MFAMethod, sessionTimeout, attributes); + public LoggedUserImpl(String id, String realmId, String workspaceId, String createMethod, String username, String email, String password, String firstName, String lastName, Set authoritySet, Set groups, boolean enabled, boolean emailVerified, boolean accountNonExpired, boolean accountNonLocked, boolean credentialsNonExpired, LoggedUser impersonated, Set processRoles, Set MFAMethod, Duration sessionTimeout, Map> attributes) { + super(id, realmId, workspaceId, createMethod, username, email, password, firstName, lastName, authoritySet, groups, enabled, emailVerified, accountNonExpired, accountNonLocked, credentialsNonExpired, impersonated, processRoles, MFAMethod, sessionTimeout, attributes); } @Override diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/User.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/User.java index a5a8bad6e34..6e4fae471b4 100644 --- a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/User.java +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/User.java @@ -7,6 +7,8 @@ import com.netgrif.application.engine.objects.auth.domain.Group; import com.netgrif.application.engine.objects.auth.domain.LoggedUser; import com.querydsl.core.annotations.QueryEntity; +import lombok.Getter; +import lombok.Setter; import org.bson.types.ObjectId; import org.springframework.data.annotation.Transient; @@ -23,6 +25,11 @@ public User(ObjectId id) { super(id); } + @Getter + @Setter + @Transient + private String workspaceId; + @Override public LoggedUser transformToLoggedUser() { return LoggedUserMapper.toLoggedUser(this); diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/mapper/LoggedUserMapper.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/mapper/LoggedUserMapper.java index c7cc8a55687..a56f0cd0ba4 100644 --- a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/mapper/LoggedUserMapper.java +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/auth/domain/mapper/LoggedUserMapper.java @@ -31,7 +31,7 @@ public static IUser toUser(LoggedUser loggedUser) { user.setProcessRoles(loggedUser.getProcessRoles()); user.setAttributes(loggedUser.getAttributes()); user.setAuthMethods(loggedUser.getMfaMethod()); - + user.setWorkspaceId(loggedUser.getWorkspaceId()); return user; } @@ -57,6 +57,7 @@ public static LoggedUser toLoggedUser(IUser user) { if (user.getImpersonated() != null) { loggedUser.setImpersonated(toLoggedUser(user.getImpersonated())); } + loggedUser.setWorkspaceId(user.getWorkspaceId()); return loggedUser; } diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/ElasticCase.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/ElasticCase.java index 6735486d5e3..66b40492972 100644 --- a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/ElasticCase.java +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/ElasticCase.java @@ -36,6 +36,11 @@ public String getUriNodeId() { return super.getUriNodeId(); } + @Field(type = Keyword) + public String getWorkspaceId() { + return super.getWorkspaceId(); + } + @Version public Long getVersion() { return super.getVersion(); diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/ElasticPetriNet.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/ElasticPetriNet.java index ae33ae757cd..78812cbb1ee 100644 --- a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/ElasticPetriNet.java +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/ElasticPetriNet.java @@ -42,6 +42,12 @@ public String getUriNodeId() { return super.getUriNodeId(); } + @Field(type = Keyword) + @Override + public String getWorkspaceId() { + return super.getWorkspaceId(); + } + @Field(type = Keyword) @Override public String getStringId() { diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/ElasticTask.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/ElasticTask.java index 39424915bec..15310649d6d 100644 --- a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/ElasticTask.java +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/ElasticTask.java @@ -62,6 +62,12 @@ public String getTransitionId() { return super.getTransitionId(); } + @Field(type = Keyword) + @Override + public String getWorkspaceId() { + return super.getWorkspaceId(); + } + @Field(type = Keyword) @Override public String getTitleSortable() { diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/service/ProcessRoleService.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/service/ProcessRoleService.java index c531b335c4e..bacb14f2816 100644 --- a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/service/ProcessRoleService.java +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/service/ProcessRoleService.java @@ -28,6 +28,7 @@ public interface ProcessRoleService { Set findByIds(Set ids); ProcessRole findByImportId(String importId); List findAll(); + List findAllByWorkspaceId(String workspaceId); Set findAllGlobalRoles(); List findAll(String netId); ProcessRole defaultRole(); diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/workflow/domain/Task.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/workflow/domain/Task.java index fdb56117caa..1b27033362d 100644 --- a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/workflow/domain/Task.java +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/workflow/domain/Task.java @@ -27,8 +27,8 @@ public Task() { } @Builder(builderMethodName = "with") - public Task(ProcessResourceId _id, String processId, String caseId, String transitionId, TaskLayout layout, I18nString title, String caseColor, String caseTitle, Integer priority, String userId, IUser user, List triggers, Map> roles, Map> userRefs, Map> users, List viewRoles, List viewUserRefs, List viewUsers, List negativeViewRoles, List negativeViewUsers, LocalDateTime startDate, LocalDateTime finishDate, String finishedBy, String transactionId, Boolean requiredFilled, LinkedHashSet immediateDataFields, List> immediateData, String icon, AssignPolicy assignPolicy, DataFocusPolicy dataFocusPolicy, FinishPolicy finishPolicy, Map eventTitles, Map assignedUserPolicy, Map consumedTokens, Map tags) { - super(_id, processId, caseId, transitionId, layout, title, caseColor, caseTitle, priority, userId, user, triggers, roles, userRefs, users, viewRoles, viewUserRefs, viewUsers, negativeViewRoles, negativeViewUsers, startDate, finishDate, finishedBy, transactionId, requiredFilled, immediateDataFields, immediateData, icon, assignPolicy, dataFocusPolicy, finishPolicy, eventTitles, assignedUserPolicy, consumedTokens, tags); + public Task(ProcessResourceId _id, String processId, String caseId, String transitionId, String workspaceId, TaskLayout layout, I18nString title, String caseColor, String caseTitle, Integer priority, String userId, IUser user, List triggers, Map> roles, Map> userRefs, Map> users, List viewRoles, List viewUserRefs, List viewUsers, List negativeViewRoles, List negativeViewUsers, LocalDateTime startDate, LocalDateTime finishDate, String finishedBy, String transactionId, Boolean requiredFilled, LinkedHashSet immediateDataFields, List> immediateData, String icon, AssignPolicy assignPolicy, DataFocusPolicy dataFocusPolicy, FinishPolicy finishPolicy, Map eventTitles, Map assignedUserPolicy, Map consumedTokens, Map tags) { + super(_id, processId, caseId, transitionId, workspaceId, layout, title, caseColor, caseTitle, priority, userId, user, triggers, roles, userRefs, users, viewRoles, viewUserRefs, viewUsers, negativeViewRoles, negativeViewUsers, startDate, finishDate, finishedBy, transactionId, requiredFilled, immediateDataFields, immediateData, icon, assignPolicy, dataFocusPolicy, finishPolicy, eventTitles, assignedUserPolicy, consumedTokens, tags); } @Id diff --git a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java index bed2066a4f6..959623932ee 100644 --- a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java +++ b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java @@ -11,6 +11,7 @@ import com.netgrif.application.engine.objects.auth.domain.enums.UserState; import com.netgrif.application.engine.objects.petrinet.domain.PetriNet; import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import com.netgrif.application.engine.objects.workflow.domain.ProcessResourceId; import com.querydsl.core.types.dsl.BooleanExpression; import lombok.Getter; @@ -234,7 +235,7 @@ public void addAllRolesToAdminByUsername(String username) { throw new IllegalArgumentException("Admin user with username [%s] cannot be found.".formatted(username)); } IUser user = userOptional.get(); - user.setProcessRoles(new HashSet<>(processRoleService.findAll())); + user.setProcessRoles(new HashSet<>(processRoleService.getAll())); saveUser(user, user.getRealmId()); } @@ -391,6 +392,7 @@ public IUser getLoggedUser() { impersonated.setProcessRoles(new HashSet<>(processRoleService.findAllByIds(resourceIds))); user.setImpersonated(impersonated); } + user.setWorkspaceId(loggedUser.getWorkspaceId()); return user; } @@ -399,6 +401,7 @@ public IUser getSystem() { if (systemUser == null) { systemUser = createSystemUser(); } + systemUser.setWorkspaceId(DefaultWorkspaceService.DEFAULT_WORKSPACE_ID); systemUser.setProcessRoles(new HashSet<>(processRoleService.getAll())); return systemUser; } @@ -475,6 +478,7 @@ public IUser transformToUser(LoggedUserImpl loggedUser) { user.setGroups(loggedUser.getGroups()); user.setAuthorities(loggedUser.getAuthoritySet()); user.setAttributes(loggedUser.getAttributes()); + user.setWorkspaceId(loggedUser.getWorkspaceId()); if (loggedUser.getImpersonated() != null) { user.setImpersonated(transformToUser((LoggedUserImpl) loggedUser.getImpersonated())); } @@ -506,7 +510,7 @@ public LoggedUserImpl transformToLoggedUser(IUser user) { loggedUser.setRealmId(user.getRealmId()); loggedUser.setGroups(user.getGroups()); loggedUser.setMfaMethod(mfaMethods); - + loggedUser.setWorkspaceId(user.getWorkspaceId()); if (user.getImpersonated() != null) { loggedUser.setImpersonated(transformToLoggedUser(user.getImpersonated())); } From 7893e76c83c6077648af47e6a40b5cfa92a04029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kov=C3=A1=C4=8Dik?= Date: Tue, 6 May 2025 09:14:24 +0200 Subject: [PATCH 04/13] [NAE-2072] Workspaces - add context holder - add functions for default roles --- .../engine/AsyncRunnerWrapper.java | 23 +++++++ .../logic/action/ActionDelegate.groovy | 39 ++++++----- .../logic/action/FieldActionsRunner.groovy | 2 + .../runner/CaseFieldsExpressionRunner.groovy | 2 + .../action/runner/RoleActionsRunner.groovy | 2 + .../application/engine/ApplicationEngine.java | 1 + .../service/UserResourceHelperService.java | 1 + .../engine/auth/web/UserController.java | 18 +++++ .../engine/auth/web/responsebodies/User.java | 3 + .../web/responsebodies/WorkspaceResponse.java | 16 +++++ .../engine/importer/service/Importer.java | 10 +-- .../petrinet/service/PetriNetService.java | 2 +- .../petrinet/service/ProcessRoleService.java | 51 ++++++++++++-- .../DefaultWorkspaceServiceImpl.java | 7 ++ .../workspace/WorkspaceContextHolder.java | 67 +++++++++++++++++++ .../petrinet/web/PetriNetController.java | 6 +- .../startup/runner/AnonymousRoleRunner.java | 18 ++--- .../startup/runner/DefaultRoleRunner.java | 32 ++------- .../startup/runner/SuperCreatorRunner.java | 4 +- .../petrinet/domain/ArcReferenceTest.groovy | 5 +- .../petrinet/domain/dataset/FieldTest.groovy | 3 +- .../domain/roles/PredefinedProcessRole.java | 18 +++++ .../workspace/DefaultWorkspaceService.java | 4 ++ .../petrinet/service/ProcessRoleService.java | 4 +- .../engine/auth/service/UserServiceImpl.java | 9 ++- 25 files changed, 262 insertions(+), 85 deletions(-) create mode 100644 application-engine/src/main/groovy/com/netgrif/application/engine/AsyncRunnerWrapper.java create mode 100644 application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/WorkspaceResponse.java create mode 100644 application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/WorkspaceContextHolder.java create mode 100644 nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/roles/PredefinedProcessRole.java diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/AsyncRunnerWrapper.java b/application-engine/src/main/groovy/com/netgrif/application/engine/AsyncRunnerWrapper.java new file mode 100644 index 00000000000..63175208632 --- /dev/null +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/AsyncRunnerWrapper.java @@ -0,0 +1,23 @@ +package com.netgrif.application.engine; + +import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder; +import groovy.lang.Closure; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class AsyncRunnerWrapper { + private final AsyncRunner async; + + public void run(Closure closure, String workspaceId) { + WorkspaceContextHolder.setWorkspaceId(workspaceId, true); + async.run(closure); + } + + public void execute(final Runnable runnable, String workspaceId) { + WorkspaceContextHolder.setWorkspaceId(workspaceId, true); + async.execute(runnable); + } +} diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy index 89b6c977bac..bafefea57fc 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy @@ -1,13 +1,12 @@ package com.netgrif.application.engine.petrinet.domain.dataset.logic.action -import com.netgrif.application.engine.auth.service.GroupService -import com.netgrif.application.engine.auth.service.UserService -import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService +import com.netgrif.application.engine.AsyncRunnerWrapper import com.netgrif.application.engine.adapter.spring.petrinet.service.ProcessRoleService import com.netgrif.application.engine.adapter.spring.workflow.domain.QCase import com.netgrif.application.engine.adapter.spring.workflow.domain.QTask -import com.netgrif.application.engine.AsyncRunner +import com.netgrif.application.engine.auth.service.GroupService import com.netgrif.application.engine.auth.service.UserDetailsServiceImpl +import com.netgrif.application.engine.auth.service.UserService import com.netgrif.application.engine.auth.service.interfaces.IRegistrationService import com.netgrif.application.engine.auth.web.requestbodies.NewUserRequest import com.netgrif.application.engine.configuration.ApplicationContextProvider @@ -21,20 +20,11 @@ import com.netgrif.application.engine.export.domain.ExportDataConfig import com.netgrif.application.engine.export.service.interfaces.IExportService import com.netgrif.application.engine.impersonation.service.interfaces.IImpersonationService import com.netgrif.application.engine.importer.service.FieldFactory +import com.netgrif.application.engine.integration.plugin.injector.PluginHolder import com.netgrif.application.engine.integration.plugin.injector.PluginInjector import com.netgrif.application.engine.mail.domain.MailDraft import com.netgrif.application.engine.mail.interfaces.IMailAttemptService import com.netgrif.application.engine.mail.interfaces.IMailService -import com.netgrif.application.engine.pdf.generator.config.PdfResource -import com.netgrif.application.engine.pdf.generator.service.interfaces.IPdfGenerator -import com.netgrif.application.engine.petrinet.service.interfaces.IUriService -import com.netgrif.application.engine.startup.ImportHelper -import com.netgrif.application.engine.startup.runner.DefaultFiltersRunner -import com.netgrif.application.engine.startup.runner.FilterRunner -import com.netgrif.application.engine.utils.FullPageRequest -import com.netgrif.application.engine.workflow.service.FileFieldInputStream -import com.netgrif.application.engine.workflow.service.TaskService -import com.netgrif.application.engine.workflow.service.interfaces.* import com.netgrif.application.engine.objects.auth.domain.Author import com.netgrif.application.engine.objects.auth.domain.IUser import com.netgrif.application.engine.objects.auth.domain.LoggedUser @@ -47,7 +37,6 @@ import com.netgrif.application.engine.objects.petrinet.domain.dataset.logic.vali import com.netgrif.application.engine.objects.petrinet.domain.dataset.logic.validation.Validation import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole import com.netgrif.application.engine.objects.petrinet.domain.version.Version - import com.netgrif.application.engine.objects.workflow.domain.Case import com.netgrif.application.engine.objects.workflow.domain.Task import com.netgrif.application.engine.objects.workflow.domain.eventoutcomes.EventOutcome @@ -59,10 +48,20 @@ import com.netgrif.application.engine.objects.workflow.domain.eventoutcomes.task import com.netgrif.application.engine.objects.workflow.domain.menu.MenuItemBody import com.netgrif.application.engine.objects.workflow.domain.menu.MenuItemConstants import com.netgrif.application.engine.objects.workflow.service.InitValueExpressionEvaluator +import com.netgrif.application.engine.pdf.generator.config.PdfResource +import com.netgrif.application.engine.pdf.generator.service.interfaces.IPdfGenerator +import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService +import com.netgrif.application.engine.petrinet.service.interfaces.IUriService +import com.netgrif.application.engine.startup.ImportHelper +import com.netgrif.application.engine.startup.runner.DefaultFiltersRunner +import com.netgrif.application.engine.startup.runner.FilterRunner +import com.netgrif.application.engine.utils.FullPageRequest +import com.netgrif.application.engine.workflow.service.FileFieldInputStream +import com.netgrif.application.engine.workflow.service.TaskService +import com.netgrif.application.engine.workflow.service.interfaces.* import com.netgrif.application.engine.workflow.web.responsebodies.MessageResource import com.netgrif.application.engine.workflow.web.responsebodies.TaskReference import com.querydsl.core.types.Predicate -import groovy.time.TimeCategory import groovy.transform.NamedVariant import org.bson.types.ObjectId import org.quartz.Scheduler @@ -76,11 +75,11 @@ import org.springframework.core.io.FileSystemResource import org.springframework.data.domain.Page import org.springframework.data.domain.PageRequest import org.springframework.data.domain.Pageable -import com.netgrif.application.engine.integration.plugin.injector.PluginHolder import java.text.Normalizer import java.time.ZoneId import java.util.stream.Collectors + /** * ActionDelegate class contains Actions API methods. */ @@ -122,7 +121,7 @@ class ActionDelegate { IPetriNetService petriNetService @Autowired - AsyncRunner async + AsyncRunnerWrapper async @Autowired IPdfGenerator pdfGenerator @@ -1985,9 +1984,9 @@ class ActionDelegate { * @return */ def deleteMenuItem(Case item) { - async.run { + async.run({ workflowService.deleteCase(item.stringId) - } + }, item.getWorkspaceId()); } /** diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/FieldActionsRunner.groovy b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/FieldActionsRunner.groovy index 1d4cd90cf4b..b5a0e6ec38c 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/FieldActionsRunner.groovy +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/FieldActionsRunner.groovy @@ -3,6 +3,7 @@ package com.netgrif.application.engine.petrinet.domain.dataset.logic.action import com.netgrif.application.engine.business.IPostalCodeService import com.netgrif.application.engine.business.orsr.IOrsrService import com.netgrif.application.engine.importer.service.FieldFactory +import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder import com.netgrif.application.engine.workflow.service.interfaces.IFieldActionsCacheService import com.netgrif.application.engine.objects.petrinet.domain.Function import com.netgrif.application.engine.objects.workflow.domain.Case @@ -48,6 +49,7 @@ abstract class FieldActionsRunner { log.debug("Action: $action") def code = getActionCode(action, functions) try { + WorkspaceContextHolder.setWorkspaceId(useCase.getWorkspaceId(), true); code.init(action, useCase, task, this, params) code() } catch (Exception e) { diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/CaseFieldsExpressionRunner.groovy b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/CaseFieldsExpressionRunner.groovy index 95ab7bce867..56f48d54310 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/CaseFieldsExpressionRunner.groovy +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/CaseFieldsExpressionRunner.groovy @@ -4,6 +4,7 @@ import com.netgrif.application.engine.event.IGroovyShellFactory import com.netgrif.application.engine.elastic.service.executors.MaxSizeHashMap import com.netgrif.application.engine.petrinet.domain.dataset.logic.action.ActionDelegate import com.netgrif.application.engine.objects.workflow.domain.Case +import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired @@ -42,6 +43,7 @@ abstract class CaseFieldsExpressionRunner { logger().debug("Expression: $expression") def code = getExpressionCode(expression) try { + WorkspaceContextHolder.setWorkspaceId(useCase.getWorkspaceId(), true); initCode(code.delegate, useCase, fields, params) code() } catch (Exception e) { diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/RoleActionsRunner.groovy b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/RoleActionsRunner.groovy index 52b85770537..41f1f99bbab 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/RoleActionsRunner.groovy +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/RoleActionsRunner.groovy @@ -5,6 +5,7 @@ import com.netgrif.application.engine.event.IGroovyShellFactory import com.netgrif.application.engine.objects.petrinet.domain.dataset.logic.action.Action import com.netgrif.application.engine.petrinet.domain.dataset.logic.action.context.RoleContext import com.netgrif.application.engine.petrinet.domain.dataset.logic.action.delegate.RoleActionDelegate +import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder import org.codehaus.groovy.control.CompilerConfiguration import org.slf4j.Logger import org.slf4j.LoggerFactory @@ -34,6 +35,7 @@ abstract class RoleActionsRunner { log.debug("Action: $action") def code = getActionCode(action) try { + WorkspaceContextHolder.setWorkspaceId(roleContext.petriNet.getWorkspaceId(), true); code.init(action, roleContext, params) code() } catch (Exception e) { diff --git a/application-engine/src/main/java/com/netgrif/application/engine/ApplicationEngine.java b/application-engine/src/main/java/com/netgrif/application/engine/ApplicationEngine.java index 43837ad0518..7a7b29ba4d2 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/ApplicationEngine.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/ApplicationEngine.java @@ -4,6 +4,7 @@ import com.netgrif.application.engine.configuration.JsonRootRelProvider; import com.netgrif.application.engine.configuration.groovy.converter.GStringToStringConverter; import com.netgrif.application.engine.petrinet.domain.version.StringToVersionConverter; +import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.annotation.Aspect; import org.springframework.boot.SpringApplication; diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/service/UserResourceHelperService.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/service/UserResourceHelperService.java index 8e70fa32ce3..65e9060c990 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/service/UserResourceHelperService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/auth/service/UserResourceHelperService.java @@ -35,6 +35,7 @@ public UserResource getResource(LoggedUser loggedUser, Locale locale, boolean sm User result = loggedUser.isImpersonating() ? getLocalisedUser(user, getImpersonated(loggedUser, small), locale) : getLocalisedUser(user, locale); + result.setWorkspaceId(loggedUser.getWorkspaceId()); return new UserResource(result, "profile"); } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/UserController.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/UserController.java index c7d2742114a..d3e5644b6db 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/UserController.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/UserController.java @@ -1,6 +1,8 @@ package com.netgrif.application.engine.auth.web; import com.netgrif.application.engine.auth.web.responsebodies.*; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.Workspace; import com.netgrif.application.engine.workflow.web.responsebodies.MessageResource; import com.netgrif.application.engine.workflow.web.responsebodies.ResourceLinkAssembler; import com.netgrif.application.engine.objects.auth.domain.IUser; @@ -28,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PagedResourcesAssembler; import org.springframework.hateoas.Link; @@ -83,6 +86,9 @@ public class UserController { @Autowired private ISecurityContextService securityContextService; + @Autowired + private DefaultWorkspaceService workspaceService; + protected UserResourceAssembler getUserResourceAssembler(Locale locale, boolean small, String selfRel) { UserResourceAssembler result = userResourceAssemblerFactory.getObject(); result.initialize(locale, small, selfRel); @@ -130,6 +136,7 @@ public UserResource getUser(@PathVariable("id") String userId, @RequestParam(val throw new IllegalArgumentException("Could not find user with id [" + userId + "]"); } IUser user = userService.findById(userId, null); + user.setWorkspaceId(actualUser.getWorkspaceId()); return new UserResource(small ? userResponseFactory.getSmallUser(user) : userResponseFactory.getUser(user, locale), "profile"); } @@ -155,12 +162,23 @@ public UserResource updateUser(@PathVariable("id") String userId, @RequestBody U if (Objects.equals(loggedUser.getId(), userId)) { loggedUser.setFirstName(user.getFirstName()); loggedUser.setLastName(user.getLastName()); + if (updates.getWorkspaceId() != null) { + loggedUser.setWorkspaceId(updates.getWorkspaceId()); + } securityContextService.reloadSecurityContext(loggedUser); } log.info("Updating user " + user.getEmail() + " with data " + updates.toString()); return new UserResource(userResponseFactory.getUser(user, locale), "profile"); } + @Operation(summary = "Get all workspaces", security = {@SecurityRequirement(name = "BasicAuth")}) + @GetMapping(value = "/workspaces", produces = MediaTypes.HAL_JSON_VALUE) + public List getAllWorkspaces() { + List workspaces = workspaceService.getAllWorkspaces(); + + return workspaces.stream().map(w -> new WorkspaceResponse(w.getId(), w.isDefaultWorkspace())).collect(Collectors.toList()); + } + @Operation(summary = "Get all users with specified roles", security = {@SecurityRequirement(name = "BasicAuth")}) @PostMapping(value = "/role", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaTypes.HAL_JSON_VALUE) public PagedModel getAllWithRole(@RequestBody Set roleIds, @RequestParam(value = "small", required = false) Boolean small, Pageable pageable, PagedResourcesAssembler assembler, Locale locale) { diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/User.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/User.java index a9b68234c9b..7743d753b87 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/User.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/User.java @@ -34,6 +34,8 @@ public class User { private User impersonated; + private String workspaceId; + protected User(IUser user) { id = user.getStringId(); email = user.getEmail(); @@ -41,6 +43,7 @@ protected User(IUser user) { name = user.getFirstName(); surname = user.getLastName(); fullName = user.getFullName(); + workspaceId = user.getWorkspaceId(); } /** diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/WorkspaceResponse.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/WorkspaceResponse.java new file mode 100644 index 00000000000..f755b00d854 --- /dev/null +++ b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/WorkspaceResponse.java @@ -0,0 +1,16 @@ +package com.netgrif.application.engine.auth.web.responsebodies; + +import lombok.Data; + +@Data +public class WorkspaceResponse { + + private String id; + + private boolean defaultWorkspace; + + public WorkspaceResponse(String id, boolean defaultWorkspace) { + this.id = id; + this.defaultWorkspace = defaultWorkspace; + } +} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java index e6cb08bb2da..122d711ccca 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java @@ -127,9 +127,9 @@ public class Importer { private ILogicValidator logicValidator; @Transactional - public Optional importPetriNet(InputStream xml) throws MissingPetriNetMetaDataException, MissingIconKeyException { + public Optional importPetriNet(InputStream xml, String workspaceId) throws MissingPetriNetMetaDataException, MissingIconKeyException { try { - initialize(); + initialize(workspaceId); unmarshallXml(xml); return createPetriNet(); } catch (JAXBException e) { @@ -139,16 +139,16 @@ public Optional importPetriNet(InputStream xml) throws MissingPetriNet } @Transactional - public Optional importPetriNet(File xml) throws MissingPetriNetMetaDataException, MissingIconKeyException { + public Optional importPetriNet(File xml, String workspaceId) throws MissingPetriNetMetaDataException, MissingIconKeyException { try { - return importPetriNet(new FileInputStream(xml)); + return importPetriNet(new FileInputStream(xml), workspaceId); } catch (FileNotFoundException e) { log.error("Importing Petri net failed: ", e); } return Optional.empty(); } - protected void initialize() { + protected void initialize(String workspaceId) { this.roles = new HashMap<>(); this.transitions = new HashMap<>(); this.places = new HashMap<>(); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java index 20899107884..765a6420281 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java @@ -217,7 +217,7 @@ public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionTyp ImportPetriNetEventOutcome outcome = new ImportPetriNetEventOutcome(); ByteArrayOutputStream xmlCopy = new ByteArrayOutputStream(); IOUtils.copy(xmlFile, xmlCopy); - Optional imported = getImporter().importPetriNet(new ByteArrayInputStream(xmlCopy.toByteArray())); + Optional imported = getImporter().importPetriNet(new ByteArrayInputStream(xmlCopy.toByteArray()), workspaceId); if (imported.isEmpty()) { return outcome; } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java index 78b64e34a4e..add4e7744e6 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java @@ -5,8 +5,11 @@ import com.netgrif.application.engine.auth.service.UserService; import com.netgrif.application.engine.objects.event.events.user.UserRoleChangeEvent; import com.netgrif.application.engine.objects.importer.model.EventPhaseType; +import com.netgrif.application.engine.objects.petrinet.domain.I18nString; import com.netgrif.application.engine.objects.petrinet.domain.PetriNet; import com.netgrif.application.engine.objects.petrinet.domain.dataset.logic.action.Action; +import com.netgrif.application.engine.objects.petrinet.domain.roles.PredefinedProcessRole; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import com.netgrif.application.engine.petrinet.domain.dataset.logic.action.context.RoleContext; import com.netgrif.application.engine.petrinet.domain.dataset.logic.action.runner.RoleActionsRunner; import com.netgrif.application.engine.objects.petrinet.domain.events.Event; @@ -61,11 +64,6 @@ public ProcessRole save(ProcessRole processRole) { return processRoleRepository.save(processRole); } - @Override - public List getAll() { - return processRoleRepository.findAll(); - } - @Override public List findAllByNetId(String s) { return new ArrayList<>(processRoleRepository.findAllByProcessId(s)); @@ -290,7 +288,7 @@ private void removeOldAndAssignNewRolesToUser(IUser user, Set reque @Override public List findAll() { - return processRoleRepository.findAllByWorkspaceId(userService.getLoggedOrSystem().getWorkspaceId()); + return processRoleRepository.findAll(); } @Override @@ -341,6 +339,47 @@ public ProcessRole anonymousRole() { return anonymousRole; } + public ProcessRole createDefaultOrAnonymousRole(PredefinedProcessRole predefinedRole, String workspaceId) { + log.info("Creating " + predefinedRole.getName() + " process role in workspace " + workspaceId); + + Set role = processRoleRepository.findAllByImportIdAndWorkspaceId(predefinedRole.getName(), workspaceId); + if (role != null && !role.isEmpty()) { + log.info("Role already exists"); + return role.stream().findFirst().orElse(null); + } + + ProcessRole newRole = new com.netgrif.application.engine.adapter.spring.petrinet.domain.roles.ProcessRole(); + newRole.setImportId(predefinedRole.getName()); + newRole.setName(new I18nString(predefinedRole.getName())); + newRole.setDescription(predefinedRole.getDescription()); + newRole.setEvents(new LinkedHashMap()); + newRole.setWorkspaceId(workspaceId); + newRole = processRoleRepository.save(newRole); + + return newRole; + } + + public void deleteDefaultOrAnonymousRole(PredefinedProcessRole predefinedRole, String workspaceId) { + log.info("Deleting " + predefinedRole.getName() + " process role in workspace " + workspaceId); + + Set roleToDelete = processRoleRepository.findAllByImportIdAndWorkspaceId(predefinedRole.getName(), workspaceId).stream().map(ProcessRole::get_id).collect(Collectors.toSet()); + Set deletedRoleStringId = roleToDelete.stream().map(ProcessResourceId::toString).collect(Collectors.toSet()); + + List usersWithRemovedRoles = this.userService.findAllByProcessRoles(new HashSet<>(roleToDelete), null); + for (IUser user : usersWithRemovedRoles) { + if (user.getProcessRoles().isEmpty()) + continue; + + Set newRoles = user.getProcessRoles().stream() + .filter(role -> !deletedRoleStringId.contains(role.getStringId())) + .map(ProcessRole::get_id) + .collect(Collectors.toSet()); + this.assignRolesToUser(user.getStringId(), newRoles, userService.getLoggedOrSystem().transformToLoggedUser()); + } + + this.processRoleRepository.deleteAllBy_idIn(roleToDelete); + } + /** * @param importId id from a process of a role * @return a process role object diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java index 686d7d86e12..a6e3f41f21a 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/DefaultWorkspaceServiceImpl.java @@ -4,6 +4,8 @@ import com.netgrif.application.engine.objects.petrinet.domain.workspace.Workspace; import lombok.extern.slf4j.Slf4j; +import java.util.List; + @Slf4j public class DefaultWorkspaceServiceImpl implements DefaultWorkspaceService { @@ -19,4 +21,9 @@ public DefaultWorkspaceServiceImpl() { public Workspace getDefaultWorkspace() { return defaultWorkspace; } + + @Override + public List getAllWorkspaces() { + return List.of(defaultWorkspace); + } } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/WorkspaceContextHolder.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/WorkspaceContextHolder.java new file mode 100644 index 00000000000..f3a9327be0c --- /dev/null +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/WorkspaceContextHolder.java @@ -0,0 +1,67 @@ +package com.netgrif.application.engine.petrinet.service.workspace; + +import org.springframework.core.NamedInheritableThreadLocal; +import org.springframework.core.NamedThreadLocal; + +public class WorkspaceContextHolder { + + private static final ThreadLocal workspaceHolder = + new NamedThreadLocal("WorkspaceId Context"); + + private static final ThreadLocal inheritableWorkspaceHolder = + new NamedInheritableThreadLocal("WorkspaceId Context"); + + /** + * Reset the workspaceId for the current thread. + */ + public static void resetWorkspaceId() { + workspaceHolder.remove(); + } + + /** + * Bind the given workspaceId to the current thread, + * not exposing it as inheritable for child threads. + * @param workspaceId the workspaceId to expose + * @see #setWorkspaceId(String, boolean) + */ + public static void setWorkspaceId(String workspaceId) { + setWorkspaceId(workspaceId, false); + } + + /** + * Bind the given workspaceId to the current thread. + * @param workspaceId the workspaceId to expose, + * or {@code null} to reset the thread-bound context + * @param inheritable whether to expose the workspaceId as inheritable + * for child threads (using an {@link InheritableThreadLocal}) + */ + public static void setWorkspaceId(String workspaceId, boolean inheritable) { + if (workspaceId == null) { + resetWorkspaceId(); + } + else { + if (inheritable) { + inheritableWorkspaceHolder.set(workspaceId); + workspaceHolder.remove(); + } + else { + workspaceHolder.set(workspaceId); + inheritableWorkspaceHolder.remove(); + } + } + } + + /** + * Return the workspaceId currently bound to the thread. + * @return the workspaceId currently bound to the thread, + * or {@code null} if none bound + */ + public static String getWorkspaceId() { + String workspaceId = workspaceHolder.get(); + if (workspaceId == null) { + workspaceId = inheritableWorkspaceHolder.get(); + } + return workspaceId; + } + +} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java index ebca2532a4c..9e51f8b1e39 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java @@ -1,7 +1,9 @@ package com.netgrif.application.engine.petrinet.web; import com.netgrif.application.engine.AsyncRunner; +import com.netgrif.application.engine.AsyncRunnerWrapper; import com.netgrif.application.engine.petrinet.service.PetriNetService; +import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder; import com.netgrif.application.engine.petrinet.web.responsebodies.PetriNetImportReference; import com.netgrif.application.engine.petrinet.web.responsebodies.PetriNetReferenceResources; import com.netgrif.application.engine.petrinet.web.responsebodies.ProcessRolesResource; @@ -83,7 +85,7 @@ public class PetriNetController { private StringToVersionConverter converter; @Autowired - private AsyncRunner asyncRunner; + private AsyncRunnerWrapper asyncRunner; public static String decodeUrl(String s1) { try { @@ -222,7 +224,7 @@ public MessageResource deletePetriNet(@PathVariable("id") String processId, Auth return MessageResource.errorMessage("Deleting Petri net " + processId + " failed!"); } LoggedUser user = (LoggedUser) auth.getPrincipal(); - asyncRunner.execute(() -> this.service.deletePetriNet(decodedProcessId, user)); + asyncRunner.execute(() -> this.service.deletePetriNet(decodedProcessId, user), user.getWorkspaceId()); return MessageResource.successMessage("Petri net " + decodedProcessId + " is being deleted"); } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java index 750bb8879a8..831878b7fed 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java @@ -4,9 +4,11 @@ import com.netgrif.application.engine.objects.petrinet.domain.I18nString; import com.netgrif.application.engine.objects.petrinet.domain.events.Event; import com.netgrif.application.engine.objects.petrinet.domain.events.EventType; +import com.netgrif.application.engine.objects.petrinet.domain.roles.PredefinedProcessRole; import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole; import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import com.netgrif.application.engine.petrinet.domain.roles.ProcessRoleRepository; +import com.netgrif.application.engine.petrinet.service.ProcessRoleService; import com.netgrif.application.engine.startup.ApplicationEngineStartupRunner; import com.netgrif.application.engine.startup.annotation.RunnerOrder; import lombok.RequiredArgsConstructor; @@ -23,26 +25,14 @@ @RequiredArgsConstructor public class AnonymousRoleRunner implements ApplicationEngineStartupRunner { - private final ProcessRoleRepository repository; + private final ProcessRoleService processRoleService; private final UserService userService; @Override public void run(ApplicationArguments args) throws Exception { log.info("Creating anonymous process role"); - Set role = repository.findAllByImportIdAndWorkspaceId(ProcessRole.ANONYMOUS_ROLE, userService.getLoggedOrSystem().getWorkspaceId()); - if (role != null && !role.isEmpty()) { - log.info("Anonymous role already exists"); - return; - } - - ProcessRole anonymousRole = new com.netgrif.application.engine.adapter.spring.petrinet.domain.roles.ProcessRole(); - anonymousRole.setImportId(ProcessRole.ANONYMOUS_ROLE); - anonymousRole.setName(new I18nString(ProcessRole.ANONYMOUS_ROLE)); - anonymousRole.setDescription("Anonymous system process role"); - anonymousRole.setEvents(new LinkedHashMap()); - anonymousRole.setWorkspaceId(DefaultWorkspaceService.DEFAULT_WORKSPACE_ID); - repository.save(anonymousRole); + processRoleService.createDefaultOrAnonymousRole(PredefinedProcessRole.ANONYMOUS_ROLE, DefaultWorkspaceService.DEFAULT_WORKSPACE_ID); } } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java index 6696db82485..002e6163214 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java @@ -1,12 +1,8 @@ package com.netgrif.application.engine.startup.runner; -import com.netgrif.application.engine.auth.service.UserService; -import com.netgrif.application.engine.objects.petrinet.domain.I18nString; -import com.netgrif.application.engine.objects.petrinet.domain.events.Event; -import com.netgrif.application.engine.objects.petrinet.domain.events.EventType; -import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole; +import com.netgrif.application.engine.objects.petrinet.domain.roles.PredefinedProcessRole; import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; -import com.netgrif.application.engine.petrinet.domain.roles.ProcessRoleRepository; +import com.netgrif.application.engine.petrinet.service.ProcessRoleService; import com.netgrif.application.engine.startup.ApplicationEngineStartupRunner; import com.netgrif.application.engine.startup.annotation.RunnerOrder; import lombok.RequiredArgsConstructor; @@ -15,9 +11,6 @@ import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; -import java.util.LinkedHashMap; -import java.util.Set; - @Slf4j @Component @Profile("!update") @@ -25,28 +18,11 @@ @RequiredArgsConstructor public class DefaultRoleRunner implements ApplicationEngineStartupRunner { - private final ProcessRoleRepository repository; + private final ProcessRoleService processRoleService; @Override public void run(ApplicationArguments args) throws Exception { - log.info("Creating default process role"); - Set role = repository.findAllByName_DefaultValueAndWorkspaceId(ProcessRole.DEFAULT_ROLE, DefaultWorkspaceService.DEFAULT_WORKSPACE_ID); - if (role != null && !role.isEmpty()) { - log.info("Default role already exists"); - return; - } - - ProcessRole defaultRole = new com.netgrif.application.engine.adapter.spring.petrinet.domain.roles.ProcessRole(); - defaultRole.setImportId(ProcessRole.DEFAULT_ROLE); - defaultRole.setName(new I18nString(ProcessRole.DEFAULT_ROLE)); - defaultRole.setDescription("Default system process role"); - defaultRole.setEvents(new LinkedHashMap()); - defaultRole.setWorkspaceId(DefaultWorkspaceService.DEFAULT_WORKSPACE_ID); - defaultRole = repository.save(defaultRole); - - if (defaultRole == null) { - log.error("Error saving default process role"); - } + processRoleService.createDefaultOrAnonymousRole(PredefinedProcessRole.DEFAULT_ROLE, DefaultWorkspaceService.DEFAULT_WORKSPACE_ID); } } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java index 7fbc6de90e0..b56f18a3857 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/SuperCreatorRunner.java @@ -66,7 +66,7 @@ private IUser createSuperUser() { user.setPassword(superAdminPassword); user.setState(UserState.ACTIVE); user.setAuthorities(authorities); - user.setProcessRoles(new HashSet<>(processRoleService.getAll())); + user.setProcessRoles(new HashSet<>(processRoleService.findAll())); this.superUser = userService.createUser(user, null); log.info("Super user created"); } else { @@ -90,7 +90,7 @@ public void setAllGroups() { } public void setAllProcessRoles() { - superUser.setProcessRoles(Set.copyOf(processRoleService.getAll())); + superUser.setProcessRoles(Set.copyOf(processRoleService.findAll())); superUser = userService.saveUser(superUser, null); } diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ArcReferenceTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ArcReferenceTest.groovy index 1cffed6317d..42f1714ac1b 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ArcReferenceTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/ArcReferenceTest.groovy @@ -2,6 +2,7 @@ package com.netgrif.application.engine.petrinet.domain import com.netgrif.application.engine.auth.service.UserService import com.netgrif.application.engine.importer.service.Importer +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService import com.netgrif.application.engine.startup.ImportHelper import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -40,7 +41,7 @@ class ArcReferenceTest { @Test void testReference() { - def net = importer.importPetriNet(stream(NET_FILE)).get() + def net = importer.importPetriNet(stream(NET_FILE), DefaultWorkspaceService.DEFAULT_WORKSPACE_ID).get() assert net } @@ -48,7 +49,7 @@ class ArcReferenceTest { @Test void testInvalidReference() { assertThrows(IllegalArgumentException.class, () -> { - importer.importPetriNet(stream(NET_INVALID_FILE)).get() + importer.importPetriNet(stream(NET_INVALID_FILE), DefaultWorkspaceService.DEFAULT_WORKSPACE_ID).get() }); } } diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FieldTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FieldTest.groovy index 280b33c817d..09350fac4ff 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FieldTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FieldTest.groovy @@ -5,6 +5,7 @@ import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.importer.service.Importer import com.netgrif.application.engine.ipc.TaskApiTest import com.netgrif.application.engine.objects.petrinet.domain.PetriNet +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService import com.netgrif.application.engine.startup.runner.GroupRunner import com.netgrif.application.engine.startup.runner.SuperCreatorRunner import com.netgrif.application.engine.startup.runner.SystemUserRunner @@ -75,7 +76,7 @@ class FieldTest { @Test void testImport() { - limitsNetOptional = importer.importPetriNet(stream(LIMITS_NET_FILE)) + limitsNetOptional = importer.importPetriNet(stream(LIMITS_NET_FILE), DefaultWorkspaceService.DEFAULT_WORKSPACE_ID) assertNet() assertNumberField() diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/roles/PredefinedProcessRole.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/roles/PredefinedProcessRole.java new file mode 100644 index 00000000000..131b975fabb --- /dev/null +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/roles/PredefinedProcessRole.java @@ -0,0 +1,18 @@ +package com.netgrif.application.engine.objects.petrinet.domain.roles; + +import lombok.Getter; + +@Getter +public enum PredefinedProcessRole { + + DEFAULT_ROLE("default", "Default system process role"), + ANONYMOUS_ROLE("anonymous", "Anonymous system process role"); + + private final String name; + private final String description; + + PredefinedProcessRole(String s, String d) { + name = s; + description = d; + } +} diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/DefaultWorkspaceService.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/DefaultWorkspaceService.java index b87b8950d98..5e1010875c6 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/DefaultWorkspaceService.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/DefaultWorkspaceService.java @@ -1,8 +1,12 @@ package com.netgrif.application.engine.objects.petrinet.domain.workspace; +import java.util.List; + public interface DefaultWorkspaceService { public static final String DEFAULT_WORKSPACE_ID = "default"; Workspace getDefaultWorkspace(); + + List getAllWorkspaces(); } diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/service/ProcessRoleService.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/service/ProcessRoleService.java index bacb14f2816..fd245bb4d01 100644 --- a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/service/ProcessRoleService.java +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/service/ProcessRoleService.java @@ -1,5 +1,6 @@ package com.netgrif.application.engine.adapter.spring.petrinet.service; +import com.netgrif.application.engine.objects.petrinet.domain.roles.PredefinedProcessRole; import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole; import com.netgrif.application.engine.objects.auth.domain.LoggedUser; import com.netgrif.application.engine.objects.petrinet.domain.PetriNet; @@ -10,7 +11,6 @@ public interface ProcessRoleService { ProcessRole save(ProcessRole processRole); List saveAll(Iterable processRoles); - List getAll(); List findAllByNetId(String netId); Optional get(ProcessResourceId id); void delete(String id); @@ -33,6 +33,8 @@ public interface ProcessRoleService { List findAll(String netId); ProcessRole defaultRole(); ProcessRole anonymousRole(); + ProcessRole createDefaultOrAnonymousRole(PredefinedProcessRole role, String workspaceId); + void deleteDefaultOrAnonymousRole(PredefinedProcessRole role, String workspaceId); void deleteRolesOfNet(PetriNet net, LoggedUser loggedUser); void clearCache(); } diff --git a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java index 959623932ee..529b37af747 100644 --- a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java +++ b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java @@ -13,6 +13,7 @@ import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole; import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import com.netgrif.application.engine.objects.workflow.domain.ProcessResourceId; +import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder; import com.querydsl.core.types.dsl.BooleanExpression; import lombok.Getter; import lombok.extern.slf4j.Slf4j; @@ -105,6 +106,7 @@ public void setGroupService(GroupService groupService) { @Override public IUser saveUser(IUser user, String realmId) { log.debug("Saving user [{}] in DEFAULT realm", user.getUsername()); + user.setWorkspaceId(null); String collectionName = collectionNameProvider.getCollectionNameForRealm(realmId); user = userRepository.saveUser((User) user, mongoTemplate, collectionName); log.trace("User [{}] saved in collection [{}]", user.getUsername(), collectionName); @@ -235,7 +237,7 @@ public void addAllRolesToAdminByUsername(String username) { throw new IllegalArgumentException("Admin user with username [%s] cannot be found.".formatted(username)); } IUser user = userOptional.get(); - user.setProcessRoles(new HashSet<>(processRoleService.getAll())); + user.setProcessRoles(new HashSet<>(processRoleService.findAll())); saveUser(user, user.getRealmId()); } @@ -401,8 +403,9 @@ public IUser getSystem() { if (systemUser == null) { systemUser = createSystemUser(); } - systemUser.setWorkspaceId(DefaultWorkspaceService.DEFAULT_WORKSPACE_ID); - systemUser.setProcessRoles(new HashSet<>(processRoleService.getAll())); + String workspaceId = WorkspaceContextHolder.getWorkspaceId() != null ? WorkspaceContextHolder.getWorkspaceId() : DefaultWorkspaceService.DEFAULT_WORKSPACE_ID; + systemUser.setWorkspaceId(workspaceId); + systemUser.setProcessRoles(new HashSet<>(processRoleService.findAllByWorkspaceId(workspaceId))); return systemUser; } From 6b2e765454fcfd0fd2c530750968710a31d194cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kov=C3=A1=C4=8Dik?= Date: Wed, 7 May 2025 09:43:45 +0200 Subject: [PATCH 05/13] [NAE-2072] Workspaces - some rework --- .../engine/auth/web/UserController.java | 14 ++++++++++---- .../petrinet/service/ProcessRoleService.java | 2 +- .../domain/workspace/WorkspaceRequest.java | 5 +++++ .../domain/workspace/WorkspaceService.java | 4 ++++ .../engine/auth/web/responsebodies/User.java | 3 +++ 5 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceRequest.java diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/UserController.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/UserController.java index 5cf32269cdf..198e171362a 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/UserController.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/UserController.java @@ -3,10 +3,13 @@ import com.netgrif.application.engine.auth.service.PreferencesService; import com.netgrif.application.engine.auth.service.RealmService; import com.netgrif.application.engine.auth.web.requestbodies.PreferencesRequest; +import com.netgrif.application.engine.auth.web.requestbodies.UpdateUserRequest; import com.netgrif.application.engine.auth.web.requestbodies.UserCreateRequest; import com.netgrif.application.engine.auth.web.responsebodies.*; +import com.netgrif.application.engine.configuration.properties.ServerAuthProperties; import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import com.netgrif.application.engine.objects.petrinet.domain.workspace.Workspace; +import com.netgrif.application.engine.security.service.ISecurityContextService; import com.netgrif.application.engine.workflow.web.responsebodies.MessageResource; import com.netgrif.application.engine.workflow.web.responsebodies.ResourceLinkAssembler; import com.netgrif.application.engine.objects.auth.domain.Authority; @@ -59,6 +62,8 @@ public class UserController { private final AuthorityService authorityService; private final RealmService realmService; private final DefaultWorkspaceService workspaceService; + private final ServerAuthProperties serverAuthProperties; + private final ISecurityContextService securityContextService; @Operation(summary = "Create a new user", description = "Creates a new user in the realm specified by id.") @ApiResponses(value = { @@ -178,18 +183,18 @@ public ResponseEntity getUser(@PathVariable("realmId") String realmId, @Pa @Operation(summary = "Update user", security = {@SecurityRequirement(name = "BasicAuth")}) @PostMapping(value = "/update", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity updateUser( @RequestBody UpdateUserRequest updates, Authentication auth, Locale locale) throws UnauthorisedRequestException { + public ResponseEntity updateUser(@RequestBody UpdateUserRequest updates, Authentication auth, Locale locale) { if (!serverAuthProperties.isEnableProfileEdit()) return null; LoggedUser loggedUser = (LoggedUser) auth.getPrincipal(); String userId = updates.getStringId(); IUser user; try { - user = userService.findById(userId, updatedUser.getRealmId()); + user = userService.findById(userId, updates.getRealmId()); } catch (IllegalArgumentException e) { log.error("Could not find user with id [{}]", userId, e); return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); } - user = userService.update(user, updates.getUpdatedUser()); + user = userService.update(user, updates); securityContextService.saveToken(userId); if (Objects.equals(loggedUser.getId(), userId)) { loggedUser.setFirstName(user.getFirstName()); @@ -199,7 +204,8 @@ public ResponseEntity updateUser( @RequestBody UpdateUserRequest updates, } securityContextService.reloadSecurityContext(loggedUser); } - log.info("Updating user " + user.getEmail() + " with data " + updatedUser); + log.info("Updating user " + user.getEmail() + " with data " + updates); + user.setWorkspaceId(updates.getWorkspaceId()); return ResponseEntity.ok(User.createUser(user)); } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java index 8e2c57bf502..9e9891a577a 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java @@ -434,7 +434,7 @@ public void deleteDefaultOrAnonymousRole(PredefinedProcessRole predefinedRole, S .filter(role -> !deletedRoleStringId.contains(role.getStringId())) .map(ProcessRole::get_id) .collect(Collectors.toSet()); - this.assignRolesToUser(user.getStringId(), newRoles, userService.getLoggedOrSystem().transformToLoggedUser()); + this.assignRolesToUser(user, newRoles, userService.getLoggedOrSystem().transformToLoggedUser()); } this.processRoleRepository.deleteAllBy_idIn(roleToDelete); diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceRequest.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceRequest.java new file mode 100644 index 00000000000..dd56c65997b --- /dev/null +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceRequest.java @@ -0,0 +1,5 @@ +package com.netgrif.application.engine.objects.petrinet.domain.workspace; + +public record WorkspaceRequest(String workspaceId, boolean defaultWorkspace) { +} + diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceService.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceService.java index c29fdfb39cf..cd428ea5a4d 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceService.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceService.java @@ -1,5 +1,7 @@ package com.netgrif.application.engine.objects.petrinet.domain.workspace; +import com.netgrif.application.engine.objects.auth.domain.LoggedUser; + import java.util.List; import java.util.Optional; @@ -13,6 +15,8 @@ public interface WorkspaceService { Workspace createDefaultWorkspace(); + Workspace createWorkspace(WorkspaceRequest createRequest, LoggedUser loggedUser); + Workspace setDefaultWorkspace(String workspaceId); Workspace setDefaultWorkspace(Workspace workspace); diff --git a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/User.java b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/User.java index 9f8b2495a11..8b6c3665926 100644 --- a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/User.java +++ b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/User.java @@ -40,6 +40,8 @@ public class User { private User impersonated; + private String workspaceId; + protected User(IUser user) { id = user.getStringId(); email = user.getEmail(); @@ -49,6 +51,7 @@ protected User(IUser user) { name = user.getFirstName(); surname = user.getLastName(); fullName = user.getFullName(); + workspaceId = user.getWorkspaceId(); } /** From b1a5893e006d4cb98a4a42dc4271f394d9f4a794 Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Wed, 7 May 2025 10:31:47 +0200 Subject: [PATCH 06/13] [NAE-2072] Workspaces - deleted commented files --- .../responsebodies/AuthoritiesResources.java | 17 ----- .../responsebodies/IProcessRoleFactory.java | 7 -- .../auth/web/responsebodies/IUserFactory.java | 20 ------ .../auth/web/responsebodies/ProcessRole.java | 36 ---------- .../engine/auth/web/responsebodies/User.java | 67 ------------------- .../auth/web/responsebodies/UserFactory.java | 45 ------------- 6 files changed, 192 deletions(-) delete mode 100644 application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/AuthoritiesResources.java delete mode 100644 application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/IProcessRoleFactory.java delete mode 100644 application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/IUserFactory.java delete mode 100644 application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/ProcessRole.java delete mode 100644 application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/User.java delete mode 100644 application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/UserFactory.java diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/AuthoritiesResources.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/AuthoritiesResources.java deleted file mode 100644 index 3762f54057b..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/AuthoritiesResources.java +++ /dev/null @@ -1,17 +0,0 @@ -//package com.netgrif.application.engine.auth.web.responsebodies; -// -// -//import com.netgrif.application.engine.objects.auth.domain.Authority; -//import com.netgrif.application.engine.auth.web.UserController; -//import org.springframework.hateoas.CollectionModel; -//import org.springframework.hateoas.server.mvc.WebMvcLinkBuilder; -// -//public class AuthoritiesResources extends CollectionModel { -// public AuthoritiesResources(Iterable content) { -// super(content); -// } -// -// public AuthoritiesResources() { -// } -// -//} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/IProcessRoleFactory.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/IProcessRoleFactory.java deleted file mode 100644 index 3302cc2b4fc..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/IProcessRoleFactory.java +++ /dev/null @@ -1,7 +0,0 @@ -//package com.netgrif.application.engine.auth.web.responsebodies; -// -//import java.util.Locale; -// -//public interface IProcessRoleFactory { -// ProcessRole getProcessRole(com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole role, Locale locale); -//} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/IUserFactory.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/IUserFactory.java deleted file mode 100644 index a6514d7dc2d..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/IUserFactory.java +++ /dev/null @@ -1,20 +0,0 @@ -//package com.netgrif.application.engine.auth.web.responsebodies; -// -//import com.netgrif.application.engine.objects.auth.domain.IUser; -// -//import java.util.Locale; -// -//public interface UserFactory { -// /** -// * @param user the domain User object we want to send to frontend -// * @param locale the locale for translations -// * @return a full version of the user response object, that has all of its attributes set -// */ -// User getUser(IUser user, Locale locale); -// -// /** -// * @param user the domain User object we want to send to frontend -// * @return a small version of the user response object, that has its large attributes (roles, groups, authorities...) cleared -// */ -// User getSmallUser(IUser user); -//} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/ProcessRole.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/ProcessRole.java deleted file mode 100644 index 46cf1061692..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/ProcessRole.java +++ /dev/null @@ -1,36 +0,0 @@ -//package com.netgrif.application.engine.auth.web.responsebodies; -// -//import lombok.Data; -// -//import java.util.Locale; -// -//@Data -//public class ProcessRole { -// -// private String stringId; -// -// private String name; -// -// private String description; -// -// private String importId; -// -// // net attributes are set in the Factory service -// private String netImportId; -// -// private String netVersion; -// -// private String netStringId; -// -// /** -// * The constructor doesn't set attributes regarding the Petri net. -// * -// * Use the ProcessRoleFactory to create instances that have these attributes set. -// */ -// public ProcessRole(com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole role, Locale locale) { -// stringId = role.getStringId(); -// name = role.getLocalisedName(locale); -// description = role.getDescription(); -// importId = role.getImportId(); -// } -//} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/User.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/User.java deleted file mode 100644 index 9cdbbc913ca..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/User.java +++ /dev/null @@ -1,67 +0,0 @@ -//package com.netgrif.application.engine.auth.web.responsebodies; -// -//import com.netgrif.application.engine.objects.auth.domain.Authority; -//import com.netgrif.application.engine.objects.auth.domain.Group; -//import com.netgrif.application.engine.objects.auth.domain.IUser; -//import lombok.Data; -// -//import java.util.Set; -//import java.util.stream.Collectors; -// -//@Data -//public class User { -// -// private String id; -// -// private String email; -// -// private String telNumber; -// -// private String avatar; -// -// private String name; -// -// private String surname; -// -// private String fullName; -// -// private Set authorities; -// -// // process roles are set with the factory -// private Set processRoles; -// -// private Set nextGroups; -// -// private User impersonated; -// -// protected User(IUser user) { -// id = user.getStringId(); -// email = user.getEmail(); -// avatar = user.getAvatar(); -// name = user.getFirstName(); -// surname = user.getLastName(); -// fullName = user.getFullName(); -// } -// -// /** -// * This static method doesn't set attributes regarding the ProcessRoles -// * -// * Use the UserFactory service to create instances that have these attributes set. -// */ -// public static User createSmallUser(IUser user) { -// return new User(user); -// } -// -// /** -// * This static method doesn't set attributes regarding the ProcessRoles -// * -// * Use the UserFactory service to create instances that have these attributes set. -// */ -// public static User createUser(IUser user) { -// User result = new User(user); -// result.setTelNumber(user.getTelNumber()); -// result.setAuthorities(user.getAuthorities()); -// result.setNextGroups(user.getGroups().stream().map(Group::getStringId).collect(Collectors.toSet())); -// return result; -// } -//} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/UserFactory.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/UserFactory.java deleted file mode 100644 index 2bb66eaf760..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/responsebodies/UserFactory.java +++ /dev/null @@ -1,45 +0,0 @@ -//package com.netgrif.application.engine.auth.web.responsebodies; -// -//import com.netgrif.application.engine.objects.auth.domain.IUser; -//import com.netgrif.application.engine.adapter.spring.petrinet.service.ProcessRoleService; -//import org.springframework.beans.factory.annotation.Autowired; -// -//import java.util.Locale; -//import java.util.stream.Collectors; -// -//public class UserFactory implements UserFactory { -// -// @Autowired -// private ProcessRoleService processRoleService; -// -// @Autowired -// private IProcessRoleFactory processRoleFactory; -// -// @Override -// public User getUser(IUser user, Locale locale) { -// User result = getUser(user); -// -// String defaultRoleId = processRoleService.defaultRole().getStringId(); -// String anonymousRoleId = processRoleService.anonymousRole().getStringId(); -// result.setProcessRoles(user.getProcessRoles().stream().map(processRole -> { -// if (processRole.getStringId().equals(defaultRoleId)) { -// return new ProcessRole(processRole, locale); -// } -// if (processRole.getStringId().equals(anonymousRoleId)) { -// return new ProcessRole(processRole, locale); -// } -// return processRoleFactory.getProcessRole(processRole, locale); -// }).collect(Collectors.toSet())); -// -// return result; -// } -// -// @Override -// public User getSmallUser(IUser user) { -// return User.createSmallUser(user); -// } -// -// protected User getUser(IUser user) { -// return User.createUser(user); -// } -//} From 9a5ffc35bfbe6dea8e475c99da3d07eace75b5cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kov=C3=A1=C4=8Dik?= Date: Thu, 15 May 2025 14:07:59 +0200 Subject: [PATCH 07/13] [NAE-2072] Workspaces - rweork of import default processes --- .../logic/action/ActionDelegate.groovy | 17 +++---- .../engine/startup/ImportHelper.groovy | 12 +++-- .../engine/export/service/ExportService.java | 13 ++++-- .../config/DefaultProcessResource.java | 20 +++++++++ .../petrinet/service/PetriNetService.java | 44 +++++++++++++++++++ .../service/interfaces/IPetriNetService.java | 4 ++ .../startup/runner/AnonymousRoleRunner.java | 3 +- .../startup/runner/DashboardRunner.java | 4 +- .../runner/DefaultNetImportRunner.java | 25 +++++++++++ .../startup/runner/DefaultRoleRunner.java | 3 +- .../engine/startup/runner/FilterRunner.java | 8 ++-- .../startup/runner/ImpersonationRunner.java | 2 +- .../src/main/resources/application.properties | 5 ++- .../engine/auth/service/UserServiceImpl.java | 9 +++- 14 files changed, 142 insertions(+), 27 deletions(-) create mode 100644 application-engine/src/main/java/com/netgrif/application/engine/petrinet/config/DefaultProcessResource.java create mode 100644 application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultNetImportRunner.java diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy index 8300f5acdbb..d08a7ea33b5 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy @@ -64,6 +64,7 @@ import com.netgrif.application.engine.workflow.service.TaskService import com.netgrif.application.engine.workflow.service.interfaces.* import com.netgrif.application.engine.workflow.web.responsebodies.MessageResource import com.netgrif.application.engine.workflow.web.responsebodies.TaskReference +import com.querydsl.core.BooleanBuilder import com.querydsl.core.types.Predicate import groovy.transform.NamedVariant import org.bson.types.ObjectId @@ -617,7 +618,7 @@ class ActionDelegate { List searchCases(Closure predicates) { QCase qCase = new QCase("case") def expression = predicates(qCase) - Page page = workflowService.searchAll(expression) + Page page = workflowService.searchAll(new BooleanBuilder(expression).and(qCase.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId()))) return page.content.collect { it.stringId } } @@ -896,19 +897,19 @@ class ActionDelegate { List findCases(Closure predicate) { QCase qCase = new QCase("case") - Page result = workflowService.searchAll(predicate(qCase)) + Page result = workflowService.searchAll(new BooleanBuilder(predicate(qCase)).and(qCase.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId()))) return result.content } List findCases(Closure predicate, Pageable pageable) { QCase qCase = new QCase("case") - Page result = workflowService.search(predicate(qCase), pageable) + Page result = workflowService.search(new BooleanBuilder(predicate(qCase)).and(qCase.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId())), pageable) return result.content } Case findCase(Closure predicate) { QCase qCase = new QCase("case") - return workflowService.searchOne(predicate(qCase)) + return workflowService.searchOne(new BooleanBuilder(predicate(qCase)).and(qCase.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId()))) } Case createCase(String identifier, String title = null, String color = "", IUser author = userService.loggedOrSystem, Locale locale = LocaleContextHolder.getLocale(), Map params = [:]) { @@ -969,19 +970,19 @@ class ActionDelegate { List findTasks(Closure predicate) { QTask qTask = new QTask("task") - Page result = taskService.searchAll(predicate(qTask)) + Page result = taskService.searchAll(new BooleanBuilder(predicate(qTask)).and(qTask.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId()))) return result.content } List findTasks(Closure predicate, Pageable pageable) { QTask qTask = new QTask("task") - Page result = taskService.search(predicate(qTask), pageable) + Page result = taskService.search(new BooleanBuilder(predicate(qTask)).and(qTask.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId())), pageable) return result.content } Task findTask(Closure predicate) { QTask qTask = new QTask("task") - return taskService.searchOne(predicate(qTask)) + return taskService.searchOne(new BooleanBuilder(predicate(qTask)).and(qTask.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId()))) } Task findTask(String mongoId) { @@ -1551,7 +1552,7 @@ class ActionDelegate { if (!createDefaultFilters) { return [] } - return findCases({ it.processIdentifier.eq(FilterRunner.FILTER_PETRI_NET_IDENTIFIER).and(it.author.id.eq(userService.system.stringId)) }) + return findCases({ it.processIdentifier.eq(FilterRunner.FILTER_PETRI_NET_IDENTIFIER).and(it.author.id.eq(userService.system.stringId)).and(it.workspaceId.eq(userService.system.workspaceId)) }) } /** diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/startup/ImportHelper.groovy b/application-engine/src/main/groovy/com/netgrif/application/engine/startup/ImportHelper.groovy index 112105c7db4..4c7e6fd460c 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/startup/ImportHelper.groovy +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/startup/ImportHelper.groovy @@ -106,13 +106,17 @@ class ImportHelper { return authorityService.getOrCreate(name) } - Optional createNet(String fileName, String release, LoggedUser author = userService.transformToLoggedUser(userService.getSystem()), String uriNodeId = uriService.getDefault().stringId, String workspaceId = userService.getLoggedOrSystem().getWorkspaceId()) { - return createNet(fileName, VersionType.valueOf(release.trim().toUpperCase()), author, uriNodeId, workspaceId) + Optional createNet(String fileName, String release, LoggedUser author = userService.transformToLoggedUser(userService.getSystem()), String uriNodeId = uriService.getDefault().stringId) { + return createNet(fileName, VersionType.valueOf(release.trim().toUpperCase()), author, uriNodeId) } - Optional createNet(String fileName, VersionType release = VersionType.MAJOR, LoggedUser author = userService.transformToLoggedUser(userService.getSystem()), String uriNodeId = uriService.getDefault().stringId, String workspaceId = userService.getLoggedOrSystem().getWorkspaceId()) { + Optional createNet(String fileName, VersionType release = VersionType.MAJOR, LoggedUser author = userService.transformToLoggedUser(userService.getSystem()), String uriNodeId = uriService.getDefault().stringId) { InputStream netStream = new ClassPathResource("petriNets/$fileName" as String).inputStream - PetriNet petriNet = petriNetService.importPetriNet(netStream, release, author, uriNodeId, workspaceId).getNet() + return createNet(netStream, release, author, uriNodeId) + } + + Optional createNet(InputStream netStream, VersionType release = VersionType.MAJOR, LoggedUser author = userService.transformToLoggedUser(userService.getSystem()), String uriNodeId = uriService.getDefault().stringId) { + PetriNet petriNet = petriNetService.importPetriNet(netStream, release, author, uriNodeId, author.getWorkspaceId()).getNet() log.info("Imported '${petriNet?.title?.defaultValue}' ['${petriNet?.identifier}', ${petriNet?.stringId}]") return Optional.of(petriNet) } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/export/service/ExportService.java b/application-engine/src/main/java/com/netgrif/application/engine/export/service/ExportService.java index 2c6ecb895d8..eaf4e60fc91 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/export/service/ExportService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/export/service/ExportService.java @@ -12,11 +12,14 @@ import com.netgrif.application.engine.objects.petrinet.domain.I18nString; import com.netgrif.application.engine.objects.petrinet.domain.dataset.*; import com.netgrif.application.engine.objects.workflow.domain.Case; +import com.netgrif.application.engine.objects.workflow.domain.QCase; +import com.netgrif.application.engine.objects.workflow.domain.QTask; import com.netgrif.application.engine.objects.workflow.domain.Task; import com.netgrif.application.engine.workflow.domain.repositories.CaseRepository; import com.netgrif.application.engine.workflow.domain.repositories.TaskRepository; import com.netgrif.application.engine.workflow.service.interfaces.ITaskService; import com.netgrif.application.engine.workflow.service.interfaces.IWorkflowService; +import com.querydsl.core.BooleanBuilder; import com.querydsl.core.types.Predicate; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringEscapeUtils; @@ -91,10 +94,11 @@ public OutputStream fillCsvCaseData(Predicate predicate, File outFile, ExportDat @Override public OutputStream fillCsvCaseData(Predicate predicate, File outFile, ExportDataConfig config, int pageSize) throws FileNotFoundException { - int numOfPages = (int) (((caseRepository.count(predicate)) / pageSize) + 1); + Predicate newPredicate = new BooleanBuilder(predicate).and(QCase.case$.workspaceId.eq(userService.getLoggedOrSystem().getWorkspaceId())); + int numOfPages = (int) (((caseRepository.count(newPredicate)) / pageSize) + 1); List exportCases = new ArrayList<>(); for (int i = 0; i < numOfPages; i++) { - exportCases.addAll(workflowService.search(predicate, PageRequest.of(i, pageSize)).getContent()); + exportCases.addAll(workflowService.search(newPredicate, PageRequest.of(i, pageSize)).getContent()); } return buildCaseCsv(exportCases, config, outFile); } @@ -208,10 +212,11 @@ public OutputStream fillCsvTaskData(Predicate predicate, File outFile, ExportDat @Override public OutputStream fillCsvTaskData(Predicate predicate, File outFile, ExportDataConfig config, int pageSize) throws FileNotFoundException { - int numberOfTasks = (int) taskRepository.count(predicate); + Predicate newPredicate = new BooleanBuilder(predicate).and(QTask.task.workspaceId.eq(userService.getLoggedOrSystem().getWorkspaceId())); + int numberOfTasks = (int) taskRepository.count(newPredicate); List exportTasks = new ArrayList<>(); for (int i = 0; i < numberOfTasks; i++) { - exportTasks.addAll(taskService.search(predicate, PageRequest.of(i, pageSize)).getContent()); + exportTasks.addAll(taskService.search(newPredicate, PageRequest.of(i, pageSize)).getContent()); } return buildTaskCsv(exportTasks, config, outFile); } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/config/DefaultProcessResource.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/config/DefaultProcessResource.java new file mode 100644 index 00000000000..b458cb73b23 --- /dev/null +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/config/DefaultProcessResource.java @@ -0,0 +1,20 @@ +package com.netgrif.application.engine.petrinet.config; + +import lombok.Data; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.PropertySource; +import org.springframework.context.annotation.Scope; +import org.springframework.core.io.Resource; +import org.springframework.stereotype.Component; + +@Component +@PropertySource("classpath:application.properties") +@ConfigurationProperties(prefix = "nae.petrinet.resources") +@Data +@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) +public class DefaultProcessResource { + + private Resource[] defaultProcesses; + +} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java index 4187a7eea39..b34c86c91c3 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java @@ -2,6 +2,8 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.type.TypeFactory; +import com.netgrif.application.engine.AsyncRunnerWrapper; +import com.netgrif.application.engine.petrinet.config.DefaultProcessResource; import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService; import com.netgrif.application.engine.petrinet.web.responsebodies.ArcImportReference; import com.netgrif.application.engine.objects.auth.domain.Group; @@ -131,6 +133,12 @@ public class PetriNetService implements IPetriNetService { @Autowired protected IUriService uriService; + @Autowired + protected DefaultProcessResource defaultProcessResource; + + @Autowired + protected AsyncRunnerWrapper asyncRunner; + protected ApplicationEventPublisher publisher; protected IElasticPetriNetService elasticPetriNetService; @@ -252,6 +260,42 @@ public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionTyp return outcome; } + @Override + public List importDefaultProcesses(String workspaceId) { + List nets = new ArrayList<>(); + for (org.springframework.core.io.Resource resource : defaultProcessResource.getDefaultProcesses()) { + try { + InputStream netStream = resource.getInputStream(); + String identifier = resource.getFilename().split("\\.")[0]; + List existingNets = repository.findByIdentifierAndWorkspaceId(identifier, workspaceId, PageRequest.of(0, 1, Sort.Direction.DESC, "version.major", "version.minor", "version.patch")).getContent(); + if (!existingNets.isEmpty()) { + log.info("{} has already been imported.", identifier); + nets.add(existingNets.getFirst()); + } else { + VersionType release = VersionType.MAJOR; + LoggedUser author = userService.getLoggedOrSystem().transformToLoggedUser(); + String uriNodeId = uriService.getDefault().getStringId(); + nets.add(importPetriNet(netStream, release, author, uriNodeId, workspaceId).getNet()); + } + } catch (IOException e) { + log.info("Default Petri net import failed, file {} doesn't exists", resource.getFilename()); + } catch (MissingPetriNetMetaDataException e) { + throw new RuntimeException(e); + } + } + return nets; + } + + @Override + public void deleteDefaultProcesses(String workspaceId) { + for (org.springframework.core.io.Resource resource : defaultProcessResource.getDefaultProcesses()) { + List nets = repository.findAllByIdentifierAndWorkspaceId(resource.getFilename().split(".")[0], workspaceId); + nets.forEach(petriNet -> { + asyncRunner.execute(() -> deletePetriNet(petriNet.getStringId(), userService.getLoggedOrSystem().transformToLoggedUser()), workspaceId); + }); + } + } + private ImportPetriNetEventOutcome addMessageToOutcome(PetriNet net, ProcessEventType type, ImportPetriNetEventOutcome outcome) { if (net.getProcessEvents().containsKey(type)) { outcome.setMessage(net.getProcessEvents().get(type).getMessage()); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java index 637adb792fb..b28c2a8f97e 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java @@ -55,6 +55,10 @@ static DataFieldReference transformToReference(PetriNet net, Transition transiti ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionType releaseType, LoggedUser user, String uriNodeId, String workspaceId, Map params) throws IOException, MissingPetriNetMetaDataException, MissingIconKeyException; + List importDefaultProcesses(String workspaceId); + + void deleteDefaultProcesses(String workspaceId); + Optional save(PetriNet petriNet); PetriNet getPetriNet(String id); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java index 98348888353..84212444121 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/AnonymousRoleRunner.java @@ -25,11 +25,12 @@ public class AnonymousRoleRunner implements ApplicationEngineStartupRunner { private final ProcessRoleService processRoleService; + private final DefaultWorkspaceService defaultWorkspaceService; @Override public void run(ApplicationArguments args) throws Exception { log.info("Creating anonymous process role"); - processRoleService.createDefaultOrAnonymousRole(PredefinedProcessRole.ANONYMOUS_ROLE, DefaultWorkspaceService.DEFAULT_WORKSPACE_ID); + processRoleService.createDefaultOrAnonymousRole(PredefinedProcessRole.ANONYMOUS_ROLE, defaultWorkspaceService.getDefaultWorkspace().getId()); } } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DashboardRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DashboardRunner.java index 2174c28290c..3e91c097ea6 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DashboardRunner.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DashboardRunner.java @@ -32,8 +32,8 @@ public class DashboardRunner implements ApplicationEngineStartupRunner { @Override public void run(ApplicationArguments args) throws Exception { - createDashboardNet(); - createDashboardTileNet(); +// createDashboardNet(); +// createDashboardTileNet(); } public Optional createDashboardNet() { diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultNetImportRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultNetImportRunner.java new file mode 100644 index 00000000000..60b5a4f889e --- /dev/null +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultNetImportRunner.java @@ -0,0 +1,25 @@ +package com.netgrif.application.engine.startup.runner; + +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; +import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService; +import com.netgrif.application.engine.startup.ApplicationEngineStartupRunner; +import com.netgrif.application.engine.startup.annotation.RunnerOrder; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.ApplicationArguments; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +@RunnerOrder(100) +@RequiredArgsConstructor +public class DefaultNetImportRunner implements ApplicationEngineStartupRunner { + + private final IPetriNetService petriNetService; + private final DefaultWorkspaceService defaultWorkspaceService; + + @Override + public void run(ApplicationArguments args) throws Exception { + petriNetService.importDefaultProcesses(defaultWorkspaceService.getDefaultWorkspace().getId()); + } +} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java index 8dfc4ffda2f..3d14b2b1c28 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/DefaultRoleRunner.java @@ -24,10 +24,11 @@ public class DefaultRoleRunner implements ApplicationEngineStartupRunner { private final ProcessRoleService processRoleService; + private final DefaultWorkspaceService defaultWorkspaceService; @Override public void run(ApplicationArguments args) throws Exception { - processRoleService.createDefaultOrAnonymousRole(PredefinedProcessRole.DEFAULT_ROLE, DefaultWorkspaceService.DEFAULT_WORKSPACE_ID); + processRoleService.createDefaultOrAnonymousRole(PredefinedProcessRole.DEFAULT_ROLE, defaultWorkspaceService.getDefaultWorkspace().getId()); } } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/FilterRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/FilterRunner.java index f001c86b02b..4caa08789ac 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/FilterRunner.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/FilterRunner.java @@ -35,10 +35,10 @@ public class FilterRunner implements ApplicationEngineStartupRunner { @Override public void run(ApplicationArguments args) throws Exception { - createFilterNet(); - createPreferenceItemNet(); - createImportFiltersNet(); - createExportFiltersNet(); +// createFilterNet(); +// createPreferenceItemNet(); +// createImportFiltersNet(); +// createExportFiltersNet(); } public Optional createFilterNet() { diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/ImpersonationRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/ImpersonationRunner.java index 44522a25567..cf9659d8f43 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/ImpersonationRunner.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/ImpersonationRunner.java @@ -30,7 +30,7 @@ public class ImpersonationRunner implements ApplicationEngineStartupRunner { @Override public void run(ApplicationArguments args) throws Exception { - createConfigNets(); +// createConfigNets(); } public void createConfigNets() { diff --git a/application-engine/src/main/resources/application.properties b/application-engine/src/main/resources/application.properties index 7fae1501572..03a4adcddd1 100644 --- a/application-engine/src/main/resources/application.properties +++ b/application-engine/src/main/resources/application.properties @@ -196,4 +196,7 @@ management.endpoint.logfile.external-file=log/nae.log management.endpoint.health.probes.enabled=true logging.file.path=log management.info.build.enabled=false -management.info.env.enabled=true \ No newline at end of file +management.info.env.enabled=true + +# Default petrinets import +nae.petrinet.resources.default-processes=file:src/main/resources/petriNets/engine-processes/filter.xml,file:src/main/resources/petriNets/engine-processes/preference_item.xml,file:src/main/resources/petriNets/engine-processes/import_filters.xml,file:src/main/resources/petriNets/engine-processes/export_filters.xml,file:src/main/resources/petriNets/engine-processes/impersonation_config.xml,file:src/main/resources/petriNets/engine-processes/impersonation_users_select.xml,file:src/main/resources/petriNets/engine-processes/dashboard.xml,file:src/main/resources/petriNets/engine-processes/dashboard_tile.xml \ No newline at end of file diff --git a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java index 4b16a97d889..2e09205bb03 100644 --- a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java +++ b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java @@ -58,6 +58,8 @@ public class UserServiceImpl implements UserService { private IUser systemUser; + private DefaultWorkspaceService defaultWorkspaceService; + @Autowired public void setUserRepository(UserRepository userRepository) { this.userRepository = userRepository; @@ -105,6 +107,11 @@ public void setGroupService(GroupService groupService) { this.groupService = groupService; } + @Autowired + public void setDefaultWorkspaceService(DefaultWorkspaceService defaultWorkspaceService) { + this.defaultWorkspaceService = defaultWorkspaceService; + } + @Override public IUser saveUser(IUser user, String realmId) { user.setRealmId(realmId); @@ -430,7 +437,7 @@ public IUser getSystem() { if (systemUser == null) { systemUser = createSystemUser(); } - String workspaceId = WorkspaceContextHolder.getWorkspaceId() != null ? WorkspaceContextHolder.getWorkspaceId() : DefaultWorkspaceService.DEFAULT_WORKSPACE_ID; + String workspaceId = WorkspaceContextHolder.getWorkspaceId() != null ? WorkspaceContextHolder.getWorkspaceId() : defaultWorkspaceService.getDefaultWorkspace().getId(); systemUser.setWorkspaceId(workspaceId); systemUser.setProcessRoles(new HashSet<>(processRoleService.findAllByWorkspaceId(workspaceId))); return systemUser; From a7d93d7071ead77bdbff1ff2d13b6723e4e89128 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kov=C3=A1=C4=8Dik?= Date: Thu, 15 May 2025 15:06:05 +0200 Subject: [PATCH 08/13] [NAE-2072] Workspaces - after merge --- .../application/engine/AsyncRunnerWrapper.java | 3 +-- .../logic/action/FieldActionsRunner.groovy | 2 +- .../runner/CaseFieldsExpressionRunner.groovy | 2 +- .../logic/action/runner/RoleActionsRunner.groovy | 4 +--- .../application/engine/ApplicationEngine.java | 1 - .../engine/petrinet/web/PetriNetController.java | 16 +++++----------- .../auth/config}/WorkspaceContextHolder.java | 2 +- .../engine/auth/service/UserServiceImpl.java | 2 +- 8 files changed, 11 insertions(+), 21 deletions(-) rename {application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace => nae-user-ce/src/main/java/com/netgrif/application/engine/auth/config}/WorkspaceContextHolder.java (96%) diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/AsyncRunnerWrapper.java b/application-engine/src/main/groovy/com/netgrif/application/engine/AsyncRunnerWrapper.java index 63175208632..525b0deaed0 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/AsyncRunnerWrapper.java +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/AsyncRunnerWrapper.java @@ -1,9 +1,8 @@ package com.netgrif.application.engine; -import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder; +import com.netgrif.application.engine.auth.config.WorkspaceContextHolder; import groovy.lang.Closure; import lombok.RequiredArgsConstructor; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @Service diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/FieldActionsRunner.groovy b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/FieldActionsRunner.groovy index 2525b8fc52c..38609e8a65c 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/FieldActionsRunner.groovy +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/FieldActionsRunner.groovy @@ -1,11 +1,11 @@ package com.netgrif.application.engine.petrinet.domain.dataset.logic.action +import com.netgrif.application.engine.auth.config.WorkspaceContextHolder import com.netgrif.application.engine.business.IPostalCodeService import com.netgrif.application.engine.business.orsr.IOrsrService import com.netgrif.application.engine.importer.service.FieldFactory import com.netgrif.application.engine.objects.event.events.event.ActionStartEvent import com.netgrif.application.engine.objects.event.events.event.ActionStopEvent -import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder import com.netgrif.application.engine.workflow.service.interfaces.IFieldActionsCacheService import com.netgrif.application.engine.objects.petrinet.domain.Function import com.netgrif.application.engine.objects.workflow.domain.Case diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/CaseFieldsExpressionRunner.groovy b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/CaseFieldsExpressionRunner.groovy index 56f48d54310..1bce8169416 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/CaseFieldsExpressionRunner.groovy +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/CaseFieldsExpressionRunner.groovy @@ -1,10 +1,10 @@ package com.netgrif.application.engine.petrinet.domain.dataset.logic.action.runner +import com.netgrif.application.engine.auth.config.WorkspaceContextHolder import com.netgrif.application.engine.event.IGroovyShellFactory import com.netgrif.application.engine.elastic.service.executors.MaxSizeHashMap import com.netgrif.application.engine.petrinet.domain.dataset.logic.action.ActionDelegate import com.netgrif.application.engine.objects.workflow.domain.Case -import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/RoleActionsRunner.groovy b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/RoleActionsRunner.groovy index 41f1f99bbab..7b1d23c1e00 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/RoleActionsRunner.groovy +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/runner/RoleActionsRunner.groovy @@ -1,12 +1,10 @@ package com.netgrif.application.engine.petrinet.domain.dataset.logic.action.runner - +import com.netgrif.application.engine.auth.config.WorkspaceContextHolder import com.netgrif.application.engine.event.IGroovyShellFactory import com.netgrif.application.engine.objects.petrinet.domain.dataset.logic.action.Action import com.netgrif.application.engine.petrinet.domain.dataset.logic.action.context.RoleContext import com.netgrif.application.engine.petrinet.domain.dataset.logic.action.delegate.RoleActionDelegate -import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder -import org.codehaus.groovy.control.CompilerConfiguration import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired diff --git a/application-engine/src/main/java/com/netgrif/application/engine/ApplicationEngine.java b/application-engine/src/main/java/com/netgrif/application/engine/ApplicationEngine.java index 7a7b29ba4d2..43837ad0518 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/ApplicationEngine.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/ApplicationEngine.java @@ -4,7 +4,6 @@ import com.netgrif.application.engine.configuration.JsonRootRelProvider; import com.netgrif.application.engine.configuration.groovy.converter.GStringToStringConverter; import com.netgrif.application.engine.petrinet.domain.version.StringToVersionConverter; -import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.annotation.Aspect; import org.springframework.boot.SpringApplication; diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java index 34126b33da3..839d245bbfe 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/web/PetriNetController.java @@ -1,26 +1,20 @@ package com.netgrif.application.engine.petrinet.web; -import com.netgrif.application.engine.AsyncRunner; import com.netgrif.application.engine.AsyncRunnerWrapper; -import com.netgrif.application.engine.petrinet.service.PetriNetService; -import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder; -import com.netgrif.application.engine.petrinet.web.responsebodies.PetriNetImportReference; -import com.netgrif.application.engine.petrinet.web.responsebodies.ProcessRolesResource; -import com.netgrif.application.engine.petrinet.web.responsebodies.TransitionReferencesResource; -import com.netgrif.application.engine.objects.auth.domain.LoggedUser; +import com.netgrif.application.engine.adapter.spring.petrinet.service.ProcessRoleService; import com.netgrif.application.engine.eventoutcomes.LocalisedEventOutcomeFactory; import com.netgrif.application.engine.importer.service.Importer; import com.netgrif.application.engine.importer.service.throwable.MissingIconKeyException; +import com.netgrif.application.engine.objects.auth.domain.LoggedUser; import com.netgrif.application.engine.objects.petrinet.domain.PetriNet; import com.netgrif.application.engine.objects.petrinet.domain.PetriNetSearch; import com.netgrif.application.engine.objects.petrinet.domain.VersionType; import com.netgrif.application.engine.objects.petrinet.domain.throwable.MissingPetriNetMetaDataException; +import com.netgrif.application.engine.objects.workflow.domain.eventoutcomes.petrinetoutcomes.ImportPetriNetEventOutcome; import com.netgrif.application.engine.petrinet.domain.version.StringToVersionConverter; import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService; -import com.netgrif.application.engine.adapter.spring.petrinet.service.ProcessRoleService; -import com.netgrif.application.engine.workflow.domain.FileStorageConfiguration; import com.netgrif.application.engine.petrinet.web.responsebodies.*; -import com.netgrif.application.engine.objects.workflow.domain.eventoutcomes.petrinetoutcomes.ImportPetriNetEventOutcome; +import com.netgrif.application.engine.workflow.domain.FileStorageConfiguration; import com.netgrif.application.engine.workflow.domain.eventoutcomes.response.EventOutcomeWithMessage; import com.netgrif.application.engine.workflow.domain.eventoutcomes.response.EventOutcomeWithMessageResource; import com.netgrif.application.engine.workflow.web.responsebodies.MessageResource; @@ -29,6 +23,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.codec.binary.Base64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,7 +43,6 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/WorkspaceContextHolder.java b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/config/WorkspaceContextHolder.java similarity index 96% rename from application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/WorkspaceContextHolder.java rename to nae-user-ce/src/main/java/com/netgrif/application/engine/auth/config/WorkspaceContextHolder.java index f3a9327be0c..46fcb78b03c 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/workspace/WorkspaceContextHolder.java +++ b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/config/WorkspaceContextHolder.java @@ -1,4 +1,4 @@ -package com.netgrif.application.engine.petrinet.service.workspace; +package com.netgrif.application.engine.auth.config; import org.springframework.core.NamedInheritableThreadLocal; import org.springframework.core.NamedThreadLocal; diff --git a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java index 2e09205bb03..74f70994004 100644 --- a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java +++ b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java @@ -4,6 +4,7 @@ import com.netgrif.application.engine.adapter.spring.petrinet.service.ProcessRoleService; import com.netgrif.application.engine.adapter.spring.workflow.service.FilterImportExportService; import com.netgrif.application.engine.auth.config.GroupConfigurationProperties; +import com.netgrif.application.engine.auth.config.WorkspaceContextHolder; import com.netgrif.application.engine.auth.provider.CollectionNameProvider; import com.netgrif.application.engine.auth.repository.UserRepository; import com.netgrif.application.engine.objects.auth.constants.UserConstants; @@ -13,7 +14,6 @@ import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole; import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import com.netgrif.application.engine.objects.workflow.domain.ProcessResourceId; -import com.netgrif.application.engine.petrinet.service.workspace.WorkspaceContextHolder; import com.querydsl.core.types.dsl.BooleanExpression; import lombok.Getter; import lombok.extern.slf4j.Slf4j; From cf83cf822974c9d3a9516817af44d732b184cb78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kov=C3=A1=C4=8Dik?= Date: Fri, 16 May 2025 10:41:15 +0200 Subject: [PATCH 09/13] [NAE-2072] Workspaces - remove function --- .../objects/petrinet/domain/workspace/WorkspaceService.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceService.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceService.java index cd428ea5a4d..14c08da7eec 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceService.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceService.java @@ -13,8 +13,6 @@ public interface WorkspaceService { List getAll(); - Workspace createDefaultWorkspace(); - Workspace createWorkspace(WorkspaceRequest createRequest, LoggedUser loggedUser); Workspace setDefaultWorkspace(String workspaceId); From 487ac131e6a31216e2023b019975af09f3222c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kov=C3=A1=C4=8Dik?= Date: Wed, 21 May 2025 16:57:47 +0200 Subject: [PATCH 10/13] [NAE-2072] Workspaces - add workspaceId to actions as parameter to funcions --- .../logic/action/FieldActionsRunner.groovy | 8 ++-- .../engine/auth/web/UserController.java | 43 ------------------- .../NetgrifBasicAuthenticationProvider.java | 9 +++- .../NetgrifLdapAuthenticationProvider.java | 9 +++- .../petrinet/service/PetriNetService.java | 8 ++-- .../service/SecurityContextService.java | 11 +++++ .../engine/workflow/service/DataService.java | 4 +- .../engine/workflow/service/EventService.java | 16 +++---- .../workflow/service/WorkflowService.java | 8 ++-- .../service/interfaces/IEventService.java | 6 +-- 10 files changed, 51 insertions(+), 71 deletions(-) diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/FieldActionsRunner.groovy b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/FieldActionsRunner.groovy index 38609e8a65c..05f0dfa0611 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/FieldActionsRunner.groovy +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/FieldActionsRunner.groovy @@ -44,11 +44,11 @@ abstract class FieldActionsRunner { private Map actionsCache = new HashMap<>() - List run(com.netgrif.application.engine.objects.petrinet.domain.dataset.logic.action.Action action, Case useCase, Map params, List functions = []) { - return run(action, useCase, Optional.empty(), params, functions) + List run(com.netgrif.application.engine.objects.petrinet.domain.dataset.logic.action.Action action, Case useCase, Map params, String workspaceId, List functions = []) { + return run(action, useCase, Optional.empty(), params, workspaceId, functions) } - List run(com.netgrif.application.engine.objects.petrinet.domain.dataset.logic.action.Action action, Case useCase, Optional task, Map params, List functions = []) { + List run(com.netgrif.application.engine.objects.petrinet.domain.dataset.logic.action.Action action, Case useCase, Optional task, Map params, String workspaceId, List functions = []) { if (!actionsCache) actionsCache = new HashMap<>() @@ -57,7 +57,7 @@ abstract class FieldActionsRunner { final ActionStartEvent actionStart = new ActionStartEvent(action) try { publisher.publishEvent(actionStart) - WorkspaceContextHolder.setWorkspaceId(useCase.getWorkspaceId(), true); + WorkspaceContextHolder.setWorkspaceId(useCase != null ? useCase.getWorkspaceId() : workspaceId, true); code.init(action, useCase, task, this, params) code() publisher.publishEvent(new ActionStopEvent(action, actionStart, true)) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/UserController.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/UserController.java index 0120c1314cb..72b70515b1a 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/UserController.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/UserController.java @@ -183,34 +183,6 @@ public ResponseEntity getUser(@PathVariable("realmId") String realmId, @Pa return ResponseEntity.ok(userFactory.getUser(user, locale)); } - @Operation(summary = "Update user", security = {@SecurityRequirement(name = "BasicAuth")}) - @PostMapping(value = "/update", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity updateUser(@RequestBody UpdateUserRequest updates, Authentication auth, Locale locale) { - if (!serverAuthProperties.isEnableProfileEdit()) return null; - LoggedUser loggedUser = (LoggedUser) auth.getPrincipal(); - String userId = updates.getStringId(); - IUser user; - try { - user = userService.findById(userId, updates.getRealmId()); - } catch (IllegalArgumentException e) { - log.error("Could not find user with id [{}]", userId, e); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); - } - user = userService.update(user, updates); - securityContextService.saveToken(userId); - if (Objects.equals(loggedUser.getId(), userId)) { - loggedUser.setFirstName(user.getFirstName()); - loggedUser.setLastName(user.getLastName()); - if (updates.getWorkspaceId() != null) { - loggedUser.setWorkspaceId(updates.getWorkspaceId()); - } - securityContextService.reloadSecurityContext(loggedUser); - } - log.info("Updating user " + user.getEmail() + " with data " + updates); - user.setWorkspaceId(updates.getWorkspaceId()); - return ResponseEntity.ok(User.createUser(user)); - } - @Operation(summary = "Get all workspaces", security = {@SecurityRequirement(name = "BasicAuth")}) @GetMapping(value = "/workspaces", produces = MediaTypes.HAL_JSON_VALUE) public List getAllWorkspaces() { @@ -343,21 +315,6 @@ public ResponseEntity savePreferences(@RequestBody PreferencesR } } - @Operation(summary = "Change Workspace", security = {@SecurityRequirement(name = "BasicAuth")}) - @PostMapping(value = "/workspace/{id}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaTypes.HAL_JSON_VALUE) - public MessageResource changeWorkspace(@PathVariable("id") String workspaceId, Authentication auth, Locale locale) { - try { - LoggedUser loggedUser = (LoggedUser) auth.getPrincipal(); - loggedUser.setWorkspaceId(workspaceId); - securityContextService.forceReloadSecurityContext(loggedUser); - log.info("Changing active workspace for user " + loggedUser.getEmail()); - return MessageResource.successMessage("User workspace changed"); - } catch (Exception e) { - log.error(e.getMessage(), e); - return MessageResource.errorMessage("Changing user workspace failed"); - } - } - private Page changeToResponse(Page users, Pageable pageable, Locale locale) { return new PageImpl<>(changeType(users.getContent(), locale), pageable, users.getTotalElements()); } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/configuration/authentication/providers/basic/NetgrifBasicAuthenticationProvider.java b/application-engine/src/main/java/com/netgrif/application/engine/configuration/authentication/providers/basic/NetgrifBasicAuthenticationProvider.java index bebe22693f2..b81432880c7 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/configuration/authentication/providers/basic/NetgrifBasicAuthenticationProvider.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/configuration/authentication/providers/basic/NetgrifBasicAuthenticationProvider.java @@ -1,10 +1,12 @@ package com.netgrif.application.engine.configuration.authentication.providers.basic; +import com.netgrif.application.engine.adapter.spring.auth.domain.LoggedUserImpl; import com.netgrif.application.engine.auth.service.UserService; import com.netgrif.application.engine.objects.auth.domain.IUser; import com.netgrif.application.engine.objects.auth.domain.User; import com.netgrif.application.engine.configuration.authentication.providers.NetgrifAuthenticationProvider; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.support.MessageSourceAccessor; @@ -28,6 +30,9 @@ public class NetgrifBasicAuthenticationProvider extends NetgrifAuthenticationPro @Autowired protected UserService userService; + @Autowired + protected DefaultWorkspaceService defaultWorkspaceService; + protected MessageSourceAccessor messages = SpringSecurityMessageSource.getAccessor(); protected PasswordEncoder passwordEncoder; @@ -61,8 +66,8 @@ public Authentication authenticate(Authentication authentication) throws Authent .getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials")); } - UserDetails userDetails = userService.transformToLoggedUser(user); - + LoggedUserImpl userDetails = userService.transformToLoggedUser(user); + userDetails.setWorkspaceId(defaultWorkspaceService.getDefaultWorkspace().getId()); UsernamePasswordAuthenticationToken result = new UsernamePasswordAuthenticationToken(userDetails, presentedPassword, userDetails.getAuthorities()); result.setDetails(authentication.getDetails()); loginAttemptService.loginSucceeded(user.getStringId()); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/configuration/authentication/providers/ldap/NetgrifLdapAuthenticationProvider.java b/application-engine/src/main/java/com/netgrif/application/engine/configuration/authentication/providers/ldap/NetgrifLdapAuthenticationProvider.java index 6ddec08254a..7d1d377ece8 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/configuration/authentication/providers/ldap/NetgrifLdapAuthenticationProvider.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/configuration/authentication/providers/ldap/NetgrifLdapAuthenticationProvider.java @@ -1,9 +1,12 @@ package com.netgrif.application.engine.configuration.authentication.providers.ldap; +import com.netgrif.application.engine.adapter.spring.auth.domain.LoggedUserImpl; import com.netgrif.application.engine.configuration.authentication.providers.NetgrifAuthenticationProvider; import com.netgrif.application.engine.configuration.properties.NaeLdapProperties; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.ldap.NamingException; import org.springframework.ldap.core.DirContextOperations; @@ -38,6 +41,9 @@ @ConditionalOnExpression("${nae.ldap.enabled:false}") public class NetgrifLdapAuthenticationProvider extends NetgrifAuthenticationProvider { + @Autowired + protected DefaultWorkspaceService defaultWorkspaceService; + protected NaeLdapProperties ldapProperties; protected PasswordEncoder passwordEncoder; @@ -160,8 +166,9 @@ public Authentication authenticate(Authentication authentication) throws Authent Collection extraAuthorities = loadUserAuthorities(userData, username, password); - UserDetails user = userDetailsContextMapper.mapUserFromContext(userData, username, extraAuthorities); + LoggedUserImpl user = (LoggedUserImpl) userDetailsContextMapper.mapUserFromContext(userData, username, extraAuthorities); loginAttemptService.loginSucceeded(key); + user.setWorkspaceId(defaultWorkspaceService.getDefaultWorkspace().getId()); return createSuccessfulAuthentication(userToken, user); } catch (PasswordPolicyException ppe) { log.error(ppe.getStatus().getErrorCode() + ": " + ppe.getStatus().getDefaultMessage()); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java index b34c86c91c3..f4055385baf 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java @@ -235,7 +235,7 @@ public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionTyp throw new MissingPetriNetMetaDataException(Arrays.asList("WorkspaceId")); } net.setWorkspaceId(workspaceId); - net.setUri(workspaceId + "/" + uriNodeId); + net.setUri("/" + workspaceId + uriNodeId); PetriNet existingNet = getNewestVersionByIdentifier(net.getIdentifier()); if (existingNet != null) { @@ -251,10 +251,10 @@ public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionTyp xmlCopy.close(); log.info("Petri net " + net.getTitle() + " (" + net.getInitials() + " v" + net.getVersion() + ") imported successfully and saved in a folder: " + savedPath.toString()); - outcome.setOutcomes(eventService.runActions(net.getPreUploadActions(), null, Optional.empty(), params)); + outcome.setOutcomes(eventService.runActions(net.getPreUploadActions(), null, Optional.empty(), params, net.getWorkspaceId())); publisher.publishEvent(new ProcessDeployEvent(outcome, EventPhase.PRE)); save(net); - outcome.setOutcomes(eventService.runActions(net.getPostUploadActions(), null, Optional.empty(), params)); + outcome.setOutcomes(eventService.runActions(net.getPostUploadActions(), null, Optional.empty(), params, net.getWorkspaceId())); publisher.publishEvent(new ProcessDeployEvent(outcome, EventPhase.POST)); outcome.setNet(imported.get()); return outcome; @@ -605,7 +605,7 @@ public void runActions(List actions, PetriNet petriNet) { log.info("Running actions of net [" + petriNet.getStringId() + "]"); actions.forEach(action -> { - actionsRunner.run(action, null, new HashMap<>(), petriNet.getFunctions()); + actionsRunner.run(action, null, new HashMap<>(), petriNet.getWorkspaceId(), petriNet.getFunctions()); }); } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/security/service/SecurityContextService.java b/application-engine/src/main/java/com/netgrif/application/engine/security/service/SecurityContextService.java index 05945215383..c8571a5e90b 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/security/service/SecurityContextService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/security/service/SecurityContextService.java @@ -3,6 +3,7 @@ import com.netgrif.application.engine.adapter.spring.auth.domain.LoggedUserImpl; import com.netgrif.application.engine.objects.auth.domain.LoggedUser; import com.netgrif.application.engine.auth.service.UserService; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; @@ -29,6 +30,8 @@ public class SecurityContextService implements ISecurityContextService { protected UserService userService; + protected DefaultWorkspaceService defaultWorkspaceService; + protected SecurityContextService() { this.cachedTokens = ConcurrentHashMap.newKeySet(); } @@ -65,6 +68,9 @@ public void forceReloadSecurityContext(LoggedUser loggedUser) { private void reloadSecurityContext(LoggedUser loggedUser, boolean forceRefresh) { if (isUserLogged(loggedUser) && cachedTokens.contains(loggedUser.getId())) { + if (loggedUser.getWorkspaceId() == null) { + loggedUser.setWorkspaceId(defaultWorkspaceService.getDefaultWorkspace().getId()); + } if (forceRefresh) { String workspaceId = loggedUser.getWorkspaceId(); loggedUser = (LoggedUser) userService.transformToLoggedUser(userService.findById(loggedUser.getId(), null)); @@ -114,4 +120,9 @@ private boolean isUserLogged(LoggedUser loggedUser) { public void setUserService(UserService userService) { this.userService = userService; } + + @Autowired + public void setDefaultWorkspaceService(DefaultWorkspaceService defaultWorkspaceService) { + this.defaultWorkspaceService = defaultWorkspaceService; + } } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/DataService.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/DataService.java index 26fc962f974..71d7386558b 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/DataService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/DataService.java @@ -520,8 +520,8 @@ public FileFieldInputStream getFile(Case useCase, Task task, FileField field, bo private void runGetActionsFromFileField(Map events, Case useCase, Map params) { if (events != null && !events.isEmpty() && events.containsKey(DataEventType.GET)) { DataEvent event = events.get(DataEventType.GET); - event.getPreActions().forEach(action -> actionsRunner.run(action, useCase, params)); - event.getPostActions().forEach(action -> actionsRunner.run(action, useCase, params)); + event.getPreActions().forEach(action -> actionsRunner.run(action, useCase, params, useCase.getWorkspaceId())); + event.getPostActions().forEach(action -> actionsRunner.run(action, useCase, params, useCase.getWorkspaceId())); } } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/EventService.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/EventService.java index ae3644df19f..cfc482d1461 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/EventService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/EventService.java @@ -37,22 +37,22 @@ public EventService(FieldActionsRunner actionsRunner, IWorkflowService workflowS @Override public List runActions(List actions, Case useCase, Task task, Transition transition, Map params) { log.info("[" + useCase.getStringId() + "]: Running actions of transition " + transition.getStringId()); - return runActions(actions, useCase, Optional.of(task), params); + return runActions(actions, useCase, Optional.of(task), params, useCase.getWorkspaceId()); } @Override - public List runActions(List actions, Map params) { - return runActions(actions, null, Optional.empty(), params); + public List runActions(List actions, Map params, String workspaceId) { + return runActions(actions, null, Optional.empty(), params, workspaceId); } @Override - public List runActions(List actions, Case useCase, Optional task, Map params) { + public List runActions(List actions, Case useCase, Optional task, Map params, String workspaceId) { List allOutcomes = new ArrayList<>(); if (actions.isEmpty()) { return allOutcomes; } actions.forEach(action -> { - List outcomes = actionsRunner.run(action, useCase, task, params, useCase == null ? Collections.emptyList() : useCase.getPetriNet().getFunctions()); + List outcomes = actionsRunner.run(action, useCase, task, params, useCase == null ? workspaceId : useCase.getWorkspaceId(), useCase == null ? Collections.emptyList() : useCase.getPetriNet().getFunctions()); outcomes.stream().filter(SetDataEventOutcome.class::isInstance) .forEach(outcome -> { if (((SetDataEventOutcome) outcome).getChangedFields().isEmpty()) return; @@ -67,13 +67,13 @@ public List runActions(List actions, Case useCase, Optiona } @Override - public List runEventActions(Case useCase, Task task, List actions, DataEventType trigger, Map params) { + public List runEventActions(Case useCase, Task task, List actions, DataEventType trigger, Map params, String workspaceId) { List allOutcomes = new ArrayList<>(); if (actions.isEmpty()) { return allOutcomes; } actions.forEach(action -> { - List outcomes = actionsRunner.run(action, useCase, task == null ? Optional.empty() : Optional.of(task), params, useCase == null ? Collections.emptyList() : useCase.getPetriNet().getFunctions()); + List outcomes = actionsRunner.run(action, useCase, task == null ? Optional.empty() : Optional.of(task), params, useCase == null ? workspaceId : useCase.getWorkspaceId(), useCase == null ? Collections.emptyList() : useCase.getPetriNet().getFunctions()); outcomes.stream().filter(SetDataEventOutcome.class::isInstance) .forEach(outcome -> { if (((SetDataEventOutcome) outcome).getChangedFields().isEmpty()) return; @@ -101,7 +101,7 @@ public List processDataEvents(Field field, DataEventType actionTri return Collections.emptyList(); } - return runEventActions(useCase, task, fieldActions, actionTrigger, params); + return runEventActions(useCase, task, fieldActions, actionTrigger, params, useCase.getWorkspaceId()); } @Override diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/WorkflowService.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/WorkflowService.java index 9e533aac5ab..2c263fb0f48 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/WorkflowService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/WorkflowService.java @@ -339,7 +339,7 @@ public CreateCaseEventOutcome createCase(String netId, Function ma useCase.setUriNodeId(petriNet.getUriNodeId()); CreateCaseEventOutcome outcome = new CreateCaseEventOutcome(); - outcome.addOutcomes(eventService.runActions(petriNet.getPreCreateActions(), null, Optional.empty(), params)); + outcome.addOutcomes(eventService.runActions(petriNet.getPreCreateActions(), null, Optional.empty(), params, petriNet.getWorkspaceId())); //evaluateRules(new CreateCaseEvent(new CreateCaseEventOutcome(null, outcome.getOutcomes()), EventPhase.PRE)); publisher.publishEvent(new CreateCaseEvent(outcome, EventPhase.PRE)); @@ -351,7 +351,7 @@ public CreateCaseEventOutcome createCase(String netId, Function ma resolveTaskRefs(useCase); useCase = findOne(useCase.getStringId()); - outcome.addOutcomes(eventService.runActions(petriNet.getPostCreateActions(), useCase, Optional.empty(), params)); + outcome.addOutcomes(eventService.runActions(petriNet.getPostCreateActions(), useCase, Optional.empty(), params, useCase.getWorkspaceId())); useCase = findOne(useCase.getStringId()); useCase = evaluateRules(new CreateCaseEvent(new CreateCaseEventOutcome(useCase, outcome.getOutcomes()), EventPhase.POST)); // rulesExecuted = ruleEngine.evaluateRules(useCase, new CaseCreatedFact(useCase.getStringId(), EventPhase.POST)); @@ -400,7 +400,7 @@ public DeleteCaseEventOutcome deleteCase(String caseId) { @Override public DeleteCaseEventOutcome deleteCase(Case useCase, Map params) { - DeleteCaseEventOutcome outcome = new DeleteCaseEventOutcome(useCase, eventService.runActions(useCase.getPetriNet().getPreDeleteActions(), useCase, Optional.empty(), params)); + DeleteCaseEventOutcome outcome = new DeleteCaseEventOutcome(useCase, eventService.runActions(useCase.getPetriNet().getPreDeleteActions(), useCase, Optional.empty(), params, useCase.getPetriNet().getWorkspaceId())); publisher.publishEvent(new DeleteCaseEvent(outcome, EventPhase.PRE)); useCase = ((Evaluator) evaluationService.getEvaluator("default")).apply(new DeleteCaseEvent(outcome, EventPhase.PRE));; log.info("[" + useCase.getStringId() + "]: User [" + userService.getLoggedOrSystem().getStringId() + "] is deleting case " + useCase.getTitle()); @@ -408,7 +408,7 @@ public DeleteCaseEventOutcome deleteCase(Case useCase, Map param taskService.deleteTasksByCase(useCase.getStringId()); repository.delete(useCase); - outcome.addOutcomes(eventService.runActions(useCase.getPetriNet().getPostDeleteActions(), null, Optional.empty(), params)); + outcome.addOutcomes(eventService.runActions(useCase.getPetriNet().getPostDeleteActions(), null, Optional.empty(), params, useCase.getPetriNet().getWorkspaceId())); addMessageToOutcome(useCase.getPetriNet(), CaseEventType.DELETE, outcome); ((Evaluator) evaluationService.getEvaluator("noContext")).apply(new DeleteCaseEvent(outcome, EventPhase.POST)); publisher.publishEvent(new DeleteCaseEvent(outcome, EventPhase.POST)); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/interfaces/IEventService.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/interfaces/IEventService.java index 04cb693e862..954bef4dc7d 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/interfaces/IEventService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/interfaces/IEventService.java @@ -18,13 +18,13 @@ public interface IEventService { List runActions(List actions, Case useCase, Task task, Transition transition, Map params); - List runActions(List actions, Case useCase, Optional task, Map params); + List runActions(List actions, Case useCase, Optional task, Map params, String workspaceId); - List runActions(List actions, Map params); + List runActions(List actions, Map params, String workspaceId); List processDataEvents(Field field, DataEventType actionTrigger, EventPhase phase, Case useCase, Task task, Map params); - List runEventActions(Case useCase, Task task, List actions, DataEventType trigger, Map params); + List runEventActions(Case useCase, Task task, List actions, DataEventType trigger, Map params, String workspaceId); void runEventActionsOnChanged(Task task, SetDataEventOutcome outcome, DataEventType trigger); From d4fccedbdf7009f8a0bb08600f362d08d964cec6 Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Thu, 22 May 2025 18:06:14 +0200 Subject: [PATCH 11/13] - updated SecurityContextService --- .../service/SecurityContextService.java | 39 ++++++++++++++++--- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/security/service/SecurityContextService.java b/application-engine/src/main/java/com/netgrif/application/engine/security/service/SecurityContextService.java index c8571a5e90b..fe41a482735 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/security/service/SecurityContextService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/security/service/SecurityContextService.java @@ -4,15 +4,23 @@ import com.netgrif.application.engine.objects.auth.domain.LoggedUser; import com.netgrif.application.engine.auth.service.UserService; import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.context.SecurityContextHolderStrategy; +import org.springframework.security.web.context.HttpSessionSecurityContextRepository; +import org.springframework.security.web.context.SecurityContextRepository; import org.springframework.stereotype.Service; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; -import java.util.Collection; +import java.util.Objects; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -32,8 +40,11 @@ public class SecurityContextService implements ISecurityContextService { protected DefaultWorkspaceService defaultWorkspaceService; + private final SecurityContextRepository securityContextRepository; + protected SecurityContextService() { this.cachedTokens = ConcurrentHashMap.newKeySet(); + this.securityContextRepository = new HttpSessionSecurityContextRepository(); } /** @@ -73,15 +84,33 @@ private void reloadSecurityContext(LoggedUser loggedUser, boolean forceRefresh) } if (forceRefresh) { String workspaceId = loggedUser.getWorkspaceId(); - loggedUser = (LoggedUser) userService.transformToLoggedUser(userService.findById(loggedUser.getId(), null)); + loggedUser = userService.transformToLoggedUser(userService.findById(loggedUser.getId(), null)); loggedUser.setWorkspaceId(workspaceId); } - UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(loggedUser, SecurityContextHolder.getContext().getAuthentication().getCredentials(), ((LoggedUserImpl) loggedUser).getAuthorities()); - SecurityContextHolder.getContext().setAuthentication(token); + SecurityContext context = getSecurityContext(loggedUser); + securityContextRepository.saveContext(context, getServletRequest(), getServletResponse()); clearToken(loggedUser.getId()); } } + @NotNull + private SecurityContext getSecurityContext(LoggedUser loggedUser) { + UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(loggedUser, SecurityContextHolder.getContext().getAuthentication().getCredentials(), ((LoggedUserImpl) loggedUser).getAuthorities()); + SecurityContextHolderStrategy securityContextHolderStrategy = SecurityContextHolder.getContextHolderStrategy(); + SecurityContext context = securityContextHolderStrategy.createEmptyContext(); + context.setAuthentication(authentication); + securityContextHolderStrategy.setContext(context); + return context; + } + + private HttpServletRequest getServletRequest() { + return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + } + + private HttpServletResponse getServletResponse() { + return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getResponse(); + } + /** * Checks type of SecurityContext * From 7d938e08659099b061d7f7365ccbc2e7c13d586f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kov=C3=A1=C4=8Dik?= Date: Fri, 23 May 2025 18:24:08 +0200 Subject: [PATCH 12/13] [NAE-2072] Workspaces - fix problem with cases and tasks --- .../engine/petrinet/service/PetriNetService.java | 11 ++++++++--- .../petrinet/service/interfaces/IPetriNetService.java | 2 ++ .../engine/workflow/web/responsebodies/Task.java | 4 ++++ .../engine/objects/petrinet/domain/PetriNet.java | 2 ++ .../engine/objects/petrinet/domain/Transition.java | 1 + .../objects/petrinet/domain/roles/ProcessRole.java | 1 + 6 files changed, 18 insertions(+), 3 deletions(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java index f4055385baf..2e6b1ec7a4a 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java @@ -237,7 +237,7 @@ public ImportPetriNetEventOutcome importPetriNet(InputStream xmlFile, VersionTyp net.setWorkspaceId(workspaceId); net.setUri("/" + workspaceId + uriNodeId); - PetriNet existingNet = getNewestVersionByIdentifier(net.getIdentifier()); + PetriNet existingNet = getNewestVersionByIdentifier(net.getIdentifier(), workspaceId); if (existingNet != null) { net.setVersion(existingNet.getVersion()); net.incrementVersion(releaseType); @@ -365,9 +365,14 @@ public List findAllById(List ids) { } @Override - @Cacheable(value = "petriNetNewest", unless = "#result == null") public PetriNet getNewestVersionByIdentifier(String identifier) { - List nets = repository.findByIdentifierAndWorkspaceId(identifier, userService.getLoggedOrSystem().getWorkspaceId(), PageRequest.of(0, 1, Sort.Direction.DESC, "version.major", "version.minor", "version.patch")).getContent(); + return getNewestVersionByIdentifier(identifier, userService.getLoggedOrSystem().getWorkspaceId()); + } + + @Override + @Cacheable(value = "petriNetNewest", unless = "#result == null") + public PetriNet getNewestVersionByIdentifier(String identifier, String workspaceId) { + List nets = repository.findByIdentifierAndWorkspaceId(identifier, workspaceId, PageRequest.of(0, 1, Sort.Direction.DESC, "version.major", "version.minor", "version.patch")).getContent(); if (nets.isEmpty()) { return null; } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java index b28c2a8f97e..8d1ee34e2da 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java @@ -73,6 +73,8 @@ static DataFieldReference transformToReference(PetriNet net, Transition transiti PetriNet getNewestVersionByIdentifier(String identifier); + PetriNet getNewestVersionByIdentifier(String identifier, String workspaceId); + List getAll(); FileSystemResource getFile(String netId, String title); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/responsebodies/Task.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/responsebodies/Task.java index 27d35baf402..b39bfa7205b 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/responsebodies/Task.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/responsebodies/Task.java @@ -76,6 +76,8 @@ public class Task { private Map tags; + private String workspaceId; + public Task(com.netgrif.application.engine.objects.workflow.domain.Task task, Locale locale) { this._id = task.getObjectId(); this.caseId = task.getCaseId(); @@ -104,6 +106,7 @@ public Task(com.netgrif.application.engine.objects.workflow.domain.Task task, Lo this.delegateTitle = task.getTranslatedEventTitle(EventType.DELEGATE, locale); this.assignedUserPolicy = task.getAssignedUserPolicy(); this.tags = task.getTags(); + this.workspaceId = task.getWorkspaceId(); } public Task(ElasticTask entity) { @@ -113,6 +116,7 @@ public Task(ElasticTask entity) { title = entity.getTitle().getDefaultValue(); caseTitle = entity.getCaseTitle(); priority = entity.getPriority(); + workspaceId = entity.getWorkspaceId(); } public String getStringId() { diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java index 25aef12c5a9..c08e2842f45 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/PetriNet.java @@ -200,6 +200,8 @@ public PetriNet(PetriNet petriNet) { this.defaultRoleEnabled = petriNet.isDefaultRoleEnabled(); this.anonymousRoleEnabled = petriNet.isAnonymousRoleEnabled(); this.author = petriNet.getAuthor(); + this.workspaceId = petriNet.getWorkspaceId(); + this.uri = petriNet.getUri(); initializeArcs(); } diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/Transition.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/Transition.java index 929e57990fd..0cc3ee249ea 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/Transition.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/Transition.java @@ -274,5 +274,6 @@ public Transition(Transition transition) { this.setAssignedUserPolicy(new HashMap<>(transition.assignedUserPolicy)); this.setTags(new HashMap<>(transition.tags)); this.setDefaultRoleId(transition.defaultRoleId); + this.setWorkspaceId(transition.workspaceId); } } diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/roles/ProcessRole.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/roles/ProcessRole.java index ba7918343c3..17d0f5aaba2 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/roles/ProcessRole.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/roles/ProcessRole.java @@ -65,6 +65,7 @@ public ProcessRole(ProcessRole processRole) { this.processId = processRole.processId; this.description = processRole.description; this.events = processRole.events; + this.workspaceId = processRole.workspaceId; } public ProcessRole(String id) { From 3d90c2448d773d70b6db713405f6f11ff6648e40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kov=C3=A1=C4=8Dik?= Date: Tue, 3 Jun 2025 08:41:05 +0200 Subject: [PATCH 13/13] [NAE-2072] Workspaces - rework fo async runner - add all default roles to new users - fix predicates in task and workflow services --- .../engine/AsyncRunnerWrapper.java | 10 +++++ .../logic/action/ActionDelegate.groovy | 16 ++++---- .../auth/service/RegistrationService.java | 11 +++++- .../security/jwt/JwtService.java | 3 ++ .../ImpersonationAuthorizationService.java | 8 +++- .../engine/importer/service/Importer.java | 4 +- .../petrinet/service/PetriNetService.java | 10 ++--- .../petrinet/service/ProcessRoleService.java | 39 +++++++------------ .../service/interfaces/IPetriNetService.java | 2 +- .../domain/repositories/CaseRepository.java | 4 +- .../domain/repositories/TaskRepository.java | 1 + .../engine/workflow/service/TaskService.java | 14 ++++--- .../workflow/service/WorkflowService.java | 8 ++-- .../petrinet/domain/workspace/Workspace.java | 4 ++ .../domain/workspace/WorkspaceRequest.java | 6 ++- .../petrinet/service/ProcessRoleService.java | 5 +-- .../engine/auth/service/UserFactoryImpl.java | 20 +++++++--- .../engine/auth/service/UserServiceImpl.java | 26 +++++++++---- .../engine/auth/service/UserService.java | 4 +- 19 files changed, 122 insertions(+), 73 deletions(-) diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/AsyncRunnerWrapper.java b/application-engine/src/main/groovy/com/netgrif/application/engine/AsyncRunnerWrapper.java index 525b0deaed0..20731407f20 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/AsyncRunnerWrapper.java +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/AsyncRunnerWrapper.java @@ -1,6 +1,7 @@ package com.netgrif.application.engine; import com.netgrif.application.engine.auth.config.WorkspaceContextHolder; +import com.netgrif.application.engine.auth.service.UserService; import groovy.lang.Closure; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -9,12 +10,21 @@ @RequiredArgsConstructor public class AsyncRunnerWrapper { private final AsyncRunner async; + private final UserService userService; + + public void run(Closure closure) { + run(closure, userService.getLoggedOrSystem().getWorkspaceId()); + } public void run(Closure closure, String workspaceId) { WorkspaceContextHolder.setWorkspaceId(workspaceId, true); async.run(closure); } + public void execute(final Runnable runnable) { + execute(runnable, userService.getLoggedOrSystem().getWorkspaceId()); + } + public void execute(final Runnable runnable, String workspaceId) { WorkspaceContextHolder.setWorkspaceId(workspaceId, true); async.execute(runnable); diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy index 8441c74c50b..c9eb6b2346d 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy @@ -614,7 +614,7 @@ class ActionDelegate { List searchCases(Closure predicates) { QCase qCase = new QCase("case") def expression = predicates(qCase) - Page page = workflowService.searchAll(new BooleanBuilder(expression).and(qCase.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId()))) + Page page = workflowService.searchAll(expression) return page.content.collect { it.stringId } } @@ -893,19 +893,19 @@ class ActionDelegate { List findCases(Closure predicate) { QCase qCase = new QCase("case") - Page result = workflowService.searchAll(new BooleanBuilder(predicate(qCase)).and(qCase.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId()))) + Page result = workflowService.searchAll(predicate(qCase)) return result.content } List findCases(Closure predicate, Pageable pageable) { QCase qCase = new QCase("case") - Page result = workflowService.search(new BooleanBuilder(predicate(qCase)).and(qCase.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId())), pageable) + Page result = workflowService.search(predicate(qCase), pageable) return result.content } Case findCase(Closure predicate) { QCase qCase = new QCase("case") - return workflowService.searchOne(new BooleanBuilder(predicate(qCase)).and(qCase.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId()))) + return workflowService.searchOne(predicate(qCase)) } Case createCase(String identifier, String title = null, String color = "", IUser author = userService.loggedOrSystem, Locale locale = LocaleContextHolder.getLocale(), Map params = [:]) { @@ -966,19 +966,19 @@ class ActionDelegate { List findTasks(Closure predicate) { QTask qTask = new QTask("task") - Page result = taskService.searchAll(new BooleanBuilder(predicate(qTask)).and(qTask.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId()))) + Page result = taskService.searchAll(predicate(qTask)) return result.content } List findTasks(Closure predicate, Pageable pageable) { QTask qTask = new QTask("task") - Page result = taskService.search(new BooleanBuilder(predicate(qTask)).and(qTask.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId())), pageable) + Page result = taskService.search(predicate(qTask), pageable) return result.content } Task findTask(Closure predicate) { QTask qTask = new QTask("task") - return taskService.searchOne(new BooleanBuilder(predicate(qTask)).and(qTask.workspaceId.eq(userService.loggedOrSystem.getWorkspaceId()))) + return taskService.searchOne(predicate(qTask)) } Task findTask(String mongoId) { @@ -1547,7 +1547,7 @@ class ActionDelegate { if (!createDefaultFilters) { return [] } - return findCases({ it.processIdentifier.eq(FilterRunner.FILTER_PETRI_NET_IDENTIFIER).and(it.author.id.eq(userService.system.stringId)).and(it.workspaceId.eq(userService.system.workspaceId)) }) + return findCases({ it.processIdentifier.eq(FilterRunner.FILTER_PETRI_NET_IDENTIFIER).and(it.author.id.eq(userService.system.stringId)) }) } /** diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/service/RegistrationService.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/service/RegistrationService.java index 9d56ca0ce0d..789d3bc33b3 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/service/RegistrationService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/auth/service/RegistrationService.java @@ -11,6 +11,8 @@ import com.netgrif.application.engine.configuration.properties.ServerAuthProperties; import com.netgrif.application.engine.auth.service.GroupService; import com.netgrif.application.engine.adapter.spring.petrinet.service.ProcessRoleService; +import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -45,6 +47,8 @@ public class RegistrationService implements IRegistrationService { private ServerAuthProperties serverAuthProperties; @Autowired private ProcessRoleService processRoleService; + @Autowired + private DefaultWorkspaceService defaultWorkspaceService; @Override @Transactional @@ -132,7 +136,12 @@ public User createNewUser(NewUserRequest newUser) { if (newUser.processRoles != null && !newUser.processRoles.isEmpty()) { user.setProcessRoles(new HashSet<>(processRole.findByIds(newUser.processRoles))); } - userService.addRole(user, processRoleService.getDefaultRole().getStringId()); + Set roles = user.getProcessRoles(); + defaultWorkspaceService.getAllWorkspaces().forEach(workspace -> + roles.add(processRoleService.defaultRole(workspace.getId())) + ); + user.setProcessRoles(roles); + user = (User) userService.saveUser(user, null); if (newUser.groups != null && !newUser.groups.isEmpty()) { diff --git a/application-engine/src/main/java/com/netgrif/application/engine/configuration/security/jwt/JwtService.java b/application-engine/src/main/java/com/netgrif/application/engine/configuration/security/jwt/JwtService.java index c808c707fb2..9a7cc079965 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/configuration/security/jwt/JwtService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/configuration/security/jwt/JwtService.java @@ -5,6 +5,7 @@ import com.netgrif.application.engine.objects.auth.domain.LoggedUser; import com.netgrif.application.engine.auth.service.AuthorityService; import com.netgrif.application.engine.adapter.spring.petrinet.service.ProcessRoleService; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import io.jsonwebtoken.Claims; import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.Jwts; @@ -33,6 +34,7 @@ public class JwtService implements IJwtService { private final JwtProperties properties; private final ProcessRoleService roleService; private final AuthorityService authorityService; + private final DefaultWorkspaceService defaultWorkspaceService; @PostConstruct private void resolveSecret() { @@ -81,6 +83,7 @@ public LoggedUser getLoggedUser(String token, String authority) { user.setFirstName(userMap.get("firstName").toString()); user.getAttributes().put("anonymous", new Attribute<>(true, false)); user.setProcessRoles(Collections.singleton(roleService.anonymousRole())); + user.setWorkspaceId(defaultWorkspaceService.getDefaultWorkspace().getId()); return user; } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/impersonation/service/ImpersonationAuthorizationService.java b/application-engine/src/main/java/com/netgrif/application/engine/impersonation/service/ImpersonationAuthorizationService.java index 344897081af..dbff49b14b2 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/impersonation/service/ImpersonationAuthorizationService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/impersonation/service/ImpersonationAuthorizationService.java @@ -12,6 +12,7 @@ import com.netgrif.application.engine.objects.petrinet.domain.dataset.UserFieldValue; import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole; import com.netgrif.application.engine.adapter.spring.petrinet.service.ProcessRoleService; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import com.netgrif.application.engine.utils.DateUtils; import com.netgrif.application.engine.objects.workflow.domain.Case; import com.netgrif.application.engine.objects.workflow.domain.DataField; @@ -51,6 +52,9 @@ public class ImpersonationAuthorizationService implements IImpersonationAuthoriz @Autowired protected ProcessRoleService processRoleService; + @Autowired + private DefaultWorkspaceService defaultWorkspaceService; + @Override public Page getConfiguredImpersonationUsers(String query, LoggedUser impersonator, Pageable pageable) { if (impersonator.isAdmin()) { @@ -104,7 +108,9 @@ public List getAuthorities(List configs, IUser impersonated) { @Override public List getRoles(List configs, IUser impersonated) { List impersonatedRoles = new ArrayList<>(); - impersonatedRoles.add(processRoleService.defaultRole()); + defaultWorkspaceService.getAllWorkspaces().forEach(workspace -> + impersonatedRoles.add(processRoleService.defaultRole(workspace.getId())) + ); if (configs.isEmpty()) { return impersonatedRoles; } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java index 122d711ccca..b62c7016683 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/importer/service/Importer.java @@ -154,8 +154,8 @@ protected void initialize(String workspaceId) { this.places = new HashMap<>(); this.fields = new HashMap<>(); this.transactions = new HashMap<>(); - this.defaultRole = processRoleService.defaultRole(); - this.anonymousRole = processRoleService.anonymousRole(); + this.defaultRole = processRoleService.defaultRole(workspaceId); + this.anonymousRole = processRoleService.anonymousRole(workspaceId); this.i18n = new HashMap<>(); this.actions = new HashMap<>(); this.actionRefs = new HashMap<>(); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java index 2e6b1ec7a4a..f3e7d7e3b81 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/PetriNetService.java @@ -287,12 +287,10 @@ public List importDefaultProcesses(String workspaceId) { } @Override - public void deleteDefaultProcesses(String workspaceId) { - for (org.springframework.core.io.Resource resource : defaultProcessResource.getDefaultProcesses()) { - List nets = repository.findAllByIdentifierAndWorkspaceId(resource.getFilename().split(".")[0], workspaceId); - nets.forEach(petriNet -> { - asyncRunner.execute(() -> deletePetriNet(petriNet.getStringId(), userService.getLoggedOrSystem().transformToLoggedUser()), workspaceId); - }); + public void deleteWorkspaceProcesses(String workspaceId) { + List nets = repository.findAllByWorkspaceId(workspaceId); + for (PetriNet net : nets) { + asyncRunner.execute(() -> deletePetriNet(net.getStringId(), userService.getLoggedOrSystem().transformToLoggedUser()), workspaceId); } } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java index 9e9891a577a..2d299f10bf9 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/ProcessRoleService.java @@ -200,16 +200,6 @@ protected String getProcessIdFromFirstRole(Set newRoles) { return newRoles.iterator().next().getProcessId(); } - @Override - public ProcessRole getDefaultRole() { - return processRoleRepository.findByImportId(ProcessRole.DEFAULT_ROLE); - } - - @Override - public ProcessRole getAnonymousRole() { - return processRoleRepository.findByImportId(ProcessRole.ANONYMOUS_ROLE); - } - @Override public Collection findAllByIds(Collection collection) { return processRoleRepository.findAllByCompositeId(collection.stream().map(ProcessResourceId::getStringId).collect(Collectors.toList())); @@ -348,7 +338,7 @@ private void removeOldAndAssignNewRolesToUser(IUser user, Set reque @Override public List findAll() { - return processRoleRepository.findAll(); + return findAllByWorkspaceId(userService.getLoggedOrSystem().getWorkspaceId()); } @Override @@ -375,8 +365,18 @@ private List findAll(PetriNet net) { @Override public ProcessRole defaultRole() { + return defaultRole(userService.getLoggedOrSystem().getWorkspaceId()); + } + + @Override + public ProcessRole anonymousRole() { + return anonymousRole(userService.getLoggedOrSystem().getWorkspaceId()); + } + + @Override + public ProcessRole defaultRole(String workspaceId) { if (defaultRole == null) { - Set roles = processRoleRepository.findAllByName_DefaultValueAndWorkspaceId(ProcessRole.DEFAULT_ROLE, userService.getLoggedOrSystem().getWorkspaceId()); + Set roles = processRoleRepository.findAllByImportIdAndWorkspaceId(ProcessRole.DEFAULT_ROLE, workspaceId); if (roles.isEmpty()) throw new IllegalStateException("No default process role has been found!"); if (roles.size() > 1) @@ -387,9 +387,9 @@ public ProcessRole defaultRole() { } @Override - public ProcessRole anonymousRole() { + public ProcessRole anonymousRole(String workspaceId) { if (anonymousRole == null) { - Set roles = processRoleRepository.findAllByImportIdAndWorkspaceId(ProcessRole.ANONYMOUS_ROLE, userService.getLoggedOrSystem().getWorkspaceId()); + Set roles = processRoleRepository.findAllByImportIdAndWorkspaceId(ProcessRole.ANONYMOUS_ROLE, workspaceId); if (roles.isEmpty()) throw new IllegalStateException("No anonymous process role has been found!"); if (roles.size() > 1) @@ -440,17 +440,6 @@ public void deleteDefaultOrAnonymousRole(PredefinedProcessRole predefinedRole, S this.processRoleRepository.deleteAllBy_idIn(roleToDelete); } - /** - * @param importId id from a process of a role - * @return a process role object - * @deprecated use {@link ProcessRoleService#findAllByImportId(String)} instead - */ - @Deprecated(forRemoval = true, since = "6.2.0") - @Override - public ProcessRole findByImportId(String importId) { - return processRoleRepository.findAllByImportIdAndWorkspaceId(importId, userService.getLoggedOrSystem().getWorkspaceId()).stream().findFirst().orElse(null); - } - @Override public Set findAllByImportId(String importId) { return processRoleRepository.findAllByImportIdAndWorkspaceId(importId, userService.getLoggedOrSystem().getWorkspaceId()); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java index 8d1ee34e2da..347189ebca2 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/petrinet/service/interfaces/IPetriNetService.java @@ -57,7 +57,7 @@ static DataFieldReference transformToReference(PetriNet net, Transition transiti List importDefaultProcesses(String workspaceId); - void deleteDefaultProcesses(String workspaceId); + void deleteWorkspaceProcesses(String workspaceId); Optional save(PetriNet petriNet); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/CaseRepository.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/CaseRepository.java index 1cfb5321999..b9875a6fa31 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/CaseRepository.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/CaseRepository.java @@ -25,10 +25,12 @@ public interface CaseRepository extends MongoRepository, QuerydslP List findAllByWorkspaceId(String workspaceId); + Page findAllByWorkspaceId(String workspaceId, Pageable pageable); + @Query("{ '_id.objectId': { $in: ?0 } }") List findAllByObjectIdsIn(List objectIds); - Page findAllByUriNodeId(String uri, Pageable pageable); + Page findAllByUriNodeIdAndWorkspaceId(String uri, String workspaceId, Pageable pageable); List findAllByPetriNetObjectId(ObjectId petriNetObjectId); diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/TaskRepository.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/TaskRepository.java index c3886f1db63..44d1378ecaa 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/TaskRepository.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/domain/repositories/TaskRepository.java @@ -3,6 +3,7 @@ import com.netgrif.application.engine.objects.workflow.domain.ProcessResourceId; import com.netgrif.application.engine.adapter.spring.workflow.domain.QTask; import com.netgrif.application.engine.objects.workflow.domain.Task; +import com.querydsl.core.types.Predicate; import org.bson.types.ObjectId; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java index fd4c22fa176..01d12a2ab99 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/TaskService.java @@ -37,6 +37,7 @@ import com.netgrif.application.engine.workflow.service.interfaces.IWorkflowService; import com.netgrif.application.engine.workflow.web.requestbodies.TaskSearchRequest; import com.netgrif.application.engine.workflow.web.responsebodies.TaskReference; +import com.querydsl.core.BooleanBuilder; import lombok.extern.slf4j.Slf4j; import org.bson.types.ObjectId; import org.springframework.beans.factory.annotation.Autowired; @@ -728,19 +729,22 @@ public Page findByTransitions(Pageable pageable, List transitions) @Override public Page searchAll(com.querydsl.core.types.Predicate predicate) { - Page tasks = taskRepository.findAll(predicate, new FullPageRequest()); + com.querydsl.core.types.Predicate expression = new BooleanBuilder(predicate).and(QTask.task.workspaceId.eq(userService.getLoggedOrSystem().getWorkspaceId())); + Page tasks = taskRepository.findAll(expression, new FullPageRequest()); return loadUsers(tasks); } @Override public Page search(com.querydsl.core.types.Predicate predicate, Pageable pageable) { - Page tasks = taskRepository.findAll(predicate, pageable); + com.querydsl.core.types.Predicate expression = new BooleanBuilder(predicate).and(QTask.task.workspaceId.eq(userService.getLoggedOrSystem().getWorkspaceId())); + Page tasks = taskRepository.findAll(expression, pageable); return loadUsers(tasks); } @Override public Task searchOne(com.querydsl.core.types.Predicate predicate) { - Page tasks = taskRepository.findAll(predicate, PageRequest.of(0, 1)); + com.querydsl.core.types.Predicate expression = new BooleanBuilder(predicate).and(QTask.task.workspaceId.eq(userService.getLoggedOrSystem().getWorkspaceId())); + Page tasks = taskRepository.findAll(expression, PageRequest.of(0, 1)); if (tasks.getTotalElements() > 0) return tasks.getContent().get(0); return null; @@ -843,8 +847,8 @@ private Task createFromTransition(Transition transition, Case useCase) { scheduleTaskExecution(task, timeTrigger.getStartDate(), useCase); } } - ProcessRole defaultRole = processRoleService.defaultRole(); - ProcessRole anonymousRole = processRoleService.anonymousRole(); + ProcessRole defaultRole = processRoleService.defaultRole(transition.getWorkspaceId()); + ProcessRole anonymousRole = processRoleService.anonymousRole(transition.getWorkspaceId()); for (Map.Entry> entry : transition.getRoles().entrySet()) { if (useCase.getEnabledRoles().contains(entry.getKey()) || defaultRole.getStringId().equals(entry.getKey()) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/WorkflowService.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/WorkflowService.java index 2c263fb0f48..a1e952635a2 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/WorkflowService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/service/WorkflowService.java @@ -34,6 +34,7 @@ import com.netgrif.application.engine.objects.workflow.service.InitValueExpressionEvaluator; import com.netgrif.application.engine.workflow.service.interfaces.ITaskService; import com.netgrif.application.engine.workflow.service.interfaces.IWorkflowService; +import com.querydsl.core.BooleanBuilder; import com.querydsl.core.types.Predicate; import org.bson.types.ObjectId; import org.slf4j.Logger; @@ -188,7 +189,7 @@ public List findAllById(List ids) { @Override public Page getAll(Pageable pageable) { - Page page = repository.findAll(pageable); + Page page = repository.findAllByWorkspaceId(userService.getLoggedOrSystem().getWorkspaceId(), pageable); page.getContent().forEach(this::setPetriNet); decryptDataSets(page.getContent()); return setImmediateDataFields(page); @@ -196,7 +197,7 @@ public Page getAll(Pageable pageable) { @Override public Page findAllByUri(String uri, Pageable pageable) { - Page page = repository.findAllByUriNodeId(uri, pageable); + Page page = repository.findAllByUriNodeIdAndWorkspaceId(uri, userService.getLoggedOrSystem().getWorkspaceId(), pageable); page.getContent().forEach(this::setPetriNet); decryptDataSets(page.getContent()); return setImmediateDataFields(page); @@ -204,7 +205,8 @@ public Page findAllByUri(String uri, Pageable pageable) { @Override public Page search(Predicate predicate, Pageable pageable) { - Page page = repository.findAll(predicate, pageable); + Predicate expression = new BooleanBuilder(predicate).and(QCase.case$.workspaceId.eq(userService.getLoggedOrSystem().getWorkspaceId())); + Page page = repository.findAll(expression, pageable); page.getContent().forEach(this::setPetriNet); return setImmediateDataFields(page); } diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/Workspace.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/Workspace.java index 078ce2d242b..3b063e6da36 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/Workspace.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/Workspace.java @@ -14,6 +14,10 @@ public class Workspace implements Serializable { private String id; + private String name; + + private String description; + private Author owner; private boolean defaultWorkspace; diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceRequest.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceRequest.java index dd56c65997b..123ff11031d 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceRequest.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/petrinet/domain/workspace/WorkspaceRequest.java @@ -1,5 +1,9 @@ package com.netgrif.application.engine.objects.petrinet.domain.workspace; -public record WorkspaceRequest(String workspaceId, boolean defaultWorkspace) { +public record WorkspaceRequest( + String workspaceId, + String name, + String description, + boolean defaultWorkspace) { } diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/service/ProcessRoleService.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/service/ProcessRoleService.java index baa9d95b4e5..2cc0e06fe6b 100644 --- a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/service/ProcessRoleService.java +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/petrinet/service/ProcessRoleService.java @@ -24,21 +24,20 @@ public interface ProcessRoleService { void assignNegativeRolesToUser(IUser user, Set roleIds, LoggedUser loggedUser); void assignNegativeRolesToUser(IUser user, Set roleIds, LoggedUser loggedUser, Map params); void assignNegativeRolesToGroup(Group group, Set requestedRolesIds); - ProcessRole getDefaultRole(); - ProcessRole getAnonymousRole(); Collection findAllByIds(Collection roleIds); ProcessRole findById(ProcessResourceId id); Collection findAllByDefaultName(String name); Set findAllByImportId(String importId); ProcessRole findById(String id); Set findByIds(Set ids); - ProcessRole findByImportId(String importId); List findAll(); List findAllByWorkspaceId(String workspaceId); Set findAllGlobalRoles(); List findAll(String netId); ProcessRole defaultRole(); ProcessRole anonymousRole(); + ProcessRole defaultRole(String workspaceId); + ProcessRole anonymousRole(String workspaceId); ProcessRole createDefaultOrAnonymousRole(PredefinedProcessRole role, String workspaceId); void deleteDefaultOrAnonymousRole(PredefinedProcessRole role, String workspaceId); void deleteRolesOfNet(PetriNet net, LoggedUser loggedUser); diff --git a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserFactoryImpl.java b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserFactoryImpl.java index 4ef71c48730..da0adf421ce 100644 --- a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserFactoryImpl.java +++ b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserFactoryImpl.java @@ -4,8 +4,11 @@ import com.netgrif.application.engine.adapter.spring.petrinet.web.responsebodies.ProcessRole; import com.netgrif.application.engine.auth.web.responsebodies.User; import com.netgrif.application.engine.objects.auth.domain.IUser; +import com.netgrif.application.engine.objects.petrinet.domain.workspace.DefaultWorkspaceService; import org.springframework.beans.factory.annotation.Autowired; +import java.util.ArrayList; +import java.util.List; import java.util.Locale; import java.util.stream.Collectors; @@ -17,17 +20,22 @@ public class UserFactoryImpl implements UserFactory { @Autowired private ProcessRoleFactory processRoleFactory; + @Autowired + private DefaultWorkspaceService defaultWorkspaceService; + @Override public User getUser(IUser user, Locale locale) { User result = getUser(user); - String defaultRoleId = processRoleService.defaultRole().getStringId(); - String anonymousRoleId = processRoleService.anonymousRole().getStringId(); + List defaultRolesId = new ArrayList<>(); + List anonymousRolesId = new ArrayList<>(); + defaultWorkspaceService.getAllWorkspaces().forEach(workspace -> { + defaultRolesId.add(processRoleService.defaultRole(workspace.getId()).getStringId()); + anonymousRolesId.add(processRoleService.anonymousRole(workspace.getId()).getStringId()); + }); + result.setProcessRoles(user.getProcessRoles().stream().map(processRole -> { - if (processRole.getStringId().equals(defaultRoleId)) { - return new ProcessRole(processRole, locale); - } - if (processRole.getStringId().equals(anonymousRoleId)) { + if (defaultRolesId.contains(processRole.getStringId()) || anonymousRolesId.contains(processRole.getStringId())) { return new ProcessRole(processRole, locale); } return processRoleFactory.getProcessRole(processRole, locale); diff --git a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java index 74f70994004..541667dfc29 100644 --- a/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java +++ b/nae-user-ce/src/main/java/com/netgrif/application/engine/auth/service/UserServiceImpl.java @@ -169,7 +169,7 @@ public IUser createUser(String username, String email, String firstName, String public IUser createUser(IUser user, String realmId) { log.info("Creating user [{}] in realm [{}]", user.getUsername(), realmId); addDefaultAuthorities(user); - addDefaultRole(user); + addDefaultRoles(user); ((User) user).addAuthMethod("basic"); setPassword(((User) user), ((User) user).getPassword()); @@ -195,7 +195,7 @@ public User createUserFromThirdParty(String username, String email, String first log.info("Creating user [{}] from third-party auth [{}] in realm [{}] without password", username, authMethod, realmId); User user = initializeNewUser(username, email, firstName, lastName, realmId); addDefaultAuthorities(user); - addDefaultRole(user); + addDefaultRoles(user); setDisablePassword(user); user.addAuthMethod(authMethod); String collectionName = collectionNameProvider.getCollectionNameForRealm(realmId); @@ -230,11 +230,17 @@ public void addDefaultAuthorities(IUser user) { } @Override - public void addDefaultRole(IUser user) { - log.trace("Assigning default role to user [{}]", user.getUsername()); - user.addProcessRole(processRoleService.defaultRole()); + public void addDefaultRoles(IUser user) { + log.trace("Assigning default roles to user [{}]", user.getUsername()); + Set roles = user.getProcessRoles(); + defaultWorkspaceService.getAllWorkspaces().forEach(workspace -> + roles.add(processRoleService.defaultRole(workspace.getId())) + ); + user.setProcessRoles(roles); } + + @Override public void addAnonymousAuthorities(IUser user) { log.trace("Assigning anonymous authorities to user [{}]", user.getUsername()); @@ -261,9 +267,13 @@ public void addAllRolesToAdminByUsername(String username) { } @Override - public void addAnonymousRole(IUser user) { - log.trace("Assigning anonymous role to user [{}]", user.getUsername()); - user.addProcessRole(processRoleService.anonymousRole()); + public void addAnonymousRoles(IUser user) { + log.trace("Assigning anonymous roles to user [{}]", user.getUsername()); + Set roles = user.getProcessRoles(); + defaultWorkspaceService.getAllWorkspaces().forEach(workspace -> + roles.add(processRoleService.anonymousRole(workspace.getId())) + ); + user.setProcessRoles(roles); } @Override diff --git a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/service/UserService.java b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/service/UserService.java index 5a8509f4d06..77c12ab21b3 100644 --- a/nae-user-common/src/main/java/com/netgrif/application/engine/auth/service/UserService.java +++ b/nae-user-common/src/main/java/com/netgrif/application/engine/auth/service/UserService.java @@ -38,13 +38,13 @@ public interface UserService { IUser createUserFromThirdParty(String username, String email, String firstName, String lastName, String realmId, String authMethod); - void addDefaultRole(IUser user); + void addDefaultRoles(IUser user); void addAnonymousAuthorities(IUser user); void addAllRolesToAdminByUsername(String username); - void addAnonymousRole(IUser user); + void addAnonymousRoles(IUser user); IUser findById(String id, String realmId);