//
// BasePlusCommissionEmployee.java
// Class represents employee paid a base salary in addition to commission
//
// Nadeem Abdul Hamid (based on Deitel & Deitel Ch. 9)
// CSC 121 - Spring 2005
//

public class BasePlusCommissionEmployee {
    private String name;     // full name
    private double sales;    // gross weekly sales
    private double rate;     // commission percentage
    private double salary;   // base salary per week

    public BasePlusCommissionEmployee( String name, double sales, 
				       double rate, double salary ) {
	this.name = name;
	setSales( sales );   // validate and store gross sales
	setRate( rate );     // validate and store commission rate
	setSalary( salary ); // validate and store salary
    } // end BasePlusCommissionEmployee constructor

    
    // set name
    public void setName( String name ) { this.name = name; }

    // return name
    public String getName() { return name; }

    // set gross sales amount
    public void setSales( double sales ) {
	this.sales = ( sales < 0.0 ) ? 0.0 : sales;
    } 
    
    // return gross sales amount
    public double getSales() { return sales; }

    // set commission rate
    public void setRate( double rate ) {
	this.rate = ( rate > 0.0 && rate < 1.0 ) ? rate : 0.0;
    } 

    // return commission rate
    public double getRate() { return rate; }

    // set weekly salary
    public void setSalary( double salary ) {
	this.salary = ( salary < 0.0 ) ? 0.0 : salary;
    }

    // return weekly salary
    public double getSalary() { return salary; }

    // calculate earnings
    public double earnings() { return salary + ( rate * sales ); }

    // return String representation of BasePlusCommissionEmployee object
    public String toString() {
	return "commission employee: " + name + "\n" +
	    "gross sales: " + sales + "\n" +
	    "commission rate: " + rate + "\n" +
	    "base salary: " + salary;
    } // end method toString

} // end class BasePlusCommissionEmployee