com.sample.common.util.CommonsUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.sample.common.util.CommonsUtil.java

Source

/**
 *   09/feb/2011
 *
 * Copyright (c) 2010 Alten Italia, All Rights Reserved.
 *
 * This software is the confidential and proprietary information of
 * Alten Italia ("Confidential Information").
 * You shall not disclose such Confidential Information and shall use it
 * only in accordance with the terms of the license agreement you entered 
 * into with Alten Italia.
 *
 * Alten Italia - MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY 
 * OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, 
 * OR NON-INFRINGEMENT. ALTEN ITALIA SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED
 * BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR 
 * ITS DERIVATIVES.
 */
package com.sample.common.util;

import static org.springframework.util.ReflectionUtils.findMethod;
import static org.springframework.util.StringUtils.capitalize;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import org.apache.commons.lang3.StringUtils;

/**
 * @author Damiano Masillo
 * 
 */
public class CommonsUtil {
    private static final String PREFISSO_CANALE = "64";

    /**
     * Metodo di utilita' per ricavare da un multichannelId un abi
     * 
     * @param multichannelId
     * @return la stringa rappresentante l'abi
     * @throws IllegalArgumentException
     *           se la stringa del multichannel non e' valida
     */
    public static String getAbi(String multichannelId) {
        if (multichannelId == null || multichannelId.length() != 17)
            throw new IllegalArgumentException("Illegal multichannelID string lenght");

        return multichannelId.substring(0, 5);

    }

    /**
     * Metodo di utilita' per ricavare da un multichannelId un bt
     * 
     * @param multichannelId
     * @return la stringa rappresentante il bt
     * @throws IllegalArgumentException
     *           se la stringa del multichannel non e' valida
     */
    public static String getBt(String multichannelId) {
        if (multichannelId == null || multichannelId.length() != 17)
            throw new IllegalArgumentException("Illegal multichannelID string lenght");

        return multichannelId.substring(9, multichannelId.length());
    }

    /**
     * Metodo di utilita per la composizione di un multichannelId a partire da un abi, un canale e un bt
     * 
     * @param abi
     * @param canale
     * @param userid
     * @return multichannelId
     * @throws IllegalArgumentException
     *           se l'abi, il canale o il bt non sono validi
     */
    public static String getMultichannelId(String abi, String canale, String userid) {

        if (abi == null || abi.length() > 5)
            throw new IllegalArgumentException("Stringa ABI troppo lunga");

        if (canale == null || canale.length() > 2)
            throw new IllegalArgumentException("Stringa canale troppo lunga");

        if (userid == null || userid.length() > 8)
            throw new IllegalArgumentException("Stringa userid troppo lunga");

        StringBuffer buf = new StringBuffer(17);
        buf.append(StringUtils.leftPad(abi, 5, "0"));
        buf.append(PREFISSO_CANALE);
        buf.append(StringUtils.leftPad(canale, 2, "0"));
        buf.append(StringUtils.leftPad(userid, 8, "0"));
        return buf.toString();
    }

    /**
     * Restituisce il codice filiale a partire dal codice rapporto host
     * 
     * 
     * @param codiceRapportoHost
     * @return
     */
    public static String getCodiceFiliale(String codiceRapportoHost) {
        if (codiceRapportoHost == null || codiceRapportoHost.length() != 17) {
            throw new IllegalArgumentException("Illegal codiceRapportoHost string lenght");
        }

        return codiceRapportoHost.substring(0, 5);
    }

    /**
     * Restituisce la categoria a partire dal codice rapporto host
     * 
     * @param codiceRapportoHost
     * @return
     */
    public static String getCategoria(String codiceRapportoHost) {
        if (codiceRapportoHost == null || codiceRapportoHost.length() != 17) {
            throw new IllegalArgumentException("Illegal codiceRapportoHost string lenght");
        }

        return codiceRapportoHost.substring(5, 9);
    }

    /**
     * Restituisce il numero rapporto a partire dal codice rapporto host
     * 
     * @param codiceRapportoHost
     * @return
     */
    public static String getNumeroRapporto(String codiceRapportoHost) {
        if (codiceRapportoHost == null || codiceRapportoHost.length() != 17) {
            throw new IllegalArgumentException("Illegal codiceRapportoHost string lenght");
        }

        return codiceRapportoHost.substring(9);
    }

    /**
     * Formatta una data col seguente pattern dd/MM/yyyy HH:MM:SS
     * 
     * @param calendar
     * @return data formattata
     */
    public static String formatDate(Calendar calendar) {
        String stringDate = null;
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");

        if (calendar != null) {
            stringDate = sdf.format(calendar.getTime());
        }
        return stringDate;
    }

    /**
     * @param multichannelId
     * @return
     */
    public static String getCodiceCanale(String multichannelId) {
        if (multichannelId == null || multichannelId.length() != 17)
            throw new IllegalArgumentException("Illegal multichannelID string lenght");

        return multichannelId.substring(7, 9);
    }

    /**
     * Metodo di utilita' per controllare che un'istanza di una classe abbia almeno un campo valorizzato
     * 
     * @param instance
     * @return true se l'istanza ha almeno un campo valorizzato, false altrimenti
     */
    public static <T> boolean isFilled(T instance) {
        boolean isFilled = false;
        if (instance != null) {
            Field[] fields = instance.getClass().getDeclaredFields();
            for (Field field : fields) {
                if (field.getType().getCanonicalName().startsWith("java.lang")) {
                    String getterMethodName = "get" + capitalize(field.getName());
                    Method method = findMethod(instance.getClass(), getterMethodName, new Class[] {});
                    if (method != null) {
                        try {
                            Object value = method.invoke(instance, new Object[] {});
                            if (field.getType().getSimpleName().equals("String")) {
                                String valueStr = (String) value;
                                if (value != null && valueStr.trim().length() > 0) {
                                    isFilled = true;
                                    break;
                                }
                            } else {
                                if (value != null) {
                                    isFilled = true;
                                    break;
                                }
                            }
                        } catch (IllegalArgumentException e) {
                            e.printStackTrace();
                        } catch (IllegalAccessException e) {
                            e.printStackTrace();
                        } catch (InvocationTargetException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
        return isFilled;
    }

    /**
     * 
     * 
     * @param codiceCanale
     * @param internetChannelPrefix
     * @return
     */
    public static boolean matchCanale(String codiceCanale, String internetChannelPrefix) {
        boolean returnValue = false;
        if (codiceCanale != null && internetChannelPrefix != null) {
            returnValue = internetChannelPrefix.substring(2).contains(codiceCanale);
        }
        return returnValue;
    }
}