com.enonic.vertical.adminweb.PropertiesInfoModelFactory.java Source code

Java tutorial

Introduction

Here is the source code for com.enonic.vertical.adminweb.PropertiesInfoModelFactory.java

Source

/*
 * Copyright 2000-2013 Enonic AS
 * http://www.enonic.com/license
 */

package com.enonic.vertical.adminweb;

import java.util.Map;
import java.util.Properties;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;

import com.google.common.base.Predicate;
import com.google.common.collect.Maps;

import com.enonic.cms.core.tools.DataSourceInfoResolver;
import com.enonic.cms.core.vhost.VirtualHostResolver;

public class PropertiesInfoModelFactory {
    private DataSourceInfoResolver dataSourceInfoResolver;

    private Properties configurationProperties;

    private Properties virtualHosts;

    public PropertiesInfoModelFactory(DataSourceInfoResolver dataSourceInfoResolver,
            Properties configurationProperties, final Properties virtualHosts) {
        this.dataSourceInfoResolver = dataSourceInfoResolver;
        this.configurationProperties = configurationProperties;
        this.virtualHosts = virtualHosts;
    }

    public PropertiesInfoModel createSystemPropertiesModel() {

        PropertiesInfoModel infoModel = new PropertiesInfoModel();

        try {
            infoModel.setSystemProperties(System.getProperties());
            infoModel.setDatasourceProperties(this.dataSourceInfoResolver.getInfo(false));
            infoModel.setConfigurationProperties(getConfigurationProperties());
            infoModel.setVhostProperties(virtualHosts);
        } catch (Exception e) {
            throw new VerticalAdminException("Not able to create properties-model", e);
        }

        return infoModel;
    }

    private Map<Object, Object> getConfigurationProperties() {
        return stripPasswords(this.configurationProperties);
    }

    private Properties stripPasswords(Properties secretProperties) {
        Properties publicProperties = new Properties();
        for (Map.Entry<Object, Object> prop : secretProperties.entrySet()) {
            if (prop.getKey() instanceof String) {
                String key = (String) prop.getKey();
                if (key.matches(".*[Pp][Aa][Ss][Ss][Ww][Oo][Rr][Dd]$")) {
                    publicProperties.put(key, "****");
                } else {
                    publicProperties.put(key, prop.getValue());
                }
            } else {
                publicProperties.put(prop.getKey(), prop.getValue());
            }
        }

        return publicProperties;
    }

}