1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.admincentral.findbar.operation;
35
36 import static info.magnolia.periscope.operation.OperationResult.successfulResult;
37
38 import info.magnolia.admincentral.findbar.PeriscopeAppDetailCreator;
39 import info.magnolia.admincentral.findbar.PeriscopeAppDetailCreator.AppDetail;
40 import info.magnolia.periscope.operation.Operation;
41 import info.magnolia.periscope.operation.OperationResult;
42 import info.magnolia.periscope.operation.request.InternalNavigationRequest;
43 import info.magnolia.ui.api.ioc.AdmincentralScoped;
44 import info.magnolia.ui.api.location.LocationController;
45 import info.magnolia.ui.contentapp.detail.DetailLocation;
46 import info.magnolia.ui.contentapp.detail.DetailView;
47
48 import java.util.Optional;
49
50 import javax.inject.Inject;
51
52 import org.apache.commons.lang3.StringUtils;
53
54
55
56
57 @AdmincentralScoped
58 public class InternalNavigationOperation implements Operation<InternalNavigationRequest> {
59
60 private final LocationController locationController;
61 private final PeriscopeAppDetailCreator periscopeAppDetailCreator;
62
63 @Inject
64 public InternalNavigationOperation(LocationController locationController, PeriscopeAppDetailCreator periscopeAppDetailCreator) {
65 this.locationController = locationController;
66 this.periscopeAppDetailCreator = periscopeAppDetailCreator;
67 }
68
69 @Override
70 public OperationResult execute(InternalNavigationRequest request) {
71 Optional<AppDetail> appDetailOptional = periscopeAppDetailCreator.createAppDetailForWorkspace(request.getWorkspace());
72
73 if (!appDetailOptional.isPresent()) {
74 return new OperationResult(false, String.format("App configuration cannot be found for workspace: '%s'.", request.getWorkspace()));
75 }
76
77
78 if (StringUtils.isNotBlank(request.getAppName())) {
79 DetailLocation location = new DetailLocation(request.getAppName(), appDetailOptional.get().getSubAppName(), DetailView.ViewType.EDIT, request.getPath(), null);
80 locationController.goTo(location);
81 return successfulResult();
82 }
83
84
85 AppDetail appDetail = appDetailOptional.get();
86 DetailLocation location = new DetailLocation(appDetail.getAppName(), appDetail.getSubAppName(), DetailView.ViewType.EDIT, request.getPath(), null);
87
88
89 locationController.goTo(location);
90 return successfulResult();
91 }
92 }