/** * Assignment 1, COMP268 Class: Candidate.java * * @description Represents a candidate * @author: mo khan Student ID: 3431709 * @date May 8, 2019 * @version 1.0 */ package Q8; import Q1.*; import java.util.ArrayList; public class Candidate extends AddressBook { private double grade = 0.0; private Communication communication; private boolean isInnovative; private double regulatoryCapability; /** * Constructs a Candidate object. * * @param firstName the first name of the runner * @param lastName the last name of the runner * @param grade the grade for the candidate * @param communication the level of communication * @param isInnovative specifies if the candidate is innovative. * @param regulatoryCapability specifies the candidates level of regulatory capability */ public Candidate( String firstName, String lastName, double grade, String communication, boolean isInnovative, double regulatoryCapability) { super(firstName, "", lastName); this.grade = grade; this.setCommunication(communication); this.isInnovative = isInnovative; this.regulatoryCapability = regulatoryCapability; } /** @return the candidates innovativeness. */ public boolean isInnovative() { return this.isInnovative; } /** @return the candidates grade. */ public double getGrade() { return this.grade; } /** @return the candidates regulatory capability */ public double getRegulation() { return this.regulatoryCapability; } /** @return the candidates communication ability */ public String getCommunication() { return this.communication.toString(); } /** * Sets the candidate communication level. * * @param communication the candidates communication ability */ public void setCommunication(String communication) { this.communication = Communication.findBy(communication); } /** * Sets the candidate grade level. * * @param grade the candidates grade */ public void setGrade(double grade) { this.grade = grade; } /** * Sets the candidate innovation level. * * @param innovation the candidates innovation ability */ public void setInnovation(boolean innovation) { this.isInnovative = innovation; } /** * Sets the candidate regulatory capability level. * * @param regulatoryCapability the candidates regulatory capability */ public void setRegulation(double regulatoryCapability) { this.regulatoryCapability = regulatoryCapability; } /** @return true if the candidate is eligible for a position at the company. */ public boolean isEligible() { if (this.grade >= 85.0) { return this.communication.isAtLeast(Communication.Average) || this.isInnovative(); } else { return (this.regulatoryCapability >= 0.5 && this.communication.isAtLeast(Communication.Average)); } } /** * @param candidates the list of candidates to check for qualifications * @return a list of candidates that are eligible for employment at the company. */ public static ArrayList getEligibleCandidates(Candidate[] candidates) { ArrayList eligible = new ArrayList(); for (Candidate candidate : candidates) if (candidate.isEligible()) eligible.add(candidate); return eligible; } }