Android Open Source - minha-parte-na-conta Bar Account






From Project

Back to project page minha-parte-na-conta.

License

The source code is released under:

Copyright (c) 2015, Daniel Monteiro All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:...

If you think the Android project minha-parte-na-conta 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 br.odb.myshare.datamodel;
/*from ww  w. ja  va 2s .  c o m*/
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


import android.content.Context;



public class BarAccount {
  
  //------static stuff-----------------
  private static BarAccount currentAccount;
  
  public static void createNewBarAccount() {
    
    currentAccount = new BarAccount();
  }
  
  public static BarAccount getCurrentBarAccount() {
    
    return currentAccount;
  }  

  //------------------instance stuff -----
  private ArrayList< Person > people = new ArrayList< Person >();
  private ArrayList< Item > itemRepository = new ArrayList< Item >();
  private HashMap< Item, ArrayList< Person > > checkList = new HashMap<Item, ArrayList<Person>>();
  
  
  public List< Person > getPeople() {
    
    return people;
  }
  
  public List< Item > getItems() {
    
    return itemRepository;
  }
  
  public void addNewPerson( Person newPerson ) {
    
    people.add( newPerson );
  }
  
  public void addNewItem( Item newItem ) {
    
    checkList.put( newItem, new ArrayList< Person >() );
    itemRepository.add( newItem );
  }

  public void removePeopleWithName( String name ) {
    
    Person toDelete = null;
    
    for( Person person : people ) {
      
      if ( person.getName().equals( name ) ) {
        toDelete = person;
      }        
    }
    
    people.remove( toDelete );
  }

  public void removePerson(Person person) {
    
    people.remove( person );
  }

  public void removeProduct(Item item) {

    itemRepository.remove( item );
  }

  public void purchase(Person person, Item item) {

    ArrayList< Person > costumers = checkList.get( item );
    
    if ( !costumers.contains( person ) )
      costumers.add( person );
    
    if ( !person.itemsConsumed.contains( item ) )
      person.itemsConsumed.add( item );
  }

  public void cancelPurchase(Person person, Item item) {

    ArrayList< Person > costumers = checkList.get( item );
    costumers.remove( person );    
    person.itemsConsumed.remove( item );
  }

  public float getShare(Person person) {

    float toReturn = 0;
    List< Item > items = person.itemsConsumed;
    
    for( Item item: items ) {
      
      toReturn += getSharePrice( item );
    }
    return toReturn;
  }

  private float getSharePrice(Item item) {

    return ( item.cost ) / ( this.checkList.get( item ).size() );
  }

  public ArrayList< Person > getCostumersForItem(Item item) {

    return checkList.get( item );
  }

  public void saveAccount( Context context ) {

  String FILENAME = "data.dat";
      

      FileOutputStream fos;
      DataOutputStream dos;
      
    try {
      fos = context.openFileOutput(FILENAME, Context.MODE_PRIVATE);
      dos = new DataOutputStream( fos );
        
        dos.writeInt( itemRepository.size() );

        for ( int c = 0; c < itemRepository.size(); ++c ) {        

          dos.writeUTF( itemRepository.get( c ).name );
          dos.writeFloat( itemRepository.get( c ).cost );
        }

        dos.writeInt( people.size() );

        for ( int c = 0; c < people.size(); ++c ) {        

          dos.writeUTF( people.get( c ).name );
          dos.writeInt( people.get( c ).itemsConsumed.size() );
          
          for ( int d = 0; d < people.get( c ).itemsConsumed.size(); ++d ) {   
            dos.writeInt( itemRepository.indexOf( people.get( c ).itemsConsumed.get( d ) ) );
          }
        }
        
        dos.close();
        fos.close();
      
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }    
  }

  public void restoreAccount( Context context ) {
    
    String FILENAME = "data.dat";      
      int len = 0;
      int len2 = 0;
      int id;
      float cost;
      String str;
      FileInputStream fis;
      DataInputStream dis;
      Person person;
      Item item;
      
    try {
      fis = context.openFileInput( FILENAME );
      dis = new DataInputStream( fis );

        len = dis.readInt();

        for ( int c = 0; c < len; ++c ) {        

          str = dis.readUTF();
          cost = dis.readFloat();
          
          item = new Item( str, cost );
          addNewItem( item );
        }      
      
        len = dis.readInt();

        for ( int c = 0; c < len; ++c ) {          

          str = dis.readUTF();
          person = new Person( str );
          this.addNewPerson( person );
          len2 = dis.readInt();
          
          for ( int d = 0; d < len2; ++d ) {
            id = dis.readInt();
            item = itemRepository.get( id );
            purchase( person, item );
          }
        }
        
        dis.close();
        fis.close();
      
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}




Java Source Code List

br.odb.myshare.ApplicationTest.java
br.odb.myshare.CalculateShareActivity.java
br.odb.myshare.CheckoutActivity.java
br.odb.myshare.CheckoutFragment.java
br.odb.myshare.NavigationDrawerFragment.java
br.odb.myshare.RegisterPeopleActivity.java
br.odb.myshare.RegisterPeopleFragment.java
br.odb.myshare.RegisterProductActivity.java
br.odb.myshare.RegisterProductFragment.java
br.odb.myshare.ShowCreditsActivity.java
br.odb.myshare.ShowCreditsFragment.java
br.odb.myshare.ShowFinalCheckoutActivity.java
br.odb.myshare.ShowFinalCheckoutActivity.java
br.odb.myshare.StartNewBarAccountFragment.java
br.odb.myshare.StartNewBarAccount.java
br.odb.myshare.datamodel.BarAccount.java
br.odb.myshare.datamodel.BarAccount.java
br.odb.myshare.datamodel.Item.java
br.odb.myshare.datamodel.Item.java
br.odb.myshare.datamodel.Person.java
br.odb.myshare.datamodel.Person.java