You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2016/04/28 18:40:38 UTC
[1/4] syncope git commit: [SYNCOPE-745] report management +
refactoring ModalPanel interface; still missing reportlets
Repository: syncope
Updated Branches:
refs/heads/master e87e4102d -> ae52b12e1
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails_ru.properties
deleted file mode 100644
index bf48601..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails_ru.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-# start=Начало
-start=\u041d\u0430\u0447\u0430\u043b\u043e
-# end=Окончание
-end=\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435
-# status=Статус
-status=\u0421\u0442\u0430\u0442\u0443\u0441
-# execution.view=Итоговый статус запуска задачи '${key}'
-execution.view=\u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 '${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html
index 602aec8..f2b070e 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html
@@ -36,7 +36,7 @@ under the License.
<ul class="menu">
<li><i class="fa fa-minus"></i><a href="#" wicket:id="delete"><wicket:message key="resource.menu.remove"/></a></li>
<li><i class="fa fa-pencil"></i><a href="#" wicket:id="edit"><wicket:message key="resource.menu.edit"/></a></li>
- <li><i class="fa fa-pencil"></i><a href="#" wicket:id="provision"><wicket:message key="resource.menu.provision"/></a></li>
+ <li><i class="fa fa-exchange"></i><a href="#" wicket:id="provision"><wicket:message key="resource.menu.provision"/></a></li>
<li><i class="fa fa-search"></i><a href="#" wicket:id="explore"><wicket:message key="resource.menu.explore"/></a></li>
<li><i class="fa fa-arrow-right"></i><a href="#" wicket:id="propagation"><wicket:message key="task.propagation.list"/></a></li>
<li><i class="fa fa-chevron-circle-left"></i><a href="#" wicket:id="pull"><wicket:message key="task.pull.list"/></a></li>
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html
index b025ccd..62731fd 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html
@@ -44,6 +44,7 @@ under the License.
<span wicket:id="panelReset">[plus]</span>
<span wicket:id="panelEdit">[plus]</span>
<span wicket:id="panelTypeExtensions">[plus]</span>
+ <span wicket:id="panelFoEdit">[plus]</span>
<span wicket:id="panelHtmlEdit">[plus]</span>
<span wicket:id="panelTextEdit">[plus]</span>
<span wicket:id="panelLayoutEdit">[plus]</span>
@@ -126,6 +127,10 @@ under the License.
<a href="#" wicket:id="typeExtensionsLink" class="btn"><i id="actionLink" class="fa fa-expand" alt="typeExtensions icon" title="Type extensions"></i></a>
</wicket:fragment>
+ <wicket:fragment wicket:id="fragmentFoEdit">
+ <a href="#" wicket:id="foEditLink" class="btn"><i id="actionLink" class="fa fa-file-pdf-o" alt="fo edit icon" title="FO Edit"></i></a>
+ </wicket:fragment>
+
<wicket:fragment wicket:id="fragmentHtmlEdit">
<a href="#" wicket:id="htmlEditLink" class="btn"><i id="actionLink" class="fa fa-file-code-o" alt="html edit icon" title="HTML Edit"></i></a>
</wicket:fragment>
@@ -145,7 +150,7 @@ under the License.
<wicket:fragment wicket:id="fragmentPropagationTasks">
<a href="#" wicket:id="propagationTasksLink" class="btn"><i class="fa fa-arrow-right" alt="PropagationTasks icon" title="PropagationTasks"></i></a>
</wicket:fragment>
-
+
<wicket:fragment wicket:id="fragmentNotificationTasks">
<a href="#" wicket:id="notificationTasksLink" class="btn"><i class="fa fa-envelope-o" alt="NotificationTasks icon" title="NotificationTasks"></i></a>
</wicket:fragment>
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java
index 719fd0b..e1d0b81 100644
--- a/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java
+++ b/ext/camel/client-console/src/main/java/org/apache/syncope/client/console/panels/CamelRoutesDirectoryPanel.java
@@ -81,7 +81,7 @@ public class CamelRoutesDirectoryPanel extends DirectoryPanel<
private static final long serialVersionUID = -6388405037134399367L;
@Override
- public ModalPanel<CamelRouteTO> build(final String id, final int index, final AjaxWizard.Mode mode) {
+ public WizardModalPanel<CamelRouteTO> build(final String id, final int index, final AjaxWizard.Mode mode) {
final CamelRouteTO modelObject = newModelObject();
return new CamelRoutesModalPanel(modal, modelObject, pageRef) {
[2/4] syncope git commit: [SYNCOPE-745] report management +
refactoring ModalPanel interface; still missing reportlets
Posted by fm...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
index 53cdaf0..69bb761 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
@@ -62,6 +62,7 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
super.add(new Fragment("panelCreate", "emptyFragment", this));
super.add(new Fragment("panelEdit", "emptyFragment", this));
super.add(new Fragment("panelTypeExtensions", "emptyFragment", this));
+ super.add(new Fragment("panelFoEdit", "emptyFragment", this));
super.add(new Fragment("panelHtmlEdit", "emptyFragment", this));
super.add(new Fragment("panelTextEdit", "emptyFragment", this));
super.add(new Fragment("panelLayoutEdit", "emptyFragment", this));
@@ -330,6 +331,25 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
}.setVisible(link.isEnabled(model.getObject())));
break;
+ case FO_EDIT:
+ fragment = new Fragment("panelFoEdit", "fragmentFoEdit", this);
+
+ fragment.addOrReplace(new IndicatingAjaxLink<Void>("foEditLink") {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target) {
+ link.onClick(target, model.getObject());
+ }
+
+ @Override
+ public String getAjaxIndicatorMarkupId() {
+ return disableIndicator ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+ }
+ }.setVisible(link.isEnabled(model.getObject())));
+ break;
+
case HTML_EDIT:
fragment = new Fragment("panelHtmlEdit", "fragmentHtmlEdit", this);
@@ -888,6 +908,10 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
super.addOrReplace(new Fragment("panelEdit", "emptyFragment", this));
break;
+ case FO_EDIT:
+ super.addOrReplace(new Fragment("panelFoEdit", "emptyFragment", this));
+ break;
+
case HTML_EDIT:
super.addOrReplace(new Fragment("panelHtmlEdit", "emptyFragment", this));
break;
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
index 86c491c..a988fd2 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/AjaxWizard.java
@@ -22,7 +22,6 @@ import java.io.Serializable;
import java.util.Iterator;
import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.panels.ModalPanel;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.event.Broadcast;
@@ -37,8 +36,11 @@ import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.request.cycle.RequestCycle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.syncope.client.console.panels.SubmitableModalPanel;
+import org.apache.syncope.client.console.panels.WizardModalPanel;
-public abstract class AjaxWizard<T extends Serializable> extends Wizard implements ModalPanel<T> {
+public abstract class AjaxWizard<T extends Serializable> extends Wizard
+ implements SubmitableModalPanel, WizardModalPanel<T> {
private static final long serialVersionUID = -1272120742876833520L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/wizards/ModalPanelBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/ModalPanelBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/ModalPanelBuilder.java
index 62db09a..23786b0 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/ModalPanelBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/ModalPanelBuilder.java
@@ -19,8 +19,8 @@
package org.apache.syncope.client.console.wizards;
import java.io.Serializable;
-import org.apache.syncope.client.console.panels.ModalPanel;
import org.apache.wicket.PageReference;
+import org.apache.syncope.client.console.panels.WizardModalPanel;
public interface ModalPanelBuilder<T extends Serializable> extends Serializable {
@@ -32,7 +32,7 @@ public interface ModalPanelBuilder<T extends Serializable> extends Serializable
* @param mode mode.
* @return wizard.
*/
- ModalPanel<T> build(String id, int index, AjaxWizard.Mode mode);
+ WizardModalPanel<T> build(String id, int index, AjaxWizard.Mode mode);
T getDefaultItem();
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
index 42d98b1..74ad18d 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/WizardMgtPanel.java
@@ -24,7 +24,6 @@ import java.util.Arrays;
import java.util.List;
import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.panels.ModalPanel;
import org.apache.syncope.client.console.panels.NotificationPanel;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wizards.any.ResultPage;
@@ -46,6 +45,7 @@ import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
+import org.apache.syncope.client.console.panels.WizardModalPanel;
public abstract class WizardMgtPanel<T extends Serializable> extends Panel implements IEventSource {
@@ -146,7 +146,7 @@ public abstract class WizardMgtPanel<T extends Serializable> extends Panel imple
if (event.getPayload() instanceof AjaxWizard.NewItemActionEvent && newItemPanelBuilder != null) {
newItemPanelBuilder.setItem(item);
- final ModalPanel<T> modalPanel = newItemPanelBuilder.build(
+ final WizardModalPanel<T> modalPanel = newItemPanelBuilder.build(
actualId,
((AjaxWizard.NewItemActionEvent<T>) newItemEvent).getIndex(),
item != null ? AjaxWizard.Mode.EDIT : AjaxWizard.Mode.CREATE);
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/ResultPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/ResultPage.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/ResultPage.java
index 45b4aa3..0057c82 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/ResultPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/ResultPage.java
@@ -19,19 +19,18 @@
package org.apache.syncope.client.console.wizards.any;
import java.io.Serializable;
-import org.apache.syncope.client.console.panels.ModalPanel;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.syncope.client.console.panels.WizardModalPanel;
/**
*
* @param <T> item input type
*/
-public abstract class ResultPage<T extends Serializable> extends Panel implements ModalPanel<T> {
+public abstract class ResultPage<T extends Serializable> extends Panel implements WizardModalPanel<T> {
private static final long serialVersionUID = -1619945285130369086L;
@@ -60,16 +59,6 @@ public abstract class ResultPage<T extends Serializable> extends Panel implement
protected abstract Panel customResultBody(final String panleId, final T item, final Serializable result);
@Override
- public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Unsupported operation.");
- }
-
- @Override
- public void onError(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Unsupported operation.");
- }
-
- @Override
public T getItem() {
return this.item;
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
index a8a0963..12ed32e 100644
--- a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
+++ b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
@@ -825,3 +825,19 @@ div#transformersContainer #body a {
/**
END - Transformers toggle panel
*/
+
+/**
+START - CRONTAB
+*/
+div#schedule input, div#schedule fieldset {
+ width: 50px;
+ float: left
+}
+
+div#templates {
+ padding-top: 30px;
+ clear: both;
+}
+/**
+END -CRONTAB
+*/
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/META-INF/resources/css/topology.css
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/META-INF/resources/css/topology.css b/client/console/src/main/resources/META-INF/resources/css/topology.css
index 6770252..99f421c 100644
--- a/client/console/src/main/resources/META-INF/resources/css/topology.css
+++ b/client/console/src/main/resources/META-INF/resources/css/topology.css
@@ -177,19 +177,3 @@ div.node-action-link .dropdown-menu{
margin: 0px;
border-radius: 0.5em;
}
-
-/**
-START - CRONTAB
-*/
-div#schedule input, div#schedule fieldset {
- width: 50px;
- float: left
-}
-
-div#templates {
- padding-top: 30px;
- clear: both;
-}
-/**
-END -CRONTAB
-*/
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/notifications/MailTemplateContentModal.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/notifications/MailTemplateContentModal.html b/client/console/src/main/resources/org/apache/syncope/client/console/notifications/MailTemplateContentModal.html
deleted file mode 100644
index 2f30d1f..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/notifications/MailTemplateContentModal.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:head>
- <link rel="stylesheet" type="text/css" href="webjars/codemirror/${codemirror.version}/lib/codemirror.css"/>
-
- <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/lib/codemirror.js"></script>
- <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/mode/xml/xml.js"></script>
- <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/addon/display/autorefresh.js"></script>
- <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/addon/search/search.js"></script>
- <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/addon/search/searchcursor.js"></script>
- <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/addon/edit/closetag.js"></script>
- <script type="text/javascript">
- function updateTextArea(editor) {
- document.getElementById("templateDefForm").children["template"].value = editor.getValue();
- }
- </script>
- <style>
- .w_content_3 {
- padding: 0;
- color: #333333;
- font-family: Verdana,Tahoma,sans-serif;
- font-size: 100%;
- border: 1px solid #BBBBBB;
- padding: 1%;
- }
- </style>
- </wicket:head>
- <wicket:panel>
- <div style="padding: 1%;">
- <div class="w_content_3" id="templateDefForm">
- <textarea wicket:id="template" id="template" name="template" style="width: 100%; height: 350px;">
- </textarea>
- </div>
- </div>
- </wicket:panel>
-</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/notifications/MailTemplateModal.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/notifications/MailTemplateModal.html b/client/console/src/main/resources/org/apache/syncope/client/console/notifications/MailTemplateModal.html
deleted file mode 100644
index 3a0676c..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/notifications/MailTemplateModal.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <head><title></title></head>
- <body>
- <wicket:panel>
- <div class="form-group">
- <span wicket:id="key"/>
- </div>
- </wicket:panel>
- </body>
-</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/notifications/TemplateContentModal.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/notifications/TemplateContentModal.html b/client/console/src/main/resources/org/apache/syncope/client/console/notifications/TemplateContentModal.html
new file mode 100644
index 0000000..2f30d1f
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/notifications/TemplateContentModal.html
@@ -0,0 +1,53 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:head>
+ <link rel="stylesheet" type="text/css" href="webjars/codemirror/${codemirror.version}/lib/codemirror.css"/>
+
+ <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/lib/codemirror.js"></script>
+ <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/mode/xml/xml.js"></script>
+ <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/addon/display/autorefresh.js"></script>
+ <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/addon/search/search.js"></script>
+ <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/addon/search/searchcursor.js"></script>
+ <script type="text/javascript" src="webjars/codemirror/${codemirror.version}/addon/edit/closetag.js"></script>
+ <script type="text/javascript">
+ function updateTextArea(editor) {
+ document.getElementById("templateDefForm").children["template"].value = editor.getValue();
+ }
+ </script>
+ <style>
+ .w_content_3 {
+ padding: 0;
+ color: #333333;
+ font-family: Verdana,Tahoma,sans-serif;
+ font-size: 100%;
+ border: 1px solid #BBBBBB;
+ padding: 1%;
+ }
+ </style>
+ </wicket:head>
+ <wicket:panel>
+ <div style="padding: 1%;">
+ <div class="w_content_3" id="templateDefForm">
+ <textarea wicket:id="template" id="template" name="template" style="width: 100%; height: 350px;">
+ </textarea>
+ </div>
+ </div>
+ </wicket:panel>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/notifications/TemplateModal.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/notifications/TemplateModal.html b/client/console/src/main/resources/org/apache/syncope/client/console/notifications/TemplateModal.html
new file mode 100644
index 0000000..3a0676c
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/notifications/TemplateModal.html
@@ -0,0 +1,28 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <head><title></title></head>
+ <body>
+ <wicket:panel>
+ <div class="form-group">
+ <span wicket:id="key"/>
+ </div>
+ </wicket:panel>
+ </body>
+</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.html
index d6895eb..63604ec 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.html
@@ -18,25 +18,18 @@ under the License.
-->
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<wicket:extend>
-
<section class="content-header">
- <h1>
-
- <small>Work in progress</small>
- </h1>
+ <h1> </h1>
<ol class="breadcrumb">
- <li><a wicket:id="dashboardBr"><i class="fa fa-dashboard"></i> <wicket:message key="dashboard"/></a></li>
- <li class="active"><wicket:message key="reports"/></li>
+ <li><a wicket:id="dashboardBr"><i class="fa fa-dashboard"></i> <wicket:message key="dashboard"></wicket:message></a></li>
+ <li class="active"><wicket:message key="roles"></wicket:message></li>
</ol>
</section>
- <section class="content">
- <div class="progress progress active" style="margin:100px">
- <div style="width: 70%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="20" role="progressbar" class="progress-bar progress-bar-success progress-bar-striped">
- <span class="sr-only">20% Complete</span>
- </div>
+ <section class="content" wicket:id="content">
+ <div class="box">
+ <div class="box-body" wicket:id="tabbedPanel"/>
</div>
</section>
-
</wicket:extend>
</html>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.properties
new file mode 100644
index 0000000..78e6676
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+reports=Reports
+report.templates=Templates
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports_it.properties
new file mode 100644
index 0000000..732d43d
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports_it.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+reports=Report
+report.templates=Template
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports_pt_BR.properties
new file mode 100644
index 0000000..e675da7
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports_pt_BR.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+reports=Reports
+report.templates=Template
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports_ru.properties
new file mode 100644
index 0000000..aebdef7
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports_ru.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# reports=\u00d0\u00a3\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u008f
+reports=Reports
+# report.templates=\u00d0\u00a8\u00d0\u00b0\u00d0\u00b1\u00d0\u00bb\u00d0\u00be\u00d0\u00bd\u00d1\u008b
+report.templates=\u0428\u0430\u0431\u043b\u043e\u043d\u044b
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel.html
new file mode 100644
index 0000000..356e28f
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel.html
@@ -0,0 +1,57 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:head>
+ <style type="text/css">
+ div#startAt {
+ background-color: rgba(98, 98, 98, 0.98) !important;
+ color: #CCC;
+ right: 5px !important;
+ top: 100px !important;
+ min-width: 300px;
+ min-height: 130px !important;
+ z-index: 6000 !important;
+ }
+
+ div#startAtContainer {
+ padding: 15px;
+ }
+
+ div#startAtContainer input {
+ background-color: rgba(200, 200, 200, 0.60) !important;
+ }
+ </style>
+ </wicket:head>
+ <wicket:extend>
+ <div id="startAtContainer">
+ <form wicket:id="startAtForm">
+ <div class="form-group">
+ <span wicket:id="startAtCheck"/>
+ </div>
+ <div class="input-group">
+ <span wicket:id="startAtDate"/>
+
+ <div class="input-group-addon">
+ <a wicket:id="startAt"><i class="fa fa-gear"></i></a>
+ </div>
+ </div>
+ </form>
+ </div>
+ </wicket:extend>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel.properties
new file mode 100644
index 0000000..3d5178b
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel.properties
@@ -0,0 +1,17 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+startAtCheck=Specify a starting date
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel_it.properties
new file mode 100644
index 0000000..69c1c22
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel_it.properties
@@ -0,0 +1,17 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+startAtCheck=Specifica una data di partenza
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel_pt_BR.properties
new file mode 100644
index 0000000..3d5178b
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel_pt_BR.properties
@@ -0,0 +1,17 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+startAtCheck=Specify a starting date
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel_ru.properties
new file mode 100644
index 0000000..d7fabde
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/StartAtTogglePanel_ru.properties
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# startAtCheck=Укажите дату начала
+startAtCheck=\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0434\u0430\u0442\u0443 \u043d\u0430\u0447\u0430\u043b\u0430
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel.html
new file mode 100644
index 0000000..e4c5611
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel.html
@@ -0,0 +1,23 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:extend>
+ <span wicket:id="startAt"/>
+ </wicket:extend>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel.properties
new file mode 100644
index 0000000..5b05753
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel.properties
@@ -0,0 +1,35 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+profile=Profile
+executions=Executions
+title=Reports
+
+name=Report
+lastExec=Last Execution
+nextExec=Next Execution
+
+start=Start date
+end=End date
+latestExecStatus=Last execution status
+
+active=Active
+
+any.edit=Edit Report ${key}
+any.new=New Report
+any.finish=Submit Report
+any.cancel=Cancel Report
+report.view=Executions of report '${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel_it.properties
new file mode 100644
index 0000000..89ec0ab
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel_it.properties
@@ -0,0 +1,35 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+profile=Profilo
+executions=Esecuzioni
+title=Reports
+
+name=Report
+lastExec=Last Execution
+nextExec=Next Execution
+
+start=Data di avvio
+end=Data di conclusione
+latestExecStatus=Stato ultima esecuzione
+
+active=Active
+
+any.edit=Modifica Report ${key}
+any.new=Nuovo Report
+any.finish=Conferma Report
+any.cancel=Annulla Report
+report.view=Esecuzioni del report '${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel_pt_BR.properties
new file mode 100644
index 0000000..d13bf06
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel_pt_BR.properties
@@ -0,0 +1,35 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+profile=Profilo
+executions=Esecuzioni
+title=Reports
+
+name=Report
+lastExec=Last Execution
+nextExec=Next Execution
+
+start=Data inicial
+end=Data Final
+latestExecStatus=Stato ultima esecuzione
+
+active=Active
+
+any.edit=Edit Report ${key}
+any.new=New Report
+any.finish=Submit Report
+any.cancel=Cancel Report
+report.view=Executions of report '${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel_ru.properties
new file mode 100644
index 0000000..18fee1d
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportDirectoryPanel_ru.properties
@@ -0,0 +1,43 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# profile=\u00d0\u009f\u00d1\u0080\u00d0\u00be\u00d1\u0084\u00d0\u00b8\u00d0\u00bb\u00d1\u008c
+profile=\u041f\u0440\u043e\u0444\u0438\u043b\u044c
+# executions=\u00d0\u0097\u00d0\u00b0\u00d0\u00bf\u00d1\u0083\u00d1\u0081\u00d0\u00ba\u00d0\u00b8 \u00d0\u00b7\u00d0\u00b0\u00d0\u00b4\u00d0\u00b0\u00d1\u0087\u00d0\u00b8
+executions=\u0417\u0430\u043f\u0443\u0441\u043a\u0438 \u0437\u0430\u0434\u0430\u0447\u0438
+# title=\u00d0\u0097\u00d0\u00b0\u00d0\u00b4\u00d0\u00b0\u00d1\u0087\u00d0\u00b0
+title=Reports
+
+name=Report
+lastExec=Last Execution
+nextExec=Next Execution
+
+# start=\u00d0\u0094\u00d0\u00b0\u00d1\u0082\u00d0\u00b0 \u00d0\u00bd\u00d0\u00b0\u00d1\u0087\u00d0\u00b0\u00d0\u00bb\u00d0\u00b0
+start=\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430
+# end=\u00d0\u0094\u00d0\u00b0\u00d1\u0082\u00d0\u00b0 \u00d0\u00be\u00d0\u00ba\u00d0\u00be\u00d0\u00bd\u00d1\u0087\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d1\u008f
+end=\u0414\u0430\u0442\u0430 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f
+# latestExecStatus=\u00d0\u00a1\u00d1\u0082\u00d0\u00b0\u00d1\u0082\u00d1\u0083\u00d1\u0081 \u00d0\u00bf\u00d1\u0080\u00d0\u00b5\u00d0\u00b4\u00d1\u008b\u00d0\u00b4\u00d1\u0083\u00d1\u0089\u00d0\u00b5\u00d0\u00b3\u00d0\u00be \u00d0\u00b7\u00d0\u00b0\u00d0\u00bf\u00d1\u0083\u00d1\u0081\u00d0\u00ba\u00d0\u00b0
+latestExecStatus=\u0421\u0442\u0430\u0442\u0443\u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430
+
+active=Active
+
+any.edit=Edit Report ${key}
+any.new=New Report
+any.finish=Submit Report
+any.cancel=Cancel Report
+# task.view=\u00d0\u0097\u00d0\u00b0\u00d0\u00bf\u00d1\u0083\u00d1\u0081\u00d0\u00ba\u00d0\u00b8 \u00d0\u00b7\u00d0\u00b0\u00d0\u00b4\u00d0\u00b0\u00d1\u0087\u00d0\u00b8
+report.view=Executions of report '${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportExecutionDetails.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportExecutionDetails.html b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportExecutionDetails.html
new file mode 100644
index 0000000..54ff764
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportExecutionDetails.html
@@ -0,0 +1,24 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div wicket:id="executions"></div>
+ <wicket:child/>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.properties
new file mode 100644
index 0000000..c8af92f
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.properties
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+any.edit=Edit ${key}
+any.new=New report template
+any.finish=Submit
+any.cancel=Cancel
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel_it.properties
new file mode 100644
index 0000000..5f60980
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel_it.properties
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+any.edit=Modifica ${key}
+any.new=New report template
+any.finish=Invia
+any.cancel=Annulla
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel_pt_BR.properties
new file mode 100644
index 0000000..43c6aa0
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel_pt_BR.properties
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+any.edit=Editar ${key}
+any.new=Novo report template
+any.finish=Enviar
+any.cancel=Cancelar
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel_ru.properties
new file mode 100644
index 0000000..3634692
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel_ru.properties
@@ -0,0 +1,25 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# any.edit=\u00d0\u0098\u00d0\u00b7\u00d0\u00bc\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u0082\u00d1\u008c ${key}
+any.edit=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c ${key}
+# any.new=\u00d0\u00a1\u00d0\u00be\u00d0\u00b7\u00d0\u00b4\u00d0\u00b0\u00d1\u0082\u00d1\u008c \u00d1\u0088\u00d0\u00b0\u00d0\u00b1\u00d0\u00bb\u00d0\u00be\u00d0\u00bd \u00d1\u0083\u00d0\u00b2\u00d0\u00b5\u00d0\u00b4\u00d0\u00be\u00d0\u00bc\u00d0\u00bb\u00d0\u00b5\u00d0\u00bd\u00d0\u00b8\u00d1\u008f
+any.new=New report template
+# any.finish=\u00d0\u00a1\u00d0\u00be\u00d1\u0085\u00d1\u0080\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d1\u0082\u00d1\u008c
+any.finish=\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c
+# any.cancel=\u00d0\u009e\u00d1\u0082\u00d0\u00bc\u00d0\u00b5\u00d0\u00bd\u00d0\u00b0
+any.cancel=\u041e\u0442\u043c\u0435\u043d\u0430
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile.html b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile.html
new file mode 100644
index 0000000..b090ddd
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile.html
@@ -0,0 +1,25 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <div class="form-group"><span wicket:id="name">[id]</span></div>
+ <div class="form-group"><span wicket:id="template">[template]</span></div>
+ <div class="form-group"><span wicket:id="active">[active]</span></div>
+ </wicket:panel>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile.properties b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile.properties
new file mode 100644
index 0000000..0e59026
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile.properties
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+name=Name
+active=Active
+template=Template
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile_it.properties
new file mode 100644
index 0000000..07ea43c
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile_it.properties
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+name=Name
+active=Attivo
+template=Template
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile_pt_BR.properties
new file mode 100644
index 0000000..0e59026
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile_pt_BR.properties
@@ -0,0 +1,19 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+name=Name
+active=Active
+template=Template
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile_ru.properties
new file mode 100644
index 0000000..4e4e1a3
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Profile_ru.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# name=\u00d0\u009d\u00d0\u00b0\u00d0\u00b7\u00d0\u00b2\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d0\u00b5
+name=\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435
+active=Active
+template=Template
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Schedule.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Schedule.html b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Schedule.html
new file mode 100644
index 0000000..99e853e
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/reports/ReportWizardBuilder$Schedule.html
@@ -0,0 +1,26 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <head><title></title></head>
+ <body>
+ <wicket:panel>
+ <span wicket:id="schedule"/>
+ </wicket:panel>
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.properties
new file mode 100644
index 0000000..99f323a
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.properties
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+start=Start
+end=End
+status=Status
+execution.view=Result status of execution '${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel_it.properties
new file mode 100644
index 0000000..3c525b7
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel_it.properties
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+start=Start
+end=End
+status=Stato
+execution.view=Risultato dello stato dell'esecuzione '${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel_pt_BR.properties
new file mode 100644
index 0000000..99f323a
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel_pt_BR.properties
@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+start=Start
+end=End
+status=Status
+execution.view=Result status of execution '${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel_ru.properties
new file mode 100644
index 0000000..bf48601
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel_ru.properties
@@ -0,0 +1,25 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# start=Начало
+start=\u041d\u0430\u0447\u0430\u043b\u043e
+# end=Окончание
+end=\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435
+# status=Статус
+status=\u0421\u0442\u0430\u0442\u0443\u0441
+# execution.view=Итоговый статус запуска задачи '${key}'
+execution.view=\u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0441\u0442\u0430\u0442\u0443\u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 '${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel.html
deleted file mode 100644
index 356e28f..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:head>
- <style type="text/css">
- div#startAt {
- background-color: rgba(98, 98, 98, 0.98) !important;
- color: #CCC;
- right: 5px !important;
- top: 100px !important;
- min-width: 300px;
- min-height: 130px !important;
- z-index: 6000 !important;
- }
-
- div#startAtContainer {
- padding: 15px;
- }
-
- div#startAtContainer input {
- background-color: rgba(200, 200, 200, 0.60) !important;
- }
- </style>
- </wicket:head>
- <wicket:extend>
- <div id="startAtContainer">
- <form wicket:id="startAtForm">
- <div class="form-group">
- <span wicket:id="startAtCheck"/>
- </div>
- <div class="input-group">
- <span wicket:id="startAtDate"/>
-
- <div class="input-group-addon">
- <a wicket:id="startAt"><i class="fa fa-gear"></i></a>
- </div>
- </div>
- </form>
- </div>
- </wicket:extend>
-</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel.properties
deleted file mode 100644
index 3d5178b..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-startAtCheck=Specify a starting date
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel_it.properties
deleted file mode 100644
index 69c1c22..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel_it.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-startAtCheck=Specifica una data di partenza
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel_pt_BR.properties
deleted file mode 100644
index 3d5178b..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel_pt_BR.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-startAtCheck=Specify a starting date
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel_ru.properties
deleted file mode 100644
index d7fabde..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/StartAtTogglePanel_ru.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-# startAtCheck=Укажите дату начала
-startAtCheck=\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0434\u0430\u0442\u0443 \u043d\u0430\u0447\u0430\u043b\u0430
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails.html b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails.html
deleted file mode 100644
index 54ff764..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <div wicket:id="executions"></div>
- <wicket:child/>
- </wicket:panel>
-</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails.properties
deleted file mode 100644
index 99f323a..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-start=Start
-end=End
-status=Status
-execution.view=Result status of execution '${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails_it.properties
deleted file mode 100644
index 3c525b7..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails_it.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-start=Start
-end=End
-status=Stato
-execution.view=Risultato dello stato dell'esecuzione '${key}'
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails_pt_BR.properties
deleted file mode 100644
index 99f323a..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/tasks/TaskExecutionDetails_pt_BR.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-start=Start
-end=End
-status=Status
-execution.view=Result status of execution '${key}'
[4/4] syncope git commit: [SYNCOPE-745] report management +
refactoring ModalPanel interface; still missing reportlets
Posted by fm...@apache.org.
[SYNCOPE-745] report management + refactoring ModalPanel interface; still missing reportlets
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/ae52b12e
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/ae52b12e
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/ae52b12e
Branch: refs/heads/master
Commit: ae52b12e1432253900e5712af419855e595fac20
Parents: e87e410
Author: fmartelli <fa...@gmail.com>
Authored: Thu Apr 28 18:39:11 2016 +0200
Committer: fmartelli <fa...@gmail.com>
Committed: Thu Apr 28 18:39:11 2016 +0200
----------------------------------------------------------------------
.../client/console/approvals/ApprovalModal.java | 5 +-
.../client/console/bulk/BulkActionModal.java | 4 +-
.../client/console/bulk/BulkContent.java | 10 +-
.../notifications/MailTemplateContentModal.java | 120 ---------
.../MailTemplateDirectoryPanel.java | 24 +-
.../notifications/MailTemplateModal.java | 72 -----
.../notifications/NotificationTasks.java | 21 +-
.../notifications/TemplateContentModal.java | 124 +++++++++
.../console/notifications/TemplateModal.java | 76 ++++++
.../syncope/client/console/pages/Reports.java | 60 +++++
.../console/panels/AbstractModalPanel.java | 3 +-
.../console/panels/AjaxDataTablePanel.java | 5 +-
.../console/panels/AnyTypeClassesPanel.java | 4 +-
.../client/console/panels/AnyTypesPanel.java | 2 +-
.../panels/ConnObjectDirectoryPanel.java | 18 +-
.../client/console/panels/ConnObjects.java | 19 +-
.../client/console/panels/DirectoryPanel.java | 6 +-
.../console/panels/FailureMessageModal.java | 19 +-
.../client/console/panels/ModalPanel.java | 10 +-
.../client/console/panels/ParametersPanel.java | 2 +-
.../console/panels/RelationshipTypesPanel.java | 3 +-
.../client/console/panels/SchemaTypePanel.java | 2 +-
.../console/panels/SecurityQuestionsPanel.java | 3 +-
.../console/panels/StartAtTogglePanel.java | 105 ++++++++
.../console/panels/SubmitableModalPanel.java | 29 +++
.../panels/TypeExtensionDirectoryPanel.java | 7 +-
.../client/console/panels/WizardModalPanel.java | 26 ++
.../console/reports/ReportDirectoryPanel.java | 261 +++++++++++++++++++
.../console/reports/ReportExecutionDetails.java | 54 ++++
.../reports/ReportStartAtTogglePanel.java | 39 +++
.../reports/ReportTemplateDirectoryPanel.java | 251 ++++++++++++++++++
.../console/reports/ReportWizardBuilder.java | 108 ++++++++
.../client/console/rest/BaseRestClient.java | 3 +-
.../console/rest/ExecutionRestClient.java | 6 +-
.../console/rest/NotificationRestClient.java | 9 +-
.../client/console/rest/ReportRestClient.java | 63 ++++-
.../syncope/client/console/rest/RestClient.java | 24 ++
.../client/console/rest/TaskRestClient.java | 2 +
.../client/console/rest/TemplateRestClient.java | 36 +++
.../console/status/StatusDirectoryPanel.java | 19 +-
.../client/console/status/StatusModal.java | 20 +-
.../client/console/tasks/AbstractTasks.java | 20 +-
.../console/tasks/ExecutionsDirectoryPanel.java | 232 +++++++++++++++++
.../tasks/NotificationTaskDirectoryPanel.java | 2 +-
.../tasks/PropagationTaskDirectoryPanel.java | 2 +-
.../console/tasks/SchedTaskDirectoryPanel.java | 9 +-
.../console/tasks/SchedTaskWizardBuilder.java | 12 +-
.../console/tasks/StartAtTogglePanel.java | 106 --------
.../console/tasks/TaskDirectoryPanel.java | 20 +-
.../console/tasks/TaskExecutionDetails.java | 3 +-
.../client/console/tasks/TaskExecutions.java | 227 ----------------
.../console/tasks/TaskStartAtTogglePanel.java | 39 +++
.../markup/html/bootstrap/dialog/BaseModal.java | 17 +-
.../wicket/markup/html/form/ActionLink.java | 1 +
.../markup/html/form/ActionLinksPanel.java | 24 ++
.../client/console/wizards/AjaxWizard.java | 6 +-
.../console/wizards/ModalPanelBuilder.java | 4 +-
.../client/console/wizards/WizardMgtPanel.java | 4 +-
.../client/console/wizards/any/ResultPage.java | 15 +-
.../META-INF/resources/css/syncopeConsole.css | 16 ++
.../META-INF/resources/css/topology.css | 16 --
.../notifications/MailTemplateContentModal.html | 53 ----
.../notifications/MailTemplateModal.html | 28 --
.../notifications/TemplateContentModal.html | 53 ++++
.../console/notifications/TemplateModal.html | 28 ++
.../syncope/client/console/pages/Reports.html | 19 +-
.../client/console/pages/Reports.properties | 18 ++
.../client/console/pages/Reports_it.properties | 18 ++
.../console/pages/Reports_pt_BR.properties | 18 ++
.../client/console/pages/Reports_ru.properties | 21 ++
.../console/panels/StartAtTogglePanel.html | 57 ++++
.../panels/StartAtTogglePanel.properties | 17 ++
.../panels/StartAtTogglePanel_it.properties | 17 ++
.../panels/StartAtTogglePanel_pt_BR.properties | 17 ++
.../panels/StartAtTogglePanel_ru.properties | 19 ++
.../console/reports/ReportDirectoryPanel.html | 23 ++
.../reports/ReportDirectoryPanel.properties | 35 +++
.../reports/ReportDirectoryPanel_it.properties | 35 +++
.../ReportDirectoryPanel_pt_BR.properties | 35 +++
.../reports/ReportDirectoryPanel_ru.properties | 43 +++
.../console/reports/ReportExecutionDetails.html | 24 ++
.../ReportTemplateDirectoryPanel.properties | 20 ++
.../ReportTemplateDirectoryPanel_it.properties | 20 ++
...eportTemplateDirectoryPanel_pt_BR.properties | 20 ++
.../ReportTemplateDirectoryPanel_ru.properties | 25 ++
.../reports/ReportWizardBuilder$Profile.html | 25 ++
.../ReportWizardBuilder$Profile.properties | 19 ++
.../ReportWizardBuilder$Profile_it.properties | 19 ++
...ReportWizardBuilder$Profile_pt_BR.properties | 19 ++
.../ReportWizardBuilder$Profile_ru.properties | 21 ++
.../reports/ReportWizardBuilder$Schedule.html | 26 ++
.../tasks/ExecutionsDirectoryPanel.properties | 20 ++
.../ExecutionsDirectoryPanel_it.properties | 20 ++
.../ExecutionsDirectoryPanel_pt_BR.properties | 20 ++
.../ExecutionsDirectoryPanel_ru.properties | 25 ++
.../console/tasks/StartAtTogglePanel.html | 57 ----
.../console/tasks/StartAtTogglePanel.properties | 17 --
.../tasks/StartAtTogglePanel_it.properties | 17 --
.../tasks/StartAtTogglePanel_pt_BR.properties | 17 --
.../tasks/StartAtTogglePanel_ru.properties | 19 --
.../console/tasks/TaskExecutionDetails.html | 24 --
.../tasks/TaskExecutionDetails.properties | 20 --
.../tasks/TaskExecutionDetails_it.properties | 20 --
.../tasks/TaskExecutionDetails_pt_BR.properties | 20 --
.../tasks/TaskExecutionDetails_ru.properties | 25 --
.../console/topology/TopologyTogglePanel.html | 2 +-
.../markup/html/form/ActionLinksPanel.html | 7 +-
.../panels/CamelRoutesDirectoryPanel.java | 2 +-
108 files changed, 2463 insertions(+), 1110 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/approvals/ApprovalModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/approvals/ApprovalModal.java b/client/console/src/main/java/org/apache/syncope/client/console/approvals/ApprovalModal.java
index dc0d90b..9398a5b 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/approvals/ApprovalModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/approvals/ApprovalModal.java
@@ -20,7 +20,6 @@ package org.apache.syncope.client.console.approvals;
import org.apache.syncope.client.console.SyncopeConsoleSession;
import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.panels.ModalPanel;
import org.apache.syncope.client.console.panels.MultilevelPanel;
import org.apache.syncope.client.console.rest.UserWorkflowRestClient;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
@@ -30,8 +29,10 @@ import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.syncope.client.console.panels.SubmitableModalPanel;
+import org.apache.syncope.client.console.panels.WizardModalPanel;
-public class ApprovalModal extends Panel implements ModalPanel<WorkflowFormTO> {
+public class ApprovalModal extends Panel implements SubmitableModalPanel, WizardModalPanel<WorkflowFormTO> {
private static final long serialVersionUID = -8847854414429745216L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkActionModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkActionModal.java b/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkActionModal.java
index 033ee0a..17cf48d 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkActionModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkActionModal.java
@@ -22,7 +22,7 @@ import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import org.apache.syncope.client.console.panels.AbstractModalPanel;
-import org.apache.syncope.client.console.rest.BaseRestClient;
+import org.apache.syncope.client.console.rest.RestClient;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
import org.apache.wicket.PageReference;
@@ -38,7 +38,7 @@ public class BulkActionModal<T extends Serializable, S> extends AbstractModalPan
final Collection<T> items,
final List<IColumn<T, S>> columns,
final Collection<ActionLink.ActionType> actions,
- final BaseRestClient bulkActionExecutor,
+ final RestClient bulkActionExecutor,
final String keyFieldName) {
super(modal, pageRef);
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkContent.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkContent.java b/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkContent.java
index 5110119..8bbd088 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkContent.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/bulk/BulkContent.java
@@ -31,7 +31,7 @@ import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.commons.status.StatusBean;
import org.apache.syncope.client.console.panels.MultilevelPanel;
import org.apache.syncope.client.console.rest.AbstractAnyRestClient;
-import org.apache.syncope.client.console.rest.BaseRestClient;
+import org.apache.syncope.client.console.rest.RestClient;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.BulkActionResultColumn;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
@@ -64,7 +64,7 @@ public class BulkContent<T extends Serializable, S> extends MultilevelPanel.Seco
final Collection<T> items,
final List<IColumn<T, S>> columns,
final Collection<ActionLink.ActionType> actions,
- final BaseRestClient bulkActionExecutor,
+ final RestClient bulkActionExecutor,
final String keyFieldName) {
this(MultilevelPanel.SECOND_LEVEL_ID, modal, items, columns, actions, bulkActionExecutor, keyFieldName);
@@ -76,7 +76,7 @@ public class BulkContent<T extends Serializable, S> extends MultilevelPanel.Seco
final Collection<T> items,
final List<IColumn<T, S>> columns,
final Collection<ActionLink.ActionType> actions,
- final BaseRestClient bulkActionExecutor,
+ final RestClient bulkActionExecutor,
final String keyFieldName) {
super(id);
@@ -143,8 +143,8 @@ public class BulkContent<T extends Serializable, S> extends MultilevelPanel.Seco
throw new IllegalArgumentException("Invalid bulk action executor");
}
- final AbstractAnyRestClient<?> anyRestClient =
- AbstractAnyRestClient.class.cast(bulkActionExecutor);
+ final AbstractAnyRestClient<?> anyRestClient = AbstractAnyRestClient.class.cast(
+ bulkActionExecutor);
if (items.isEmpty() || !(items.iterator().next() instanceof StatusBean)) {
throw new IllegalArgumentException("Invalid items");
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateContentModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateContentModal.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateContentModal.java
deleted file mode 100644
index 55804cb..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateContentModal.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.client.console.notifications;
-
-import java.io.Serializable;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.panels.AbstractModalPanel;
-import org.apache.syncope.client.console.rest.NotificationRestClient;
-import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.common.lib.types.MailTemplateFormat;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.OnLoadHeaderItem;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.TextArea;
-import org.apache.wicket.model.PropertyModel;
-
-public class MailTemplateContentModal extends AbstractModalPanel<Serializable> {
-
- private static final long serialVersionUID = 2053048734388383021L;
-
- private final MailTemplateContent content;
-
- public MailTemplateContentModal(
- final BaseModal<Serializable> modal,
- final MailTemplateContent content,
- final PageReference pageRef) {
-
- super(modal, pageRef);
- this.content = content;
-
- TextArea<String> templateDefArea = new TextArea<>("template", new PropertyModel<String>(content, "content"));
- templateDefArea.setMarkupId("template").setOutputMarkupPlaceholderTag(true);
- add(templateDefArea);
- }
-
- @Override
- public void renderHead(final IHeaderResponse response) {
- super.renderHead(response);
- response.render(OnLoadHeaderItem.forScript(
- "CodeMirror.fromTextArea(document.getElementById('template'), {"
- + " lineNumbers: true, "
- + " lineWrapping: true, "
- + " autoCloseTags: true, "
- + " mode: 'text/html', "
- + " autoRefresh: true"
- + "}).on('change', updateTextArea);"));
- }
-
- @Override
- public MailTemplateContent getItem() {
- return this.content;
- }
-
- @Override
- public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- try {
- new NotificationRestClient().updateTemplateFormat(
- content.getKey(), content.getContent(), content.getFormat());
- info(getString(Constants.OPERATION_SUCCEEDED));
- modal.show(false);
- modal.close(target);
- } catch (Exception e) {
- LOG.error("While updating template for {}", content.getKey(), e);
- error(StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage());
- }
- SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
- }
-
- public static class MailTemplateContent implements Serializable {
-
- private static final long serialVersionUID = -1756961687134322845L;
-
- private final String key;
-
- private String content;
-
- private final MailTemplateFormat format;
-
- public MailTemplateContent(final String key, final MailTemplateFormat format) {
- this.key = key;
- this.format = format;
- }
-
- public String getKey() {
- return key;
- }
-
- public String getContent() {
- return content;
- }
-
- public void setContent(final String content) {
- this.content = content;
- }
-
- public MailTemplateFormat getFormat() {
- return format;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
index a781f4c..2b9d072 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateDirectoryPanel.java
@@ -32,7 +32,6 @@ import org.apache.syncope.client.console.commons.DirectoryDataProvider;
import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
import org.apache.syncope.client.console.notifications.MailTemplateDirectoryPanel.MailTemplateProvider;
import org.apache.syncope.client.console.panels.DirectoryPanel;
-import org.apache.syncope.client.console.panels.ModalPanel;
import org.apache.syncope.client.console.rest.NotificationRestClient;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
@@ -54,6 +53,7 @@ import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.StringResourceModel;
+import org.apache.syncope.client.console.panels.WizardModalPanel;
public class MailTemplateDirectoryPanel
extends DirectoryPanel<MailTemplateTO, MailTemplateTO, MailTemplateProvider, NotificationRestClient> {
@@ -75,16 +75,18 @@ public class MailTemplateDirectoryPanel
utilityModal.size(Modal.Size.Large);
utilityModal.addSubmitButton();
+ restClient = new NotificationRestClient();
addNewItemPanelBuilder(new AbstractModalPanelBuilder<MailTemplateTO>(new MailTemplateTO(), pageRef) {
private static final long serialVersionUID = 1995192603527154740L;
@Override
- public ModalPanel<MailTemplateTO> build(final String id, final int index, final AjaxWizard.Mode mode) {
- return new MailTemplateModal(modal, new MailTemplateTO(), pageReference);
+ public WizardModalPanel<MailTemplateTO> build(
+ final String id, final int index, final AjaxWizard.Mode mode) {
+ return new TemplateModal<MailTemplateTO, MailTemplateFormat>(
+ modal, restClient, new MailTemplateTO(), pageReference);
}
}, true);
- restClient = new NotificationRestClient();
initResultTable();
@@ -113,14 +115,15 @@ public class MailTemplateDirectoryPanel
@Override
public void onClick(final AjaxRequestTarget target, final MailTemplateTO ignore) {
- MailTemplateContentModal.MailTemplateContent content =
- new MailTemplateContentModal.MailTemplateContent(
+ TemplateContentModal.TemplateContent<MailTemplateFormat> content
+ = new TemplateContentModal.TemplateContent<MailTemplateFormat>(
model.getObject().getKey(), MailTemplateFormat.HTML);
content.setContent(
restClient.readTemplateFormat(model.getObject().getKey(), MailTemplateFormat.HTML));
utilityModal.header(new ResourceModel("mail.template.html", "HTML Content"));
- utilityModal.setContent(new MailTemplateContentModal(utilityModal, content, pageRef));
+ utilityModal.setContent(new TemplateContentModal<MailTemplateTO, MailTemplateFormat>(
+ utilityModal, restClient, content, pageRef));
utilityModal.show(true);
target.add(utilityModal);
}
@@ -132,15 +135,16 @@ public class MailTemplateDirectoryPanel
@Override
public void onClick(final AjaxRequestTarget target, final MailTemplateTO ignore) {
- MailTemplateContentModal.MailTemplateContent content =
- new MailTemplateContentModal.MailTemplateContent(
+ TemplateContentModal.TemplateContent<MailTemplateFormat> content
+ = new TemplateContentModal.TemplateContent<MailTemplateFormat>(
model.getObject().getKey(), MailTemplateFormat.TEXT);
content.setContent(
restClient.readTemplateFormat(model.getObject().getKey(), MailTemplateFormat.TEXT));
utilityModal.setFormModel(content);
utilityModal.header(new ResourceModel("mail.template.text", "TEXT Content"));
- utilityModal.setContent(new MailTemplateContentModal(utilityModal, content, pageRef));
+ utilityModal.setContent(new TemplateContentModal<MailTemplateTO, MailTemplateFormat>(
+ utilityModal, restClient, content, pageRef));
utilityModal.show(true);
target.add(utilityModal);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateModal.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateModal.java
deleted file mode 100644
index 69ec7aa..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/notifications/MailTemplateModal.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.client.console.notifications;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.panels.AbstractModalPanel;
-import org.apache.syncope.client.console.rest.NotificationRestClient;
-import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.MailTemplateTO;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.PropertyModel;
-
-public class MailTemplateModal extends AbstractModalPanel<MailTemplateTO> {
-
- private static final long serialVersionUID = 2053048734388383021L;
-
- private final MailTemplateTO mailTemplateTO;
-
- public MailTemplateModal(
- final BaseModal<MailTemplateTO> modal,
- final MailTemplateTO mailTemplateTO,
- final PageReference pageRef) {
- super(modal, pageRef);
- this.mailTemplateTO = mailTemplateTO;
-
- final AjaxTextFieldPanel key
- = new AjaxTextFieldPanel("key", "key", new PropertyModel<String>(mailTemplateTO, "key"), false);
- key.setOutputMarkupPlaceholderTag(true);
- add(key.setRenderBodyOnly(true));
- }
-
- @Override
- public MailTemplateTO getItem() {
- return this.mailTemplateTO;
- }
-
- @Override
- public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- try {
- new NotificationRestClient().createTemplate(mailTemplateTO);
- info(getString(Constants.OPERATION_SUCCEEDED));
- modal.show(false);
- modal.close(target);
- } catch (SyncopeClientException e) {
- LOG.error("While creating template for {}", mailTemplateTO.getKey(), e);
- error(StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage());
- }
- SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationTasks.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationTasks.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationTasks.java
index 4d24824..68d2553 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationTasks.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/notifications/NotificationTasks.java
@@ -18,23 +18,20 @@
*/
package org.apache.syncope.client.console.notifications;
-import java.io.Serializable;
import org.apache.syncope.client.console.panels.ModalPanel;
import org.apache.syncope.client.console.panels.MultilevelPanel;
import org.apache.syncope.client.console.tasks.NotificationTaskDirectoryPanel;
import org.apache.syncope.client.console.tasks.TaskExecutionDetails;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.common.lib.to.NotificationTO;
import org.apache.syncope.common.lib.to.NotificationTaskTO;
import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
-public class NotificationTasks extends Panel implements ModalPanel<Serializable> {
+public class NotificationTasks extends Panel implements ModalPanel {
private static final long serialVersionUID = 1066124171682570083L;
@@ -75,20 +72,4 @@ public class NotificationTasks extends Panel implements ModalPanel<Serializable>
}
});
}
-
- @Override
- public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void onError(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public NotificationTO getItem() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/notifications/TemplateContentModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/TemplateContentModal.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/TemplateContentModal.java
new file mode 100644
index 0000000..416475d
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/notifications/TemplateContentModal.java
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.notifications;
+
+import java.io.Serializable;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.panels.AbstractModalPanel;
+import org.apache.syncope.client.console.rest.TemplateRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.common.lib.to.EntityTO;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.OnLoadHeaderItem;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.model.PropertyModel;
+
+public class TemplateContentModal<T extends EntityTO, F> extends AbstractModalPanel<Serializable> {
+
+ private static final long serialVersionUID = 2053048734388383021L;
+
+ private final TemplateContent<F> content;
+
+ private final TemplateRestClient<T, F> restClient;
+
+ public TemplateContentModal(
+ final BaseModal<Serializable> modal,
+ final TemplateRestClient<T, F> restClient,
+ final TemplateContent<F> content,
+ final PageReference pageRef) {
+
+ super(modal, pageRef);
+ this.restClient = restClient;
+ this.content = content;
+
+ TextArea<String> templateDefArea = new TextArea<>("template", new PropertyModel<String>(content, "content"));
+ templateDefArea.setMarkupId("template").setOutputMarkupPlaceholderTag(true);
+ add(templateDefArea);
+ }
+
+ @Override
+ public void renderHead(final IHeaderResponse response) {
+ super.renderHead(response);
+ response.render(OnLoadHeaderItem.forScript(
+ "CodeMirror.fromTextArea(document.getElementById('template'), {"
+ + " lineNumbers: true, "
+ + " lineWrapping: true, "
+ + " autoCloseTags: true, "
+ + " mode: 'text/html', "
+ + " autoRefresh: true"
+ + "}).on('change', updateTextArea);"));
+ }
+
+ @Override
+ public TemplateContent<F> getItem() {
+ return this.content;
+ }
+
+ @Override
+ public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+ try {
+ restClient.updateTemplateFormat(
+ content.getKey(), content.getContent(), content.getFormat());
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ modal.show(false);
+ modal.close(target);
+ } catch (Exception e) {
+ LOG.error("While updating template for {}", content.getKey(), e);
+ error(StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage());
+ }
+ SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
+ }
+
+ public static class TemplateContent<F> implements Serializable {
+
+ private static final long serialVersionUID = -1756961687134322845L;
+
+ private final String key;
+
+ private String content;
+
+ private final F format;
+
+ public TemplateContent(final String key, final F format) {
+ this.key = key;
+ this.format = format;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(final String content) {
+ this.content = content;
+ }
+
+ public F getFormat() {
+ return format;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/notifications/TemplateModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/notifications/TemplateModal.java b/client/console/src/main/java/org/apache/syncope/client/console/notifications/TemplateModal.java
new file mode 100644
index 0000000..aa85776
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/notifications/TemplateModal.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.notifications;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.panels.AbstractModalPanel;
+import org.apache.syncope.client.console.rest.TemplateRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.EntityTO;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.PropertyModel;
+
+public class TemplateModal<T extends EntityTO, F> extends AbstractModalPanel<T> {
+
+ private static final long serialVersionUID = 2053048734388383021L;
+
+ private final T templateTO;
+
+ private TemplateRestClient<T, F> restClient;
+
+ public TemplateModal(
+ final BaseModal<T> modal,
+ final TemplateRestClient<T, F> restClient,
+ final T templateTO,
+ final PageReference pageRef) {
+ super(modal, pageRef);
+ this.restClient = restClient;
+ this.templateTO = templateTO;
+
+ final AjaxTextFieldPanel key
+ = new AjaxTextFieldPanel("key", "key", new PropertyModel<String>(templateTO, "key"), false);
+ key.setOutputMarkupPlaceholderTag(true);
+ add(key.setRenderBodyOnly(true));
+ }
+
+ @Override
+ public T getItem() {
+ return this.templateTO;
+ }
+
+ @Override
+ public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+ try {
+ restClient.createTemplate(templateTO);
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ modal.show(false);
+ modal.close(target);
+ } catch (SyncopeClientException e) {
+ LOG.error("While creating template for {}", templateTO.getKey(), e);
+ error(StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage());
+ }
+ SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/pages/Reports.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Reports.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Reports.java
index f089554..c01da4c 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Reports.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Reports.java
@@ -18,7 +18,23 @@
*/
package org.apache.syncope.client.console.pages;
+import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
+import java.util.ArrayList;
+import java.util.List;
import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
+import org.apache.syncope.client.console.panels.MultilevelPanel;
+import org.apache.syncope.client.console.reports.ReportDirectoryPanel;
+import org.apache.syncope.client.console.reports.ReportExecutionDetails;
+import org.apache.syncope.client.console.reports.ReportTemplateDirectoryPanel;
+import org.apache.syncope.common.lib.to.ReportTO;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
+import org.apache.wicket.extensions.markup.html.tabs.ITab;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
public class Reports extends BasePage {
@@ -29,5 +45,49 @@ public class Reports extends BasePage {
super(parameters);
body.add(BookmarkablePageLinkBuilder.build("dashboard", "dashboardBr", Dashboard.class));
+
+ WebMarkupContainer content = new WebMarkupContainer("content");
+ content.setOutputMarkupId(true);
+ content.setMarkupId("reports");
+ content.add(new AjaxBootstrapTabbedPanel<>("tabbedPanel", buildTabList()));
+ body.add(content);
+ }
+
+ private List<ITab> buildTabList() {
+ final List<ITab> tabs = new ArrayList<>();
+
+ tabs.add(new AbstractTab(new ResourceModel("reports")) {
+
+ private static final long serialVersionUID = -6815067322125799251L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ final MultilevelPanel mlp = new MultilevelPanel(panelId);
+ mlp.setFirstLevel(new ReportDirectoryPanel(mlp, getPageReference()) {
+
+ private static final long serialVersionUID = -2195387360323687302L;
+
+ @Override
+ protected void viewTask(final ReportTO reportTO, final AjaxRequestTarget target) {
+ mlp.next(
+ new StringResourceModel("report.view", this, new Model<>(reportTO)).getObject(),
+ new ReportExecutionDetails(reportTO, getPageReference()),
+ target);
+ }
+ });
+ return mlp;
+ }
+ });
+
+ tabs.add(new AbstractTab(new ResourceModel("report.templates")) {
+
+ private static final long serialVersionUID = -6815067322125799251L;
+
+ @Override
+ public Panel getPanel(final String panelId) {
+ return new ReportTemplateDirectoryPanel(panelId, getPageReference());
+ }
+ });
+ return tabs;
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
index c69f2b1..fe84533 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractModalPanel.java
@@ -32,7 +32,8 @@ import org.apache.wicket.markup.html.panel.Panel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class AbstractModalPanel<T extends Serializable> extends Panel implements ModalPanel<T> {
+public class AbstractModalPanel<T extends Serializable> extends Panel
+ implements SubmitableModalPanel, WizardModalPanel<T> {
private static final long serialVersionUID = 8611724965544132636L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
index 017659b..e06090a 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AjaxDataTablePanel.java
@@ -30,6 +30,7 @@ import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormChoic
import org.apache.syncope.client.console.bulk.BulkActionModal;
import org.apache.syncope.client.console.bulk.BulkContent;
import org.apache.syncope.client.console.panels.DirectoryPanel.EventDataWrapper;
+import org.apache.syncope.client.console.rest.RestClient;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.CheckGroupColumn;
import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.AjaxFallbackDataTable;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
@@ -65,7 +66,7 @@ public final class AjaxDataTablePanel<T extends Serializable, S> extends DataTab
private final Collection<ActionLink.ActionType> bulkActions = new ArrayList<>();
- private BaseRestClient bulkActionExecutor;
+ private RestClient bulkActionExecutor;
private String itemKeyField;
@@ -108,7 +109,7 @@ public final class AjaxDataTablePanel<T extends Serializable, S> extends DataTab
public Builder<T, S> setBulkActions(
final Collection<ActionLink.ActionType> bulkActions,
- final BaseRestClient bulkActionExecutor,
+ final RestClient bulkActionExecutor,
final String itemKeyField) {
this.bulkActions.clear();
if (bulkActions != null) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
index fdfbc65..c393285 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypeClassesPanel.java
@@ -64,7 +64,8 @@ public class AnyTypeClassesPanel extends TypesDirectoryPanel<AnyTypeClassTO, Any
private static final long serialVersionUID = -6388405037134399367L;
@Override
- public ModalPanel<AnyTypeClassTO> build(final String id, final int index, final AjaxWizard.Mode mode) {
+ public WizardModalPanel<AnyTypeClassTO> build(
+ final String id, final int index, final AjaxWizard.Mode mode) {
final AnyTypeClassTO modelObject = newModelObject();
return new AnyTypeClassModalPanel(modal, modelObject, pageRef) {
@@ -88,6 +89,7 @@ public class AnyTypeClassesPanel extends TypesDirectoryPanel<AnyTypeClassTO, Any
}
};
}
+
}, true);
initResultTable();
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
index 6b3c042..6c1d71a 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AnyTypesPanel.java
@@ -65,7 +65,7 @@ public class AnyTypesPanel extends TypesDirectoryPanel<AnyTypeTO, AnyTypeProvide
private static final long serialVersionUID = -6388405037134399367L;
@Override
- public ModalPanel<AnyTypeTO> build(final String id, final int index, final AjaxWizard.Mode mode) {
+ public WizardModalPanel<AnyTypeTO> build(final String id, final int index, final AjaxWizard.Mode mode) {
final AnyTypeTO modelObject = newModelObject();
return new AnyTypeModalPanel(modal, modelObject, pageRef) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectDirectoryPanel.java
index 056e7fd..99dde2e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjectDirectoryPanel.java
@@ -41,14 +41,13 @@ import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
public abstract class ConnObjectDirectoryPanel
extends DirectoryPanel<ConnObjectTO, ConnObjectTO, ConnObjectDataProvider, ResourceRestClient>
- implements ModalPanel<ConnObjectTO> {
+ implements ModalPanel {
private static final long serialVersionUID = 4986172040062752781L;
@@ -84,21 +83,6 @@ public abstract class ConnObjectDirectoryPanel
}
@Override
- public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void onError(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public ConnObjectTO getItem() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
protected ConnObjectDataProvider dataProvider() {
return new ConnObjectDataProvider(rows);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java
index 3317315..f261ddc 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ConnObjects.java
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.client.console.panels;
-import java.io.Serializable;
import java.util.ArrayList;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Transformer;
@@ -32,12 +31,11 @@ import org.apache.syncope.common.lib.types.AnyTypeKind;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
-public class ConnObjects extends Panel implements ModalPanel<Serializable> {
+public class ConnObjects extends Panel implements ModalPanel {
private static final long serialVersionUID = -1143512993584984838L;
@@ -96,21 +94,6 @@ public class ConnObjects extends Panel implements ModalPanel<Serializable> {
});
}
- @Override
- public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void onError(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Serializable getItem() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
private class NextableConnObjectDirectoryPanel extends ConnObjectDirectoryPanel {
private static final long serialVersionUID = 956427874406567048L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
index 4207df4..b31d297 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/DirectoryPanel.java
@@ -26,7 +26,7 @@ import org.apache.syncope.client.console.PreferenceManager;
import org.apache.syncope.client.console.commons.Constants;
import org.apache.syncope.client.console.commons.DirectoryDataProvider;
import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.syncope.client.console.rest.BaseRestClient;
+import org.apache.syncope.client.console.rest.RestClient;
import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
@@ -44,7 +44,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public abstract class DirectoryPanel<
- T extends Serializable, W extends Serializable, DP extends DirectoryDataProvider<T>, E extends BaseRestClient>
+ T extends Serializable, W extends Serializable, DP extends DirectoryDataProvider<T>, E extends RestClient>
extends WizardMgtPanel<W> {
private static final long serialVersionUID = -9170191461250434024L;
@@ -309,7 +309,7 @@ public abstract class DirectoryPanel<
protected abstract Collection<ActionLink.ActionType> getBulkActions();
- public abstract static class Builder<T extends Serializable, W extends Serializable, E extends BaseRestClient>
+ public abstract static class Builder<T extends Serializable, W extends Serializable, E extends RestClient>
extends WizardMgtPanel.Builder<W> {
private static final long serialVersionUID = 5088962796986706805L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/FailureMessageModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/FailureMessageModal.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/FailureMessageModal.java
index ecf64c9..5aac8b3 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/FailureMessageModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/FailureMessageModal.java
@@ -21,13 +21,11 @@ package org.apache.syncope.client.console.panels;
import java.io.Serializable;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
-public class FailureMessageModal<T extends Serializable> extends Panel implements ModalPanel<T> {
+public class FailureMessageModal<T extends Serializable> extends Panel implements ModalPanel {
private static final long serialVersionUID = 9216117990503199258L;
@@ -41,19 +39,4 @@ public class FailureMessageModal<T extends Serializable> extends Panel implement
}
add(executionFailureMessage.setOutputMarkupId(true));
}
-
- @Override
- public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void onError(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public T getItem() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/ModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ModalPanel.java
index ef1e015..eb6df35 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ModalPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ModalPanel.java
@@ -19,15 +19,7 @@
package org.apache.syncope.client.console.panels;
import java.io.Serializable;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.request.component.IRequestableComponent;
-public interface ModalPanel<T extends Serializable> extends IRequestableComponent, Serializable {
-
- void onSubmit(AjaxRequestTarget target, Form<?> form);
-
- void onError(AjaxRequestTarget target, Form<?> form);
-
- T getItem();
+public interface ModalPanel extends IRequestableComponent, Serializable {
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
index 5c83530..32cbe72 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
@@ -100,7 +100,7 @@ public class ParametersPanel extends DirectoryPanel<
private static final long serialVersionUID = 1995192603527154740L;
@Override
- public ModalPanel<AttrTO> build(final String id, final int index, final AjaxWizard.Mode mode) {
+ public WizardModalPanel<AttrTO> build(final String id, final int index, final AjaxWizard.Mode mode) {
return new ParametersCreateModalPanel(modal, newModelObject(), pageRef);
}
}, true);
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java
index 314ce42..1eabedb 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/RelationshipTypesPanel.java
@@ -66,7 +66,8 @@ public class RelationshipTypesPanel extends TypesDirectoryPanel<RelationshipType
private static final long serialVersionUID = -6388405037134399367L;
@Override
- public ModalPanel<RelationshipTypeTO> build(final String id, final int index, final AjaxWizard.Mode mode) {
+ public WizardModalPanel<RelationshipTypeTO> build(
+ final String id, final int index, final AjaxWizard.Mode mode) {
final RelationshipTypeTO modelObject = newModelObject();
return new RelationshipTypeModalPanel(modal, modelObject, pageRef) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
index 7d61e47..9c2094f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SchemaTypePanel.java
@@ -94,7 +94,7 @@ public class SchemaTypePanel extends TypesDirectoryPanel<AbstractSchemaTO, Schem
private static final long serialVersionUID = -6388405037134399367L;
@Override
- public ModalPanel<AbstractSchemaTO> build(
+ public WizardModalPanel<AbstractSchemaTO> build(
final String id, final int index, final AjaxWizard.Mode mode) {
final AbstractSchemaTO modelObject = newModelObject();
return new SchemaModalPanel(modal, modelObject, pageRef) {
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
index 50ae8c9..be9cdf1 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SecurityQuestionsPanel.java
@@ -74,7 +74,8 @@ public class SecurityQuestionsPanel extends DirectoryPanel<
private static final long serialVersionUID = -6388405037134399367L;
@Override
- public ModalPanel<SecurityQuestionTO> build(final String id, final int index, final AjaxWizard.Mode mode) {
+ public WizardModalPanel<SecurityQuestionTO> build(
+ final String id, final int index, final AjaxWizard.Mode mode) {
final SecurityQuestionTO modelObject = newModelObject();
return new SecurityQuestionsModalPanel(modal, modelObject, pageRef);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/StartAtTogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/StartAtTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/StartAtTogglePanel.java
new file mode 100644
index 0000000..bae12a6
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/StartAtTogglePanel.java
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.panels;
+
+import java.io.Serializable;
+import java.util.Date;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.rest.ExecutionRestClient;
+import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.DateTimeFieldPanel;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.SyncopeConstants;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.Model;
+
+public abstract class StartAtTogglePanel extends TogglePanel<Serializable> {
+
+ private static final long serialVersionUID = -3195479265440591519L;
+
+ private String key = null;
+
+ public StartAtTogglePanel(final WebMarkupContainer container) {
+ super("startAt");
+
+ final Form<?> form = new Form<>("startAtForm");
+ addInnerObject(form);
+
+ final Model<Date> startAtDateModel = new Model<>();
+
+ final DateTimeFieldPanel startAtDate = new DateTimeFieldPanel(
+ "startAtDate", "startAtDate", startAtDateModel, SyncopeConstants.DATE_PATTERNS[3]);
+
+ startAtDate.setReadOnly(true).hideLabel();
+ form.add(startAtDate);
+
+ final AjaxCheckBoxPanel startAtCheck = new AjaxCheckBoxPanel(
+ "startAtCheck", "startAtCheck", new Model<>(false), false);
+
+ form.add(startAtCheck);
+
+ startAtCheck.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+ private static final long serialVersionUID = -1107858522700306810L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ target.add(startAtDate.setModelObject(null).setReadOnly(!startAtCheck.getModelObject()));
+ }
+ });
+
+ form.add(new AjaxSubmitLink("startAt", form) {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+ try {
+ getRestClient().startExecution(key, startAtDateModel.getObject());
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ toggle(target, false);
+ target.add(container);
+ } catch (SyncopeClientException e) {
+ error(StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage());
+ LOG.error("While running propagation task {}", key, e);
+ }
+ SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
+ }
+
+ @Override
+ protected void onError(final AjaxRequestTarget target, final Form<?> form) {
+ SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
+ }
+
+ });
+ }
+
+ public void setExecutionDetail(final String key, final String header, final AjaxRequestTarget target) {
+ this.key = key;
+ setHeader(target, header);
+ }
+
+ protected abstract ExecutionRestClient getRestClient();
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/SubmitableModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/SubmitableModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/SubmitableModalPanel.java
new file mode 100644
index 0000000..a7ce5dd
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/SubmitableModalPanel.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.panels;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.form.Form;
+
+public interface SubmitableModalPanel extends ModalPanel {
+
+ void onSubmit(final AjaxRequestTarget target, final Form<?> form);
+
+ void onError(final AjaxRequestTarget target, final Form<?> form);
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
index f2a32c2..17a8535 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/TypeExtensionDirectoryPanel.java
@@ -54,7 +54,7 @@ import org.apache.wicket.model.StringResourceModel;
public class TypeExtensionDirectoryPanel
extends DirectoryPanel<TypeExtensionTO, TypeExtensionTO, TypeExtensionDataProvider, BaseRestClient>
- implements ModalPanel<Serializable> {
+ implements SubmitableModalPanel {
private static final long serialVersionUID = -4117015319209624858L;
@@ -172,11 +172,6 @@ public class TypeExtensionDirectoryPanel
return Collections.emptyList();
}
- @Override
- public TypeExtensionTO getItem() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
protected class TypeExtensionDataProvider extends DirectoryDataProvider<TypeExtensionTO> {
private static final long serialVersionUID = 4533123471004692755L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/panels/WizardModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/WizardModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/WizardModalPanel.java
new file mode 100644
index 0000000..706e9f5
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/WizardModalPanel.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.panels;
+
+import java.io.Serializable;
+
+public interface WizardModalPanel<T extends Serializable> extends ModalPanel {
+
+ T getItem();
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
new file mode 100644
index 0000000..f2055b9
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportDirectoryPanel.java
@@ -0,0 +1,261 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.reports;
+
+import static org.apache.wicket.Component.ENABLE;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.commons.lang3.SerializationUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.commons.DirectoryDataProvider;
+import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
+import org.apache.syncope.client.console.panels.DirectoryPanel;
+import org.apache.syncope.client.console.panels.MultilevelPanel;
+import org.apache.syncope.client.console.rest.ReportRestClient;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.BooleanPropertyColumn;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.KeyPropertyColumn;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink.ActionType;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.ReportTO;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.event.Broadcast;
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.model.StringResourceModel;
+
+/**
+ * Reports page.
+ */
+public abstract class ReportDirectoryPanel
+ extends DirectoryPanel<ReportTO, ReportTO, DirectoryDataProvider<ReportTO>, ReportRestClient> {
+
+ private static final long serialVersionUID = 4984337552918213290L;
+
+ private final ReportStartAtTogglePanel startAt;
+
+ protected ReportDirectoryPanel(final MultilevelPanel multiLevelPanelRef, final PageReference pageRef) {
+ super(MultilevelPanel.FIRST_LEVEL_ID, pageRef, true);
+ this.restClient = new ReportRestClient();
+
+ this.addNewItemPanelBuilder(new ReportWizardBuilder(new ReportTO(), pageRef), true);
+ MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, ENABLE, StandardEntitlement.REPORT_CREATE);
+
+ initResultTable();
+
+ startAt = new ReportStartAtTogglePanel(container);
+ addInnerObject(startAt);
+ }
+
+ @Override
+ protected List<IColumn<ReportTO, String>> getColumns() {
+ final List<IColumn<ReportTO, String>> columns = new ArrayList<>();
+
+ columns.add(new KeyPropertyColumn<ReportTO>(
+ new StringResourceModel("key", this, null), "key", "key"));
+
+ columns.add(new PropertyColumn<ReportTO, String>(new StringResourceModel(
+ "name", this, null), "name", "name"));
+
+ columns.add(new DatePropertyColumn<ReportTO>(
+ new StringResourceModel("lastExec", this, null), "lastExec", "lastExec"));
+
+ columns.add(new DatePropertyColumn<ReportTO>(
+ new StringResourceModel("nextExec", this, null), "nextExec", "nextExec"));
+
+ columns.add(new DatePropertyColumn<ReportTO>(
+ new StringResourceModel("start", this, null), "start", "start"));
+
+ columns.add(new DatePropertyColumn<ReportTO>(
+ new StringResourceModel("end", this, null), "end", "end"));
+
+ columns.add(new PropertyColumn<ReportTO, String>(
+ new StringResourceModel("latestExecStatus", this, null), "latestExecStatus", "latestExecStatus"));
+
+ columns.add(new BooleanPropertyColumn<ReportTO>(
+ new StringResourceModel("active", this, null), "active", "active"));
+
+ columns.add(new ActionColumn<ReportTO, String>(new ResourceModel("actions")) {
+
+ private static final long serialVersionUID = 2054811145491901166L;
+
+ @Override
+ public ActionLinksPanel<ReportTO> getActions(final String componentId, final IModel<ReportTO> model) {
+
+ final ReportTO reportTO = model.getObject();
+
+ final ActionLinksPanel<ReportTO> panel = ActionLinksPanel.<ReportTO>builder().
+ add(new ActionLink<ReportTO>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ReportTO modelObject) {
+ final ReportTO clone = SerializationUtils.clone(model.getObject());
+ clone.setKey(null);
+ send(ReportDirectoryPanel.this, Broadcast.EXACT,
+ new AjaxWizard.EditItemActionEvent<>(clone, target));
+ }
+ }, ActionLink.ActionType.CLONE, StandardEntitlement.REPORT_CREATE).
+ add(new ActionLink<ReportTO>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ReportTO modelObject) {
+ send(ReportDirectoryPanel.this, Broadcast.EXACT,
+ new AjaxWizard.EditItemActionEvent<>(
+ restClient.read(model.getObject().getKey()), target));
+ }
+ }, ActionLink.ActionType.EDIT, StandardEntitlement.REPORT_UPDATE).
+ add(new ActionLink<ReportTO>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ReportTO modelObject) {
+ viewTask(reportTO, target);
+ }
+ }, ActionLink.ActionType.VIEW, StandardEntitlement.REPORT_READ).
+ add(new ActionLink<ReportTO>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ReportTO ignore) {
+ startAt.setExecutionDetail(
+ model.getObject().getKey(), model.getObject().getName(), target);
+ startAt.toggle(target, true);
+ }
+ }, ActionLink.ActionType.EXECUTE, StandardEntitlement.REPORT_EXECUTE).
+ add(new ActionLink<ReportTO>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ReportTO modelObject) {
+ try {
+ restClient.delete(reportTO.getKey());
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ target.add(container);
+ } catch (SyncopeClientException e) {
+ LOG.error("While deleting {}", reportTO.getKey(), e);
+ error(StringUtils.isBlank(e.getMessage())
+ ? e.getClass().getName() : e.getMessage());
+ }
+ SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
+ }
+ }, ActionLink.ActionType.DELETE, StandardEntitlement.REPORT_DELETE).build(componentId);
+
+ return panel;
+ }
+
+ @Override
+ public ActionLinksPanel<ReportTO> getHeader(final String componentId) {
+ final ActionLinksPanel.Builder<ReportTO> panel = ActionLinksPanel.builder();
+
+ return panel.add(new ActionLink<ReportTO>() {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ReportTO ignore) {
+ if (target != null) {
+ target.add(container);
+ }
+ }
+ }, ActionLink.ActionType.RELOAD, StandardEntitlement.TASK_LIST).build(componentId);
+ }
+ });
+
+ return columns;
+ }
+
+ @Override
+ protected Collection<ActionType> getBulkActions() {
+ final List<ActionType> bulkActions = new ArrayList<>();
+ bulkActions.add(ActionType.EXECUTE);
+ bulkActions.add(ActionType.DELETE);
+ return bulkActions;
+ }
+
+ @Override
+ protected ReportDataProvider dataProvider() {
+ return new ReportDataProvider(rows);
+ }
+
+ @Override
+ protected String paginatorRowsKey() {
+ return Constants.PREF_PROPAGATION_TASKS_PAGINATOR_ROWS;
+ }
+
+ protected abstract void viewTask(final ReportTO reportTO, final AjaxRequestTarget target);
+
+ protected class ReportDataProvider extends DirectoryDataProvider<ReportTO> {
+
+ private static final long serialVersionUID = 4725679400450513556L;
+
+ private final SortableDataProviderComparator<ReportTO> comparator;
+
+ private final List<ReportTO> reports;
+
+ public ReportDataProvider(final int paginatorRows) {
+ super(paginatorRows);
+ this.reports = restClient.list();
+
+ //Default sorting
+ setSort("key", SortOrder.DESCENDING);
+ comparator = new SortableDataProviderComparator<>(this);
+
+ Collections.sort(this.reports, comparator);
+ }
+
+ @Override
+ public Iterator<ReportTO> iterator(final long first, final long count) {
+ return this.reports.subList((int) first, (int) (first + count)).iterator();
+ }
+
+ @Override
+ public long size() {
+ return reports.size();
+ }
+
+ @Override
+ public IModel<ReportTO> model(final ReportTO object) {
+ return new CompoundPropertyModel<>(object);
+ }
+ }
+}
[3/4] syncope git commit: [SYNCOPE-745] report management +
refactoring ModalPanel interface; still missing reportlets
Posted by fm...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportExecutionDetails.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportExecutionDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportExecutionDetails.java
new file mode 100644
index 0000000..7866000
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportExecutionDetails.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.reports;
+
+import org.apache.syncope.client.console.panels.MultilevelPanel;
+import org.apache.syncope.client.console.rest.ReportRestClient;
+import org.apache.syncope.client.console.tasks.ExecutionsDirectoryPanel;
+import org.apache.syncope.common.lib.to.ReportTO;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+
+/**
+ * Modal window with report executions.
+ */
+public class ReportExecutionDetails extends MultilevelPanel.SecondLevel {
+
+ private static final long serialVersionUID = -4110576026663173545L;
+
+ public ReportExecutionDetails(final ReportTO reportTO, final PageReference pageRef) {
+ super();
+
+ final MultilevelPanel mlp = new MultilevelPanel("executions");
+ add(mlp);
+
+ mlp.setFirstLevel(new ExecutionsDirectoryPanel(mlp, reportTO.getKey(), new ReportRestClient(), pageRef) {
+
+ private static final long serialVersionUID = 5691719817252887541L;
+
+ @Override
+ protected void next(
+ final String title,
+ final MultilevelPanel.SecondLevel slevel,
+ final AjaxRequestTarget target) {
+ mlp.next(title, slevel, target);
+ }
+ });
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportStartAtTogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportStartAtTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportStartAtTogglePanel.java
new file mode 100644
index 0000000..04022fa
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportStartAtTogglePanel.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.reports;
+
+import org.apache.syncope.client.console.panels.StartAtTogglePanel;
+import org.apache.syncope.client.console.rest.ExecutionRestClient;
+import org.apache.syncope.client.console.rest.ReportRestClient;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+
+public class ReportStartAtTogglePanel extends StartAtTogglePanel {
+
+ private static final long serialVersionUID = -3195479265440591519L;
+
+ public ReportStartAtTogglePanel(final WebMarkupContainer container) {
+ super(container);
+ }
+
+ @Override
+ protected ExecutionRestClient getRestClient() {
+ return new ReportRestClient();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java
new file mode 100644
index 0000000..497a4bd
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportTemplateDirectoryPanel.java
@@ -0,0 +1,251 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.reports;
+
+import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.commons.DirectoryDataProvider;
+import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
+import org.apache.syncope.client.console.notifications.TemplateContentModal;
+import org.apache.syncope.client.console.notifications.TemplateModal;
+import org.apache.syncope.client.console.panels.DirectoryPanel;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
+import org.apache.syncope.client.console.wizards.AbstractModalPanelBuilder;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.ReportTemplateTO;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.model.AbstractReadOnlyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.model.StringResourceModel;
+import org.apache.syncope.client.console.panels.WizardModalPanel;
+import org.apache.syncope.client.console.reports.ReportTemplateDirectoryPanel.ReportTemplateProvider;
+import org.apache.syncope.client.console.rest.ReportRestClient;
+import org.apache.syncope.common.lib.types.ReportTemplateFormat;
+
+public class ReportTemplateDirectoryPanel
+ extends DirectoryPanel<ReportTemplateTO, ReportTemplateTO, ReportTemplateProvider, ReportRestClient> {
+
+ private static final long serialVersionUID = -3789392431954221446L;
+
+ protected final BaseModal<Serializable> utilityModal = new BaseModal<>("outer");
+
+ public ReportTemplateDirectoryPanel(final String id, final PageReference pageReference) {
+ super(id, pageReference, true);
+ disableCheckBoxes();
+
+ modal.size(Modal.Size.Small);
+ modal.addSubmitButton();
+ setFooterVisibility(true);
+
+ addOuterObject(utilityModal);
+ setWindowClosedReloadCallback(utilityModal);
+ utilityModal.size(Modal.Size.Large);
+ utilityModal.addSubmitButton();
+
+ restClient = new ReportRestClient();
+ addNewItemPanelBuilder(new AbstractModalPanelBuilder<ReportTemplateTO>(new ReportTemplateTO(), pageRef) {
+
+ private static final long serialVersionUID = 1995192603527154740L;
+
+ @Override
+ public WizardModalPanel<ReportTemplateTO> build(
+ final String id, final int index, final AjaxWizard.Mode mode) {
+ return new TemplateModal<ReportTemplateTO, ReportTemplateFormat>(
+ modal, restClient, new ReportTemplateTO(), pageReference);
+ }
+ }, true);
+
+ initResultTable();
+
+ MetaDataRoleAuthorizationStrategy.authorize(addAjaxLink, ENABLE, StandardEntitlement.MAIL_TEMPLATE_CREATE);
+ }
+
+ @Override
+ protected List<IColumn<ReportTemplateTO, String>> getColumns() {
+ List<IColumn<ReportTemplateTO, String>> columns = new ArrayList<>();
+ columns.add(new PropertyColumn<ReportTemplateTO, String>(
+ new StringResourceModel("key", this, null), "key", "key"));
+
+ columns.add(new ActionColumn<ReportTemplateTO, String>(new ResourceModel("actions", "")) {
+
+ private static final long serialVersionUID = -3503023501954863131L;
+
+ @Override
+ public ActionLinksPanel<ReportTemplateTO> getActions(
+ final String componentId, final IModel<ReportTemplateTO> model) {
+
+ final ActionLinksPanel.Builder<ReportTemplateTO> panel = ActionLinksPanel.builder();
+
+ panel.add(new ActionLink<ReportTemplateTO>() {
+
+ private static final long serialVersionUID = -7978723352517770645L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ReportTemplateTO ignore) {
+ TemplateContentModal.TemplateContent<ReportTemplateFormat> content
+ = new TemplateContentModal.TemplateContent<ReportTemplateFormat>(
+ model.getObject().getKey(), ReportTemplateFormat.FO);
+ content.setContent(
+ restClient.readTemplateFormat(model.getObject().getKey(), ReportTemplateFormat.FO));
+
+ utilityModal.header(new ResourceModel("report.template.fo", "FO Content"));
+ utilityModal.setContent(new TemplateContentModal<ReportTemplateTO, ReportTemplateFormat>(
+ utilityModal, restClient, content, pageRef));
+ utilityModal.show(true);
+ target.add(utilityModal);
+ }
+ }, ActionLink.ActionType.FO_EDIT, StandardEntitlement.MAIL_TEMPLATE_UPDATE);
+
+ panel.add(new ActionLink<ReportTemplateTO>() {
+
+ private static final long serialVersionUID = -7978723352517770645L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ReportTemplateTO ignore) {
+ TemplateContentModal.TemplateContent<ReportTemplateFormat> content
+ = new TemplateContentModal.TemplateContent<ReportTemplateFormat>(
+ model.getObject().getKey(), ReportTemplateFormat.HTML);
+ content.setContent(
+ restClient.readTemplateFormat(model.getObject().getKey(), ReportTemplateFormat.HTML));
+
+ utilityModal.header(new ResourceModel("report.template.html", "HTML Content"));
+ utilityModal.setContent(new TemplateContentModal<ReportTemplateTO, ReportTemplateFormat>(
+ utilityModal, restClient, content, pageRef));
+ utilityModal.show(true);
+ target.add(utilityModal);
+ }
+ }, ActionLink.ActionType.HTML_EDIT, StandardEntitlement.MAIL_TEMPLATE_UPDATE);
+
+ panel.add(new ActionLink<ReportTemplateTO>() {
+
+ private static final long serialVersionUID = -7978723352517770645L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ReportTemplateTO ignore) {
+ TemplateContentModal.TemplateContent<ReportTemplateFormat> content
+ = new TemplateContentModal.TemplateContent<ReportTemplateFormat>(
+ model.getObject().getKey(), ReportTemplateFormat.CSV);
+ content.setContent(
+ restClient.readTemplateFormat(model.getObject().getKey(), ReportTemplateFormat.CSV));
+
+ utilityModal.setFormModel(content);
+ utilityModal.header(new ResourceModel("report.template.text", "TEXT Content"));
+ utilityModal.setContent(new TemplateContentModal<ReportTemplateTO, ReportTemplateFormat>(
+ utilityModal, restClient, content, pageRef));
+ utilityModal.show(true);
+ target.add(utilityModal);
+ }
+ }, ActionLink.ActionType.TEXT_EDIT, StandardEntitlement.MAIL_TEMPLATE_UPDATE);
+
+ panel.add(new ActionLink<ReportTemplateTO>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ReportTemplateTO ignore) {
+ try {
+ restClient.deleteTemplate(model.getObject().getKey());
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ target.add(container);
+ } catch (SyncopeClientException e) {
+ LOG.error("While deleting object {}", model.getObject().getKey(), e);
+ error(StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage());
+ }
+ SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
+ }
+ }, ActionLink.ActionType.DELETE, StandardEntitlement.MAIL_TEMPLATE_DELETE);
+
+ return panel.build(componentId);
+ }
+ });
+ return columns;
+ }
+
+ @Override
+ protected ReportTemplateProvider dataProvider() {
+ return new ReportTemplateProvider(rows);
+ }
+
+ @Override
+ protected String paginatorRowsKey() {
+ return Constants.PREF_MAIL_TEMPLATE_PAGINATOR_ROWS;
+ }
+
+ @Override
+ protected Collection<ActionLink.ActionType> getBulkActions() {
+ return Collections.<ActionLink.ActionType>emptyList();
+ }
+
+ public class ReportTemplateProvider extends DirectoryDataProvider<ReportTemplateTO> {
+
+ private static final long serialVersionUID = -276043813563988590L;
+
+ private final SortableDataProviderComparator<ReportTemplateTO> comparator;
+
+ public ReportTemplateProvider(final int paginatorRows) {
+ super(paginatorRows);
+ setSort("key", SortOrder.ASCENDING);
+ comparator = new SortableDataProviderComparator<>(this);
+ }
+
+ @Override
+ public Iterator<ReportTemplateTO> iterator(final long first, final long count) {
+ final List<ReportTemplateTO> list = restClient.getAllAvailableTemplates();
+ Collections.sort(list, comparator);
+ return list.subList((int) first, (int) first + (int) count).iterator();
+ }
+
+ @Override
+ public long size() {
+ return restClient.getAllAvailableTemplates().size();
+ }
+
+ @Override
+ public IModel<ReportTemplateTO> model(final ReportTemplateTO reportTemplateTO) {
+ return new AbstractReadOnlyModel<ReportTemplateTO>() {
+
+ private static final long serialVersionUID = 774694801558497248L;
+
+ @Override
+ public ReportTemplateTO getObject() {
+ return reportTemplateTO;
+ }
+ };
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportWizardBuilder.java
new file mode 100644
index 0000000..6a12244
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/reports/ReportWizardBuilder.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.reports;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Transformer;
+import org.apache.syncope.client.console.rest.ReportRestClient;
+import org.apache.syncope.client.console.tasks.CrontabPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.console.wizards.AjaxWizardBuilder;
+import org.apache.syncope.common.lib.to.ReportTO;
+import org.apache.syncope.common.lib.to.ReportTemplateTO;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.extensions.wizard.WizardModel;
+import org.apache.wicket.extensions.wizard.WizardStep;
+import org.apache.wicket.model.PropertyModel;
+
+public class ReportWizardBuilder extends AjaxWizardBuilder<ReportTO> {
+
+ private static final long serialVersionUID = 5945391813567245081L;
+
+ private final ReportRestClient restClient = new ReportRestClient();
+
+ public ReportWizardBuilder(final ReportTO reportTO, final PageReference pageRef) {
+ super(reportTO, pageRef);
+ }
+
+ @Override
+ protected Serializable onApplyInternal(final ReportTO modelObject) {
+ if (modelObject.getKey() == null) {
+ restClient.create(modelObject);
+ } else {
+ restClient.update(modelObject);
+ }
+ return modelObject;
+ }
+
+ @Override
+ protected WizardModel buildModelSteps(final ReportTO modelObject, final WizardModel wizardModel) {
+ wizardModel.add(new Profile(modelObject));
+ wizardModel.add(new Schedule(modelObject));
+ return wizardModel;
+ }
+
+ public class Profile extends WizardStep {
+
+ private static final long serialVersionUID = -3043839139187792810L;
+
+ public Profile(final ReportTO reportTO) {
+
+ AjaxTextFieldPanel name = new AjaxTextFieldPanel(
+ "name", "name", new PropertyModel<String>(reportTO, "name"), false);
+ name.addRequiredLabel();
+ name.setEnabled(true);
+ add(name);
+
+ final AjaxDropDownChoicePanel<String> template = new AjaxDropDownChoicePanel<>(
+ "template", getString("template"),
+ new PropertyModel<String>(reportTO, "template"));
+ template.setChoices(CollectionUtils.collect(
+ restClient.getAllAvailableTemplates(), new Transformer<ReportTemplateTO, String>() {
+
+ @Override
+ public String transform(final ReportTemplateTO input) {
+ return input.getKey();
+ }
+ }, new ArrayList<String>()));
+
+ template.addRequiredLabel();
+ add(template);
+
+ AjaxCheckBoxPanel active = new AjaxCheckBoxPanel(
+ "active", "active", new PropertyModel<Boolean>(reportTO, "active"), false);
+ add(active);
+ }
+ }
+
+ public class Schedule extends WizardStep {
+
+ private static final long serialVersionUID = -785981096328637758L;
+
+ public Schedule(final ReportTO reportTO) {
+ add(new CrontabPanel(
+ "schedule", new PropertyModel<String>(reportTO, "cronExpression"), reportTO.getCronExpression()));
+ }
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
index 83a0951..9eaa65d 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/BaseRestClient.java
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.client.console.rest;
-import java.io.Serializable;
import java.net.URI;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.syncope.client.console.SyncopeConsoleApplication;
@@ -31,7 +30,7 @@ import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public abstract class BaseRestClient implements Serializable {
+public abstract class BaseRestClient implements RestClient {
protected static final Logger LOG = LoggerFactory.getLogger(BaseRestClient.class);
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java
index 1bb0ad9..aa0d59a 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/ExecutionRestClient.java
@@ -22,11 +22,15 @@ import java.util.Date;
import java.util.List;
import org.apache.syncope.common.lib.to.ExecTO;
-public interface ExecutionRestClient {
+public interface ExecutionRestClient extends RestClient {
void startExecution(String executionCollectorKey, Date start);
void deleteExecution(String executionKey);
List<ExecTO> listRecentExecutions(final int max);
+
+ List<ExecTO> listExecutions(final String taskKey, final int page, final int size);
+
+ int countExecutions(final String taskKey);
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
index eb7d160..eab0a17 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/NotificationRestClient.java
@@ -29,7 +29,8 @@ import org.apache.syncope.common.lib.types.MailTemplateFormat;
import org.apache.syncope.common.rest.api.service.MailTemplateService;
import org.apache.syncope.common.rest.api.service.NotificationService;
-public class NotificationRestClient extends BaseRestClient {
+public class NotificationRestClient extends BaseRestClient
+ implements TemplateRestClient<MailTemplateTO, MailTemplateFormat> {
private static final long serialVersionUID = 6328933265096511690L;
@@ -53,22 +54,27 @@ public class NotificationRestClient extends BaseRestClient {
getService(NotificationService.class).delete(key);
}
+ @Override
public List<MailTemplateTO> getAllAvailableTemplates() {
return getService(MailTemplateService.class).list();
}
+ @Override
public void createTemplate(final MailTemplateTO mailTemplateTO) {
getService(MailTemplateService.class).create(mailTemplateTO);
}
+ @Override
public void deleteTemplate(final String key) {
getService(MailTemplateService.class).delete(key);
}
+ @Override
public MailTemplateTO readTemplate(final String key) {
return getService(MailTemplateService.class).read(key);
}
+ @Override
public String readTemplateFormat(final String key, final MailTemplateFormat format) {
try {
return IOUtils.toString(InputStream.class.cast(
@@ -80,6 +86,7 @@ public class NotificationRestClient extends BaseRestClient {
}
}
+ @Override
public void updateTemplateFormat(final String key, final String content, final MailTemplateFormat format) {
getService(MailTemplateService.class).setFormat(
key, format, IOUtils.toInputStream(content, SyncopeConstants.DEFAULT_CHARSET));
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
index 743ebfb..1c59d09 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/ReportRestClient.java
@@ -18,16 +18,27 @@
*/
package org.apache.syncope.client.console.rest;
+import static org.apache.syncope.client.console.rest.BaseRestClient.getService;
+
+import java.io.InputStream;
import java.util.Date;
import java.util.List;
import javax.ws.rs.core.Response;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.common.lib.to.ExecTO;
import org.apache.syncope.common.lib.to.ReportTO;
+import org.apache.syncope.common.lib.to.ReportTemplateTO;
import org.apache.syncope.common.lib.types.ReportExecExportFormat;
+import org.apache.syncope.common.lib.types.ReportTemplateFormat;
+import org.apache.syncope.common.rest.api.beans.ExecQuery;
import org.apache.syncope.common.rest.api.beans.ExecuteQuery;
import org.apache.syncope.common.rest.api.service.ReportService;
+import org.apache.syncope.common.rest.api.service.ReportTemplateService;
-public class ReportRestClient extends BaseRestClient implements ExecutionRestClient {
+public class ReportRestClient extends BaseRestClient
+ implements ExecutionRestClient, TemplateRestClient<ReportTemplateTO, ReportTemplateFormat> {
private static final long serialVersionUID = 1644689667998953604L;
@@ -74,4 +85,54 @@ public class ReportRestClient extends BaseRestClient implements ExecutionRestCli
public Response exportExecutionResult(final String executionKey, final ReportExecExportFormat fmt) {
return getService(ReportService.class).exportExecutionResult(executionKey, fmt);
}
+
+ @Override
+ public List<ExecTO> listExecutions(final String taskKey, final int page, final int size) {
+ return getService(ReportService.class).
+ listExecutions(new ExecQuery.Builder().key(taskKey).page(page).size(size).build()).getResult();
+ }
+
+ @Override
+ public int countExecutions(final String taskKey) {
+ return getService(ReportService.class).
+ listExecutions(new ExecQuery.Builder().key(taskKey).page(1).size(1).build()).getTotalCount();
+ }
+
+ @Override
+ public List<ReportTemplateTO> getAllAvailableTemplates() {
+ return getService(ReportTemplateService.class).list();
+ }
+
+ @Override
+ public void createTemplate(final ReportTemplateTO reportTemplateTO) {
+ getService(ReportTemplateService.class).create(reportTemplateTO);
+ }
+
+ @Override
+ public void deleteTemplate(final String key) {
+ getService(ReportTemplateService.class).delete(key);
+ }
+
+ @Override
+ public ReportTemplateTO readTemplate(final String key) {
+ return getService(ReportTemplateService.class).read(key);
+ }
+
+ @Override
+ public String readTemplateFormat(final String key, final ReportTemplateFormat format) {
+ try {
+ return IOUtils.toString(InputStream.class.cast(
+ getService(ReportTemplateService.class).getFormat(key, format).getEntity()),
+ SyncopeConstants.DEFAULT_CHARSET);
+ } catch (Exception e) {
+ LOG.error("Error retrieving mail template {} as {}", key, format, e);
+ return StringUtils.EMPTY;
+ }
+ }
+
+ @Override
+ public void updateTemplateFormat(final String key, final String content, final ReportTemplateFormat format) {
+ getService(ReportTemplateService.class).setFormat(
+ key, format, IOUtils.toInputStream(content, SyncopeConstants.DEFAULT_CHARSET));
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/rest/RestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/RestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/RestClient.java
new file mode 100644
index 0000000..4ac954c
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/RestClient.java
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.rest;
+
+import java.io.Serializable;
+
+public interface RestClient extends Serializable {
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
index abc62a6..0c70c44 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/TaskRestClient.java
@@ -61,6 +61,7 @@ public class TaskRestClient extends BaseRestClient implements ExecutionRestClien
build()).getTotalCount();
}
+ @Override
public int countExecutions(final String taskKey) {
return getService(TaskService.class).
listExecutions(new ExecQuery.Builder().key(taskKey).page(1).size(1).build()).getTotalCount();
@@ -139,6 +140,7 @@ public class TaskRestClient extends BaseRestClient implements ExecutionRestClien
getResult();
}
+ @Override
public List<ExecTO> listExecutions(final String taskKey, final int page, final int size) {
return getService(TaskService.class).
listExecutions(new ExecQuery.Builder().key(taskKey).page(page).size(size).build()).getResult();
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/rest/TemplateRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/TemplateRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/TemplateRestClient.java
new file mode 100644
index 0000000..9bb62b6
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/TemplateRestClient.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.rest;
+
+import java.util.List;
+
+public interface TemplateRestClient<T, F> extends RestClient {
+
+ List<T> getAllAvailableTemplates();
+
+ void createTemplate(final T templateTO);
+
+ void deleteTemplate(final String key);
+
+ T readTemplate(final String key);
+
+ String readTemplateFormat(final String key, final F format);
+
+ void updateTemplateFormat(final String key, final String content, final F format);
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/status/StatusDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/status/StatusDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/status/StatusDirectoryPanel.java
index f61e4ee..835e478 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/status/StatusDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/status/StatusDirectoryPanel.java
@@ -44,21 +44,19 @@ import org.apache.syncope.common.lib.to.ResourceTO;
import org.apache.syncope.common.lib.to.GroupTO;
import org.apache.syncope.common.lib.to.UserTO;
import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.StringResourceModel;
public class StatusDirectoryPanel
extends DirectoryPanel<StatusBean, StatusBean, AttributableStatusProvider, AbstractAnyRestClient<?>>
- implements ModalPanel<StatusBean> {
+ implements ModalPanel {
private static final long serialVersionUID = -9148734710505211261L;
@@ -110,21 +108,6 @@ public class StatusDirectoryPanel
}
@Override
- public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void onError(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public StatusBean getItem() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
protected List<IColumn<StatusBean, String>> getColumns() {
final List<IColumn<StatusBean, String>> columns = new ArrayList<>();
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/status/StatusModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/status/StatusModal.java b/client/console/src/main/java/org/apache/syncope/client/console/status/StatusModal.java
index d2cf748..da05b49 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/status/StatusModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/status/StatusModal.java
@@ -21,14 +21,11 @@ package org.apache.syncope.client.console.status;
import org.apache.syncope.client.console.panels.ModalPanel;
import org.apache.syncope.client.console.panels.MultilevelPanel;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.client.console.wizards.any.AnyWrapper;
import org.apache.syncope.common.lib.to.AnyTO;
import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
-public class StatusModal<T extends AnyTO> extends Panel implements ModalPanel<AnyWrapper<T>> {
+public class StatusModal<T extends AnyTO> extends Panel implements ModalPanel {
private static final long serialVersionUID = 1066124171682570080L;
@@ -39,19 +36,4 @@ public class StatusModal<T extends AnyTO> extends Panel implements ModalPanel<An
final MultilevelPanel mlp = new MultilevelPanel("status");
add(mlp.setFirstLevel(new StatusDirectoryPanel(baseModal, mlp, pageReference, anyTO, statusOnly)));
}
-
- @Override
- public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void onError(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public AnyWrapper<T> getItem() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/tasks/AbstractTasks.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/AbstractTasks.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/AbstractTasks.java
index 93b2a2a..dc947f2 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/AbstractTasks.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/AbstractTasks.java
@@ -18,32 +18,14 @@
*/
package org.apache.syncope.client.console.tasks;
-import java.io.Serializable;
import org.apache.syncope.client.console.panels.ModalPanel;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
-public abstract class AbstractTasks extends Panel implements ModalPanel<Serializable> {
+public abstract class AbstractTasks extends Panel implements ModalPanel {
private static final long serialVersionUID = -4013796607157549641L;
public AbstractTasks(final String id) {
super(id);
}
-
- @Override
- public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void onError(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public Serializable getItem() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java
new file mode 100644
index 0000000..10545f1
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/ExecutionsDirectoryPanel.java
@@ -0,0 +1,232 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.tasks;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.commons.DirectoryDataProvider;
+import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
+import org.apache.syncope.client.console.panels.DirectoryPanel;
+import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
+import org.apache.syncope.client.console.panels.MultilevelPanel;
+import org.apache.syncope.client.console.panels.MultilevelPanel.SecondLevel;
+import org.apache.syncope.client.console.rest.ExecutionRestClient;
+import org.apache.syncope.client.console.tasks.ExecutionsDirectoryPanel.ExecProvider;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.KeyPropertyColumn;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.ExecTO;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.model.AbstractReadOnlyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.model.StringResourceModel;
+
+public abstract class ExecutionsDirectoryPanel
+ extends DirectoryPanel<ExecTO, ExecTO, ExecProvider, ExecutionRestClient> {
+
+ private static final long serialVersionUID = 2039393934721149162L;
+
+ private final BaseModal<?> baseModal;
+
+ private final MultilevelPanel multiLevelPanelRef;
+
+ private final String key;
+
+ public ExecutionsDirectoryPanel(
+ final MultilevelPanel multiLevelPanelRef,
+ final String key,
+ final ExecutionRestClient executionRestClient,
+ final PageReference pageRef) {
+ this(null, multiLevelPanelRef, key, executionRestClient, pageRef);
+ }
+
+ public ExecutionsDirectoryPanel(
+ final BaseModal<?> baseModal,
+ final MultilevelPanel multiLevelPanelRef,
+ final String key,
+ final ExecutionRestClient executionRestClient,
+ final PageReference pageRef) {
+ super(MultilevelPanel.FIRST_LEVEL_ID, pageRef, false);
+ this.baseModal = baseModal;
+ this.multiLevelPanelRef = multiLevelPanelRef;
+ restClient = executionRestClient;
+ setOutputMarkupId(true);
+ this.key = key;
+ initResultTable();
+ }
+
+ @Override
+ protected void resultTableCustomChanges(final AjaxDataTablePanel.Builder<ExecTO, String> resultTableBuilder) {
+ resultTableBuilder.setMultiLevelPanel(baseModal, multiLevelPanelRef);
+ }
+
+ protected abstract void next(final String title, final SecondLevel secondLevel, final AjaxRequestTarget target);
+
+ @Override
+ protected List<IColumn<ExecTO, String>> getColumns() {
+ final List<IColumn<ExecTO, String>> columns = new ArrayList<>();
+
+ columns.add(new KeyPropertyColumn<ExecTO>(new ResourceModel("key"), "key", "key"));
+
+ columns.add(new DatePropertyColumn<ExecTO>(new ResourceModel("start"), "start", "start"));
+
+ columns.add(new DatePropertyColumn<ExecTO>(new ResourceModel("end"), "end", "end"));
+
+ columns.add(new PropertyColumn<ExecTO, String>(new ResourceModel("status"), "status", "status"));
+
+ columns.add(new ActionColumn<ExecTO, String>(new ResourceModel("actions")) {
+
+ private static final long serialVersionUID = -3503023501954863131L;
+
+ @Override
+ public ActionLinksPanel<ExecTO> getActions(final String componentId, final IModel<ExecTO> model) {
+ final ExecTO taskExecutionTO = model.getObject();
+
+ final ActionLinksPanel.Builder<ExecTO> panel = ActionLinksPanel.builder();
+
+ panel.
+ add(new ActionLink<ExecTO>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ExecTO ignore) {
+ next(new StringResourceModel("execution.view", ExecutionsDirectoryPanel.this, model).
+ getObject(), new ExecMessage(model.getObject().getMessage()), target);
+ }
+ }, ActionLink.ActionType.VIEW, StandardEntitlement.TASK_READ).
+ add(new ActionLink<ExecTO>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ExecTO ignore) {
+ try {
+ restClient.deleteExecution(taskExecutionTO.getKey());
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ } catch (SyncopeClientException scce) {
+ error(scce.getMessage());
+ }
+ target.add(ExecutionsDirectoryPanel.this);
+ SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
+ }
+ }, ActionLink.ActionType.DELETE, StandardEntitlement.TASK_DELETE);
+
+ return panel.build(componentId, model.getObject());
+ }
+
+ @Override
+ public ActionLinksPanel<Serializable> getHeader(final String componentId) {
+ final ActionLinksPanel.Builder<Serializable> panel = ActionLinksPanel.builder();
+
+ return panel.add(new ActionLink<Serializable>() {
+
+ private static final long serialVersionUID = -7978723352517770644L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
+ if (target != null) {
+ target.add(container);
+ }
+ }
+ }, ActionLink.ActionType.RELOAD, StandardEntitlement.TASK_LIST).build(componentId);
+ }
+ });
+
+ return columns;
+ }
+
+ @Override
+ protected ExecProvider dataProvider() {
+ return new ExecProvider(key, rows);
+ }
+
+ @Override
+ protected String paginatorRowsKey() {
+ return Constants.PREF_TASK_EXECS_PAGINATOR_ROWS;
+ }
+
+ @Override
+ protected Collection<ActionLink.ActionType> getBulkActions() {
+ final List<ActionLink.ActionType> bulkActions = new ArrayList<>();
+ bulkActions.add(ActionLink.ActionType.DELETE);
+ return bulkActions;
+ }
+
+ protected class ExecProvider extends DirectoryDataProvider<ExecTO> {
+
+ private static final long serialVersionUID = 8943636537120648961L;
+
+ private final SortableDataProviderComparator<ExecTO> comparator;
+
+ private final String taskKey;
+
+ public ExecProvider(final String taskKey, final int paginatorRows) {
+ super(paginatorRows);
+ this.taskKey = taskKey;
+ comparator = new SortableDataProviderComparator<>(this);
+ }
+
+ public SortableDataProviderComparator<ExecTO> getComparator() {
+ return comparator;
+ }
+
+ @Override
+ public Iterator<ExecTO> iterator(final long first, final long count) {
+ final int page = ((int) first / paginatorRows);
+ List<ExecTO> list = restClient.listExecutions(taskKey, (page < 0 ? 0 : page) + 1, paginatorRows);
+ Collections.sort(list, comparator);
+ return list.iterator();
+ }
+
+ @Override
+ public long size() {
+ return restClient.countExecutions(taskKey);
+ }
+
+ @Override
+ public IModel<ExecTO> model(final ExecTO taskExecution) {
+
+ return new AbstractReadOnlyModel<ExecTO>() {
+
+ private static final long serialVersionUID = 7485475149862342421L;
+
+ @Override
+ public ExecTO getObject() {
+ return taskExecution;
+ }
+ };
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
index 03d62e7..6d8d6c7 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/NotificationTaskDirectoryPanel.java
@@ -50,7 +50,7 @@ import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.StringResourceModel;
public abstract class NotificationTaskDirectoryPanel
- extends TaskDirectoryPanel<NotificationTaskTO> implements ModalPanel<NotificationTaskTO> {
+ extends TaskDirectoryPanel<NotificationTaskTO> implements ModalPanel {
private static final long serialVersionUID = 4984337552918213290L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
index da36a28..2e83e6e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/PropagationTaskDirectoryPanel.java
@@ -53,7 +53,7 @@ import org.apache.wicket.model.StringResourceModel;
* Tasks page.
*/
public abstract class PropagationTaskDirectoryPanel
- extends TaskDirectoryPanel<PropagationTaskTO> implements ModalPanel<PropagationTaskTO> {
+ extends TaskDirectoryPanel<PropagationTaskTO> implements ModalPanel {
private static final long serialVersionUID = 4984337552918213290L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
index 709205a..14fc503 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskDirectoryPanel.java
@@ -62,7 +62,7 @@ import org.apache.wicket.model.StringResourceModel;
* @param <T> Sched task type.
*/
public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO>
- extends TaskDirectoryPanel<T> implements ModalPanel<T> {
+ extends TaskDirectoryPanel<T> implements ModalPanel {
private static final long serialVersionUID = 4984337552918213290L;
@@ -70,7 +70,7 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO>
protected T schedTaskTO;
- private final StartAtTogglePanel startAt;
+ private final TaskStartAtTogglePanel startAt;
protected SchedTaskDirectoryPanel(
final BaseModal<?> baseModal,
@@ -92,7 +92,7 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO>
initResultTable();
- startAt = new StartAtTogglePanel(container);
+ startAt = new TaskStartAtTogglePanel(container);
addInnerObject(startAt);
}
@@ -202,7 +202,8 @@ public abstract class SchedTaskDirectoryPanel<T extends SchedTaskTO>
@Override
public void onClick(final AjaxRequestTarget target, final T ignore) {
- startAt.setTaskTO(target, model.getObject());
+ startAt.setExecutionDetail(
+ model.getObject().getKey(), model.getObject().getName(), target);
startAt.toggle(target, true);
}
}, ActionLink.ActionType.EXECUTE, StandardEntitlement.TASK_EXECUTE).
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java
index 1f2e693..a85a248 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java
@@ -115,8 +115,8 @@ public class SchedTaskWizardBuilder<T extends SchedTaskTO> extends AjaxWizardBui
}
};
- private final IModel<List<String>> reconciliationFilterBuilderClasses =
- new LoadableDetachableModel<List<String>>() {
+ private final IModel<List<String>> reconciliationFilterBuilderClasses
+ = new LoadableDetachableModel<List<String>>() {
private static final long serialVersionUID = 5275935387613157437L;
@@ -147,8 +147,8 @@ public class SchedTaskWizardBuilder<T extends SchedTaskTO> extends AjaxWizardBui
};
public Profile(final SchedTaskTO taskTO) {
- AjaxTextFieldPanel name =
- new AjaxTextFieldPanel("name", "name", new PropertyModel<String>(taskTO, "name"), false);
+ AjaxTextFieldPanel name = new AjaxTextFieldPanel("name", "name", new PropertyModel<String>(taskTO, "name"),
+ false);
name.addRequiredLabel();
name.setEnabled(true);
add(name);
@@ -158,8 +158,8 @@ public class SchedTaskWizardBuilder<T extends SchedTaskTO> extends AjaxWizardBui
description.setEnabled(true);
add(description);
- AjaxCheckBoxPanel active =
- new AjaxCheckBoxPanel("active", "active", new PropertyModel<Boolean>(taskTO, "active"), false);
+ AjaxCheckBoxPanel active = new AjaxCheckBoxPanel("active", "active", new PropertyModel<Boolean>(taskTO,
+ "active"), false);
add(active);
AjaxDropDownChoicePanel<String> jobDelegateClassName = new AjaxDropDownChoicePanel<>(
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java
deleted file mode 100644
index 912fd5c..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.client.console.tasks;
-
-import java.io.Serializable;
-import java.util.Date;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.panels.TogglePanel;
-import org.apache.syncope.client.console.rest.TaskRestClient;
-import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
-import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel;
-import org.apache.syncope.client.console.wicket.markup.html.form.DateTimeFieldPanel;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.SyncopeConstants;
-import org.apache.syncope.common.lib.to.SchedTaskTO;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.Model;
-
-public class StartAtTogglePanel extends TogglePanel<Serializable> {
-
- private static final long serialVersionUID = -3195479265440591519L;
-
- private SchedTaskTO taskTO;
-
- public StartAtTogglePanel(final WebMarkupContainer container) {
- super("startAt");
-
- final Form<?> form = new Form<>("startAtForm");
- addInnerObject(form);
-
- final Model<Date> startAtDateModel = new Model<>();
-
- final DateTimeFieldPanel startAtDate = new DateTimeFieldPanel(
- "startAtDate", "startAtDate", startAtDateModel, SyncopeConstants.DATE_PATTERNS[3]);
-
- startAtDate.setReadOnly(true).hideLabel();
- form.add(startAtDate);
-
- final AjaxCheckBoxPanel startAtCheck = new AjaxCheckBoxPanel(
- "startAtCheck", "startAtCheck", new Model<>(false), false);
-
- form.add(startAtCheck);
-
- startAtCheck.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
-
- private static final long serialVersionUID = -1107858522700306810L;
-
- @Override
- protected void onUpdate(final AjaxRequestTarget target) {
- target.add(startAtDate.setModelObject(null).setReadOnly(!startAtCheck.getModelObject()));
- }
- });
-
- form.add(new AjaxSubmitLink("startAt", form) {
-
- private static final long serialVersionUID = -7978723352517770644L;
-
- @Override
- protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- try {
- new TaskRestClient().startExecution(taskTO.getKey(), startAtDateModel.getObject());
- info(getString(Constants.OPERATION_SUCCEEDED));
- toggle(target, false);
- target.add(container);
- } catch (SyncopeClientException e) {
- error(StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage());
- LOG.error("While running propagation task {}", taskTO.getKey(), e);
- }
- SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
- }
-
- @Override
- protected void onError(final AjaxRequestTarget target, final Form<?> form) {
- SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
- }
-
- });
- }
-
- public void setTaskTO(final AjaxRequestTarget target, final SchedTaskTO taskTO) {
- this.taskTO = taskTO;
- setHeader(target, taskTO.getName());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java
index 5484b8b..081d2dd 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskDirectoryPanel.java
@@ -32,7 +32,6 @@ import org.apache.syncope.common.lib.types.TaskType;
import org.apache.wicket.PageReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
-import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
@@ -42,7 +41,7 @@ import org.apache.wicket.model.IModel;
* @param <T> task type.
*/
public abstract class TaskDirectoryPanel<T extends AbstractTaskTO>
- extends DirectoryPanel<T, T, TaskDataProvider<T>, TaskRestClient> implements ModalPanel<T> {
+ extends DirectoryPanel<T, T, TaskDataProvider<T>, TaskRestClient> implements ModalPanel {
private static final long serialVersionUID = 4984337552918213290L;
@@ -64,22 +63,7 @@ public abstract class TaskDirectoryPanel<T extends AbstractTaskTO>
resultTableBuilder.setMultiLevelPanel(baseModal, multiLevelPanelRef);
}
- @Override
- public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public void onError(final AjaxRequestTarget target, final Form<?> form) {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- @Override
- public T getItem() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
-
- protected abstract void viewTask(T taskTO, AjaxRequestTarget target);
+ protected abstract void viewTask(final T taskTO, final AjaxRequestTarget target);
protected abstract class TasksProvider<T extends AbstractTaskTO> extends DirectoryDataProvider<T> {
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutionDetails.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutionDetails.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutionDetails.java
index e02e6c5..eb2254f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutionDetails.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutionDetails.java
@@ -19,6 +19,7 @@
package org.apache.syncope.client.console.tasks;
import org.apache.syncope.client.console.panels.MultilevelPanel;
+import org.apache.syncope.client.console.rest.TaskRestClient;
import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
import org.apache.syncope.common.lib.to.AbstractTaskTO;
import org.apache.wicket.PageReference;
@@ -39,7 +40,7 @@ public class TaskExecutionDetails<T extends AbstractTaskTO> extends MultilevelPa
final MultilevelPanel mlp = new MultilevelPanel("executions");
add(mlp);
- mlp.setFirstLevel(new TaskExecutions(baseModal, mlp, taskTO, pageRef) {
+ mlp.setFirstLevel(new ExecutionsDirectoryPanel(baseModal, mlp, taskTO.getKey(), new TaskRestClient(), pageRef) {
private static final long serialVersionUID = 5691719817252887541L;
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutions.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutions.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutions.java
deleted file mode 100644
index 84025e0..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskExecutions.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.client.console.tasks;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.commons.DirectoryDataProvider;
-import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
-import org.apache.syncope.client.console.panels.DirectoryPanel;
-import org.apache.syncope.client.console.panels.AjaxDataTablePanel;
-import org.apache.syncope.client.console.panels.MultilevelPanel;
-import org.apache.syncope.client.console.panels.MultilevelPanel.SecondLevel;
-import org.apache.syncope.client.console.rest.TaskRestClient;
-import org.apache.syncope.client.console.tasks.TaskExecutions.TaskExecProvider;
-import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
-import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.DatePropertyColumn;
-import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.KeyPropertyColumn;
-import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
-import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.AbstractTaskTO;
-import org.apache.syncope.common.lib.to.ExecTO;
-import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
-import org.apache.wicket.model.AbstractReadOnlyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.model.StringResourceModel;
-
-public abstract class TaskExecutions
- extends DirectoryPanel<ExecTO, ExecTO, TaskExecProvider, TaskRestClient> {
-
- private static final long serialVersionUID = 2039393934721149162L;
-
- private final BaseModal<?> baseModal;
-
- private final MultilevelPanel multiLevelPanelRef;
-
- protected TaskRestClient taskRestClient = new TaskRestClient();
-
- private final AbstractTaskTO taskTO;
-
- public TaskExecutions(
- final BaseModal<?> baseModal,
- final MultilevelPanel multiLevelPanelRef,
- final AbstractTaskTO taskTO,
- final PageReference pageRef) {
- super(MultilevelPanel.FIRST_LEVEL_ID, pageRef, false);
- this.baseModal = baseModal;
- this.multiLevelPanelRef = multiLevelPanelRef;
- restClient = taskRestClient;
- setOutputMarkupId(true);
- this.taskTO = taskTO;
- initResultTable();
- }
-
- @Override
- protected void resultTableCustomChanges(final AjaxDataTablePanel.Builder<ExecTO, String> resultTableBuilder) {
- resultTableBuilder.setMultiLevelPanel(baseModal, multiLevelPanelRef);
- }
-
- protected abstract void next(final String title, final SecondLevel secondLevel, final AjaxRequestTarget target);
-
- @Override
- protected List<IColumn<ExecTO, String>> getColumns() {
- final List<IColumn<ExecTO, String>> columns = new ArrayList<>();
-
- columns.add(new KeyPropertyColumn<ExecTO>(new ResourceModel("key"), "key", "key"));
-
- columns.add(new DatePropertyColumn<ExecTO>(new ResourceModel("start"), "start", "start"));
-
- columns.add(new DatePropertyColumn<ExecTO>(new ResourceModel("end"), "end", "end"));
-
- columns.add(new PropertyColumn<ExecTO, String>(new ResourceModel("status"), "status", "status"));
-
- columns.add(new ActionColumn<ExecTO, String>(new ResourceModel("actions")) {
-
- private static final long serialVersionUID = -3503023501954863131L;
-
- @Override
- public ActionLinksPanel<ExecTO> getActions(final String componentId, final IModel<ExecTO> model) {
- final ExecTO taskExecutionTO = model.getObject();
-
- final ActionLinksPanel.Builder<ExecTO> panel = ActionLinksPanel.builder();
-
- panel.
- add(new ActionLink<ExecTO>() {
-
- private static final long serialVersionUID = -3722207913631435501L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final ExecTO ignore) {
- next(new StringResourceModel("execution.view", TaskExecutions.this, model).getObject(),
- new ExecMessage(model.getObject().getMessage()), target);
- }
- }, ActionLink.ActionType.VIEW, StandardEntitlement.TASK_READ).
- add(new ActionLink<ExecTO>() {
-
- private static final long serialVersionUID = -3722207913631435501L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final ExecTO ignore) {
- try {
- restClient.deleteExecution(taskExecutionTO.getKey());
- taskTO.getExecutions().remove(taskExecutionTO);
- info(getString(Constants.OPERATION_SUCCEEDED));
- } catch (SyncopeClientException scce) {
- error(scce.getMessage());
- }
- target.add(TaskExecutions.this);
- SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
- }
- }, ActionLink.ActionType.DELETE, StandardEntitlement.TASK_DELETE);
-
- return panel.build(componentId, model.getObject());
- }
-
- @Override
- public ActionLinksPanel<Serializable> getHeader(final String componentId) {
- final ActionLinksPanel.Builder<Serializable> panel = ActionLinksPanel.builder();
-
- return panel.add(new ActionLink<Serializable>() {
-
- private static final long serialVersionUID = -7978723352517770644L;
-
- @Override
- public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
- if (target != null) {
- target.add(container);
- }
- }
- }, ActionLink.ActionType.RELOAD, StandardEntitlement.TASK_LIST).build(componentId);
- }
- });
-
- return columns;
- }
-
- @Override
- protected TaskExecProvider dataProvider() {
- return new TaskExecProvider(taskTO.getKey(), rows);
- }
-
- @Override
- protected String paginatorRowsKey() {
- return Constants.PREF_TASK_EXECS_PAGINATOR_ROWS;
- }
-
- @Override
- protected Collection<ActionLink.ActionType> getBulkActions() {
- final List<ActionLink.ActionType> bulkActions = new ArrayList<>();
- bulkActions.add(ActionLink.ActionType.DELETE);
- return bulkActions;
- }
-
- protected class TaskExecProvider extends DirectoryDataProvider<ExecTO> {
-
- private static final long serialVersionUID = 8943636537120648961L;
-
- private final SortableDataProviderComparator<ExecTO> comparator;
-
- private final String taskKey;
-
- public TaskExecProvider(final String taskKey, final int paginatorRows) {
- super(paginatorRows);
- this.taskKey = taskKey;
- comparator = new SortableDataProviderComparator<>(this);
- }
-
- public SortableDataProviderComparator<ExecTO> getComparator() {
- return comparator;
- }
-
- @Override
- public Iterator<ExecTO> iterator(final long first, final long count) {
- final int page = ((int) first / paginatorRows);
- List<ExecTO> list = taskRestClient.listExecutions(taskKey, (page < 0 ? 0 : page) + 1, paginatorRows);
- Collections.sort(list, comparator);
- return list.iterator();
- }
-
- @Override
- public long size() {
- return taskRestClient.countExecutions(taskKey);
- }
-
- @Override
- public IModel<ExecTO> model(final ExecTO taskExecution) {
-
- return new AbstractReadOnlyModel<ExecTO>() {
-
- private static final long serialVersionUID = 7485475149862342421L;
-
- @Override
- public ExecTO getObject() {
- return taskExecution;
- }
- };
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskStartAtTogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskStartAtTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskStartAtTogglePanel.java
new file mode 100644
index 0000000..5e250e2
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/TaskStartAtTogglePanel.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.tasks;
+
+import org.apache.syncope.client.console.panels.StartAtTogglePanel;
+import org.apache.syncope.client.console.rest.ExecutionRestClient;
+import org.apache.syncope.client.console.rest.TaskRestClient;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+
+public class TaskStartAtTogglePanel extends StartAtTogglePanel {
+
+ private static final long serialVersionUID = -3195479265440591519L;
+
+ public TaskStartAtTogglePanel(final WebMarkupContainer container) {
+ super(container);
+ }
+
+ @Override
+ protected ExecutionRestClient getRestClient() {
+ return new TaskRestClient();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
index 0025f79..bc62538 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/bootstrap/dialog/BaseModal.java
@@ -44,6 +44,7 @@ import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.apache.syncope.client.console.panels.SubmitableModalPanel;
public class BaseModal<T extends Serializable> extends Modal<T> {
@@ -123,21 +124,21 @@ public class BaseModal<T extends Serializable> extends Modal<T> {
return form.getModelObject();
}
- public ModalPanel<T> getContent() {
+ public ModalPanel getContent() {
if (content instanceof ModalPanel) {
- return (ModalPanel<T>) content;
+ return (ModalPanel) content;
}
throw new IllegalStateException();
}
- public BaseModal<T> setContent(final ModalPanel<T> component) {
+ public BaseModal<T> setContent(final ModalPanel component) {
if (component instanceof Panel) {
return setInternalContent(Panel.class.cast(component));
}
throw new IllegalArgumentException("Panel instance is required");
}
- public BaseModal<T> setContent(final ModalPanel<T> component, final AjaxRequestTarget target) {
+ public BaseModal<T> setContent(final ModalPanel component, final AjaxRequestTarget target) {
setContent(component);
target.add(content);
return this;
@@ -178,18 +179,22 @@ public class BaseModal<T extends Serializable> extends Modal<T> {
}
public AjaxSubmitLink addSubmitButton() {
+ if (!(BaseModal.this.getContent() instanceof SubmitableModalPanel)) {
+ throw new IllegalStateException();
+ }
+
AjaxSubmitLink submit = new AjaxSubmitLink(SUBMIT, form) {
private static final long serialVersionUID = -5783994974426198290L;
@Override
protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
- BaseModal.this.getContent().onSubmit(target, form);
+ SubmitableModalPanel.class.cast(BaseModal.this.getContent()).onSubmit(target, form);
}
@Override
protected void onError(final AjaxRequestTarget target, final Form<?> form) {
- BaseModal.this.getContent().onError(target, form);
+ SubmitableModalPanel.class.cast(BaseModal.this.getContent()).onError(target, form);
}
};
http://git-wip-us.apache.org/repos/asf/syncope/blob/ae52b12e/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
index 730bf9c..0d9c074 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
@@ -47,6 +47,7 @@ public abstract class ActionLink<T extends Serializable> implements Serializable
CREATE("create"),
EDIT("read"),
TYPE_EXTENSIONS("read"),
+ FO_EDIT("read"),
HTML_EDIT("read"),
TEXT_EDIT("read"),
LAYOUT_EDIT("read"),