Back to project page trivial-lists.
The source code is released under:
MIT License
If you think the Android project trivial-lists listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package org.hbabcock.triviallists; //w w w .jav a2 s. c o m import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.UUID; import android.content.Context; import android.util.Log; public class CategoryItemManager { private static final String TAG = "CategoryItemManager"; private static final String CATEGORY_FILENAME = "categories.json"; private static final String ITEM_FILENAME = "items.json"; private ArrayList<Item> mAllItems; private Context mAppContext; private ArrayList<Category> mCategories; private ArrayList<Item> mCategoryItems; private TrivialListJSONSerializer mSerializer; private static CategoryItemManager sCategoryItemManager; private CategoryItemManager(Context appContext){ Log.i(TAG, "load"); mAppContext = appContext; mSerializer = new TrivialListJSONSerializer(mAppContext); mCategoryItems = new ArrayList<Item>(); try { mCategories = mSerializer.loadCategories(CATEGORY_FILENAME); mAllItems = mSerializer.loadItems(ITEM_FILENAME); } catch (Exception e){ Log.e(TAG, "Error loading: ", e); mCategories = new ArrayList<Category>(); mAllItems = new ArrayList<Item>(); } } public static CategoryItemManager get(Context c){ if (sCategoryItemManager == null){ Log.i(TAG, "Creating new CategoryItemManager"); sCategoryItemManager = new CategoryItemManager(c.getApplicationContext()); } return sCategoryItemManager; } public void addCategory(Category c){ mCategories.add(c); } public void addItem(Item i){ Log.i(TAG, "addItem " + i.getCategoryId()); mAllItems.add(i); mCategoryItems.add(i); } public void deleteCategory(Category c){ Iterator<Item> it = mAllItems.iterator(); while(it.hasNext()) { Item i = it.next(); if (i.getCategoryId().equals(c.getId())){ it.remove(); } } mCategories.remove(c); } public void deleteItem(Item i){ mAllItems.remove(i); mCategoryItems.remove(i); Log.i(TAG, "deleteItem ," + mCategoryItems.size()); } public Category getCategory(UUID id){ for (Category c : mCategories){ if (c.getId().equals(id)){ return c; } } return null; } public Item getItem(UUID id){ for (Item i : mAllItems){ if (i.getId().equals(id)){ return i; } } return null; } public ArrayList<Category> getCategories(){ return mCategories; } public ArrayList<Item> getItems(Category c){ Log.i(TAG, "getItems " + mAllItems.size() + " " + c.getId()); mCategoryItems.clear(); for (Item i : mAllItems){ if (i.getCategoryId().equals(c.getId())){ mCategoryItems.add(i); } } return mCategoryItems; } public void save(){ Log.i(TAG, "save"); Collections.sort(mCategories, new Comparator<Category>() { @Override public int compare(Category c1, Category c2) { return c1.getName().compareTo(c2.getName()); } }); Collections.sort(mAllItems, new Comparator<Item>() { @Override public int compare(Item i1, Item i2) { return i1.getName().compareTo(i2.getName()); } }); try { mSerializer.saveCategories(mCategories, CATEGORY_FILENAME); mSerializer.saveItems(mAllItems, ITEM_FILENAME); } catch (Exception e){ Log.e(TAG, "Error saving: ", e); } } }