Project: android-vpn-settings
/*
 * Copyright (C) 2009 The Android Open Source Project 
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0 
 * 
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
 * limitations under the License. 
 */
 
package com.android.settings.vpn; 
 
import com.android.settings.R; 
 
import android.app.AlertDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.widget.Toast; 
 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
 
class Util { 
 
    static void showShortToastMessage(Context context, String message) { 
        Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); 
    } 
 
    static void showShortToastMessage(Context context, int messageId) { 
        Toast.makeText(context, messageId, Toast.LENGTH_SHORT).show(); 
    } 
 
    static void showLongToastMessage(Context context, String message) { 
        Toast.makeText(context, message, Toast.LENGTH_LONG).show(); 
    } 
 
    static void showLongToastMessage(Context context, int messageId) { 
        Toast.makeText(context, messageId, Toast.LENGTH_LONG).show(); 
    } 
 
    static void showErrorMessage(Context c, String message) { 
        createErrorDialog(c, message, null).show(); 
    } 
 
    static void showErrorMessage(Context c, String message, 
            DialogInterface.OnClickListener listener) { 
        createErrorDialog(c, message, listener).show(); 
    } 
 
    static void deleteFile(String path) { 
        deleteFile(new File(path)); 
    } 
 
    static void deleteFile(String path, boolean toDeleteSelf) { 
        deleteFile(new File(path), toDeleteSelf); 
    } 
 
    static void deleteFile(File f) { 
        deleteFile(f, true); 
    } 
 
    static void deleteFile(File f, boolean toDeleteSelf) { 
        if (f.isDirectory()) { 
            for (File child : f.listFiles()) deleteFile(child, true); 
        } 
        if (toDeleteSelf) f.delete(); 
    } 
 
    static boolean isFileOrEmptyDirectory(String path) { 
        File f = new File(path); 
        if (!f.isDirectory()) return true
 
        String[] list = f.list(); 
        return ((list == null) || (list.length == 0)); 
    } 
 
    static boolean copyFiles(String sourcePath , String targetPath) 
            throws IOException { 
        return copyFiles(new File(sourcePath), new File(targetPath)); 
    } 
 
    // returns false if sourceLocation is the same as the targetLocation 
    static boolean copyFiles(File sourceLocation , File targetLocation) 
            throws IOException { 
        if (sourceLocation.equals(targetLocation)) return false
 
        if (sourceLocation.isDirectory()) { 
            if (!targetLocation.exists()) { 
                targetLocation.mkdir(); 
            } 
            String[] children = sourceLocation.list(); 
            for (int i=0; i<children.length; i++) { 
                copyFiles(new File(sourceLocation, children[i]), 
                        new File(targetLocation, children[i])); 
            } 
        } else if (sourceLocation.exists()) { 
            InputStream in = new FileInputStream(sourceLocation); 
            OutputStream out = new FileOutputStream(targetLocation); 
 
            // Copy the bits from instream to outstream 
            byte[] buf = new byte[1024]; 
            int len; 
            while ((len = in.read(buf)) > 0) { 
                out.write(buf, 0, len); 
            } 
            in.close(); 
            out.close(); 
        } 
        return true
    } 
 
    private static AlertDialog createErrorDialog(Context c, String message, 
            DialogInterface.OnClickListener okListener) { 
        AlertDialog.Builder b = new AlertDialog.Builder(c) 
                .setTitle(android.R.string.dialog_alert_title) 
                .setIcon(android.R.drawable.ic_dialog_alert) 
                .setMessage(message); 
        if (okListener != null) { 
            b.setPositiveButton(R.string.vpn_back_button, okListener); 
        } else { 
            b.setPositiveButton(android.R.string.ok, null); 
        } 
        return b.create(); 
    } 
 
    private Util() { 
    } 
}