/*
* Copyright (c) 2010-2015 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 java.io.Serializable;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import com.evolveum.midpoint.web.page.admin.configuration.PageSystemConfiguration;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ClassLoggerConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ProfilingConfigurationType;
/**
*
* @author katkav
*
*/
public class ProfilingDto implements Serializable {
private boolean profilingEnabled;
private boolean requestFilter;
private boolean performanceStatistics;
private boolean subsystemModel;
private boolean subsystemRepository;
private boolean subsystemProvisioning;
private boolean subsystemUcf;
private boolean subsystemSynchronizationService;
private boolean subsystemTaskManager;
private boolean subsystemWorkflow;
private Integer dumpInterval;
private ProfilingLevel profilingLevel;
private String profilingAppender;
private List<AppenderConfiguration> appenders;
public static final String LOGGER_PROFILING = "PROFILING";
public ProfilingDto() {
this(null, null);
}
public ProfilingDto(ProfilingConfigurationType profiling,
List<ClassLoggerConfigurationType> classLoggerConfig) {
init(profiling, classLoggerConfig);
}
private void init(ProfilingConfigurationType profilingConfiguration,
List<ClassLoggerConfigurationType> classLoggerConfig) {
if (profilingConfiguration != null) {
profilingEnabled = checkXsdBooleanValue(profilingConfiguration.isEnabled());
requestFilter = checkXsdBooleanValue(profilingConfiguration.isRequestFilter());
performanceStatistics = checkXsdBooleanValue(profilingConfiguration.isPerformanceStatistics());
subsystemModel = checkXsdBooleanValue(profilingConfiguration.isModel());
subsystemProvisioning = checkXsdBooleanValue(profilingConfiguration.isProvisioning());
subsystemRepository = checkXsdBooleanValue(profilingConfiguration.isRepository());
subsystemSynchronizationService = checkXsdBooleanValue(profilingConfiguration.isSynchronizationService());
subsystemTaskManager = checkXsdBooleanValue(profilingConfiguration.isTaskManager());
subsystemUcf = checkXsdBooleanValue(profilingConfiguration.isUcf());
subsystemWorkflow = checkXsdBooleanValue(profilingConfiguration.isWorkflow());
if (profilingConfiguration.getDumpInterval() != null) {
dumpInterval = profilingConfiguration.getDumpInterval();
}
}
if (classLoggerConfig == null) {
return;
}
for (ClassLoggerConfigurationType logger : classLoggerConfig) {
if (LOGGER_PROFILING.equals(logger.getPackage())) {
setProfilingAppender(logger.getAppender() != null && logger.getAppender().size() > 0
? logger.getAppender().get(0) : null);
setProfilingLevel(ProfilingLevel.fromLoggerLevelType(logger.getLevel()));
continue;
}
}
}
public ClassLoggerConfigurationType getProfilingClassLogerConfig() {
if (getProfilingLevel() != null) {
ClassLoggerConfigurationType type = new ClassLoggerConfigurationType();
type.setPackage(ProfilingDto.LOGGER_PROFILING);
type.setLevel(ProfilingLevel.toLoggerLevelType(getProfilingLevel()));
if (StringUtils.isEmpty(getProfilingAppender())) {
return type;
}
if (StringUtils.isNotEmpty(getProfilingAppender())
|| !(PageSystemConfiguration.ROOT_APPENDER_INHERITANCE_CHOICE
.equals(getProfilingAppender()))) {
type.getAppender().add(getProfilingAppender());
}
return type;
}
return null;
}
public ProfilingConfigurationType getNewObject() {
ProfilingConfigurationType config = new ProfilingConfigurationType();
if (isProfilingEnabled() || isPerformanceStatistics() || isRequestFilter()
|| isSubsystemModel() || isSubsystemRepository()
|| isSubsystemProvisioning() || isSubsystemSynchronizationService() || isSubsystemUcf()
|| isSubsystemTaskManager() || isSubsystemWorkflow())
config.setEnabled(true);
else
config.setEnabled(false);
config.setDumpInterval(getDumpInterval());
config.setPerformanceStatistics(isPerformanceStatistics());
config.setRequestFilter(isRequestFilter());
config.setModel(isSubsystemModel());
config.setProvisioning(isSubsystemProvisioning());
config.setRepository(isSubsystemRepository());
config.setUcf(isSubsystemUcf());
config.setSynchronizationService(isSubsystemSynchronizationService());
config.setTaskManager(isSubsystemTaskManager());
config.setWorkflow(isSubsystemWorkflow());
return config;
}
public List<AppenderConfiguration> getAppenders() {
return appenders;
}
public void setAppenders(List<AppenderConfiguration> appenders) {
this.appenders = appenders;
}
private static boolean checkXsdBooleanValue(Boolean value) {
if (value == null || !value)
return false;
else
return true;
}
public boolean isRequestFilter() {
return requestFilter;
}
public void setRequestFilter(boolean requestFilter) {
this.requestFilter = requestFilter;
}
public boolean isPerformanceStatistics() {
return performanceStatistics;
}
public void setPerformanceStatistics(boolean performanceStatistics) {
this.performanceStatistics = performanceStatistics;
}
public boolean isSubsystemModel() {
return subsystemModel;
}
public void setSubsystemModel(boolean subsystemModel) {
this.subsystemModel = subsystemModel;
}
public boolean isSubsystemRepository() {
return subsystemRepository;
}
public void setSubsystemRepository(boolean subsystemRepository) {
this.subsystemRepository = subsystemRepository;
}
public boolean isSubsystemProvisioning() {
return subsystemProvisioning;
}
public void setSubsystemProvisioning(boolean subsystemProvisioning) {
this.subsystemProvisioning = subsystemProvisioning;
}
public boolean isSubsystemUcf() {
return subsystemUcf;
}
public void setSubsystemUcf(boolean subsystemUcf) {
this.subsystemUcf = subsystemUcf;
}
public boolean isSubsystemSynchronizationService() {
return subsystemSynchronizationService;
}
public void setSubsystemSynchronizationService(boolean subsystemSynchronizationService) {
this.subsystemSynchronizationService = subsystemSynchronizationService;
}
public boolean isSubsystemTaskManager() {
return subsystemTaskManager;
}
public void setSubsystemTaskManager(boolean subsystemTaskManager) {
this.subsystemTaskManager = subsystemTaskManager;
}
public boolean isSubsystemWorkflow() {
return subsystemWorkflow;
}
public void setSubsystemWorkflow(boolean subsystemWorkflow) {
this.subsystemWorkflow = subsystemWorkflow;
}
public Integer getDumpInterval() {
return dumpInterval;
}
public void setDumpInterval(Integer dumpInterval) {
this.dumpInterval = dumpInterval;
}
public boolean isProfilingEnabled() {
return profilingEnabled;
}
public void setProfilingEnabled(boolean profilingEnabled) {
this.profilingEnabled = profilingEnabled;
}
public String getProfilingAppender() {
return profilingAppender;
}
public void setProfilingAppender(String profilingAppender) {
this.profilingAppender = profilingAppender;
}
public ProfilingLevel getProfilingLevel() {
return profilingLevel;
}
public void setProfilingLevel(ProfilingLevel profilingLevel) {
this.profilingLevel = profilingLevel;
}
}