com.hg.development.apps.messagenotifier_v1.Utils.Utility.java Source code

Java tutorial

Introduction

Here is the source code for com.hg.development.apps.messagenotifier_v1.Utils.Utility.java

Source

/**
 * Copyright 2014
 *
 *
 * Sous licence Apache, Version 2.0 (la "Licence");
 * Vous ne pouvez pas utiliser ce fichier sauf en conformit avec la licence.
 * Vous pouvez obtenir une copie de la licence  l'adresse :
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Sauf si requis par la loi en vigueur ou accord crit, le logiciel
 * Distribu sous licence est distribu TEL QUEL,
 * SANS GARANTIES OU CONDITIONS D'AUCUNE SORTE, express ou implicite.
 * Voir la licence pour les autorisations spcifiques aux diffrentes langues et
 * Limitations sous la licence.
 *
 * Contribu par : Hivinau GRAFFE
 */
package com.hg.development.apps.messagenotifier_v1.Utils;

import android.graphics.Bitmap;
import android.util.Base64;

import com.hg.development.apps.messagenotifier_v1.Contact.Person.*;
import com.hg.development.apps.messagenotifier_v1.Contact.Person.Number;

import org.apache.http.conn.util.InetAddressUtils;

import java.io.ByteArrayOutputStream;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Class : Utility
 * @author Hivinau GRAFFE
 * @version 1.0
 */
public class Utility {
    private static Pattern pattern_IP;
    private static Matcher matcher;

    private static final String IPADDRESS_PATTERN = "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
            + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\."
            + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";

    private static final String PORT_PATTERN = "^[0-9]+$";

    /**
     * Valider l'adresse IP avec l'expression rgulire.
     * @param ip adresse ip de validation
     * @return <i>true</i> adresse IP valide, adresse IP non valide <i>false</i>
     * @throws Exception
     */
    public static boolean validate_ip(final String ip) throws Exception {
        try {
            pattern_IP = Pattern.compile(IPADDRESS_PATTERN);
            matcher = pattern_IP.matcher(ip);

            boolean isMatch = matcher.matches();

            if (!isMatch)
                throw new Exception("Adresse IP non valide !");

            return isMatch;
        } catch (Exception ex) {
            throw ex;
        }
    }

    /**
     * Valider le numro de port avec l'expression rgulire.
     * @param port
     * @return
     * @throws Exception
     */
    public static boolean validate_port(final String port) throws Exception {
        try {
            pattern_IP = Pattern.compile(PORT_PATTERN);
            matcher = pattern_IP.matcher(port);

            boolean isMatch = matcher.matches();

            if (isMatch) {
                int n_port = Integer.valueOf(port);
                if (n_port >= 0 && n_port <= 65535)
                    return true;
            }

            throw new Exception();
        } catch (Exception ex) {
            throw new Exception("Port non valide !");
        }
    }

    /**
     * Permet de supprimer les doublons dans la liste des numros d'un contact.
     * @param duplicatelist Map contenant l'id du contact et le numro correspondant.
     * @return la liste des numros d'un contact sans doublons.
     */
    public static List<com.hg.development.apps.messagenotifier_v1.Contact.Person.Number> removeNumbersDuplicated(
            Map<String, Number> duplicatelist) {
        try {
            List<com.hg.development.apps.messagenotifier_v1.Contact.Person.Number> list = new ArrayList<>();

            Set set = duplicatelist.entrySet();
            Iterator i = set.iterator();

            while (i.hasNext()) {
                Map.Entry me = (Map.Entry) i.next();

                Number number = (Number) me.getValue();

                if (!list.contains(number))
                    list.add((Number) me.getValue());
            }

            return list;
        } catch (Exception ex) {
            throw ex;
        }
    }

    /**
     * Permet de supprimer les doublons dans la liste des contacts.
     * @param duplicatelist Map contenant le nom de chaque contact.
     * @return la liste des contacts sans doublons.
     */
    public static List<LocalContact> removeContactsDuplicated(Map<String, LocalContact> duplicatelist) {
        try {
            List<LocalContact> list = new ArrayList<>();

            Set set = duplicatelist.entrySet();
            Iterator i = set.iterator();

            while (i.hasNext()) {
                Map.Entry me = (Map.Entry) i.next();

                LocalContact contact = (LocalContact) me.getValue();

                if (!list.contains((contact)))
                    list.add(contact);
            }

            return list;
        } catch (Exception ex) {
            throw ex;
        }
    }

    /**
     * Permet de convertir une photo d'un contact  un objet String.
     * @param bitmap photo du contact  convertir.
     * @return
     */
    public static String BitMapToString(Bitmap bitmap) {
        try {
            ByteArrayOutputStream ByteStream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, ByteStream);
            byte[] b = ByteStream.toByteArray();
            String temp = Base64.encodeToString(b, Base64.DEFAULT);

            return temp;
        } catch (Exception ex) {
            return null;
        }
    }

    /**
     *
     * @return adresse IP v4 actuelle du tlphone.
     * @throws SocketException
     */
    private String getLocalIpAddress() throws SocketException {
        String ipv4 = null;
        try {
            List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());

            if (interfaces.size() > 0) {
                for (NetworkInterface ni : interfaces) {
                    List<InetAddress> ialist = Collections.list(ni.getInetAddresses());

                    if (ialist.size() > 0) {
                        for (InetAddress address : ialist) {
                            if (!address.isLoopbackAddress()
                                    && InetAddressUtils.isIPv4Address(ipv4 = address.getHostAddress()))
                                ;
                        }
                    }

                }
            }

        } catch (SocketException ex) {
            throw ex;
        } finally {
            return ipv4;
        }
    }
}