All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kawanfw.sql.servlet.injection.properties.ConfProperties Maven / Gradle / Ivy

/*
 * Copyright (c)2022 KawanSoft S.A.S. All rights reserved.
 * 
 * Use of this software is governed by the Business Source License included
 * in the LICENSE.TXT file in the project's root directory.
 *
 * Change Date: 2026-11-01
 *
 * On the date above, in accordance with the Business Source License, use
 * of this software will be governed by version 2.0 of the Apache License.
 */
package org.kawanfw.sql.servlet.injection.properties;

import java.util.HashSet;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

/**
 * All decoded Properties ready to use.
 * @author Nicolas de Pomereu
 *
 */

public class ConfProperties {

    /** The database names */
    private Set databaseSet = null;

    /** The (Database name, databaseConfiguratorClassName) Map */
    private Map databaseConfiguratorClassNameMap = new ConcurrentHashMap<>();

    private String servletCallName = null;

    private String blobDownloadConfiguratorClassName = null;
    private String blobUploadConfiguratorClassName = null;

    private String userAuthenticatorClassName = null;
    private String requestHeadersAuthenticatorClassName = null;

    private String sessionConfiguratorClassName = null;
    private String jwtSessionConfiguratorSecretValue = null;
    private Set userServlets = new HashSet<>();

    private Map> sqlFirewallManagerClassNamesMap = new ConcurrentHashMap<>();
    private boolean statelessMode;
    
    private Map> sqlFirewallTriggerClassNamesMap = new ConcurrentHashMap<>(); 
    private Map> updateListenerClassNamesMap = new ConcurrentHashMap<>();

    private Map operationalModeMap =  new ConcurrentHashMap<>(); 

    private ConfProperties(ConfPropertiesBuilder confPropertiesBuilder) {
	this.databaseSet = confPropertiesBuilder.databaseSet;
	this.databaseConfiguratorClassNameMap = confPropertiesBuilder.databaseConfiguratorClassNameMap;

	this.servletCallName = confPropertiesBuilder.servletCallName;
	
	this.blobDownloadConfiguratorClassName = confPropertiesBuilder.blobDownloadConfiguratorClassName;
	this.blobUploadConfiguratorClassName = confPropertiesBuilder.blobUploadConfiguratorClassName;

	this.userAuthenticatorClassName = confPropertiesBuilder.userAuthenticatorClassName;
	this.requestHeadersAuthenticatorClassName = confPropertiesBuilder.requestHeadersAuthenticatorClassName;

	this.sessionConfiguratorClassName = confPropertiesBuilder.sessionConfiguratorClassName;
	this.jwtSessionConfiguratorSecretValue = confPropertiesBuilder.jwtSessionConfiguratorSecretValue;
	this.userServlets = confPropertiesBuilder.userServlets;

	this.sqlFirewallManagerClassNamesMap = confPropertiesBuilder.sqlFirewallManagerClassNamesMap;
	this.statelessMode = confPropertiesBuilder.statelessMode;
	
	this.sqlFirewallTriggerClassNamesMap = confPropertiesBuilder.sqlFirewallTriggerClassNamesMap;
	this.updateListenerClassNamesMap = confPropertiesBuilder.updateListenerClassNamesMap;
	
	this.operationalModeMap = confPropertiesBuilder.operationalModeMap;
    }

    /**
     * @return the databaseSet
     */
    public Set getDatabaseNames() {
	return databaseSet;
    }

    /**
     * @return the databaseConfiguratorClassNameMap
     */
    @SuppressWarnings("unused")
    private Map getDatabaseConfiguratorClassNameMap() {
	return databaseConfiguratorClassNameMap;
    }
    
    /**
     * Returns the Database configurator class name for the specified database
     * @param database
     * @return the Database configurator class name for the specified database
     */
    public String getDatabaseConfiguratorClassName(String database) {
	return databaseConfiguratorClassNameMap.get(database);
    }

 
    /**
     * @return the servletCallName
     */
    public String getServletCallName() {
	return servletCallName;
    }

    /**
     * @return the blobDownloadConfiguratorClassName
     */
    public String getBlobDownloadConfiguratorClassName() {
	return blobDownloadConfiguratorClassName;
    }

    /**
     * @return the blobUploadConfiguratorClassName
     */
    public String getBlobUploadConfiguratorClassName() {
	return blobUploadConfiguratorClassName;
    }

    /**
     * @return the userAuthenticatorClassName
     */
    public String getUserAuthenticatorClassName() {
	return userAuthenticatorClassName;
    }

    /**
     * @return the requestHeadersAuthenticatorClassName
     */
    public String getRequestHeadersAuthenticatorClassName() {
	return requestHeadersAuthenticatorClassName;
    }

    /**
     * @return the sessionConfiguratorClassName
     */
    public String getSessionConfiguratorClassName() {
	return sessionConfiguratorClassName;
    }

    /**
     * @return the jwtSessionConfiguratorSecretValue
     */
    public String getJwtSessionConfiguratorSecretValue() {
	return jwtSessionConfiguratorSecretValue;
    }

    /**
     * @return the userServlets
     */
    public Set getUserServlets() {
	return userServlets;
    }

    /**
     * @return the sqlFirewallManagerClassNamesMap
     */
    @SuppressWarnings("unused")
    private Map> getSqlFirewallManagerClassNamesMap() {
	return sqlFirewallManagerClassNamesMap;
    }

    public Set getSqlFirewallManagerClassNames(String database) {
	return sqlFirewallManagerClassNamesMap.get(database);
    }
    
    
    public Set getSqlFirewallTriggerClassNames(String database) {
	return sqlFirewallTriggerClassNamesMap.get(database);
    }
    
    /**
     * @return the statelessMode
     */
    public boolean isStatelessMode() {
	return statelessMode;
    }
    
    public Map getOperationalModeMap() {
	return operationalModeMap;
    }

    public OperationalMode getOperationalModeMap(String database) {
	Objects.requireNonNull(database, "database cannnot be null!");
	return operationalModeMap.get(database);
    }

 
    /**
     * @return the sqlFirewallTriggerClassNamesMap
     */
    @SuppressWarnings("unused")
    private Map> getSqlFirewallTriggerClassNamesMap() {
        return sqlFirewallTriggerClassNamesMap;
    }

    /**
     * @return the updateListenerClassNamesMap
     */
    @SuppressWarnings("unused")
    private Map> getUpdateListenerClassNamesMap() {
        return updateListenerClassNamesMap;
    }

    public Set getUpdateListenerClassNames(String database) {
	return updateListenerClassNamesMap.get(database);
    }

    public static class ConfPropertiesBuilder {
	/** The database names */
	private Set databaseSet = null;

	/** The (Database name, databaseConfiguratorClassName) Map */
	private Map databaseConfiguratorClassNameMap = new ConcurrentHashMap<>();

	private String servletCallName = null;
	
	private String blobDownloadConfiguratorClassName = null;
	private String blobUploadConfiguratorClassName = null;

	private String userAuthenticatorClassName = null;
	private String requestHeadersAuthenticatorClassName = null;

	private String sessionConfiguratorClassName = null;
	private String jwtSessionConfiguratorSecretValue = null;
	private Set userServlets = new HashSet<>();

	private Map> sqlFirewallManagerClassNamesMap = new ConcurrentHashMap<>();
	private boolean statelessMode;
	
	private Map> sqlFirewallTriggerClassNamesMap = new ConcurrentHashMap<>(); 
	private Map> updateListenerClassNamesMap = new ConcurrentHashMap<>();

	private Map operationalModeMap = new ConcurrentHashMap<>();

	public ConfPropertiesBuilder databaseSet(Set databaseSet) {
	    this.databaseSet = databaseSet;
	    return this;
	}

	public ConfPropertiesBuilder databaseConfiguratorClassNameMap(
		Map databaseConfiguratorClassNameMap) {
	    this.databaseConfiguratorClassNameMap = databaseConfiguratorClassNameMap;
	    return this;
	}

	public ConfPropertiesBuilder servletCallName(String servletCallName) {
	    this.servletCallName = servletCallName;
	    return this;
	}

	public ConfPropertiesBuilder blobDownloadConfiguratorClassName(String blobDownloadConfiguratorClassName) {
	    this.blobDownloadConfiguratorClassName = blobDownloadConfiguratorClassName;
	    return this;
	}

	public ConfPropertiesBuilder blobUploadConfiguratorClassName(String blobUploadConfiguratorClassName) {
	    this.blobUploadConfiguratorClassName = blobUploadConfiguratorClassName;
	    return this;
	}

	public ConfPropertiesBuilder userAuthenticatorClassName(String userAuthenticatorClassName) {
	    this.userAuthenticatorClassName = userAuthenticatorClassName;
	    return this;
	}

	public ConfPropertiesBuilder requestHeadersAuthenticatorClassName(String requestHeadersAuthenticatorClassName) {
	    this.requestHeadersAuthenticatorClassName = requestHeadersAuthenticatorClassName;
	    return this;
	}

	public ConfPropertiesBuilder sessionConfiguratorClassName(String sessionConfiguratorClassName) {
	    this.sessionConfiguratorClassName = sessionConfiguratorClassName;
	    return this;
	}

	public ConfPropertiesBuilder jwtSessionConfiguratorSecretValue(String jwtSessionConfiguratorSecretValue) {
	    this.jwtSessionConfiguratorSecretValue = jwtSessionConfiguratorSecretValue;
	    return this;
	}

	public ConfPropertiesBuilder userServlets(Set userServlets) {
	    this.userServlets = userServlets;
	    return this;
	}

	public ConfPropertiesBuilder sqlFirewallManagerClassNamesMap(Map> sqlFirewallManagerClassNamesMap) {
	    this.sqlFirewallManagerClassNamesMap = sqlFirewallManagerClassNamesMap;
	    return this;
	}
	

	public ConfPropertiesBuilder sqlFirewallTriggerClassNamesMap(Map> sqlFirewallTriggerClassNamesMap) {
	    this.sqlFirewallTriggerClassNamesMap = sqlFirewallTriggerClassNamesMap;
	    return this;
	}

	public ConfPropertiesBuilder updateListenerClassNamesMap(Map> updateListenerClassNamesMap) {
	    this.updateListenerClassNamesMap = updateListenerClassNamesMap;
	    return this;
	}
	
	public ConfPropertiesBuilder statelessMode(boolean statelessMode) {
	    this.statelessMode = statelessMode;
	    return this;
	}

	public ConfPropertiesBuilder operationalModeMap(Map operationalModeMap) {
	    this.operationalModeMap = operationalModeMap;
	    return this;
	}
	
	// Return the finally constructed User object
	public ConfProperties build() {
	    ConfProperties confProperties = new ConfProperties(this);
	    //validateUserObject(confProperties);
	    return confProperties;
	}

	@SuppressWarnings("unused")
	private void validateUserObject(ConfProperties confProperties) {
	    // FUTURE USAGE
	    // Do some basic validations to check
	    // if user object does not break any assumption of system
	}

    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy