com.jamesgiang.aussnowcam.Utils.java Source code

Java tutorial

Introduction

Here is the source code for com.jamesgiang.aussnowcam.Utils.java

Source

/**
 * AusSnowCam: View snowcams from Australia's snow resorts
 * File: Utils.java
 *
 * @author James Giang
 *
 * Copyright 2011 James Giang
 *
 * 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.jamesgiang.aussnowcam;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import org.json.*;

import com.loopj.android.http.JsonHttpResponseHandler;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.util.Linkify;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class Utils {

    public static void About(Context c) {
        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(c);
        dialogBuilder.setTitle(R.string.app_name);
        dialogBuilder.setIcon(R.drawable.icon);
        TextView textView = new TextView(c);
        SpannableString s = new SpannableString(c.getString(R.string.about_info));
        Linkify.addLinks(s, Linkify.WEB_URLS);
        textView.setText(s);
        textView.setGravity(Gravity.CENTER);
        textView.setMovementMethod(LinkMovementMethod.getInstance());
        dialogBuilder.setView(textView);
        dialogBuilder.show();
    }

    public static void WriteSettings(Context context, String data, String file) throws IOException {
        FileOutputStream fOut = null;
        OutputStreamWriter osw = null;
        fOut = context.openFileOutput(file, Context.MODE_PRIVATE);
        osw = new OutputStreamWriter(fOut);
        osw.write(data);
        osw.close();
        fOut.close();
    }

    public static String ReadSettings(Context context, String file) throws IOException {
        FileInputStream fIn = null;
        InputStreamReader isr = null;
        String data = null;
        fIn = context.openFileInput(file);
        isr = new InputStreamReader(fIn);
        char[] inputBuffer = new char[fIn.available()];
        isr.read(inputBuffer);
        data = new String(inputBuffer);
        isr.close();
        fIn.close();
        return data;
    }

    public static boolean CheckSetting(Context context, String file) {
        String[] filenames = context.fileList();
        for (String name : filenames) {
            if (name.equals(file)) {
                return true;
            }
        }
        return false;
    }

    public static String getEndPoint(int i) {
        String result = null;
        switch (i) {
        case 0:
            result = "IDV60801/IDV60801.94894.json";
            break;
        case 1:
            result = "IDV60801/IDV60801.94906.json";
            break;
        case 2:
            result = "IDV60801/IDV60801.94903.json";
            break;
        case 3:
            result = "IDV60801/IDV60801.95901.json";
            break;
        case 4:
            result = "IDN60801/IDN60801.94915.json";
            break;
        case 5:
            result = "IDN60801/IDN60801.95908.json";
            break;
        case 6:
            result = null;
            break;
        case 7:
            result = "IDN60801/IDN60801.95912.json";
            break;
        case 8:
            result = null;
            break;
        case 9:
            result = null;
            break;
        case 10:
            result = null;
            break;
        }
        return result;
    }

    public static void toastWeather(final Context c, int i) {
        String end_point = getEndPoint(i);
        if (end_point != null) {
            BOMClient.get(end_point, null, new JsonHttpResponseHandler() {
                @Override
                public void onSuccess(JSONObject response) {
                    try {
                        String resultString = null;
                        JSONObject result = (JSONObject) response.getJSONObject("observations").getJSONArray("data")
                                .get(0);
                        JSONObject header = (JSONObject) response.getJSONObject("observations")
                                .getJSONArray("header").get(0);
                        resultString = "Weather Observations for " + header.getString("name") + "\n\n";
                        if (result.isNull("air_temp")) {
                            resultString = "Temperature: - \n";
                        } else {
                            resultString += "Temperature: " + result.getString("air_temp") + "\n";
                        }
                        if (result.isNull("wind_dir")) {
                            resultString += "Wind Direction: - \n";
                        } else {
                            resultString += "Wind Direction: " + result.getString("wind_dir") + "\n";
                        }
                        if (result.isNull("wind_spd_kmh")) {
                            resultString += "Wind Speed (km/h): - \n";
                        } else {
                            resultString += "Wind Speed (km/h): " + result.getString("wind_spd_kmh") + "\n";
                        }
                        if (result.isNull("gust_kmh")) {
                            resultString += "Gust Speed (km/h): - \n";
                        } else {
                            resultString += "Gust Speed (km/h): " + result.getString("gust_kmh") + "\n";
                        }
                        if (result.isNull("rain_trace")) {
                            resultString += "Rain since 9am (mm): - \n\n";
                        } else {
                            resultString += "Rain since 9am (mm): " + result.getString("rain_trace") + "\n\n";
                        }
                        resultString += header.getString("refresh_message");
                        Toast.makeText(c, resultString, Toast.LENGTH_LONG).show();
                    } catch (JSONException e) {
                        Toast.makeText(c, "Weather data not available", Toast.LENGTH_LONG).show();
                    }
                }
            });
        } else {
            Toast.makeText(c, "Weather data not available", Toast.LENGTH_LONG).show();
        }
    }

    public static void loadWeather(final Activity a, int i) {
        final TextView title;
        final TextView data1;
        final TextView data2;
        final TextView data3;
        final TextView data4;
        final TextView data5;
        final TextView data6;
        title = (TextView) a.findViewById(R.id.weatherTitle);
        data1 = (TextView) a.findViewById(R.id.data1);
        data2 = (TextView) a.findViewById(R.id.data2);
        data3 = (TextView) a.findViewById(R.id.data3);
        data4 = (TextView) a.findViewById(R.id.data4);
        data5 = (TextView) a.findViewById(R.id.data5);
        data6 = (TextView) a.findViewById(R.id.data6);
        String end_point = getEndPoint(i);
        if (end_point != null) {
            BOMClient.get(end_point, null, new JsonHttpResponseHandler() {
                @Override
                public void onSuccess(JSONObject response) {
                    try {
                        JSONObject result = (JSONObject) response.getJSONObject("observations").getJSONArray("data")
                                .get(0);
                        JSONObject header = (JSONObject) response.getJSONObject("observations")
                                .getJSONArray("header").get(0);
                        data1.setVisibility(View.VISIBLE);
                        data2.setVisibility(View.VISIBLE);
                        data3.setVisibility(View.VISIBLE);
                        data4.setVisibility(View.VISIBLE);
                        data5.setVisibility(View.VISIBLE);
                        data6.setVisibility(View.VISIBLE);
                        title.setText("Weather Observations for " + header.getString("name"));
                        if (result.isNull("air_temp")) {
                            data1.setText("Temperature: - ");
                        } else {
                            data1.setText("Temperature: " + result.getString("air_temp"));
                        }
                        if (result.isNull("wind_dir")) {
                            data2.setText("Wind Direction: - ");
                        } else {
                            data2.setText("Wind Direction: " + result.getString("wind_dir"));
                        }
                        if (result.isNull("wind_spd_kmh")) {
                            data3.setText("Wind Speed (km/h): - ");
                        } else {
                            data3.setText("Wind Speed (km/h): " + result.getString("wind_spd_kmh"));
                        }
                        if (result.isNull("gust_kmh")) {
                            data4.setText("Gust Speed (km/h): - ");
                        } else {
                            data4.setText("Gust Speed (km/h): " + result.getString("gust_kmh"));
                        }
                        if (result.isNull("rain_trace")) {
                            data5.setText("Rain since 9am (mm): - ");
                        } else {
                            data5.setText("Rain since 9am (mm): " + result.getString("rain_trace"));
                        }
                        data6.setText(header.getString("refresh_message"));
                    } catch (JSONException e) {
                        title.setText("Weather data not available");
                        data1.setVisibility(View.GONE);
                        data2.setVisibility(View.GONE);
                        data3.setVisibility(View.GONE);
                        data4.setVisibility(View.GONE);
                        data5.setVisibility(View.GONE);
                        data6.setVisibility(View.GONE);
                    }
                }
            });
        } else {
            title.setText("Weather data not available");
            data1.setVisibility(View.GONE);
            data2.setVisibility(View.GONE);
            data3.setVisibility(View.GONE);
            data4.setVisibility(View.GONE);
            data5.setVisibility(View.GONE);
            data6.setVisibility(View.GONE);
        }
    }
}