... |
... |
@@ -91,40
+91,71 @@ |
91 |
91 |
== Zugriff auf Bundle-Properties innerhalb der Plugin-Logik == |
92 |
92 |
|
93 |
93 |
Der Zugriff auf die Bundle-Properties innerhalb von einzelnen Plugin-Implementierungen wird über die Schnittstelle //IFCPlugin// und deren bereitgestellte Plugin-Lebenszyklus-Methoden ermöglicht. |
94 |
|
-Alle [[Plugin-Typen>>doc:Formcycle.PluginDevelopment.Types]] erben von dieser Schnittstelle, sodass damit in allen Plugin-Implementierungen ein Zugriff auf die Bundle-Properties möglich ist. |
|
94 |
+Alle [[Plugin-Typen>>doc:Formcycle.PluginDevelopment.Types.WebHome]] erben von dieser Schnittstelle, sodass damit in allen Plugin-Implementierungen ein Zugriff auf die Bundle-Properties möglich ist. |
95 |
95 |
|
96 |
96 |
== Beispiele zur Auslesen von Bundle-Properties == |
97 |
97 |
|
98 |
|
-Ausschnitt aus der //execute//-Methode einer //IPluginFormPreRender//-Implementierung. Ein PreRender-Plugin wird standardmäßig bei allen Formularaufrufen im Scope des Mandanten, in dem er registriert wurde, ausgeführt. |
|
98 |
+Das nachfolgende Beispiel zeigt den Zugriff auf die Bundle-Properties innerhalb einer //IPluginFormPreRender//-Implementierung. |
99 |
99 |
|
100 |
|
-Wenn man zum Beispiel möchte, dass der //PreRenderer// nur beim Aufruf bestimmter Formulare ausgeführt wird, so kann man dies mittels //Bundle-Properties// konfigurierbar gestalten. Das nachfolgende Codebeispiel liest den Wert der //Bundle-Property// {{code}}activate.form.alias{{/code}} aus, welcher die Namen von Formularen mit Komma getrennt enthält, und |
101 |
|
-vergleicht diese mit den Namen des aktuellen Formulars, in dessen Anwendungsbereich der //PreRenderer// gerade ausgeführt wird. |
102 |
|
- |
|
100 |
+Ein PreRender-Plugin wird standardmäßig bei allen Formularaufrufen im Scope des Mandanten, in dem er registriert wurde, ausgeführt. |
|
101 |
+Wenn man zum Beispiel möchte, dass der //PreRenderer// nur beim Aufruf bestimmter Formulare ausgeführt wird, so kann man dies mittels //Bundle-Properties// konfigurierbar gestalten. |
|
102 |
+Das nachfolgende Beispiel liest in der {{code}}execute{{/code}} Methode den Wert der //Bundle-Property// {{code}}activate.form.alias{{/code}} aus, welche die Namen von Formularen (mit Komma getrennt) enthält. |
|
103 |
+Anschließend werden diese Namen mit dem Namen des aktuellen Formulars, in dessen Anwendungsbereich der //PreRenderer// gerade ausgeführt wird, verglichen. |
103 |
103 |
Wenn der Name des aktuellen Formulars nicht mit einen Namen aus der konfigurierten Liste übereinstimmt, wird die weitere Verarbeitung des PreRenderers abgebrochen. |
104 |
104 |
|
105 |
105 |
{{code language="java" title=""}} |
106 |
|
-public class MyPreRenderer extends AFCPlugin implements IPluginFormPreRender { |
|
107 |
+public class MyPreRenderer implements IPluginFormPreRender { |
|
108 |
+ |
|
109 |
+ private Properties bundleProperties = null; |
|
110 |
+ |
|
111 |
+ /** |
|
112 |
+ * Name, welcher Plugin eindeutig identifizerbar macht. |
|
113 |
+ */ |
107 |
107 |
@Override |
108 |
|
- public IPluginFormPreRenderRetVal execute(IPluginFormPreRenderParams preRenderParams) throws FCPluginException { |
|
115 |
+ public String getName() { |
|
116 |
+ return "Mein PreRenderer"; |
|
117 |
+ } |
|
118 |
+ |
|
119 |
+ /** |
|
120 |
+ * Plugin-Lebenszyklus-Methode, welche beim Erzeugen der Objekt-Instanz aufgerufen wird. |
|
121 |
+ */ |
|
122 |
+ @Override |
|
123 |
+ public void initialize(IPluginInitializeData initializeData) throws FCPluginException { |
|
124 |
+ bundleProperties = initializeData.getProperties(); |
|
125 |
+ } |
|
126 |
+ |
|
127 |
+ /** |
|
128 |
+ * Methode zum Ausführen von Plugin-Logik. |
|
129 |
+ */ |
|
130 |
+ @Override |
|
131 |
+ public IPluginFormPreRenderRetVal execute(IPluginFormPreRenderParams params) throws FCPluginException { |
109 |
109 |
// Bundle-Property 'activate.form.alias' auslesen |
110 |
110 |
Set<String> alias = getConfiguredFormAlias("activate.form.alias"); |
111 |
111 |
|
112 |
112 |
// Ist PreRender-Plugin für aktuelle Formularinstanz freigeschalten? |
113 |
|
- IExtendedFormRequestContext ctx = (IExtendedFormRequestContext)preRenderParams.getFormRequestContext(); |
114 |
|
- if(!alias.contains(ctx.getProjekt().getName())) return null; |
115 |
|
- |
|
136 |
+ IExtendedFormRequestContext ctx = (IExtendedFormRequestContext)params.getFormRequestContext(); |
|
137 |
+ if (!alias.contains(ctx.getProjekt().getName())) { |
|
138 |
+ // keine Formularfreischaltung gefunden -> Verarbeitung abbrechen |
|
139 |
+ return new PluginFormPreRenderRetVal(Collections.EMPTY_MAP, true); |
|
140 |
+ } |
|
141 |
+ |
116 |
116 |
// weitere PreRender-Implementierung |
117 |
117 |
// .... |
118 |
118 |
|
119 |
|
- return null; |
|
145 |
+ return new PluginFormPreRenderRetVal(Collections.EMPTY_MAP, true); |
120 |
120 |
} |
121 |
121 |
|
|
148 |
+ /** |
|
149 |
+ * Funktion zum Ermitteln eines Bundle-Property-Wertes. |
|
150 |
+ * Der ermittelte Wert wird mittels Komma getrennt |
|
151 |
+ * und als HashSet zurückgeliefert. |
|
152 |
+ * @param propertyName |
|
153 |
+ * @return ein {@link HashSet} |
|
154 |
+ */ |
122 |
122 |
protected Set<String> getConfiguredFormAlias(String propertyName) { |
123 |
|
- String formAlias = getProperties().getProperty(propertyName, null); |
124 |
|
- if(StringUtils.isBlank(formAlias)) { |
125 |
|
- return Collections.emptySet(); |
126 |
|
- } |
127 |
|
- String[] arr = StringUtils.split(formAlias, ","); |
|
156 |
+ String formAlias = bundleProperties.getProperty(propertyName, null); |
|
157 |
+ if (XStringUtils.isBlank(formAlias)) { return Collections.emptySet(); } |
|
158 |
+ String[] arr = XStringUtils.split(formAlias, ","); |
128 |
128 |
return new HashSet<String>(Arrays.asList(arr)); |
129 |
129 |
} |
130 |
130 |
} |