Android Open Source - ShoppingList Shopping Item Builder






From Project

Back to project page ShoppingList.

License

The source code is released under:

GNU General Public License

If you think the Android project ShoppingList listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package net.sledzdev.shoppinglist.model;
//from w w w  .  jav a 2s .  c o m
import com.google.common.base.Optional;

import net.sledzdev.shoppinglist.manager.ContentManager;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ExecutionException;

public class ShoppingItemBuilder {
    private static Set<ShoppingItem> createdItems = new HashSet<ShoppingItem>();
    private static Map<Long, ShoppingItem> itemsWithId = new HashMap<Long, ShoppingItem>();

    public void put(ShoppingItem item) {
        if (item.id != -1) {
            itemsWithId.put(item.id, item);
        }
    }

    private long id = -1;
    private String name;
    private double price = 0.0;
    private ShoppingList list;
    private long list_id = -1;
    private boolean checked = false;

    public ShoppingItemBuilder setId(long id) {
        this.id = id;
        return this;
    }

    public ShoppingItemBuilder setName(String name) {
        this.name = name;
        return this;
    }

    public ShoppingItemBuilder setPrice(double price) {
        this.price = price;
        return this;
    }

    public ShoppingItemBuilder setList(ShoppingList list) {
        this.list = list;
        return this;
    }

    public ShoppingItemBuilder setList_id(long list_id) {
        this.list_id = list_id;
        return this;
    }

    public ShoppingItemBuilder setChecked(boolean checked) {
        this.checked = checked;
        return this;
    }

    public ShoppingItemBuilder setChecked(int checked) {
        return setChecked(checked == 1);
    }

    public ShoppingItem createShoppingItem() {
        preconditions();

        if (checkIfNew()) {
            return createNewItem();
        }

        return changeExistingItem();
    }

    protected void preconditions() {
        if (listNotSet() || name == null) {
            throw new IllegalArgumentException("shopping list or name not set!");
        }

        if (list == null) {
            try {
                setListFromId();
            } catch (InterruptedException e) {
                throw new IllegalArgumentException(e.toString());
            } catch (ExecutionException e) {
                throw new IllegalArgumentException(e.toString());
            }
        }
    }

    protected boolean checkIfNew() {
        return id == -1 || !itemsWithId.containsKey(id);
    }

    protected ShoppingItem createNewItem() {
        ShoppingItem item = new ShoppingItem(id, name, list, price, checked, id == -1);
        createdItems.add(item);
        put(item);
        return item;
    }

    protected ShoppingItem changeExistingItem() {
        ShoppingItem item = itemsWithId.get(id);
        item.list = list;
        item.name = name;
        item.price = price;
        return item;
    }

    protected boolean listNotSet() {
        return list == null && list_id < 0;
    }

    protected void setListFromId() throws InterruptedException, ExecutionException {
        Optional<ShoppingList> shoppingListOptional = getShoppingListOptional();
        if (!shoppingListOptional.isPresent()) {
            throw new IllegalArgumentException("shopping item must have list\n got: " + this);
        }
        list = shoppingListOptional.orNull();
    }

    private Optional<ShoppingList> getShoppingListOptional() throws InterruptedException, ExecutionException {
        Optional<ShoppingList> shoppingListOptional;
        Optional<ContentManager> managerOptional = ContentManager.getExistingManager();

        if (managerOptional.isPresent()) {
            shoppingListOptional = managerOptional.get().getList(list_id).get();
        } else {
            shoppingListOptional = ShoppingListFactory.get(list_id);
        }

        return shoppingListOptional;
    }

    @Override
    public String toString() {
        return "ShoppingItemBuilder{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", list=" + list +
                ", list_id=" + list_id +
                '}';
    }
}




Java Source Code List

net.sledzdev.shoppinglist.DetailFragmentHandlersRegister.java
net.sledzdev.shoppinglist.ItemDialogActivity.java
net.sledzdev.shoppinglist.ShoppingListDetailActivity.java
net.sledzdev.shoppinglist.ShoppingListDetailFragment.java
net.sledzdev.shoppinglist.ShoppingListsActivity.java
net.sledzdev.shoppinglist.ShoppingListsFragment.java
net.sledzdev.shoppinglist.adapter.DataModelAdapter.java
net.sledzdev.shoppinglist.adapter.DataModel.java
net.sledzdev.shoppinglist.adapter.ElementWithId.java
net.sledzdev.shoppinglist.adapter.ItemAdapterEventController.java
net.sledzdev.shoppinglist.adapter.ItemAdapter.java
net.sledzdev.shoppinglist.adapter.ListMapDataModelTest.java
net.sledzdev.shoppinglist.adapter.ListMapDataModel.java
net.sledzdev.shoppinglist.adapter.ShoppingListAdapterEventsHandler.java
net.sledzdev.shoppinglist.adapter.ShoppingListsAdapter.java
net.sledzdev.shoppinglist.content.DatabaseHelper.java
net.sledzdev.shoppinglist.content.DatabaseUriContentProvider.java
net.sledzdev.shoppinglist.content.ItemRowProvider.java
net.sledzdev.shoppinglist.content.ItemsProvider.java
net.sledzdev.shoppinglist.content.ItemsTable.java
net.sledzdev.shoppinglist.content.ListRowProvider.java
net.sledzdev.shoppinglist.content.ListsProvider.java
net.sledzdev.shoppinglist.content.ListsTable.java
net.sledzdev.shoppinglist.content.RowUriProvider.java
net.sledzdev.shoppinglist.content.ShoppingListProviderTest.java
net.sledzdev.shoppinglist.content.ShoppingListProvider.java
net.sledzdev.shoppinglist.content.ShoppingProviderContract.java
net.sledzdev.shoppinglist.content.TableUriProvider.java
net.sledzdev.shoppinglist.content.UriContentProvider.java
net.sledzdev.shoppinglist.event.ClearListEvent.java
net.sledzdev.shoppinglist.event.EventBusFactory.java
net.sledzdev.shoppinglist.event.ItemChangedEvent.java
net.sledzdev.shoppinglist.event.ItemCheckedChangedEvent.java
net.sledzdev.shoppinglist.event.ItemDeleteEvent.java
net.sledzdev.shoppinglist.event.ItemDialogCloseEvent.java
net.sledzdev.shoppinglist.event.ItemDialogOpenRequestEvent.java
net.sledzdev.shoppinglist.event.ListDeleteEvent.java
net.sledzdev.shoppinglist.event.ListSelectedEvent.java
net.sledzdev.shoppinglist.event.ListTitleChangedEvent.java
net.sledzdev.shoppinglist.event.NewItemEvent.java
net.sledzdev.shoppinglist.event.NewListEvent.java
net.sledzdev.shoppinglist.event.NewListRequestEvent.java
net.sledzdev.shoppinglist.event.TextWatcherAdapter.java
net.sledzdev.shoppinglist.event.UpdateListAdapterEvent.java
net.sledzdev.shoppinglist.handlers.ClearListEventHandler.java
net.sledzdev.shoppinglist.handlers.ItemChangedEventHandler.java
net.sledzdev.shoppinglist.handlers.ItemCheckedChangeEventHandler.java
net.sledzdev.shoppinglist.handlers.ItemDeleteEventHandler.java
net.sledzdev.shoppinglist.handlers.ItemDialogOpenRequestEventHandler.java
net.sledzdev.shoppinglist.handlers.ListDeleteEventHandler.java
net.sledzdev.shoppinglist.handlers.ListSelectedEventHandler.java
net.sledzdev.shoppinglist.handlers.ListTitleChangedEventHandler.java
net.sledzdev.shoppinglist.handlers.NewItemEventHandler.java
net.sledzdev.shoppinglist.handlers.NewListEventHandler.java
net.sledzdev.shoppinglist.manager.ContentManagerTests.java
net.sledzdev.shoppinglist.manager.ContentManager.java
net.sledzdev.shoppinglist.manager.ContentTransformer.java
net.sledzdev.shoppinglist.manager.ItemContentTransformer.java
net.sledzdev.shoppinglist.manager.ListsContentTransformer.java
net.sledzdev.shoppinglist.manager.MockContentManager.java
net.sledzdev.shoppinglist.manager.OnUiThreadFutureCallback.java
net.sledzdev.shoppinglist.model.ShoppingItemBuilderTest.java
net.sledzdev.shoppinglist.model.ShoppingItemBuilder.java
net.sledzdev.shoppinglist.model.ShoppingItem.java
net.sledzdev.shoppinglist.model.ShoppingListFactoryTest.java
net.sledzdev.shoppinglist.model.ShoppingListFactory.java
net.sledzdev.shoppinglist.model.ShoppingList.java