com.cloverstudio.spika.utils.Utils.java Source code

Java tutorial

Introduction

Here is the source code for com.cloverstudio.spika.utils.Utils.java

Source

/*
 * The MIT License (MIT)
 * 
 * Copyright  2013 Clover Studio Ltd. All rights reserved.
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

package com.cloverstudio.spika.utils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

import org.json.JSONArray;
import org.json.JSONException;

import com.cloverstudio.spika.R;
import com.cloverstudio.spika.SpikaApp;
import com.cloverstudio.spika.lazy.ImageLoader;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.ImageView;
import android.widget.ProgressBar;

/**
 * Utils
 * 
 * Contains various methods used through the application.
 */

@SuppressLint("SimpleDateFormat")
public class Utils {
    public static void copyStream(InputStream is, OutputStream os) {
        final int buffer_size = 1024;
        try {
            byte[] bytes = new byte[buffer_size];
            for (;;) {
                int count = is.read(bytes, 0, buffer_size);
                if (count == -1)
                    break;
                os.write(bytes, 0, count);
            }
        } catch (Exception ex) {
        }
    }

    public static Bitmap getBitmapFromUrl(String urlSource) {
        try {
            URL url = new URL(urlSource);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap myBitmap = BitmapFactory.decodeStream(input);
            return myBitmap;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void hideKeyboard(Activity activity) {
        InputMethodManager inputMethodManager = (InputMethodManager) activity
                .getSystemService(Activity.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow((activity).getCurrentFocus().getWindowToken(), 0);
    }

    /**
     * Returns length of jsonArray
     * 
     * @param json
     * @return length if parameter is JSON Array, 0 if something else
     */
    public static int getJsonArrayLength(String json) {
        try {
            JSONArray jsonArray = new JSONArray(json);
            return jsonArray.length();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return 0;
    }

    public static boolean isOsVersionHigherThenGingerbread() {
        if (android.os.Build.VERSION.RELEASE.startsWith("1.") || android.os.Build.VERSION.RELEASE.startsWith("2.0")
                || android.os.Build.VERSION.RELEASE.startsWith("2.1")
                || android.os.Build.VERSION.RELEASE.startsWith("2.2")
                || android.os.Build.VERSION.RELEASE.startsWith("2.3")) {
            return false;
        } else {
            return true;
        }
    }

    @SuppressLint("SimpleDateFormat")
    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(
            SpikaApp.getInstance().getString(R.string.hookup_date_time_format));

    /**
     * Returns current time
     * 
     * 
     * @return time in milliseconds
     * @throws Exception
     */
    public static long getCurrentDateTime() {
        long currentTime = System.currentTimeMillis();
        return currentTime;
    }

    /**
     * Returns time formatted as: JAN 24, 13:30
     * 
     * @param timeInSeconds
     * @return date as a String
     */
    public static String getFormattedDateTime(long timeInSeconds) {
        Date dateTime = new Date(timeInSeconds * 1000);
        StringBuilder date = new StringBuilder(DATE_FORMAT.format(dateTime));
        return date.toString();
    }

    public static String generateToken() {
        char[] chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".toCharArray();
        StringBuilder sb = new StringBuilder();
        Random random = new Random();

        for (int i = 0; i < 40; i++) {
            char c = chars[random.nextInt(chars.length)];
            sb.append(c);
        }

        return sb.toString();
    }

    /**
     * 
     * @param fileId
     * @param imageView
     * @param progressBar
     * @param size
     * @param stubId
     */
    public static void displayImage(String fileId, ImageView imageView, ProgressBar progressBar, String size,
            int stubId, boolean downloadFromUrl) {

        if (fileId != null && !fileId.equals("null") && !fileId.equals("")) {
            ImageLoader.getImageLoader().DisplayImage(fileId, imageView, progressBar, size, downloadFromUrl);
        } else {
            ImageLoader.getImageLoader().cancelDisplayTaskFor(imageView);
            imageView.setImageResource(stubId);
            progressBar.setVisibility(View.GONE);
        }

    }

    public static void displayImage(String fileId, ImageView imageView, String size, int stubId,
            boolean downloadFromUrl) {
        if (fileId != null && !fileId.equals("null") && !fileId.equals("")) {
            ImageLoader.getImageLoader().DisplayImage(fileId, imageView, size, downloadFromUrl);
        } else {
            ImageLoader.getImageLoader().cancelDisplayTaskFor(imageView);
            imageView.setImageResource(stubId);
        }
    }

    public static String checkPassword(Activity activity, String password) {
        if (password.length() < 6) {
            return activity.getString(R.string.password_error_number_of_characters);
        } else if (!isAlphaNumeric(password)) {
            return activity.getString(R.string.password_error_invalid_characters);
        }
        return activity.getString(R.string.password_ok);
    }

    public static String checkEmail(Activity activity, String email) {
        if (email.length() <= 0) {
            return activity.getString(R.string.email_length);
        } else if (!isEmailValid(email)) {
            return activity.getString(R.string.email_not_valid);
        }
        return activity.getString(R.string.email_ok);
    }

    public static String checkPasswordForGroup(Activity activity, String password) {

        if (password == null || password.length() == 0)
            return activity.getString(R.string.password_ok);

        if (password.length() < 6) {
            return activity.getString(R.string.password_error_number_of_characters);
        } else if (!isAlphaNumeric(password)) {
            return activity.getString(R.string.password_error_invalid_characters);
        }
        return activity.getString(R.string.password_ok);
    }

    public static String checkName(Activity activity, String name) {
        if (name != null && !name.equals("") && name.length() > 1) {
            return activity.getString(R.string.name_ok);
        } else {
            return activity.getString(R.string.name_error);
        }
    }

    private static boolean isAlphaNumeric(String s) {
        String pattern = "^[a-zA-Z0-9]*$";
        if (s.matches(pattern)) {
            return true;
        }
        return false;
    }

    /**
     * Used for checking valid email format.
     *
     * @param email String that will be checked
     * @return boolean true for valid false for invalid
     */
    private static boolean isEmailValid(String email) {
        return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
    }

    public static String getClassNameInStr(Object obj) {

        Class<?> enclosingClass = obj.getClass().getEnclosingClass();
        if (enclosingClass != null) {
            return enclosingClass.getName();
        } else {
            return obj.getClass().getName();
        }

    }

    public static boolean saveBitmapToFile(Bitmap bitmap, String path) {
        File file = new File(path);
        FileOutputStream fOut;
        try {
            fOut = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 95, fOut);
            fOut.flush();
            fOut.close();
            return true;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;

    }

    public static Bitmap scaleBitmap(Bitmap originalBitmap, int toWidth, int toHeight) {

        int image_width = originalBitmap.getWidth();
        int image_height = originalBitmap.getHeight();

        float scale = (float) toWidth / (float) image_width;

        if (image_width < image_height) {
            scale = toHeight / image_height;
        }

        return Bitmap.createScaledBitmap(originalBitmap, (int) (image_width * scale), (int) (image_height * scale),
                true);

    }
}