Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package InternationalDatabase;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.List;
- import java.util.Scanner;
- import java.util.concurrent.TimeUnit;
- /**
- *
- * @author Mason Cudlitz
- */
- public class DataBaseValue {
- Calendar calendar;
- Date createdDate;
- private final String name;
- public DataBaseValue(String name) {
- this.name = name;
- calendar = Calendar.getInstance();
- createdDate = calendar.getTime();
- }
- public String getName() {
- return name;
- }
- //overridden
- public String getInfo() {
- return "I AM ERROR";
- }
- public Date getCreatedDate() {
- return createdDate;
- }
- }
- class International extends DataBaseValue {
- //Fields
- private final int id;
- private final Date dateOfBirth;
- private final String homeAddress;
- private final String localAddress;
- private final String phoneNumber;
- private int age;
- private Visa visa;
- //input
- Scanner input = new Scanner(System.in);
- International(String name, Date dateOfBirth, String homeAddress,
- String localAddress, String phoneNumber, Visa visa) {
- super(name);
- this.id = name.hashCode();
- this.dateOfBirth = dateOfBirth;
- setAge(dateOfBirth);
- this.homeAddress = homeAddress;
- this.localAddress = localAddress;
- this.phoneNumber = phoneNumber;
- this.visa = visa;
- }
- void setAge(Date dateOfBirth) {
- age = (int) (TimeUnit.DAYS.convert(StaticDataFunctions.deltaTime(dateOfBirth, getCreatedDate()), TimeUnit.MILLISECONDS) / 365);
- }
- //Accessors
- public Visa getVisa() {
- return visa;
- }
- public int getAge() {
- return age;
- }
- //Builds a return card for the person when retrieved from the Database
- String formatInfo(String[] extraParameters) {
- String[] infoLines = new String[]{
- "Name: " + this.getName(),
- "Date of Birth: " + dateOfBirth.getMonth() + "/" + dateOfBirth.getDay() + "/" + dateOfBirth.getYear(),
- "Age: " + age + " years",
- "Home Address: " + homeAddress,
- "Local Address: " + localAddress,
- "Visa class: " + visa.getVisaType(),
- "Visa permissions: " + visa.getVisaPermissions()};
- if (extraParameters != null) {
- infoLines = (String[]) StaticDataFunctions.concatenateArrays(infoLines, extraParameters);
- }
- int longestLine = 0;
- for (String l : infoLines) {
- if (l.length() > longestLine) {
- longestLine = l.length() + 2;
- }
- }
- StringBuilder formatBuilder = new StringBuilder();
- for (int y = 0; y < infoLines.length + 2; y++) {
- formatBuilder.append('\n');
- for (int x = 0; x < longestLine; x++) {
- //Draws box
- if (y == 0 || y == infoLines.length + 1 || x == longestLine - 1) {
- formatBuilder.append('/');
- } else if (x == 0) {
- if (y > 0 && y < infoLines.length + 1) {
- formatBuilder.append('/').append(infoLines[y - 1]);
- x += infoLines[y - 1].length();
- //x -= infoLines[y - 1].length();
- }
- } else {
- formatBuilder.append(" ");
- }
- }
- }
- return formatBuilder.toString();
- }
- //This will be overriden
- }
- class Intellectual extends International {
- public Intellectual(String name, Date dateOfBirth, String homeAddress, String localAddress,
- String phoneNumber, Visa visa) {
- super(name, dateOfBirth, homeAddress, localAddress, phoneNumber, visa);
- }
- public String addClass(Class newClass) {
- //Overridden
- return "Err";
- }
- public String removeClass(Class removedClass) {
- //Overridden
- return "Err";
- }
- }
- class Student extends Intellectual {
- float balance = 0f;
- List<Class> classes = new ArrayList();
- int id;
- public Student(String name, Date dateOfBirth, String homeAddress, String localAddress,
- String phoneNumber, Visa visa, Float balance) {
- super(name, dateOfBirth, homeAddress, localAddress, phoneNumber, visa);
- id = name.hashCode();
- this.balance = balance;
- }
- @Override
- public String addClass(Class newClass) {
- if ((balance - newClass.getPrice()) > 0 && getCreatedDate().after(getVisa().getExpiryDate())) {
- classes.add(newClass);
- balance -= newClass.getPrice();
- return "Added " + newClass.getName();
- } else if ((balance - newClass.getPrice()) > 0) {
- return "Unable to add class, Visa expires before class date";
- } else {
- return "Unable to add class, negative balance";
- }
- }
- @Override
- public String removeClass(Class removedClass) {
- if (classes.contains(removedClass)) {
- balance += removedClass.getPrice();
- classes.remove(removedClass);
- return "Removed " + removedClass.getName();
- } else {
- return "Unable to remove class, check spelling";
- }
- }
- public void setBalance(float balance) {
- this.balance = balance;
- }
- @Override
- public String getInfo() {
- String[] extraParameters = new String[]{
- "Position: Student", "ID: " + id, "Balance: " + balance,
- "Classes: ",};
- String[] classesStrings = new String[classes.size()];
- for (int i = 0; i < classes.size(); i++) {
- classesStrings[i] = classes.get(i).getName();
- }
- extraParameters = (String[]) StaticDataFunctions.concatenateArrays(extraParameters, classesStrings);
- return formatInfo(extraParameters);
- }
- }
- class Professor extends Intellectual {
- static final int MAXUNITS = 15;
- List<Class> classes = new ArrayList();
- public Professor(String name, Date dateOfBirth, String homeAddress, String localAddress,
- String phoneNumber, Visa visa) {
- super(name, dateOfBirth, homeAddress, localAddress, phoneNumber, visa);
- }
- @Override
- public String addClass(Class newClass) {
- if (getUnits() + newClass.getUnits() < MAXUNITS && getCreatedDate().after(getVisa().getExpiryDate())) {
- classes.add(newClass);
- return "Added " + newClass.getName();
- } else if (getUnits() + newClass.getUnits() < MAXUNITS) {
- return "Unable to add class, Visa expires before class date";
- } else{
- return "Unable to add class: Not enough Units";
- }
- }
- @Override
- public String removeClass(Class removedClass) {
- if (classes.contains(removedClass)) {
- classes.remove(removedClass);
- return "Removed " + removedClass.getName();
- } else {
- return "Unable to remove class: Check spelling.";
- }
- }
- public int getUnits() {
- int totalUnits = 0;
- for (Class c : classes) {
- totalUnits += c.getUnits();
- }
- return totalUnits;
- }
- @Override
- public String getInfo() {
- String[] extraParameters = new String[]{
- "Position: Professor", "Units left: " + (MAXUNITS - getUnits()), "Classes: "};
- String[] classesStrings = new String[classes.size()];
- for (int i = 0; i < classes.size(); i++) {
- classesStrings[i] = classes.get(i).getName();
- }
- extraParameters = (String[]) StaticDataFunctions.concatenateArrays(extraParameters, classesStrings);
- return formatInfo(extraParameters);
- }
- }
- class Professional extends International {
- private float wage;
- private String job;
- public Professional(String name, Date dateOfBirth, String homeAddress, String localAddress,
- String phoneNumber, Visa visa, String job, float wage) {
- super(name, dateOfBirth, homeAddress, localAddress, phoneNumber, visa);
- this.job = job;
- this.wage = wage;
- }
- public void setJob(String job) {
- this.job = job;
- }
- public void setWage(float wage) {
- this.wage = wage;
- }
- public String getJob() {
- return job;
- }
- public float getWage() {
- return wage;
- }
- @Override
- public String getInfo() {
- String[] extraParameters = new String[]{
- "Position: " + job, "Slary: " + wage + " Per Hour"};
- return formatInfo(extraParameters);
- }
- }
- //Class.... class. Class for classes.
- class Class extends DataBaseValue {
- private final int units;
- private final float price;
- private final Date startDate;
- private final Date endDate;
- public Class(String name, int units, Date startDate, Date endDate, float price) {
- super(name);
- this.units = units;
- this.price = price;
- this.startDate = startDate;
- this.endDate = endDate;
- }
- public int getUnits() {
- return units;
- }
- public float getPrice() {
- return price;
- }
- public Date getStartDate() {
- return startDate;
- }
- public Date getEndDate() {
- return endDate;
- }
- @Override
- public String getInfo() {
- return getName() + " " + units + " Units, starts " + startDate;
- }
- }
- class InvalidInfoException extends Exception {
- public InvalidInfoException(String message) {
- super("Invalid Personal Data: " + message);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement