diff --git a/TaskManager/bin/TaskManager.apk b/TaskManager/bin/TaskManager.apk index eccde31..22c5143 100644 Binary files a/TaskManager/bin/TaskManager.apk and b/TaskManager/bin/TaskManager.apk differ diff --git a/TaskManager/bin/classes.dex b/TaskManager/bin/classes.dex index edd34ff..a6f944c 100644 Binary files a/TaskManager/bin/classes.dex and b/TaskManager/bin/classes.dex differ diff --git a/TaskManager/bin/com/sudarmuthu/android/taskmanager/TaskManagerApplication.class b/TaskManager/bin/com/sudarmuthu/android/taskmanager/TaskManagerApplication.class index cfd3c74..3719ed0 100644 Binary files a/TaskManager/bin/com/sudarmuthu/android/taskmanager/TaskManagerApplication.class and b/TaskManager/bin/com/sudarmuthu/android/taskmanager/TaskManagerApplication.class differ diff --git a/TaskManager/bin/com/sudarmuthu/android/taskmanager/tasks/Task.class b/TaskManager/bin/com/sudarmuthu/android/taskmanager/tasks/Task.class index e05393e..1b423eb 100644 Binary files a/TaskManager/bin/com/sudarmuthu/android/taskmanager/tasks/Task.class and b/TaskManager/bin/com/sudarmuthu/android/taskmanager/tasks/Task.class differ diff --git a/TaskManager/bin/com/sudarmuthu/android/taskmanager/util/ObjectSerializer.class b/TaskManager/bin/com/sudarmuthu/android/taskmanager/util/ObjectSerializer.class new file mode 100644 index 0000000..641afbc Binary files /dev/null and b/TaskManager/bin/com/sudarmuthu/android/taskmanager/util/ObjectSerializer.class differ diff --git a/TaskManager/src/com/sudarmuthu/android/taskmanager/TaskManagerApplication.java b/TaskManager/src/com/sudarmuthu/android/taskmanager/TaskManagerApplication.java index ce7bdf5..a3140dd 100644 --- a/TaskManager/src/com/sudarmuthu/android/taskmanager/TaskManagerApplication.java +++ b/TaskManager/src/com/sudarmuthu/android/taskmanager/TaskManagerApplication.java @@ -1,21 +1,41 @@ package com.sudarmuthu.android.taskmanager; +import java.io.IOException; import java.util.ArrayList; import android.app.Application; +import android.content.Context; +import android.content.SharedPreferences; +import android.content.SharedPreferences.Editor; +import android.util.Log; import com.sudarmuthu.android.taskmanager.tasks.Task; +import com.sudarmuthu.android.taskmanager.util.ObjectSerializer; public class TaskManagerApplication extends Application { + private static final String SHARED_PREFS_FILE = "shared_prefs_file"; + private static final String TASKS = "tasks"; private ArrayList currentTasks; + @SuppressWarnings("unchecked") @Override public void onCreate() { super.onCreate(); if (null == currentTasks) { currentTasks = new ArrayList(); } + + // load tasks from preference + SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE); + + try { + currentTasks = (ArrayList) ObjectSerializer.deserialize(prefs.getString(TASKS, ObjectSerializer.serialize(new ArrayList()))); + } catch (IOException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } } public void setCurrentTasks(ArrayList currentTasks) { @@ -32,5 +52,15 @@ public void addTask(Task t) { currentTasks = new ArrayList(); } currentTasks.add(t); + + //save the task list to preference + SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE); + Editor editor = prefs.edit(); + try { + editor.putString(TASKS, ObjectSerializer.serialize(currentTasks)); + } catch (IOException e) { + e.printStackTrace(); + } + editor.commit(); } } \ No newline at end of file diff --git a/TaskManager/src/com/sudarmuthu/android/taskmanager/tasks/Task.java b/TaskManager/src/com/sudarmuthu/android/taskmanager/tasks/Task.java index d3f3490..e1af968 100644 --- a/TaskManager/src/com/sudarmuthu/android/taskmanager/tasks/Task.java +++ b/TaskManager/src/com/sudarmuthu/android/taskmanager/tasks/Task.java @@ -1,6 +1,13 @@ package com.sudarmuthu.android.taskmanager.tasks; -public class Task { +import java.io.Serializable; + +public class Task implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + private String name; public Task(String taskName) { @@ -17,6 +24,5 @@ public void setName(String name) { public String toString() { return name; - } - -} + } +} \ No newline at end of file diff --git a/TaskManager/src/com/sudarmuthu/android/taskmanager/util/ObjectSerializer.java b/TaskManager/src/com/sudarmuthu/android/taskmanager/util/ObjectSerializer.java new file mode 100644 index 0000000..e9c3c4d --- /dev/null +++ b/TaskManager/src/com/sudarmuthu/android/taskmanager/util/ObjectSerializer.java @@ -0,0 +1,70 @@ +package com.sudarmuthu.android.taskmanager.util; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + +//copied from http://github.com/apache/pig/blob/89c2e8e76c68d0d0abe6a36b4e08ddc56979796f/src/org/apache/pig/impl/util/ObjectSerializer.java +//package org.apache.pig.impl.util; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; + +public class ObjectSerializer { + + public static String serialize(Serializable obj) throws IOException { + if (obj == null) return ""; + ByteArrayOutputStream serialObj = new ByteArrayOutputStream(); + ObjectOutputStream objStream = new ObjectOutputStream(serialObj); + objStream.writeObject(obj); + objStream.close(); + return encodeBytes(serialObj.toByteArray()); + } + + public static Object deserialize(String str) throws IOException, ClassNotFoundException { + if (str == null || str.length() == 0) return null; + ByteArrayInputStream serialObj = new ByteArrayInputStream(decodeBytes(str)); + ObjectInputStream objStream = new ObjectInputStream(serialObj); + return objStream.readObject(); + } + + public static String encodeBytes(byte[] bytes) { + StringBuffer strBuf = new StringBuffer(); + + for (int i = 0; i < bytes.length; i++) { + strBuf.append((char) (((bytes[i] >> 4) & 0xF) + ((int) 'a'))); + strBuf.append((char) (((bytes[i]) & 0xF) + ((int) 'a'))); + } + + return strBuf.toString(); + } + + public static byte[] decodeBytes(String str) { + byte[] bytes = new byte[str.length() / 2]; + for (int i = 0; i < str.length(); i+=2) { + char c = str.charAt(i); + bytes[i/2] = (byte) ((c - 'a') << 4); + c = str.charAt(i+1); + bytes[i/2] += (c - 'a'); + } + return bytes; + } +} \ No newline at end of file