Skip to content

Commit

Permalink
Completed Homework 2
Browse files Browse the repository at this point in the history
  • Loading branch information
sudar committed Feb 23, 2010
1 parent c294664 commit 0027bda
Show file tree
Hide file tree
Showing 8 changed files with 110 additions and 4 deletions.
Binary file modified TaskManager/bin/TaskManager.apk
Binary file not shown.
Binary file modified TaskManager/bin/classes.dex
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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<Task> currentTasks;

@SuppressWarnings("unchecked")
@Override
public void onCreate() {
super.onCreate();
if (null == currentTasks) {
currentTasks = new ArrayList<Task>();
}

// load tasks from preference
SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);

try {
currentTasks = (ArrayList<Task>) ObjectSerializer.deserialize(prefs.getString(TASKS, ObjectSerializer.serialize(new ArrayList<Task>())));
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

public void setCurrentTasks(ArrayList<Task> currentTasks) {
Expand All @@ -32,5 +52,15 @@ public void addTask(Task t) {
currentTasks = new ArrayList<Task>();
}
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();
}
}
14 changes: 10 additions & 4 deletions 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) {
Expand All @@ -17,6 +24,5 @@ public void setName(String name) {

public String toString() {
return name;
}

}
}
}
@@ -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;
}
}

0 comments on commit 0027bda

Please sign in to comment.