AbstractConnettoreApiHelper.java

/*
 * GovWay - A customizable API Gateway 
 * https://govway.org
 * 
 * Copyright (c) 2005-2024 Link.it srl (https://link.it).
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 3, as published by
 * the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */
package org.openspcoop2.core.config.rs.server.api.impl.erogazioni;

import static org.openspcoop2.utils.service.beans.utils.BaseHelper.evalnull;

import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.openspcoop2.core.config.ServizioApplicativo;
import org.openspcoop2.core.config.rs.server.model.ConnettoreConfigurazioneHttpBasic;
import org.openspcoop2.core.config.rs.server.model.ConnettoreHttp;
import org.openspcoop2.core.config.rs.server.model.OneOfApplicativoServerConnettore;
import org.openspcoop2.core.config.rs.server.model.OneOfConnettoreErogazioneConnettore;
import org.openspcoop2.core.config.rs.server.model.OneOfConnettoreFruizioneConnettore;

/**
 * AbstractConnettoreApiHelper
 * 
 * @author $Author$
 * @version $Rev$, $Date$
 * 
 */
public abstract class AbstractConnettoreApiHelper<T> implements IConnettoreApiHelper {

	protected abstract T getConnettore(OneOfConnettoreErogazioneConnettore conn) throws Exception;
	protected abstract T getConnettore(OneOfConnettoreFruizioneConnettore conn) throws Exception;
	protected abstract T getConnettore(OneOfApplicativoServerConnettore conn) throws Exception;

	protected abstract org.openspcoop2.core.registry.Connettore fillConnettoreRegistro(org.openspcoop2.core.registry.Connettore regConnettore, ErogazioniEnv env, T connettore, String oldConnT) throws Exception;
	protected abstract org.openspcoop2.core.config.Connettore buildConnettoreConfigurazione(org.openspcoop2.core.config.Connettore regConnettore, ErogazioniEnv env, T connettore, String oldConnT) throws Exception;

	protected org.openspcoop2.core.config.Connettore buildConnettoreConfigurazione(ServizioApplicativo sa, ErogazioniEnv env, T connettore, String oldConnT) throws Exception {
		return buildConnettoreConfigurazione(sa.getInvocazioneServizio().getConnettore(), env, connettore, oldConnT);
	}
	
	protected abstract boolean connettoreCheckData(T conn, ErogazioniEnv env, boolean erogazione) throws Exception;
	
	protected abstract T buildConnettore(Map<String, String> props, String tipo) throws Exception;
	protected T buildConnettore(ServizioApplicativo sa) throws Exception {
		T connettore = buildConnettore(sa.getInvocazioneServizio().getConnettore().getProperties(),sa.getInvocazioneServizio().getConnettore().getTipo());
		if(sa.getInvocazioneServizio().getCredenziali()!=null && 
				sa.getInvocazioneServizio().getCredenziali().getUser()!=null &&
				sa.getInvocazioneServizio().getCredenziali().getPassword()!=null &&
				connettore instanceof ConnettoreHttp) {
			ConnettoreHttp c = (ConnettoreHttp) connettore;
		
			ConnettoreConfigurazioneHttpBasic http = new ConnettoreConfigurazioneHttpBasic();
			http.setPassword(evalnull( () -> sa.getInvocazioneServizio().getCredenziali().getPassword())); 
			http.setUsername(evalnull( () -> sa.getInvocazioneServizio().getCredenziali().getUser()));
			if ( !StringUtils.isAllEmpty(http.getPassword(), http.getUsername()) ) {
				c.setAutenticazioneHttp(http);
			}
		}
		return connettore;
	}

	@Override
	public OneOfConnettoreErogazioneConnettore buildConnettoreErogazione(ServizioApplicativo sa) throws Exception {
		return (OneOfConnettoreErogazioneConnettore) buildConnettore(sa);
	}

	@Override
	public OneOfConnettoreFruizioneConnettore buildConnettoreFruizione(Map<String, String> props, String tipo) throws Exception {
		return (OneOfConnettoreFruizioneConnettore) buildConnettore(props, tipo);
	}
	
	@Override
	public OneOfApplicativoServerConnettore buildConnettoreApplicativoServer(ServizioApplicativo sa) throws Exception {
		return (OneOfApplicativoServerConnettore) buildConnettore(sa);
	}

	@Override
	public boolean connettoreCheckData(OneOfConnettoreFruizioneConnettore conn, ErogazioniEnv env, boolean isErogazione) throws Exception {
		return connettoreCheckData(getConnettore(conn), env, isErogazione);
	}

	@Override
	public boolean connettoreCheckData(OneOfConnettoreErogazioneConnettore conn, ErogazioniEnv env, boolean isErogazione) throws Exception {
		return connettoreCheckData(getConnettore(conn), env, isErogazione);
	}

	@Override
	public boolean connettoreCheckData(OneOfApplicativoServerConnettore conn, ErogazioniEnv env, boolean isErogazione) throws Exception {
		return connettoreCheckData(getConnettore(conn), env, isErogazione);
	}

	@Override
	public org.openspcoop2.core.registry.Connettore buildConnettoreRegistro(ErogazioniEnv env,
			OneOfConnettoreFruizioneConnettore conn) throws Exception {
		org.openspcoop2.core.registry.Connettore regConnettore = new org.openspcoop2.core.registry.Connettore();
		return fillConnettoreRegistro(regConnettore, env, getConnettore(conn), "");
	}

	@Override
	public org.openspcoop2.core.registry.Connettore buildConnettoreRegistro(ErogazioniEnv env,
			OneOfConnettoreErogazioneConnettore conn) throws Exception {
		org.openspcoop2.core.registry.Connettore regConnettore = new org.openspcoop2.core.registry.Connettore();
		return fillConnettoreRegistro(regConnettore, env, getConnettore(conn), "");
	}

	@Override
	public org.openspcoop2.core.registry.Connettore buildConnettoreRegistro(ErogazioniEnv env,
			OneOfApplicativoServerConnettore conn) throws Exception {
		org.openspcoop2.core.registry.Connettore regConnettore = new org.openspcoop2.core.registry.Connettore();
		return fillConnettoreRegistro(regConnettore, env, getConnettore(conn), "");
	}

	@Override
	public org.openspcoop2.core.config.Connettore buildConnettoreConfigurazione(
			org.openspcoop2.core.config.Connettore regConnettore, ErogazioniEnv env, OneOfConnettoreFruizioneConnettore conn,
			String oldConnT) throws Exception {
		return buildConnettoreConfigurazione(regConnettore, env, getConnettore(conn), oldConnT);

	}

	@Override
	public org.openspcoop2.core.config.Connettore buildConnettoreConfigurazione(
			ServizioApplicativo sa, ErogazioniEnv env, OneOfConnettoreErogazioneConnettore conn,
			String oldConnT) throws Exception {
		return buildConnettoreConfigurazione(sa, env, getConnettore(conn), oldConnT);

	}

	@Override
	public org.openspcoop2.core.config.Connettore buildConnettoreConfigurazione(
			ServizioApplicativo sa, ErogazioniEnv env, OneOfApplicativoServerConnettore conn,
			String oldConnT) throws Exception {
		return buildConnettoreConfigurazione(sa, env, getConnettore(conn), oldConnT);

	}

	@Override
	public org.openspcoop2.core.registry.Connettore fillConnettoreRegistro(
			org.openspcoop2.core.registry.Connettore regConnettore, ErogazioniEnv env, OneOfConnettoreFruizioneConnettore conn,
			String oldConnT) throws Exception {
		return fillConnettoreRegistro(regConnettore, env, getConnettore(conn), oldConnT);

	}

	@Override
	public org.openspcoop2.core.registry.Connettore fillConnettoreRegistro(
			org.openspcoop2.core.registry.Connettore regConnettore, ErogazioniEnv env, OneOfConnettoreErogazioneConnettore conn,
			String oldConnT) throws Exception {
		return fillConnettoreRegistro(regConnettore, env, getConnettore(conn), oldConnT);

	}

	@Override
	public org.openspcoop2.core.registry.Connettore fillConnettoreRegistro(
			org.openspcoop2.core.registry.Connettore regConnettore, ErogazioniEnv env, OneOfApplicativoServerConnettore conn,
			String oldConnT) throws Exception {
		return fillConnettoreRegistro(regConnettore, env, getConnettore(conn), oldConnT);

	}


}