1. Project Clover database Fri Apr 29 2016 13:24:33 CEST
  2. Package info.magnolia.module.blossom.dialog

File BlossomDialogDefinitionProvider.java

 

Coverage histogram

../../../../../img/srcFileCovDistChart9.png
31% of files have more coverage

Code metrics

10
38
3
1
148
88
9
0.24
12.67
3
3
10.5% of code in this file is excluded from these metrics.

Classes

Class Line # Actions
BlossomDialogDefinitionProvider 60 38 10.5% 9 8
0.8431372684.3%
 

Contributing tests

This file is covered by 11 tests. .

Source view

1    /**
2    * This file Copyright (c) 2013-2016 Magnolia International
3    * Ltd. (http://www.magnolia-cms.com). All rights reserved.
4    *
5    *
6    * This file is dual-licensed under both the Magnolia
7    * Network Agreement and the GNU General Public License.
8    * You may elect to use one or the other of these licenses.
9    *
10    * This file is distributed in the hope that it will be
11    * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
12    * implied warranty of MERCHANTABILITY or FITNESS FOR A
13    * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
14    * Redistribution, except as permitted by whichever of the GPL
15    * or MNA you select, is prohibited.
16    *
17    * 1. For the GPL license (GPL), you can redistribute and/or
18    * modify this file under the terms of the GNU General
19    * Public License, Version 3, as published by the Free Software
20    * Foundation. You should have received a copy of the GNU
21    * General Public License, Version 3 along with this program;
22    * if not, write to the Free Software Foundation, Inc., 51
23    * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24    *
25    * 2. For the Magnolia Network Agreement (MNA), this file
26    * and the accompanying materials are made available under the
27    * terms of the MNA which accompanies this distribution, and
28    * is available at http://www.magnolia-cms.com/mna.html
29    *
30    * Any modifications to this file must keep this entire header
31    * intact.
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.module.blossom.support.ExplicitIdDefinitionMetadataBuilder;
42    import info.magnolia.ui.admincentral.dialog.action.CancelDialogActionDefinition;
43    import info.magnolia.ui.admincentral.dialog.action.SaveDialogActionDefinition;
44    import info.magnolia.ui.dialog.definition.ConfiguredFormDialogDefinition;
45    import info.magnolia.ui.dialog.definition.DialogDefinition;
46    import info.magnolia.ui.dialog.registry.DefinitionTypes;
47    import info.magnolia.ui.form.definition.ConfiguredFormDefinition;
48   
49    import java.util.Collections;
50    import java.util.List;
51   
52    import org.slf4j.Logger;
53    import org.slf4j.LoggerFactory;
54   
55    /**
56    * Provides blossom dialogs by invoking methods on the factory object.
57    *
58    * @since 3.0
59    */
 
60    public class BlossomDialogDefinitionProvider implements DefinitionProvider<DialogDefinition> {
61   
62    private final Logger logger = LoggerFactory.getLogger(getClass());
63   
64    private BlossomDialogDescription dialogDescription;
65   
 
66  16 toggle public BlossomDialogDefinitionProvider(BlossomDialogDescription dialogDescription) {
67  16 this.dialogDescription = dialogDescription;
68    }
69   
 
70  28 toggle @Override
71    public DefinitionMetadata getMetadata() {
72  28 DefinitionMetadataBuilder builder = new ExplicitIdDefinitionMetadataBuilder(dialogDescription.getId()).type(DefinitionTypes.DIALOG);
73  28 DialogFactoryMetaData factoryMetaData = dialogDescription.getFactoryMetaData();
74  28 if (factoryMetaData != null) {
75  26 if (factoryMetaData.getFactoryMethod() != null) {
76  5 builder.location(factoryMetaData.getFactoryObject().getClass().getName() + "." + factoryMetaData.getFactoryMethod().getName());
77    } else {
78  21 builder.location(factoryMetaData.getFactoryObject().getClass().getName());
79    }
80    }
81  28 return builder.build();
82    }
83   
 
84    toggle @Override
85    public DefinitionRawView getRaw() {
86    return DefinitionRawView.EMPTY;
87    }
88   
 
89    toggle @Override
90    public boolean isValid() {
91    return true;
92    }
93   
 
94    toggle @Override
95    public List<String> getErrorMessages() {
96    return Collections.emptyList();
97    }
98   
 
99  7 toggle @Override
100    public DialogDefinition get() throws Registry.InvalidDefinitionException {
101   
102  7 DialogCreationContext context = DialogCreationContextHolder.get();
103  7 if (context == null) {
104   
105  1 ConfiguredFormDialogDefinition dialog = new ConfiguredFormDialogDefinition();
106  1 dialog.setId(dialogDescription.getId());
107  1 dialog.setLabel(dialogDescription.getFactoryMetaData().getLabel());
108  1 dialog.setI18nBasename(dialogDescription.getFactoryMetaData().getI18nBasename());
109  1 dialog.setPresenterClass(BlossomFormDialogPresenter.class);
110  1 dialog.setForm(new ConfiguredFormDefinition());
111   
112  1 return dialog;
113    }
114   
115  6 context.setId(dialogDescription.getId());
116   
117  6 DialogCreator dialogCreator = dialogDescription.getDialogCreator();
118  6 DialogFactoryMetaData factoryMetaData = dialogDescription.getFactoryMetaData();
119  6 try {
120  6 dialogCreator.createDialog(factoryMetaData, context);
121    } catch (Exception e) {
122  0 if (factoryMetaData.getFactoryMethod() != null) {
123  0 logger.error("Failed to create dialog for method [" + factoryMetaData.getFactoryMethod() + "]", e);
124  0 throw new Registry.InvalidDefinitionException(dialogDescription.getId());
125    } else {
126  0 logger.error("Failed to create dialog for class [" + factoryMetaData.getFactoryObject().getClass() + "]", e);
127  0 throw new Registry.InvalidDefinitionException(dialogDescription.getId());
128    }
129    }
130   
131  6 ConfiguredFormDialogDefinition dialog = context.getDialog();
132   
133  6 if (dialog.getActions().isEmpty()) {
134   
135  6 SaveDialogActionDefinition callbackAction = new SaveDialogActionDefinition();
136  6 callbackAction.setName("commit");
137  6 callbackAction.setLabel("save");
138  6 dialog.getActions().put(callbackAction.getName(), callbackAction);
139   
140  6 CancelDialogActionDefinition cancelAction = new CancelDialogActionDefinition();
141  6 cancelAction.setName("cancel");
142  6 cancelAction.setLabel("cancel");
143  6 dialog.getActions().put(cancelAction.getName(), cancelAction);
144    }
145   
146  6 return dialog;
147    }
148    }