Skip to content

Commit da1c6ad

Browse files
authored
Merge pull request #357 from netgrif/NAE-2202
[NAE-2202] Post test fixes
2 parents cb03c1f + fc14a7a commit da1c6ad

5 files changed

Lines changed: 61 additions & 21 deletions

File tree

application-engine/src/main/java/com/netgrif/application/engine/menu/services/MenuItemService.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.netgrif.application.engine.workflow.service.interfaces.IDataService;
2929
import com.netgrif.application.engine.workflow.service.interfaces.ITaskService;
3030
import com.netgrif.application.engine.workflow.service.interfaces.IWorkflowService;
31+
import com.querydsl.core.types.Predicate;
3132
import lombok.RequiredArgsConstructor;
3233
import lombok.extern.slf4j.Slf4j;
3334
import org.springframework.data.domain.Page;
@@ -194,9 +195,9 @@ public Case findMenuItem(String identifier) {
194195

195196
@Override
196197
public Case findMenuItem(String identifier, boolean retry) {
197-
String query = String.format("processIdentifier:%s AND dataSet.%s.textValue.keyword:\"%s\"",
198-
MenuProcessRunner.MENU_NET_IDENTIFIER, MenuItemConstants.FIELD_IDENTIFIER, identifier);
199-
return findCase(MenuProcessRunner.MENU_NET_IDENTIFIER, query);
198+
return findCase(QCase.case$.processIdentifier
199+
.eq(MenuProcessRunner.MENU_NET_IDENTIFIER)
200+
.and(QCase.case$.dataSet.get(MenuItemConstants.FIELD_IDENTIFIER).value.eq(identifier)));
200201
}
201202

202203
/**
@@ -208,10 +209,10 @@ public Case findMenuItem(String identifier, boolean retry) {
208209
*/
209210
@Override
210211
public Case findMenuItem(String path, String name) {
211-
// TODO retry
212-
String query = String.format("processIdentifier:%s AND title.keyword:\"%s\" AND nodePath:\"%s\"",
213-
MenuProcessRunner.MENU_NET_IDENTIFIER, name, path);
214-
return findCase(MenuProcessRunner.MENU_NET_IDENTIFIER, query);
212+
return findCase(QCase.case$.processIdentifier
213+
.eq(MenuProcessRunner.MENU_NET_IDENTIFIER)
214+
.and(QCase.case$.title.eq(name))
215+
.and(QCase.case$.dataSet.get(MenuItemConstants.FIELD_NODE_PATH).value.eq(path)));
215216
}
216217

217218
/**
@@ -223,9 +224,9 @@ public Case findMenuItem(String path, String name) {
223224
@Override
224225
public Case findFolderCase(String path) {
225226
// TODO
226-
String query = String.format("processIdentifier:%s AND dataSet.%s.textValue.keyword:\"%s\"",
227-
MenuProcessRunner.MENU_NET_IDENTIFIER, MenuItemConstants.FIELD_NODE_PATH, path);
228-
return findCase(MenuProcessRunner.MENU_NET_IDENTIFIER, query);
227+
return findCase(QCase.case$.processIdentifier
228+
.eq(MenuProcessRunner.MENU_NET_IDENTIFIER)
229+
.and(QCase.case$.dataSet.get(MenuItemConstants.FIELD_NODE_PATH).value.eq(path)));
229230
}
230231

231232
/**
@@ -384,6 +385,10 @@ public Case removeChildItemFromParent(String folderId, Case childItem) {
384385
return workflowService.save(parentFolder);
385386
}
386387

388+
protected Case findCase(Predicate predicate) {
389+
return workflowService.searchOne(predicate);
390+
}
391+
387392
protected Case findCase(String processIdentifier, String query) {
388393
CaseSearchRequest request = CaseSearchRequest.builder()
389394
.process(Collections.singletonList(new CaseSearchRequest.PetriNet(processIdentifier)))

application-engine/src/main/java/com/netgrif/application/engine/workflow/service/CaseEventHandler.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
package com.netgrif.application.engine.workflow.service;
22

33
import com.netgrif.application.engine.elastic.service.interfaces.IElasticCaseService;
4+
import com.netgrif.application.engine.importer.service.FieldFactory;
5+
import com.netgrif.application.engine.objects.petrinet.domain.dataset.Field;
46
import com.netgrif.application.engine.objects.workflow.domain.Case;
7+
import com.netgrif.application.engine.workflow.service.interfaces.IWorkflowService;
58
import org.bson.Document;
6-
import org.bson.types.ObjectId;
79
import org.slf4j.Logger;
810
import org.slf4j.LoggerFactory;
911
import org.springframework.beans.factory.annotation.Autowired;
1012
import org.springframework.data.mongodb.core.mapping.event.AbstractMongoEventListener;
13+
import org.springframework.data.mongodb.core.mapping.event.AfterConvertEvent;
1114
import org.springframework.data.mongodb.core.mapping.event.AfterDeleteEvent;
1215
import org.springframework.stereotype.Component;
1316

17+
import java.util.ArrayList;
18+
import java.util.List;
19+
1420
@Component
1521
public class CaseEventHandler extends AbstractMongoEventListener<Case> {
1622

@@ -19,6 +25,30 @@ public class CaseEventHandler extends AbstractMongoEventListener<Case> {
1925
@Autowired
2026
private IElasticCaseService service;
2127

28+
@Autowired
29+
private FieldFactory fieldFactory;
30+
31+
@Autowired
32+
private IWorkflowService workflowService;
33+
34+
@Override
35+
public void onAfterConvert(AfterConvertEvent<Case> event) {
36+
Case useCase = event.getSource();
37+
workflowService.setPetriNet(useCase);
38+
List<Field<?>> immediateFields = new ArrayList<>();
39+
if (useCase.getImmediateDataFields() != null) {
40+
useCase.getImmediateDataFields().forEach(fieldId -> {
41+
try {
42+
immediateFields.add(fieldFactory.buildImmediateField(useCase, fieldId));
43+
} catch (Exception e) {
44+
log.error("Could not build immediate field for case {} and field {}", useCase.getStringId(), fieldId, e);
45+
}
46+
}
47+
);
48+
useCase.setImmediateData(immediateFields);
49+
}
50+
}
51+
2252
@Override
2353
public void onAfterDelete(AfterDeleteEvent<Case> event) {
2454
Document document = event.getDocument();

application-engine/src/main/java/com/netgrif/application/engine/workflow/service/WorkflowService.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,17 @@ public Map<String, I18nString> listToMap(List<Case> cases) {
497497
return options;
498498
}
499499

500+
@Override
501+
public void setPetriNet(Case useCase) {
502+
PetriNet model = useCase.getPetriNet();
503+
if (model == null) {
504+
model = new com.netgrif.application.engine.adapter.spring.petrinet.domain.PetriNet((com.netgrif.application.engine.adapter.spring.petrinet.domain.PetriNet) petriNetService.get(new ObjectId(useCase.getPetriNetId())));
505+
useCase.setPetriNet(model);
506+
}
507+
model.initializeTokens(useCase.getActivePlaces());
508+
model.initializeArcs(useCase.getDataSet());
509+
}
510+
500511
private void resolveTaskRefs(Case useCase) {
501512
useCase.getPetriNet().getDataSet().values().stream().filter(f -> f instanceof TaskField).map(TaskField.class::cast).forEach(field -> {
502513
if (field.getDefaultValue() != null && !field.getDefaultValue().isEmpty() && useCase.getDataField(field.getStringId()).getValue() != null &&
@@ -608,16 +619,6 @@ private Map<DataField, String> getEncryptedDataSet(Case useCase) {
608619
return encryptedDataSet;
609620
}
610621

611-
private void setPetriNet(Case useCase) {
612-
PetriNet model = useCase.getPetriNet();
613-
if (model == null) {
614-
model = new com.netgrif.application.engine.adapter.spring.petrinet.domain.PetriNet((com.netgrif.application.engine.adapter.spring.petrinet.domain.PetriNet) petriNetService.get(new ObjectId(useCase.getPetriNetId())));
615-
useCase.setPetriNet(model);
616-
}
617-
model.initializeTokens(useCase.getActivePlaces());
618-
model.initializeArcs(useCase.getDataSet());
619-
}
620-
621622
private EventOutcome addMessageToOutcome(PetriNet net, CaseEventType type, EventOutcome outcome) {
622623
if (net.getCaseEvents().containsKey(type)) {
623624
outcome.setMessage(net.getCaseEvents().get(type).getMessage());

application-engine/src/main/java/com/netgrif/application/engine/workflow/service/interfaces/IWorkflowService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,6 @@ public interface IWorkflowService {
8282
boolean removeTasksFromCase(List<Task> tasks, Case useCase);
8383

8484
Page<Case> search(Predicate predicate, Pageable pageable);
85+
86+
void setPetriNet(Case useCase);
8587
}

nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/workflow/domain/Case.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ public Set<String> getEnabledRoles() {
6464
return super.getEnabledRoles();
6565
}
6666

67+
6768
@Override
69+
@Transient
6870
public List<Field<?>> getImmediateData() {
6971
return super.getImmediateData();
7072
}

0 commit comments

Comments
 (0)