Utilities.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.core;

import java.util.ArrayList;
import java.util.StringTokenizer;

import org.openspcoop2.core.registry.Connettore;
import org.openspcoop2.web.ctrlstat.costanti.TipologiaConnettori;
import org.openspcoop2.web.ctrlstat.servlet.connettori.ConnettoriCostanti;
import org.openspcoop2.web.lib.mvc.DataElement;
/**
 * 
 * Metodi di utilita'
 * 
 * @author Andrea Poli (apoli@link.it)
 * @author Stefano Corallo (corallo@link.it)
 * @author Sandra Giangrandi (sandra@link.it)
 * @author $Author$
 * @version $Rev$, $Date$
 * 
 */
public class Utilities {


	public static boolean contains(String value,String [] listaValoriPossibili){
		if(value==null)
			return false;
		if(listaValoriPossibili==null){
			return false;
		}
		for (int i = 0; i < listaValoriPossibili.length; i++) {
			if(value.equals(listaValoriPossibili[i])){
				return true;
			}
		}
		return false;
	}
	
	public static String toString(String [] values,String separator){
		StringBuilder bf = new StringBuilder();
		if(values!=null){
			for (int i = 0; i < values.length; i++) {
				if(i>0){
					bf.append(separator);
					bf.append(values[i]);
				}
			}
		}
		return bf.toString();
	}
	
	
	private static TipologiaConnettori TIPOLOGIA_CONNETTORI = null;
	public static TipologiaConnettori getTipologiaConnettori(ControlStationCore core) throws Exception {

		if (Utilities.TIPOLOGIA_CONNETTORI == null) {
			Utilities.readTipologiaConnettori(core);
		}

		return Utilities.TIPOLOGIA_CONNETTORI;

	}

	/**
	 * Tipologia connettori ALL/HTTP
	 * 
	 * @param tipologia
	 */
	 public static void setTipologiaConnettori(TipologiaConnettori tipologia) {
		 Utilities.TIPOLOGIA_CONNETTORI = tipologia == null ? TipologiaConnettori.TIPOLOGIA_CONNETTORI_ALL : tipologia;
	 }

	 /**
	  * Legge il valore della proprieta' impostata nel file di configurazione se
	  * la proprieta' e' nulla setta il valore di default (ALL)
	  */
	 public static void readTipologiaConnettori(ControlStationCore core) throws Exception {
		 
		 if (core.isShowAllConnettori()) {
			 Utilities.TIPOLOGIA_CONNETTORI = TipologiaConnettori.TIPOLOGIA_CONNETTORI_ALL;
		 } else {
			 Utilities.TIPOLOGIA_CONNETTORI = TipologiaConnettori.TIPOLOGIA_CONNETTORI_HTTP;
		 } 

	 }
	 
	 public static void setDataElementLabelTipoConnettore(DataElement de,Connettore connettore){
		 de.setValue(ConnettoriCostanti.LABEL_CONNETTORE+" (" + connettore.getTipo() + ")");
	 }


	 public static ArrayList<String> parseIdsToRemove(String idsToRemove) {
		 ArrayList<String> toRem = new ArrayList<>();
		 StringTokenizer objTok = new StringTokenizer(idsToRemove, ",");

		 while (objTok.hasMoreElements()) {
			 String id2rem = (String) objTok.nextElement();
			 toRem.add(id2rem);
		 }

		 return toRem;
	 }

	




	


	 public static String getTestoVisualizzabile(byte [] b,StringBuilder stringBuffer) {
		 try{
			 // 1024 = 1K
			 // Visualizzo al massimo 250K
			 int max = 250 * 1024;
//			 if(b.length>max){
//				 return "Visualizzazione non riuscita: la dimensione supera 250K";
//			 }
//
//			 for (int i = 0; i < b.length; i++) {
//				 if(!Utilities.isPrintableChar((char)b[i])){
//
//					 return "Visualizzazione non riuscita: il documento contiene caratteri non visualizzabili";
//				 }
//			 }
			 stringBuffer.append(org.openspcoop2.utils.Utilities.convertToPrintableText(b, max));
			 return null;

		 }catch(Exception e){
			 ControlStationCore.logError("getTestoVisualizzabile error", e);
			 return e.getMessage();
		 }

	 }

//	 public static boolean isPrintableChar( char c ) {
//		 if ( Character.isDefined(c))
//		 {
//			 return true;
//		 }
//		 else{
//			 return false;
//		 }
//	 }

}