ContentFormatter.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.monitor.engine.utils;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.openspcoop2.monitor.engine.exceptions.EngineException;
import org.openspcoop2.utils.date.DateManager;
import org.openspcoop2.utils.date.DateUtils;

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

	private static String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
	
	public static void isSupported(Object o) throws EngineException{
		if(
			! (
				(o instanceof String) || 
				(o instanceof Integer) ||
				(o instanceof Long) ||
				(o instanceof Double) ||
				(o instanceof Float) ||
				(o instanceof Boolean) ||
				(o instanceof Date) ||
				(o instanceof Calendar) ||
				(o instanceof Timestamp)
			)
		){
			throw new EngineException("Tipo ["+o.getClass().getName()+"] non supportato. I tipi supportati sono: "+
					String.class.getName()+","+
					Integer.class.getName()+","+
					Long.class.getName()+","+
					Double.class.getName()+","+
					Float.class.getName()+","+
					Boolean.class.getName()+","+
					Date.class.getName()+","+
					Calendar.class.getName()+","+
					Timestamp.class.getName()+"");
		}	
	}
	public static void isSupported(Object ... collections) throws EngineException{
		for (int i = 0; i < collections.length; i++) {
			ContentFormatter.isSupported(collections[i]);
		}		
	}
	public static void isSupported(Collection<?> collections) throws EngineException{
		for (Iterator<?> iterator = collections.iterator(); iterator.hasNext();) {
			Object object = iterator.next();
			ContentFormatter.isSupported(object);
		}		
	}
	
	public static Collection<String> toString(Object [] o) throws EngineException{
		List<String> l = new ArrayList<>();
		for (int i = 0; i < o.length; i++) {
			l.add(toString(o[i]));
		}
		return l;
	}
	public static String toString(Object o) throws EngineException{
		isSupported(o);
		String oClassName = o.getClass().getName() + "";
		if(oClassName.equals(String.class.getName())){
			return (String)o;
		}
		else if(oClassName.equals(int.class.getName()) ||
				oClassName.equals(Integer.class.getName())){
			return toString((Integer)o);
		}
		else if(oClassName.equals(long.class.getName()) ||
				oClassName.equals(Long.class.getName())){
			return toString((Long)o);
		}
		else if(oClassName.equals(double.class.getName()) ||
				oClassName.equals(Double.class.getName())){
			return toString((Double)o);
		}
		else if(oClassName.equals(float.class.getName()) ||
				oClassName.equals(Float.class.getName())){
			return toString((Float)o);
		}
		else if(oClassName.equals(boolean.class.getName()) ||
				oClassName.equals(Boolean.class.getName())){
			return toString((Boolean)o);
		}
		else if(oClassName.equals(Date.class.getName())){
			return toString((Date)o);
		}
		else if(oClassName.equals(Calendar.class.getName())){
			return toString((Calendar)o);
		}
		else if(oClassName.equals(Timestamp.class.getName())){
			return toString((Timestamp)o);
		}
		throw new EngineException("Tipo ["+oClassName+"] non supportato");
	}
	
	public static String toString(int intValue){
		return intValue+"";
	}
	public static String toString(Integer intValue){
		return ContentFormatter.toString(intValue.intValue());
	}
	
	
	public static String toString(long longValue){
		return longValue+"";
	}
	public static String toString(Long longValue){
		return ContentFormatter.toString(longValue.longValue());
	}
	
	
	public static String toString(double doubleValue){
		return doubleValue+"";
	}
	public static String toString(Double doubleValue){
		return ContentFormatter.toString(doubleValue.doubleValue());
	}
	
	
	public static String toString(float floatValue){
		return floatValue+"";
	}
	public static String toString(Float floatValue){
		return ContentFormatter.toString(floatValue.floatValue());
	}
	
	
	public static String toString(boolean b){
		if(b)
			return "t";
		else
			return "f";
	}
	public static String toString(Boolean b){
		return ContentFormatter.toString(b.booleanValue());
	}
	

	public static String toString(Date date){
		SimpleDateFormat dateformat = DateUtils.getDefaultDateTimeFormatter(DATE_FORMAT);
		return dateformat.format(date);
	}
	
	public static String toString(Calendar calendar){
		SimpleDateFormat dateformat = DateUtils.getDefaultDateTimeFormatter(DATE_FORMAT);
		return dateformat.format(calendar.getTime());
	}
	
	public static String toString(Timestamp t){
		SimpleDateFormat dateformat = DateUtils.getDefaultDateTimeFormatter(DATE_FORMAT);
		return dateformat.format(t);
	}
	
	public static Integer toInteger(String v) throws EngineException{
		try{
			Integer i = null;
			if(v!=null){
				i = Integer.parseInt(v);
			}
			return i;
		}catch(Exception e){
			throw new EngineException("Converting error: "+ e.getMessage(),e);
		}
	}
	public static int toPrimitiveInt(String v) throws EngineException{
		try{
			int i = 0;
			if(v!=null){
				i = Integer.parseInt(v);
			}
			return i;
		}catch(Exception e){
			throw new EngineException("Converting error: "+ e.getMessage(),e);
		}
	}
	public static Long toLong(String v) throws EngineException{
		try{
			Long l = null;
			if(v!=null){
				l = Long.parseLong(v);
			}
			return l;
		}catch(Exception e){
			throw new EngineException("Converting error: "+ e.getMessage(),e);
		}
	}
	public static long toPrimitiveLong(String v) throws EngineException{
		try{
			long l = 0;
			if(v!=null){
				l = Long.parseLong(v);
			}
			return l;
		}catch(Exception e){
			throw new EngineException("Converting error: "+ e.getMessage(),e);
		}
	}
	public static Double toDouble(String v) throws EngineException{
		try{
			Double d = null;
			if(v!=null){
				d = Double.parseDouble(v);
			}
			return d;
		}catch(Exception e){
			throw new EngineException("Converting error: "+ e.getMessage(),e);
		}
	}
	public static double toPrimitiveDouble(String v) throws EngineException{
		try{
			double d = 0;
			if(v!=null){
				d = Double.parseDouble(v);
			}
			return d;
		}catch(Exception e){
			throw new EngineException("Converting error: "+ e.getMessage(),e);
		}
	}
	public static Float toFloat(String v) throws EngineException{
		try{
			Float f = null;
			if(v!=null){
				f = Float.parseFloat(v);
			}
			return f;
		}catch(Exception e){
			throw new EngineException("Converting error: "+ e.getMessage(),e);
		}
	}
	public static float toPrimitiveFloat(String v) throws EngineException{
		try{
			float f = 0;
			if(v!=null){
				f = Float.parseFloat(v);
			}
			return f;
		}catch(Exception e){
			throw new EngineException("Converting error: "+ e.getMessage(),e);
		}
	}
	public static Boolean toBoolean(String v) throws EngineException{
		try{
			Boolean b = null;
			if(v!=null){
				b = Boolean.parseBoolean(v);
			}
			return b;
		}catch(Exception e){
			throw new EngineException("Converting error: "+ e.getMessage(),e);
		}
	}
	public static boolean toPrimitiveBoolean(String v) throws EngineException{
		try{
			boolean b = false;
			if(v!=null){
				b = Boolean.parseBoolean(v);
			}
			return b;
		}catch(Exception e){
			throw new EngineException("Converting error: "+ e.getMessage(),e);
		}
	}
	public static Date toDate(String v) throws EngineException{
		try{
			Date d = null;
			if(v!=null){
				SimpleDateFormat dateformat = DateUtils.getDefaultDateTimeFormatter(DATE_FORMAT);
				d = dateformat.parse(v);
			}
			return d;
		}catch(Exception e){
			throw new EngineException("Converting error: "+ e.getMessage(),e);
		}
	}
	public static Calendar toCalendar(String v) throws EngineException{
		try{
			Calendar c = null;
			if(v!=null){
				c = DateManager.getCalendar();
				c.setTime(toDate(v));
			}
			return c;
		}catch(Exception e){
			throw new EngineException("Converting error: "+ e.getMessage(),e);
		}
	}
	public static Timestamp toTimestamp(String v) throws EngineException{
		try{
			Timestamp t = null;
			if(v!=null){
				t = new Timestamp(toDate(v).getTime());
			}
			return t;
		}catch(Exception e){
			throw new EngineException("Converting error: "+ e.getMessage(),e);
		}
	}
		
}