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 fr.paris.lutece.plugins.pluginwizard.service.generator;
35
36 import fr.paris.lutece.plugins.pluginwizard.business.model.Application;
37 import fr.paris.lutece.plugins.pluginwizard.business.model.BusinessClass;
38 import fr.paris.lutece.plugins.pluginwizard.business.model.PluginModel;
39 import fr.paris.lutece.plugins.pluginwizard.service.ModelService;
40 import fr.paris.lutece.plugins.pluginwizard.util.Utils;
41 import fr.paris.lutece.portal.service.template.AppTemplateService;
42 import fr.paris.lutece.util.html.HtmlTemplate;
43
44 import java.util.Collection;
45 import java.util.HashMap;
46 import java.util.Locale;
47 import java.util.Map;
48
49
50
51
52
53
54 public class XPageTemplateGenerator extends AbstractGenerator
55 {
56 private static final String PATH = "webapp/WEB-INF/templates/skin/plugins/{plugin_name}/";
57 private static String [ ] _template_prefix = {
58 "create_", "modify_", "manage_"
59 };
60 private String _strTabsTemplate;
61
62
63
64
65
66
67 @Override
68 public Map generate( PluginModel pm, String generationSchemeName )
69 {
70 HashMap map = new HashMap( );
71 String strPluginName = pm.getPluginNameAsPackage( );
72
73
74 Collection<Application> listApplication = pm.getApplications( );
75
76 for ( Application application : listApplication )
77 {
78 Collection<BusinessClass> listBusinessClasses = ModelService.getBusinessClassesByApplication( pm, application.getId( ) );
79
80 if ( listBusinessClasses.isEmpty( ) )
81 {
82 String strPath = getFilePath( pm, PATH, application.getApplicationName( ) + ".html" );
83 String strSourceCode = getCreateHtmlCode( application, strPluginName );
84 map.put( strPath, strSourceCode );
85 }
86 else
87 {
88 for ( BusinessClass businessClass : listBusinessClasses )
89 {
90 for ( int i = 0; i < _template_prefix.length; i++ )
91 {
92 String strSuffix = ( i == 2 ) ? "s.html" : ".html";
93 String strPath = getFilePath( pm, PATH, _template_prefix [i] + businessClass.getBusinessClass( ).toLowerCase( ) + strSuffix );
94
95 String strSourceCode = getCreateHtmlCode( listBusinessClasses, application, businessClass, i, strPluginName );
96 map.put( strPath, strSourceCode );
97 }
98 }
99
100
101 String strPath = getFilePath( pm, PATH, application.getApplicationName( ).toLowerCase( ) + "_tabs.html" );
102
103 String strSourceCode = getTabsHtmlCode( listBusinessClasses, strPluginName, application );
104 map.put( strPath, strSourceCode );
105 }
106 }
107
108 return map;
109 }
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126 private String getCreateHtmlCode( Collection<BusinessClass> listAllBusinessClasses, Application application, BusinessClass businessClass, int nTemplateType,
127 String strPluginName )
128 {
129 Map<String, Object> model = new HashMap<>( );
130
131 model.put( Markers.MARK_PLUGIN_NAME, strPluginName );
132 model.put( Markers.MARK_I18N_BRACKETS_OPEN, "@@i18n{" );
133 model.put( Markers.MARK_I18N_BRACKETS_CLOSE, "}" );
134 model.put( Markers.MARK_MACRO, "@" );
135 model.put( Markers.MARK_VARIABLE, "@@" );
136 model.put( Markers.MARK_BRACKETS_OPEN, "${" );
137 model.put( Markers.MARK_BRACKETS_CLOSE, "}" );
138 model.put( Markers.MARK_BUSINESS_CLASS, businessClass );
139 model.put( Markers.MARK_LIST_BUSINESS_CLASSES, listAllBusinessClasses );
140 model.put( Markers.MARK_APPLICATION, application );
141 model.put( Markers.MARK_INCLUDE, "@@include" );
142
143 model.put( Markers.MARK_TEMPLATE_TYPE, nTemplateType );
144
145 HtmlTemplate template = AppTemplateService.getTemplate( getTemplate( ), Locale.getDefault( ), model );
146
147 return template.getHtml( ).replace( "@@", "#" );
148 }
149
150
151
152
153
154
155
156
157
158
159
160
161 private String getTabsHtmlCode( Collection<BusinessClass> listAllBusinessClasses, String strPluginName, Application application )
162 {
163 Map<String, Object> model = new HashMap<>( );
164
165 model.put( Markers.MARK_PLUGIN_NAME, strPluginName );
166 model.put( Markers.MARK_APPLICATION, application );
167 model.put( Markers.MARK_I18N_BRACKETS_OPEN, "@@i18n{" );
168 model.put( Markers.MARK_I18N_BRACKETS_CLOSE, "}" );
169 model.put( Markers.MARK_MACRO, "@" );
170 model.put( Markers.MARK_VARIABLE, "@@" );
171 model.put( Markers.MARK_BRACKETS_OPEN, "${" );
172 model.put( Markers.MARK_BRACKETS_CLOSE, "}" );
173 model.put( Markers.MARK_MACRO_DEF, "@@macro" );
174 model.put( Markers.MARK_LIST_BUSINESS_CLASSES, listAllBusinessClasses );
175
176 HtmlTemplate template = AppTemplateService.getTemplate( _strTabsTemplate, Locale.getDefault( ), model );
177
178 return template.getHtml( ).replace( "@@", "#" );
179 }
180
181
182
183
184
185
186
187
188
189
190 private String getCreateHtmlCode( Application application, String strPluginName )
191 {
192 Map<String, Object> model = new HashMap<>( );
193
194 model.put( Markers.MARK_PLUGIN_NAME, strPluginName );
195 model.put( Markers.MARK_I18N_BRACKETS_OPEN, "@@i18n{" );
196 model.put( Markers.MARK_I18N_BRACKETS_CLOSE, "}" );
197 model.put( Markers.MARK_MACRO, "@" );
198 model.put( Markers.MARK_VARIABLE, "@@" );
199 model.put( Markers.MARK_BRACKETS_OPEN, "${" );
200 model.put( Markers.MARK_BRACKETS_CLOSE, "}" );
201 model.put( Markers.MARK_APPLICATION, application );
202 model.put( Markers.MARK_INCLUDE, "@@include" );
203
204 HtmlTemplate template = AppTemplateService.getTemplate( getTemplate( ), Locale.getDefault( ), model );
205
206 return template.getHtml( ).replace( "@@", "#" );
207 }
208
209
210
211
212
213 public void setTabsTemplate( String tabsTemplate )
214 {
215 _strTabsTemplate = tabsTemplate;
216 }
217 }