com.ksk.droidbatterybooster.provider.OptimalMode.java Source code

Java tutorial

Introduction

Here is the source code for com.ksk.droidbatterybooster.provider.OptimalMode.java

Source

/*
 * Copyright (C) 2014 IUH yber$oft Team
 * 
 * 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.ksk.droidbatterybooster.provider;

import java.util.LinkedList;
import java.util.List;

import vn.cybersoft.obs.android.utilities.DeviceUtils;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.support.v4.content.CursorLoader;

/**
 * @author Luan Vu
 *
 */
public class OptimalMode implements /*Parcelable */ DataProviderApi.OptimalModesColumns {
    public static final String EXTRA_ID = "optimal_mode_id";

    public static final long INVALID_ID = -1;
    /**
     * The default sort order for this table
     */
    public static final String DEFAULT_SORT_ORDER = _ID + " ASC";

    public static final String[] QUERY_COLUMNS = { _ID, NAME, DESC, CAN_EDIT, SCREEN_BRIGHTNESS, SCREEN_TIMEOUT,
            VIBRATE, WIFI, BLUETOOTH, SYNC, HAPTIC_FEEDBACK };

    /**
     * These save calls to cursor.getColumnIndexOrThrow()
     * THEY MUST BE KEPT IN SYNC WITH ABOVE QUERY COLUMNS
     */
    public static final int MODE_ID_INDEX = 0;
    public static final int MODE_NAME_INDEX = 1;
    public static final int MODE_DESC_INDEX = 2;
    public static final int MODE_CAN_EDIT_INDEX = 3;
    public static final int MODE_SCREEN_BRIGHTNESS_INDEX = 4;
    public static final int MODE_SCREEN_TIMEOUT_INDEX = 5;
    public static final int MODE_VIBRATE_INDEX = 6;
    public static final int MODE_WIFI_INDEX = 7;
    public static final int MODE_BLUETOOTH_INDEX = 8;
    public static final int MODE_SYNC_INDEX = 9;
    public static final int MODE_HAPTIC_FEEDBACK_INDEX = 10;

    private static final int COUTN_COLUMN = MODE_HAPTIC_FEEDBACK_INDEX + 1;

    private static ContentValues createContentValues(OptimalMode mode) {
        ContentValues values = new ContentValues(COUTN_COLUMN);
        values.put(NAME, mode.name);
        values.put(DESC, mode.desc);
        values.put(CAN_EDIT, mode.canEdit ? 1 : 0);
        values.put(SCREEN_BRIGHTNESS, mode.screenBrightness);
        values.put(SCREEN_TIMEOUT, mode.screenTimeout);
        values.put(VIBRATE, mode.vibrate ? 1 : 0);
        values.put(WIFI, mode.wifi ? 1 : 0);
        values.put(BLUETOOTH, mode.bluetooth ? 1 : 0);
        values.put(SYNC, mode.sync ? 1 : 0);
        values.put(HAPTIC_FEEDBACK, mode.hapticFeedback ? 1 : 0);
        return values;
    }

    public static long getModeId(Uri contentUri) {
        return ContentUris.parseId(contentUri);
    }

    public static Uri getContentUriForId(long modeId) {
        return ContentUris.withAppendedId(CONTENT_URI, modeId);
    }

    public static OptimalMode addMode(ContentResolver contentResolver, OptimalMode mode) {
        ContentValues values = createContentValues(mode);
        Uri uri = contentResolver.insert(CONTENT_URI, values);
        mode.id = getModeId(uri);
        return mode;
    }

    public static boolean updateMode(ContentResolver contentResolver, OptimalMode mode) {
        if (mode.id == OptimalMode.INVALID_ID)
            return false;
        ContentValues values = createContentValues(mode);
        long rowsUpdated = contentResolver.update(getContentUriForId(mode.id), values, null, null);
        return rowsUpdated == 1;
    }

    public static boolean deleteMode(ContentResolver contentResolver, long modeId) {
        if (modeId == OptimalMode.INVALID_ID)
            return false;
        int deletedRows = contentResolver.delete(getContentUriForId(modeId), "", null);
        return deletedRows == 1;
    }

    /**
     * Get mode cursor loader for all modes.
     * 
     * @param context to query the database.
     * @return cursor loader with all the optimal modes.
     */
    public static CursorLoader getModesCursorLoader(Context context) {
        return new CursorLoader(context, DataProviderApi.OptimalModesColumns.CONTENT_URI, QUERY_COLUMNS, null, null,
                DEFAULT_SORT_ORDER);
    }

    /**
     * Get mode by id.
     * 
     * @param contentResolver
     * @param modeId
     * @return mode if found, null otherwise
     */
    public static OptimalMode getMode(ContentResolver contentResolver, long modeId) {
        Cursor cursor = contentResolver.query(getContentUriForId(modeId), QUERY_COLUMNS, null, null, null);
        OptimalMode result = null;
        if (cursor == null) {
            return result;
        }

        try {
            if (cursor.moveToFirst()) {
                result = new OptimalMode(cursor);
            }
        } finally {
            cursor.close();
        }

        return result;
    }

    /**
     * Get all optimal modes given conditions.
     * 
     * @param contentResolver to perform the query on.
     * @param selection A filter declaring which rows to return, formatted as an
     *         SQL WHERE clause (excluding the WHERE itself). Passing null will
     *         return all rows for the given URI.
     * @param selectionArgs You may include ?s in selection, which will be
     *         replaced by the values from selectionArgs, in the order that they
     *         appear in the selection. The values will be bound as Strings.
     * @return list of optimal modes matching where clause or empty list if none found.
     */
    public static List<OptimalMode> getModes(ContentResolver contentResolver, String selection,
            String... selectionArgs) {
        Cursor cursor = contentResolver.query(CONTENT_URI, QUERY_COLUMNS, selection, selectionArgs, null);
        List<OptimalMode> result = new LinkedList<OptimalMode>();
        if (cursor == null) {
            return result;
        }

        try {
            if (cursor.moveToFirst()) {
                do {
                    result.add(new OptimalMode(cursor));
                } while (cursor.moveToNext());
            }
        } finally {
            cursor.close();
        }

        return result;
    }

    private static String generalModeName() {
        Cursor c = null;

        try {
        } catch (Exception e) {
            // TODO: handle exception
        }

        return "";
    }

    /*   public static final Parcelable.Creator<OptimalMode> CREATOR = new Parcelable.Creator<OptimalMode>() {
        
          @Override
          public OptimalMode createFromParcel(Parcel p) {
     return new OptimalMode(p);
          }
        
          @Override
          public OptimalMode[] newArray(int size) {
     return new OptimalMode[size];
          }
        
       };*/

    /*   @Override
       public int describeContents() {
          return 0;
       }
        
       @Override
       public void writeToParcel(Parcel p, int flags) {
          p.writeLong(id);
          p.writeString(name);
          p.writeString(desc);
          p.writeInt(canEdit ? 1 : 0);
          p.writeInt(screenBrightness);
          p.writeInt(screenTimeout);
          p.writeInt(vibrate ? 1 : 0);
          p.writeInt(wifi ? 1 : 0);
          p.writeInt(bluetooth ? 1 : 0);
          p.writeInt(sync ? 1 : 0);
          p.writeInt(hapticFeedback ? 1 : 0);
       }*/

    public long id;
    public String name;
    public String desc;
    public boolean canEdit;
    public int screenBrightness;
    public int screenTimeout;
    public boolean vibrate;
    public boolean wifi;
    public boolean bluetooth;
    /* not use yet */
    public boolean mobileData;
    public boolean sync;
    public boolean hapticFeedback;

    /*    public OptimalMode(Parcel p) {
           id = p.readInt();
           name = p.readString();
           desc = p.readString();
           canEdit = p.readInt() == 1;
           screenBrightness = p.readInt();
           screenTimeout = p.readInt();
           vibrate = p.readInt() == 1;
           wifi = p.readInt() == 1;
           bluetooth = p.readInt() == 1;
           sync = p.readInt() == 1;
           hapticFeedback = p.readInt() == 1;
        }*/

    public OptimalMode() {
        id = -1;
        canEdit = true;
        screenBrightness = DeviceUtils.getScreenBrightness();
        screenTimeout = DeviceUtils.getScreenTimeoutInMillis();
        vibrate = true;
        wifi = true;
        bluetooth = true;
        sync = true;
        hapticFeedback = true;
    }

    public OptimalMode(Cursor c) {
        id = c.getInt(MODE_ID_INDEX);
        name = c.getString(MODE_NAME_INDEX);
        desc = c.getString(MODE_DESC_INDEX);
        canEdit = c.getInt(MODE_CAN_EDIT_INDEX) >= 1;
        screenBrightness = c.getInt(MODE_SCREEN_BRIGHTNESS_INDEX);
        screenTimeout = c.getInt(MODE_SCREEN_TIMEOUT_INDEX);
        vibrate = c.getInt(MODE_VIBRATE_INDEX) >= 1;
        wifi = c.getInt(MODE_WIFI_INDEX) >= 1;
        bluetooth = c.getInt(MODE_BLUETOOTH_INDEX) >= 1;
        sync = c.getInt(MODE_SYNC_INDEX) >= 1;
        hapticFeedback = c.getInt(MODE_HAPTIC_FEEDBACK_INDEX) >= 1;
    }

    public OptimalMode(int id, String name, String desc, boolean canEdit, int screenBrightness, int screenTimeout,
            boolean vibrate, boolean wifi, boolean bluetooth, boolean mobileData, boolean sync,
            boolean hapticFeedback) {
        this.id = id;
        this.name = name;
        this.desc = desc;
        this.canEdit = canEdit;
        this.screenBrightness = screenBrightness;
        this.screenTimeout = screenTimeout;
        this.vibrate = vibrate;
        this.wifi = wifi;
        this.bluetooth = bluetooth;
        this.mobileData = mobileData;
        this.sync = sync;
        this.hapticFeedback = hapticFeedback;
    }

    @Override
    public boolean equals(Object o) {
        if (!(o instanceof OptimalMode))
            return false;
        final OptimalMode other = (OptimalMode) o;
        return id == other.id;
    }

    @Override
    public int hashCode() {
        return Long.valueOf(id).hashCode();
    }

}