From d0eb0250c92c888fbcb85d239ae15570199c72f9 Mon Sep 17 00:00:00 2001 From: Erik Suta Date: Fri, 16 May 2014 12:28:44 +0200 Subject: [PATCH 1/2] MID-954 - finishing SystemConfig pages. Not done yet. --- .../component/SystemConfigPanel.html | 45 +++--- .../component/SystemConfigPanel.java | 42 +++++- .../component/SystemConfigPanel.properties | 1 + .../dto/NotificationConfigurationDto.java | 136 ++++++++++++++++++ .../dto/SystemConfigurationDto.java | 13 ++ 5 files changed, 211 insertions(+), 26 deletions(-) create mode 100644 gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/NotificationConfigurationDto.java diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.html index 57b16278ce0..6a2a76b302a 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.html @@ -98,7 +98,7 @@

- +
@@ -109,7 +109,7 @@

@@ -122,7 +122,7 @@

-

@@ -132,7 +132,7 @@

-
@@ -142,7 +142,7 @@

-
@@ -152,23 +152,25 @@

-
-
- -
- -
-
+ + + + + + + + + + + + + +

@@ -178,11 +180,8 @@

-
- -
+

diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.java index 36ecadf0e17..e4866d2ffd4 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.java @@ -18,17 +18,18 @@ import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; +import com.evolveum.midpoint.web.component.form.DropDownFormGroup; import com.evolveum.midpoint.web.component.util.SimplePanel; import com.evolveum.midpoint.web.page.admin.configuration.dto.AEPlevel; import com.evolveum.midpoint.web.page.admin.configuration.dto.SystemConfigurationDto; import com.evolveum.midpoint.web.page.admin.dto.ObjectViewDto; import com.evolveum.midpoint.web.util.TooltipBehavior; import com.evolveum.midpoint.web.util.WebMiscUtil; +import com.evolveum.midpoint.xml.ns._public.common.common_3.MailTransportSecurityType; +import com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.DropDownChoice; -import org.apache.wicket.markup.html.form.EnumChoiceRenderer; -import org.apache.wicket.markup.html.form.TextField; +import org.apache.wicket.markup.html.form.*; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; @@ -47,6 +48,18 @@ public class SystemConfigPanel extends SimplePanel { private static final String ID_CLEANUP_AUDIT_RECORDS_TOOLTIP = "auditRecordsCleanupTooltip"; private static final String ID_CLEANUP_CLOSED_TASKS_TOOLTIP = "closedTasksCleanupTooltip"; + private static final String ID_DEFAULT_FROM = "defaultFrom"; + private static final String ID_DEBUG = "debugCheckbox"; + private static final String ID_HOST = "host"; + private static final String ID_PORT = "port"; + private static final String ID_USERNAME = "username"; + private static final String ID_PASSWORD = "password"; + private static final String ID_TRANSPORT_SECURITY = "transportSecurity"; + private static final String ID_REDIRECT_TO_FILE = "redirectToFile"; + + private static final String ID_LABEL_SIZE = "col-lg-4"; + private static final String ID_INPUT_SIZE = "col-lg-4"; + private ChooseTypePanel passPolicyChoosePanel; private ChooseTypePanel userTemplateChoosePanel; @@ -81,6 +94,29 @@ protected void initLayout(){ createTooltip(ID_CLEANUP_AUDIT_RECORDS_TOOLTIP, this); createTooltip(ID_CLEANUP_CLOSED_TASKS_TOOLTIP, this); + + TextField defaultFromField = new TextField(ID_DEFAULT_FROM, new PropertyModel(getModel(), "notificationConfig.defaultFrom")); + CheckBox debugCheck = new CheckBox(ID_DEBUG, new PropertyModel(getModel(), "notificationConfig.debug")); + TextField hostField = new TextField(ID_HOST, new PropertyModel(getModel(), "notificationConfig.host")); + TextField portField = new TextField(ID_PORT, new PropertyModel(getModel(), "notificationConfig.port")); + TextField userNameField = new TextField(ID_USERNAME, new PropertyModel(getModel(), "notificationConfig.username")); + PasswordTextField passwordField = new PasswordTextField(ID_PASSWORD, new PropertyModel(getModel(), "notificationConfig.password")); + TextField redirectToFileField = new TextField(ID_REDIRECT_TO_FILE, new PropertyModel(getModel(), "notificationConfig.redirectToFile")); + + IModel choices = WebMiscUtil.createReadonlyModelFromEnum(MailTransportSecurityType.class); + IChoiceRenderer renderer = new EnumChoiceRenderer(); + DropDownFormGroup transportSecurity = new DropDownFormGroup(ID_TRANSPORT_SECURITY, new PropertyModel(getModel(), + "notificationConfig.mailTransportSecurityType"), choices, renderer, + createStringResource("SystemConfigPanel.mail.transportSecurity"),ID_LABEL_SIZE, ID_INPUT_SIZE, false); + + add(defaultFromField); + add(debugCheck); + add(hostField); + add(portField); + add(userNameField); + add(passwordField); + add(redirectToFileField); + add(transportSecurity); } private void createTooltip(String id, WebMarkupContainer parent) { diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.properties b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.properties index 6fe146ec948..30c857ae046 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.properties +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.properties @@ -33,4 +33,5 @@ SystemConfigPanel.mail.username=Username SystemConfigPanel.mail.password=Password SystemConfigPanel.mail.transportSecurity=Transport security SystemConfigPanel.notification.redirectToFile=Redirect to file +SystemConfigPanel.notification.redirectToFile.placeholder=Filename SystemConfigPanel.tooltip.duration=Format: P[n][p], n-number, p-period (d - days, m - months, ...), P3M - cleanup every 3 months diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/NotificationConfigurationDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/NotificationConfigurationDto.java new file mode 100644 index 00000000000..c6256cd77f1 --- /dev/null +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/NotificationConfigurationDto.java @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2010-2013 Evolveum + * + * Licensed 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 com.evolveum.midpoint.web.page.admin.configuration.dto; + +import com.evolveum.midpoint.web.util.WebMiscUtil; +import com.evolveum.midpoint.xml.ns._public.common.common_3.MailConfigurationType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.MailServerConfigurationType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.MailTransportSecurityType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.NotificationConfigurationType; +import com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType; + +import java.io.Serializable; + +/** + * @author shood + * + * TODO - contains only fields for e-mail configuration + * */ +public class NotificationConfigurationDto implements Serializable{ + +// public static final String F_DEFAULT_FROM = "defaultFrom"; +// public static final String F_DEBUG = "debug"; +// public static final String F_REDIRECT_TO_FILE = "redirectToFile"; +// public static final String F_HOST = "host"; +// public static final String F_PORT = "port"; +// public static final String F_USERNAME = "username"; +// public static final String F_PASSWORD = "password"; +// public static final String F_MAILTST = "mailTransportSecurityType"; + + private String defaultFrom; + private boolean debug; + private String redirectToFile; + private String host; + private Integer port; + private String username; + private String password; + private MailTransportSecurityType mailTransportSecurityType; + + public NotificationConfigurationDto(NotificationConfigurationType config){ + + if(config.getMail() != null){ + MailConfigurationType mailConfig = config.getMail(); + + defaultFrom = mailConfig.getDefaultFrom(); + debug = mailConfig.isDebug(); + redirectToFile = mailConfig.getRedirectToFile(); + + if(!mailConfig.getServer().isEmpty() && mailConfig.getServer().get(0) != null){ + MailServerConfigurationType serverConfig = mailConfig.getServer().get(0); + + host = serverConfig.getHost(); + port = serverConfig.getPort(); + username = serverConfig.getUsername(); + password = serverConfig.getPassword().getClearValue(); + mailTransportSecurityType = serverConfig.getTransportSecurity(); + } + } + } + + public String getDefaultFrom() { + return defaultFrom; + } + + public void setDefaultFrom(String defaultFrom) { + this.defaultFrom = defaultFrom; + } + + public boolean isDebug() { + return debug; + } + + public void setDebug(boolean debug) { + this.debug = debug; + } + + public String getRedirectToFile() { + return redirectToFile; + } + + public void setRedirectToFile(String redirectToFile) { + this.redirectToFile = redirectToFile; + } + + public String getHost() { + return host; + } + + public void setHost(String host) { + this.host = host; + } + + public Integer getPort() { + return port; + } + + public void setPort(Integer port) { + this.port = port; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public MailTransportSecurityType getMailTransportSecurityType() { + return mailTransportSecurityType; + } + + public void setMailTransportSecurityType(MailTransportSecurityType mailTransportSecurityType) { + this.mailTransportSecurityType = mailTransportSecurityType; + } +} diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/SystemConfigurationDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/SystemConfigurationDto.java index 1fba0523ad0..dc935e693c9 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/SystemConfigurationDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/SystemConfigurationDto.java @@ -35,6 +35,7 @@ public class SystemConfigurationDto implements Serializable { private ObjectViewDto passPolicyDto; private ObjectViewDto objectTemplateDto; + private NotificationConfigurationDto notificationConfig; public SystemConfigurationDto(){ this(null); @@ -62,6 +63,10 @@ private void init(SystemConfigurationType config){ passPolicyDto = loadPasswordPolicy(config); objectTemplateDto = loadObjectTemplate(config); + + if(config.getNotificationConfiguration() != null){ + notificationConfig = new NotificationConfigurationDto(config.getNotificationConfiguration()); + } } private ObjectViewDto loadPasswordPolicy(SystemConfigurationType config){ @@ -129,4 +134,12 @@ public ObjectViewDto getObjectTemplateDto() { public void setObjectTemplateDto(ObjectViewDto objectTemplateDto) { this.objectTemplateDto = objectTemplateDto; } + + public NotificationConfigurationDto getNotificationConfig() { + return notificationConfig; + } + + public void setNotificationConfig(NotificationConfigurationDto notificationConfig) { + this.notificationConfig = notificationConfig; + } } From d4f56c73068ea5d62cfecd0dcfa58598ba89a7de Mon Sep 17 00:00:00 2001 From: Erik Suta Date: Fri, 16 May 2014 15:12:55 +0200 Subject: [PATCH 2/2] MID-954 - very basic mail notification configuration implemented. --- .../PageSystemConfiguration.java | 63 +++++++++++++++++++ .../component/SystemConfigPanel.html | 13 ---- .../component/SystemConfigPanel.java | 2 +- .../dto/NotificationConfigurationDto.java | 20 +++--- .../dto/SystemConfigurationDto.java | 2 + 5 files changed, 77 insertions(+), 23 deletions(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java index 6b7e4c7eed3..c678b016c11 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java @@ -40,6 +40,7 @@ import com.evolveum.midpoint.web.util.WebMiscUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; +import com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType; import org.apache.commons.lang.StringUtils; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.markup.html.tabs.AbstractTab; @@ -313,6 +314,7 @@ private void savePerformed(AjaxRequestTarget target) { SystemConfigurationType s = newObject.asObjectable(); s = saveLogging(target, s); + s = saveNotificationConfiguration(s); if(LOGGER.isTraceEnabled()) LOGGER.trace("Saving logging configuration."); @@ -357,6 +359,67 @@ private void savePerformed(AjaxRequestTarget target) { resetPerformed(target); } + /* + * TODO - currently, we are saving changes to MailServerConfigType on index 0 in ArrayList. This will + * change when GUI is update to define multiple mailServer or even SMS notifications + * */ + private SystemConfigurationType saveNotificationConfiguration(SystemConfigurationType config){ + NotificationConfigurationDto dto; + NotificationConfigurationType notificationConfig; + MailConfigurationType mailConfig; + MailServerConfigurationType mailServerConfig; + + if(systemConfigPanel.getModel().getObject().getNotificationConfig() != null){ + dto = systemConfigPanel.getModel().getObject().getNotificationConfig(); + + if(config.getNotificationConfiguration() != null){ + notificationConfig = config.getNotificationConfiguration(); + } else { + notificationConfig = new NotificationConfigurationType(); + } + + if(notificationConfig.getMail() != null){ + mailConfig = notificationConfig.getMail(); + } else { + mailConfig = new MailConfigurationType(); + } + + mailConfig.setDebug(dto.isDebug()); + mailConfig.setDefaultFrom(dto.getDefaultFrom()); + mailConfig.setRedirectToFile(dto.getRedirectToFile()); + + if(!mailConfig.getServer().isEmpty() && mailConfig.getServer().get(0) != null){ + mailServerConfig = mailConfig.getServer().get(0); + } else { + mailServerConfig = new MailServerConfigurationType(); + } + + mailServerConfig.setHost(dto.getHost()); + mailServerConfig.setPort(dto.getPort()); + mailServerConfig.setUsername(dto.getUsername()); + mailServerConfig.setTransportSecurity(dto.getMailTransportSecurityType()); + + ProtectedStringType pass = new ProtectedStringType(); + pass.setClearValue(dto.getPassword()); + mailServerConfig.setPassword(pass); + + if(mailConfig.getServer().isEmpty()){ + if(dto.isConfigured()) + mailConfig.getServer().add(0, mailServerConfig); + } else { + if(dto.isConfigured()) + mailConfig.getServer().set(0, mailServerConfig); + else + mailConfig.getServer().remove(0); + } + + notificationConfig.setMail(mailConfig); + config.setNotificationConfiguration(notificationConfig); + } + + return config; + } + private SystemConfigurationType saveLogging(AjaxRequestTarget target, SystemConfigurationType config){ LoggingDto loggingDto = null; LoggingConfigurationType loggingConfig = null; diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.html index 6a2a76b302a..6a99c63b435 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.html +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.html @@ -157,19 +157,6 @@

- - - - - - - - - - - - -

diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.java index c159ab69faf..ff3dc276535 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/SystemConfigPanel.java @@ -26,7 +26,6 @@ import com.evolveum.midpoint.web.util.InfoTooltipBehavior; import com.evolveum.midpoint.web.util.WebMiscUtil; import com.evolveum.midpoint.xml.ns._public.common.common_3.MailTransportSecurityType; -import com.evolveum.prism.xml.ns._public.types_3.ProtectedStringType; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.*; @@ -101,6 +100,7 @@ protected void initLayout(){ TextField portField = new TextField(ID_PORT, new PropertyModel(getModel(), "notificationConfig.port")); TextField userNameField = new TextField(ID_USERNAME, new PropertyModel(getModel(), "notificationConfig.username")); PasswordTextField passwordField = new PasswordTextField(ID_PASSWORD, new PropertyModel(getModel(), "notificationConfig.password")); + passwordField.setRequired(false); TextField redirectToFileField = new TextField(ID_REDIRECT_TO_FILE, new PropertyModel(getModel(), "notificationConfig.redirectToFile")); IModel choices = WebMiscUtil.createReadonlyModelFromEnum(MailTransportSecurityType.class); diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/NotificationConfigurationDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/NotificationConfigurationDto.java index c6256cd77f1..49fb4342119 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/NotificationConfigurationDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/NotificationConfigurationDto.java @@ -31,15 +31,6 @@ * */ public class NotificationConfigurationDto implements Serializable{ -// public static final String F_DEFAULT_FROM = "defaultFrom"; -// public static final String F_DEBUG = "debug"; -// public static final String F_REDIRECT_TO_FILE = "redirectToFile"; -// public static final String F_HOST = "host"; -// public static final String F_PORT = "port"; -// public static final String F_USERNAME = "username"; -// public static final String F_PASSWORD = "password"; -// public static final String F_MAILTST = "mailTransportSecurityType"; - private String defaultFrom; private boolean debug; private String redirectToFile; @@ -49,6 +40,8 @@ public class NotificationConfigurationDto implements Serializable{ private String password; private MailTransportSecurityType mailTransportSecurityType; + public NotificationConfigurationDto(){} + public NotificationConfigurationDto(NotificationConfigurationType config){ if(config.getMail() != null){ @@ -70,6 +63,15 @@ public NotificationConfigurationDto(NotificationConfigurationType config){ } } + public boolean isConfigured(){ + if(defaultFrom == null && redirectToFile == null && host == null + && port == null && username == null && password == null && mailTransportSecurityType == null){ + return false; + } + + return true; + } + public String getDefaultFrom() { return defaultFrom; } diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/SystemConfigurationDto.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/SystemConfigurationDto.java index dc935e693c9..d9b4ae49133 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/SystemConfigurationDto.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/dto/SystemConfigurationDto.java @@ -66,6 +66,8 @@ private void init(SystemConfigurationType config){ if(config.getNotificationConfiguration() != null){ notificationConfig = new NotificationConfigurationDto(config.getNotificationConfiguration()); + } else { + notificationConfig = new NotificationConfigurationDto(); } }