/** * Copyright (c) 2012, Google Inc. * * 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.mail.providers; import com.android.mail.utils.LogTag; import com.android.mail.utils.LogUtils; import android.os.Parcel; import android.os.Parcelable; import org.json.JSONException; import org.json.JSONObject; public class ListParams implements Parcelable { private static final String LIMIT_KEY = "limit"; private static final String USE_NETWORK_KEY = "use-network"; public static final int NO_LIMIT = -1; private static final String LOG_TAG = LogTag.getLogTag(); // The maximum number of results to be created by this search public final int mLimit; public final boolean mUseNetwork; public ListParams(int limit, boolean useNetwork) { mLimit = limit; mUseNetwork = useNetwork; } /** * Supports Parcelable */ public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override public ListParams createFromParcel(Parcel in) { return new ListParams(in); } @Override public ListParams[] newArray(int size) { return new ListParams[size]; } }; /** * Supports Parcelable */ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mLimit); dest.writeInt(mUseNetwork ? 1 : 0); } /** * Supports Parcelable */ @Override public int describeContents() { return 0; } /** * Supports Parcelable */ public ListParams(Parcel in) { mLimit = in.readInt(); mUseNetwork = in.readInt() != 0; } /** * Return a serialized String for this ListParams. */ public synchronized String serialize() { JSONObject json = new JSONObject(); try { json.put(LIMIT_KEY, mLimit); json.put(USE_NETWORK_KEY, mUseNetwork); } catch (JSONException e) { LogUtils.wtf(LOG_TAG, e, "Could not serialize ListParams"); } return json.toString(); } /** * Create a new instance of an ListParams object using a serialized instance created previously * using {@link #serialize()}. This returns null if the serialized instance was invalid or does * not represent a valid parameter object. * * @param serializedParams * @return */ public static ListParams newinstance(String serializedParams) { // This method is a wrapper to check for errors and exceptions and return back a null // in cases something breaks. JSONObject json = null; try { json = new JSONObject(serializedParams); final int limit = json.getInt(LIMIT_KEY); final boolean useNetwork = json.getBoolean(USE_NETWORK_KEY); return new ListParams(limit, useNetwork); } catch (JSONException e) { LogUtils.wtf(LOG_TAG, e, "Could not create an params object from this input: \"" + serializedParams); return null; } } }