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.module.blossom.dialog;
35
36 import info.magnolia.config.registry.DefinitionMetadata;
37 import info.magnolia.config.registry.DefinitionMetadataBuilder;
38 import info.magnolia.config.registry.DefinitionProvider;
39 import info.magnolia.config.registry.DefinitionRawView;
40 import info.magnolia.config.registry.Registry;
41 import info.magnolia.config.registry.decoration.DefinitionDecorator;
42 import info.magnolia.config.source.ConfigurationSourceTypes;
43 import info.magnolia.module.blossom.BlossomModule;
44 import info.magnolia.module.blossom.support.ExplicitIdDefinitionMetadataBuilder;
45 import info.magnolia.objectfactory.Components;
46 import info.magnolia.ui.dialog.DefinitionTypes;
47 import info.magnolia.ui.dialog.DialogDefinition;
48 import info.magnolia.ui.dialog.definition.ConfiguredFormDialogDefinition;
49 import info.magnolia.ui.form.definition.ConfiguredFormDefinition;
50
51 import java.util.Collections;
52 import java.util.List;
53
54
55
56
57
58
59 public class BlossomDialogDefinitionProvider implements DefinitionProvider<DialogDefinition> {
60 private BlossomDialogDescription dialogDescription;
61
62 public BlossomDialogDefinitionProvider(BlossomDialogDescription dialogDescription) {
63 this.dialogDescription = dialogDescription;
64 }
65
66 @Override
67 public List<DefinitionDecorator<DialogDefinition>> getDecorators() {
68 return Collections.EMPTY_LIST;
69 }
70
71 @Override
72 public DefinitionMetadata getMetadata() {
73 DefinitionMetadataBuilder builder = new ExplicitIdDefinitionMetadataBuilder(dialogDescription.getId())
74 .type(DefinitionTypes.DIALOG)
75 .configurationSourceType(ConfigurationSourceTypes.code);
76 DialogFactoryMetaData factoryMetaData = dialogDescription.getFactoryMetaData();
77 if (factoryMetaData != null) {
78 if (factoryMetaData.getFactoryMethod() != null) {
79 builder.location(factoryMetaData.getFactoryObject().getClass().getName() + "." + factoryMetaData.getFactoryMethod().getName());
80 } else {
81 builder.location(factoryMetaData.getFactoryObject().getClass().getName());
82 }
83 }
84 return builder.build();
85 }
86
87 @Override
88 public DefinitionRawView getRaw() {
89 return DefinitionRawView.EMPTY;
90 }
91
92 @Override
93 public boolean isValid() {
94 return true;
95 }
96
97 @Override
98 public List<String> getErrorMessages() {
99 return Collections.emptyList();
100 }
101
102 @Override
103 public long getLastModified() {
104 return System.currentTimeMillis();
105 }
106
107 @Override
108 public DialogDefinition get() throws Registry.InvalidDefinitionException {
109
110 ConfiguredFormDialogDefinition dialog = new ConfiguredFormDialogDefinition();
111 dialog.setId(dialogDescription.getId());
112 dialog.setLabel(dialogDescription.getFactoryMetaData().getLabel());
113 dialog.setI18nBasename(dialogDescription.getFactoryMetaData().getI18nBasename());
114 dialog.setPresenterClass(Components.getComponent(BlossomModule.class).getFormDialogPresenterClass());
115 dialog.setForm(new ConfiguredFormDefinition());
116
117 return dialog;
118 }
119 }