package auction;

import java.rmi.RemoteException;
import javax.ejb.*;
import java.util.*;
import java.text.NumberFormat;

public class AuctionItemBean implements EntityBean {

    public String summary;
    public String seller;
    public int id;
    public String description;
    public double startprice=0;
    public java.sql.Date startdate;
    public java.sql.Date enddate;
    public double maxbid,increment;
    public int bidcount;
    public String highbidder;
    protected EntityContext ctx;
    public static int counter=400000;

    public String getDescription() throws RemoteException { 
        return description; 
    }

    public String getSummary() throws RemoteException { 
        return summary; 
    }

    public int getId() throws RemoteException { 
        return id; 
    }

    public String getSeller() throws RemoteException { 
        return seller; 
    }

    public double getIncrement() throws RemoteException {
        return increment;
    }

    public double getHighBid() throws RemoteException {
        return maxbid;
    }

    public int getBidCount() throws RemoteException {
        return bidcount;
    }

    public String getHighBidder() throws RemoteException {
	return highbidder;
    }

    public Date getStartDate() throws RemoteException {
        return startdate;
    }

    public Date getEndDate() throws RemoteException {
        return enddate;
    }

    public double getStartPrice() throws RemoteException {
        return startprice;
    }

    public boolean isAuctionStillRunning() {
        Date now = (Calendar.getInstance()).getTime();

        if(enddate.getTime()>=now.getTime()) {
		return true;
	}
	else {
		return false;
	}
    }

    public int setHighBid(String buyer, double amount, double increment) 
		                                     throws RemoteException{
	if( isAuctionStillRunning()) {
            highbidder=buyer;
            maxbid=amount; 
            this.increment=increment;
            bidcount++;
            return(0);
	}
	else {
	    return (-1);
	}
    }

    public void ejbCreate(String theseller, String thedescription, 
                       int duration, double thestartprice, String thesummary) 
                              throws CreateException, RemoteException {
        double inc=0;

        try{
            inc=Math.round((thestartprice*100)/1000);
        } catch(Exception e) {
            System.out.println("error parsing money"+e);
        }
        ejbCreate(counter++, theseller, thedescription, duration, 
                      thestartprice, thesummary, inc);
    }

    public void ejbCreate(int theid, String theseller, String thedescription, 
                        int duration, double thestartprice, 
                               String thesummary, double theincrement) 
                                  throws CreateException, RemoteException {
        id=theid;
        seller=theseller;
        description=thedescription;
        Calendar currenttime=Calendar.getInstance();
        Date currentdate=currenttime.getTime();
        startdate=new java.sql.Date(currentdate.getTime());
        currenttime.add(Calendar.DATE,duration);
        enddate=new java.sql.Date((currenttime.getTime()).getTime());
        startprice=thestartprice;
        summary=thesummary;
        maxbid=startprice;
        increment=theincrement;
    }


    public void ejbPostCreate(int id, String theseller, String thedescription, 
                          int duration, double thestartprice, 
                               String thesummary, double increment) 
                                   throws CreateException, RemoteException {
    }

    public void ejbPostCreate(String theseller, String thedescription, 
                         int duration, double thestartprice, String thesummary) 
                                   throws CreateException, RemoteException {
    }

    public void setEntityContext(javax.ejb.EntityContext ctx) 
                                          throws RemoteException {
        this.ctx = ctx;
    }

    public void unsetEntityContext() throws RemoteException {   
        ctx = null;  
    } 

    public void ejbRemove() throws RemoteException, RemoveException { }
    public void ejbActivate() throws RemoteException { }
    public void ejbPassivate() throws RemoteException { }
    public void ejbLoad() throws RemoteException { }
    public void ejbStore() throws RemoteException { }
}

