ApiKeyState.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.web.ctrlstat.servlet;

import java.util.ArrayList;
import java.util.List;

import org.openspcoop2.core.commons.ModalitaIdentificazione;
import org.openspcoop2.pdd.core.autenticazione.ParametriAutenticazioneApiKey;
import org.openspcoop2.web.lib.mvc.Costanti;
import org.openspcoop2.web.lib.mvc.ServletUtils;

/**
 * ApiKeyState
 * 
 * @author Andrea Poli (apoli@link.it)
 * @author $Author$
 * @version $Rev$, $Date$
 * 
 */
public class ApiKeyState {

	// posizione 0: appId
	String appId = null;
	public boolean appIdSelected = false;

	// posizione
	List<String> posizioneValues = new ArrayList<>();
	List<String> posizioneLabels = new ArrayList<>();
	List<String> posizioneSelected = new ArrayList<>();
	// posizione 1: queryParameter
	String queryParameter = Costanti.CHECK_BOX_ENABLED;
	boolean queryParameterEnabled = true;
	// posizione 2: header
	String header = Costanti.CHECK_BOX_ENABLED;
	boolean headerEnabled = true;
	// posizione 3: cookie
	String cookie = Costanti.CHECK_BOX_ENABLED;
	boolean cookieEnabled = true;
	
	// posizione 4: useOAS3Names
	String useOAS3Names = Costanti.CHECK_BOX_ENABLED;
	boolean useOAS3NamesSelected = true;
	
	// posizione 5: cleanApiKey 
	String forwardApiKey = null;
	boolean forwardApiKeySelected = false;
	
	// posizione 6: cleanAppId 
	String forwardAppId = null;
	boolean forwardAppIdSelected = false;

	// posizione 7: queryParameterApiKey
	String queryParameterApiKey = ParametriAutenticazioneApiKey.DEFAULT_QUERY_PARAMETER_API_KEY;
	
	// posizione 8: headerApiKey
	String headerApiKey = ParametriAutenticazioneApiKey.DEFAULT_HEADER_API_KEY;
	
	// posizione 9: cookieApiKey
	String cookieApiKey = ParametriAutenticazioneApiKey.DEFAULT_COOKIE_API_KEY;
	
	// posizione 10: queryParameterAppId
	String queryParameterAppId = ParametriAutenticazioneApiKey.DEFAULT_QUERY_PARAMETER_APP_ID;
	
	// posizione 11: headerAppId
	String headerAppId = ParametriAutenticazioneApiKey.DEFAULT_HEADER_APP_ID;
	
	// posizione 12: cookieAppId
	String cookieAppId = ParametriAutenticazioneApiKey.DEFAULT_COOKIE_APP_ID;
	
	public ApiKeyState(List<String> autenticazioneParametroList){

		this.posizioneValues.add(ParametriAutenticazioneApiKey.QUERY_PARAMETER);
		this.posizioneValues.add(ParametriAutenticazioneApiKey.HEADER);
		this.posizioneValues.add(ParametriAutenticazioneApiKey.COOKIE);
		
		this.posizioneLabels.add(ModalitaIdentificazione.FORM_BASED.getLabel());
		this.posizioneLabels.add(ModalitaIdentificazione.HEADER_BASED.getLabel());
		this.posizioneLabels.add(ModalitaIdentificazione.COOKIE_BASED.getLabel());
		
		this.posizioneSelected.addAll(this.posizioneValues);// default
		
		if(autenticazioneParametroList!=null && !autenticazioneParametroList.isEmpty()) {
			if(autenticazioneParametroList.size()>0) {
				this.appId = autenticazioneParametroList.get(0);
				this.appIdSelected = ServletUtils.isCheckBoxEnabled(this.appId);
			}
			if(autenticazioneParametroList.size()>1) {
				this.posizioneSelected = new ArrayList<>();
				this.queryParameter = autenticazioneParametroList.get(1);
				this.queryParameterEnabled = ServletUtils.isCheckBoxEnabled(this.queryParameter);
				if(this.queryParameterEnabled) {
					this.posizioneSelected.add(ParametriAutenticazioneApiKey.QUERY_PARAMETER);
				}
			}
			if(autenticazioneParametroList.size()>2) {
				this.header = autenticazioneParametroList.get(2);
				this.headerEnabled = ServletUtils.isCheckBoxEnabled(this.header);
				if(this.headerEnabled) {
					this.posizioneSelected.add(ParametriAutenticazioneApiKey.HEADER);
				}
			}
			if(autenticazioneParametroList.size()>3) {
				this.cookie = autenticazioneParametroList.get(3);
				this.cookieEnabled = ServletUtils.isCheckBoxEnabled(this.cookie);
				if(this.cookieEnabled) {
					this.posizioneSelected.add(ParametriAutenticazioneApiKey.COOKIE);
				}
			}
			if(autenticazioneParametroList.size()>4) {
				this.useOAS3Names = autenticazioneParametroList.get(4);
				this.useOAS3NamesSelected = ServletUtils.isCheckBoxEnabled(this.useOAS3Names);
			}
			if(autenticazioneParametroList.size()>5) {
				String cleanApiKey = autenticazioneParametroList.get(5);
				if(ServletUtils.isCheckBoxEnabled(cleanApiKey)) {
					this.forwardApiKey = Costanti.CHECK_BOX_DISABLED;
				}
				else {
					this.forwardApiKey = Costanti.CHECK_BOX_ENABLED;
				}
				this.forwardApiKeySelected = ServletUtils.isCheckBoxEnabled(this.forwardApiKey);
			}
			if(autenticazioneParametroList.size()>6) {
				String cleanAppId = autenticazioneParametroList.get(6);
				if(ServletUtils.isCheckBoxEnabled(cleanAppId)) {
					this.forwardAppId = Costanti.CHECK_BOX_DISABLED;
				}
				else {
					this.forwardAppId = Costanti.CHECK_BOX_ENABLED;
				}
				this.forwardAppIdSelected = ServletUtils.isCheckBoxEnabled(this.forwardAppId);
			}
			if(autenticazioneParametroList.size()>7) {
				this.queryParameterApiKey = autenticazioneParametroList.get(7);
			}
			if(autenticazioneParametroList.size()>8) {
				this.headerApiKey = autenticazioneParametroList.get(8);
			}
			if(autenticazioneParametroList.size()>9) {
				this.cookieApiKey = autenticazioneParametroList.get(9);
			}
			if(autenticazioneParametroList.size()>10) {
				this.queryParameterAppId = autenticazioneParametroList.get(10);
			}
			if(autenticazioneParametroList.size()>11) {
				this.headerAppId = autenticazioneParametroList.get(11);
			}
			if(autenticazioneParametroList.size()>12) {
				this.cookieAppId = autenticazioneParametroList.get(12);
			}
		}
	}
	
}