import java.util.Iterator ;
import java.util.LinkedList ;
import java.util.Queue ;
public class Main
{
public static void main
( String [ ] args
) {
EmployeeList emp = new EmployeeList( ) ;
/*emp.enqueue(new SalesManager("Gee", 1000));
emp.enqueue(new SalesManager("Gal", 1000));
emp.enqueue(new SalesManager("Gem", 1000));*/
emp.enqueue ( new SalesPerson( "John" , 0.03 ) ) ;
emp.enqueue ( new SalesPerson( "Joan" , 0.04 ) ) ;
emp.enqueue ( new SalesPerson( "Jack" , 0.02 ) ) ;
/*emp.enqueue(new Manager("Fred", 10000));
emp.enqueue(new Manager("Frank", 5000));
emp.enqueue(new Manager("Florence", 3000));
emp.enqueue(new Programmer("Linda", 7));
emp.enqueue(new Programmer("Larry", 5));
emp.enqueue(new Programmer("Lewis", 3));*/
/*emp.setHours("Linda", 35);
emp.setHours("Larry", 23);
emp.setHours("Lewis", 3);*/
emp.setSales ( "John" , 12000 ) ;
emp.setSales ( "Joan" , 10000 ) ;
emp.setSales ( "Jack" , 5000 ) ;
/*emp.setSales("Gee", 4000);
emp.setSales("Gal", 3000);
emp.setSales("Gem", 2000);
emp.setSalary("Gee", 1000);
emp.setSalary("Gal", 2000);
emp.setSalary("Gem", 3000);*/
emp.display ( ) ;
}
}
class EmployeeList
{
Queue< Employee> empList = new LinkedList< Employee> ( ) ;
{
Iterator< Employee> it = empList.iterator ( ) ;
while ( it.hasNext ( ) )
{
Employee em = ( Employee) it.next ( ) ;
em.display ( ) ;
System .
out .
println ( nm
+ " is " + em.
name + " really? " + nm.
equals ( em.
name ) ) ; if ( em.name .equals ( nm) )
{
return em;
}
}
return null ;
}
double payroll( )
{
double payroll = 0.0 ;
Iterator< Employee> it = empList.iterator ( ) ;
while ( it.hasNext ( ) )
{
Employee em = ( Employee) it.next ( ) ;
payroll += em.computePay ( ) ;
}
return payroll;
}
void display( )
{
Iterator< Employee> it = empList.iterator ( ) ;
while ( it.hasNext ( ) )
{
Employee em = ( Employee) it.next ( ) ;
em.display ( ) ;
}
System .
out .
println ( "\n Payroll: " + payroll
( ) ) ; }
void enqueue( Employee e)
{
empList.add ( e) ;
}
void setHours
( String nm,
int hrs
) {
Employee em = find( nm) ;
/*if(em == null)
return;*/
em.setHours ( hrs) ;
}
void setSalary
( String nm,
float salary
) {
Employee em = find( nm) ;
/*if(em == null)
return;*/
em.setSalary ( salary) ;
}
void setSales
( String nm,
double sales
) {
System .
out .
println ( nm
+ " " + sales
) ; Employee em = find( nm) ;
/*if(em == null)
return;*/
em.setSales ( sales) ;
}
}
abstract class Employee
{
Employee( ) { }
Employee
( String nm
) { name
= nm
; } abstract double computePay( ) ;
void display ( ) { }
void setHours( double hrs) { }
void setSales( double sales) { }
void setSalary
( double salary
) { System .
out .
println ( "NO!" ) ; } }
class WageEmployee extends Employee
{
double rate;
double hours;
{
this .name = name;
}
WageEmployee
( String name,
double rate
) {
this .name = name;
this .rate = rate;
}
double computePay( )
{
return rate * hours;
}
void setHours( double hrs)
{
hours = hrs;
System .
out .
println ( "Set Hours to: " + hours
) ; }
void display ( )
{
System .
out .
println ( "Name: " + name
+ " Hours: " + hours
+ " Rate: " + rate
) ; }
}
class SalesPerson extends WageEmployee
{
double comission;
double salesMade;
SalesPerson
( String name,
double commision
) {
super ( name) ;
this .comission = commision;
}
double computePay( )
{
return comission * salesMade;
}
void setSales( double sales)
{
salesMade = sales;
System .
out .
println ( "Set sales to: " + salesMade
) ; }
void display ( )
{
System .
out .
println ( "Name: " + name
+ " Commision: " + comission
+ " Sales: " + salesMade
) ; }
}
aW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OwppbXBvcnQgamF2YS51dGlsLlF1ZXVlOwoKcHVibGljIGNsYXNzIE1haW4KewoKcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgCnsKICAgIEVtcGxveWVlTGlzdCBlbXAgPSBuZXcgRW1wbG95ZWVMaXN0KCk7CiAgICAvKmVtcC5lbnF1ZXVlKG5ldyBTYWxlc01hbmFnZXIoIkdlZSIsIDEwMDApKTsKICAgIGVtcC5lbnF1ZXVlKG5ldyBTYWxlc01hbmFnZXIoIkdhbCIsIDEwMDApKTsKICAgIGVtcC5lbnF1ZXVlKG5ldyBTYWxlc01hbmFnZXIoIkdlbSIsIDEwMDApKTsqLwogICAgZW1wLmVucXVldWUobmV3IFNhbGVzUGVyc29uKCJKb2huIiwgMC4wMykpOwogICAgZW1wLmVucXVldWUobmV3IFNhbGVzUGVyc29uKCJKb2FuIiwgMC4wNCkpOwogICAgZW1wLmVucXVldWUobmV3IFNhbGVzUGVyc29uKCJKYWNrIiwgMC4wMikpOwogICAgLyplbXAuZW5xdWV1ZShuZXcgTWFuYWdlcigiRnJlZCIsIDEwMDAwKSk7CiAgICBlbXAuZW5xdWV1ZShuZXcgTWFuYWdlcigiRnJhbmsiLCA1MDAwKSk7CiAgICBlbXAuZW5xdWV1ZShuZXcgTWFuYWdlcigiRmxvcmVuY2UiLCAzMDAwKSk7CiAgICBlbXAuZW5xdWV1ZShuZXcgUHJvZ3JhbW1lcigiTGluZGEiLCA3KSk7CiAgICBlbXAuZW5xdWV1ZShuZXcgUHJvZ3JhbW1lcigiTGFycnkiLCA1KSk7CiAgICBlbXAuZW5xdWV1ZShuZXcgUHJvZ3JhbW1lcigiTGV3aXMiLCAzKSk7Ki8KCiAgICAvKmVtcC5zZXRIb3VycygiTGluZGEiLCAzNSk7CiAgICBlbXAuc2V0SG91cnMoIkxhcnJ5IiwgMjMpOwogICAgZW1wLnNldEhvdXJzKCJMZXdpcyIsIDMpOyovCiAgICBlbXAuc2V0U2FsZXMoIkpvaG4iLCAxMjAwMCk7CiAgICBlbXAuc2V0U2FsZXMoIkpvYW4iLCAxMDAwMCk7CiAgICBlbXAuc2V0U2FsZXMoIkphY2siLCA1MDAwKTsKICAgIC8qZW1wLnNldFNhbGVzKCJHZWUiLCA0MDAwKTsKICAgIGVtcC5zZXRTYWxlcygiR2FsIiwgMzAwMCk7CiAgICBlbXAuc2V0U2FsZXMoIkdlbSIsIDIwMDApOwogICAgZW1wLnNldFNhbGFyeSgiR2VlIiwgMTAwMCk7CiAgICBlbXAuc2V0U2FsYXJ5KCJHYWwiLCAyMDAwKTsKICAgIGVtcC5zZXRTYWxhcnkoIkdlbSIsIDMwMDApOyovCiAgICBlbXAuZGlzcGxheSgpOwp9Cn0KCgoKCmNsYXNzIEVtcGxveWVlTGlzdCAKewpRdWV1ZTxFbXBsb3llZT4gZW1wTGlzdCA9IG5ldyBMaW5rZWRMaXN0PEVtcGxveWVlPigpOwoKRW1wbG95ZWUgZmluZChTdHJpbmcgbm0pCnsKICAgIEl0ZXJhdG9yPEVtcGxveWVlPiBpdCA9IGVtcExpc3QuaXRlcmF0b3IoKTsKICAgIHdoaWxlKGl0Lmhhc05leHQoKSkKICAgIHsKICAgICAgIAogICAgICAgIEVtcGxveWVlIGVtID0gKEVtcGxveWVlKWl0Lm5leHQoKTsKIGVtLmRpc3BsYXkoKTsKICBTeXN0ZW0ub3V0LnByaW50bG4obm0gKyAiIGlzICIgKyBlbS5uYW1lICsgIiByZWFsbHk/ICIgKyBubS5lcXVhbHMoZW0ubmFtZSkpOwogICAgICAgIGlmKGVtLm5hbWUuZXF1YWxzKG5tKSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBlbTsKICAgICAgICB9ICAgCiAgICB9CiAgICByZXR1cm4gbnVsbDsKfQoKZG91YmxlIHBheXJvbGwoKQp7CiAgICBkb3VibGUgcGF5cm9sbCA9IDAuMDsKICAgIEl0ZXJhdG9yPEVtcGxveWVlPiBpdCA9IGVtcExpc3QuaXRlcmF0b3IoKTsKICAgIHdoaWxlKGl0Lmhhc05leHQoKSkKICAgIHsKICAgICAgICBFbXBsb3llZSBlbSA9IChFbXBsb3llZSlpdC5uZXh0KCk7CiAgICAgICAgcGF5cm9sbCArPSBlbS5jb21wdXRlUGF5KCk7IAogICAgfQogICAgcmV0dXJuIHBheXJvbGw7Cn0KCnZvaWQgZGlzcGxheSgpCnsKICAgIEl0ZXJhdG9yPEVtcGxveWVlPiBpdCA9IGVtcExpc3QuaXRlcmF0b3IoKTsKICAgIHdoaWxlKGl0Lmhhc05leHQoKSkKICAgIHsKICAgICAgICBFbXBsb3llZSBlbSA9IChFbXBsb3llZSlpdC5uZXh0KCk7CiAgICAgICAgZW0uZGlzcGxheSgpOyAgIAogICAgfQogICAgU3lzdGVtLm91dC5wcmludGxuKCJcblBheXJvbGw6ICIgKyBwYXlyb2xsKCkpOwp9Cgp2b2lkIGVucXVldWUoRW1wbG95ZWUgZSkKewogICAgZW1wTGlzdC5hZGQoZSk7Cn0KCnZvaWQgc2V0SG91cnMoU3RyaW5nIG5tLCBpbnQgaHJzKQp7CiAgICBFbXBsb3llZSBlbSA9IGZpbmQobm0pOwogICAgLyppZihlbSA9PSBudWxsKQogICAgICAgIHJldHVybjsqLwogICAgZW0uc2V0SG91cnMoaHJzKTsKfQoKdm9pZCBzZXRTYWxhcnkoU3RyaW5nIG5tLCBmbG9hdCBzYWxhcnkpCnsKICAgIEVtcGxveWVlIGVtID0gZmluZChubSk7CiAgICAvKmlmKGVtID09IG51bGwpCiAgICAgICAgcmV0dXJuOyovCiAgICBlbS5zZXRTYWxhcnkoc2FsYXJ5KTsKfQoKdm9pZCBzZXRTYWxlcyhTdHJpbmcgbm0sIGRvdWJsZSBzYWxlcykKewogICAgU3lzdGVtLm91dC5wcmludGxuKG5tICsgIiAiICsgc2FsZXMpOwogICAgRW1wbG95ZWUgZW0gPSBmaW5kKG5tKTsKICAgIC8qaWYoZW0gPT0gbnVsbCkKICAgICAgICByZXR1cm47Ki8KICAgIGVtLnNldFNhbGVzKHNhbGVzKTsKfQp9CgphYnN0cmFjdCBjbGFzcyBFbXBsb3llZSAKewpTdHJpbmcgbmFtZTsKCkVtcGxveWVlKCkge30KRW1wbG95ZWUgKFN0cmluZyBubSkgeyBuYW1lID0gbm07IH0KYWJzdHJhY3QgZG91YmxlIGNvbXB1dGVQYXkoKTsKdm9pZCBkaXNwbGF5ICgpIHt9CnZvaWQgc2V0SG91cnMoZG91YmxlIGhycykge30Kdm9pZCBzZXRTYWxlcyhkb3VibGUgc2FsZXMpIHt9CnZvaWQgc2V0U2FsYXJ5KGRvdWJsZSBzYWxhcnkpIHsgU3lzdGVtLm91dC5wcmludGxuKCJOTyEiKTsgfQogfQoKY2xhc3MgV2FnZUVtcGxveWVlIGV4dGVuZHMgRW1wbG95ZWUgCnsKZG91YmxlIHJhdGU7CmRvdWJsZSBob3VyczsKCldhZ2VFbXBsb3llZShTdHJpbmcgbmFtZSkKewogICAgdGhpcy5uYW1lID0gbmFtZTsKICAgCn0KV2FnZUVtcGxveWVlKFN0cmluZyBuYW1lLCBkb3VibGUgcmF0ZSkKewogICAgdGhpcy5uYW1lID0gbmFtZTsKICAgCiAgICB0aGlzLnJhdGUgPSByYXRlOwp9Cgpkb3VibGUgY29tcHV0ZVBheSgpCnsKICAgIHJldHVybiByYXRlICogaG91cnM7Cn0KCnZvaWQgc2V0SG91cnMoZG91YmxlIGhycykgCnsKICAgIGhvdXJzID0gaHJzOwogICAgU3lzdGVtLm91dC5wcmludGxuKCJTZXQgSG91cnMgdG86ICIgKyBob3Vycyk7Cn0KCiB2b2lkIGRpc3BsYXkgKCkgCiB7CiAgICAgU3lzdGVtLm91dC5wcmludGxuKCJOYW1lOiAiICsgbmFtZSArICIgSG91cnM6ICIgKyBob3VycyArICIgUmF0ZTogIiArIHJhdGUpOwogfQp9CgpjbGFzcyBTYWxlc1BlcnNvbiBleHRlbmRzIFdhZ2VFbXBsb3llZSAKewpkb3VibGUgY29taXNzaW9uOwpkb3VibGUgc2FsZXNNYWRlOwoKU2FsZXNQZXJzb24oU3RyaW5nIG5hbWUsIGRvdWJsZSBjb21taXNpb24pIAp7CiAgICBzdXBlcihuYW1lKTsKICAgIHRoaXMuY29taXNzaW9uID0gY29tbWlzaW9uOwp9Cgpkb3VibGUgY29tcHV0ZVBheSgpCnsKICAgIHJldHVybiBjb21pc3Npb24gKiBzYWxlc01hZGU7Cn0KCnZvaWQgc2V0U2FsZXMoZG91YmxlIHNhbGVzKSAKewogICAgc2FsZXNNYWRlID0gc2FsZXM7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlNldCBzYWxlcyB0bzogIiArIHNhbGVzTWFkZSk7Cn0KCnZvaWQgZGlzcGxheSAoKSAKIHsKICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk5hbWU6ICIgKyBuYW1lICsgIiBDb21taXNpb246ICIgKyBjb21pc3Npb24gKyAiIFNhbGVzOiAiICsgc2FsZXNNYWRlKTsKIH0KfQ==