Skip to content

作業履歴 2017-04-10

概要

2017-04-10の作業内容をまとめています。

コミット: 7206779

メッセージ

Payrollパッケージ1

変更されたファイル

  • M META-INF/ServiceCharge.txt
  • A src/main/java/PayrollDomain/Paycheck.java
  • M src/test/java/Main.java
  • M src/test/java/TestPayroll.java

変更内容

commit 7206779337e45c0f45906676f65684471e0fd6fb
Author: k2works <kakimomokuri@gmail.com>
Date:   Mon Apr 10 17:43:37 2017 +0900

    Payrollパッケージ1

diff --git a/META-INF/ServiceCharge.txt b/META-INF/ServiceCharge.txt
index 88e1c7a..8278b65 100644
--- a/META-INF/ServiceCharge.txt
+++ b/META-INF/ServiceCharge.txt
@@ -1 +1 @@
-ServiceCharge 86 2001/10/31 12.95
\ No newline at end of file
+Affiliations.ServiceCharge 86 2001/10/31 12.95
\ No newline at end of file
diff --git a/src/main/java/ChangeAffiliationTransaction.java b/src/main/java/AffiliationTransactions/ChangeAffiliationTransaction.java
similarity index 67%
rename from src/main/java/ChangeAffiliationTransaction.java
rename to src/main/java/AffiliationTransactions/ChangeAffiliationTransaction.java
index b62169b..49c71f7 100644
--- a/src/main/java/ChangeAffiliationTransaction.java
+++ b/src/main/java/AffiliationTransactions/ChangeAffiliationTransaction.java
@@ -1,3 +1,9 @@
+package AffiliationTransactions;
+
+import GeneralTransactions.ChangeEmployeeTransaction;
+import PayrollDomain.Affiliation;
+import PayrollDomain.Employee;
+
 /**
  * Created by k2works on 2017/04/07.
  */
@@ -6,7 +12,7 @@ public abstract class ChangeAffiliationTransaction extends ChangeEmployeeTransac
         super(empId);
     }

-    void Change(Employee e) {
+    public void Change(Employee e) {
         RecordMembership(e);
         e.SetAffiliation(GetAffiliation());
     }
diff --git a/src/main/java/ChangeMemberTransaction.java b/src/main/java/AffiliationTransactions/ChangeMemberTransaction.java
similarity index 56%
rename from src/main/java/ChangeMemberTransaction.java
rename to src/main/java/AffiliationTransactions/ChangeMemberTransaction.java
index 4e6d6b5..07e1a5b 100644
--- a/src/main/java/ChangeMemberTransaction.java
+++ b/src/main/java/AffiliationTransactions/ChangeMemberTransaction.java
@@ -1,3 +1,10 @@
+package AffiliationTransactions;
+
+import Affiliations.UnionAffiliation;
+import PayrollDatabase.GlobalDatabase;
+import PayrollDomain.Affiliation;
+import PayrollDomain.Employee;
+
 /**
  * Created by k2works on 2017/04/07.
  */
@@ -11,11 +18,11 @@ public class ChangeMemberTransaction extends ChangeAffiliationTransaction {
         itsDues = dues;
     }

-    Affiliation GetAffiliation() {
-        return new UnionAffiliation(itsMemberId,itsDues);
+    public Affiliation GetAffiliation() {
+        return new UnionAffiliation(itsMemberId, itsDues);
     }

-    void RecordMembership(Employee e) {
+    public void RecordMembership(Employee e) {
         GlobalDatabase.payrollDB.AddUnionMember(itsMemberId, e);
     }
-}
+}
\ No newline at end of file
diff --git a/src/main/java/ChangeUnaffiliatedTransaction.java b/src/main/java/AffiliationTransactions/ChangeUnaffiliatedTransaction.java
similarity index 74%
rename from src/main/java/ChangeUnaffiliatedTransaction.java
rename to src/main/java/AffiliationTransactions/ChangeUnaffiliatedTransaction.java
index bcecdfd..926e4bd 100644
--- a/src/main/java/ChangeUnaffiliatedTransaction.java
+++ b/src/main/java/AffiliationTransactions/ChangeUnaffiliatedTransaction.java
@@ -1,3 +1,11 @@
+package AffiliationTransactions;
+
+import Affiliations.UnionAffiliation;
+import PayrollDatabase.GlobalDatabase;
+import PayrollDomain.Affiliation;
+import PayrollDomain.Employee;
+import PayrollDomain.NoAffiliation;
+
 /**
  * Created by k2works on 2017/04/07.
  */
diff --git a/src/main/java/ServiceChargeTransaction.java b/src/main/java/AffiliationTransactions/ServiceChargeTransaction.java
similarity index 76%
rename from src/main/java/ServiceChargeTransaction.java
rename to src/main/java/AffiliationTransactions/ServiceChargeTransaction.java
index 8b0bfe4..e436a7c 100644
--- a/src/main/java/ServiceChargeTransaction.java
+++ b/src/main/java/AffiliationTransactions/ServiceChargeTransaction.java
@@ -1,3 +1,11 @@
+package AffiliationTransactions;
+
+import Affiliations.UnionAffiliation;
+import PayrollDatabase.GlobalDatabase;
+import PayrollDomain.Affiliation;
+import PayrollDomain.Employee;
+import TransactionApplication.Transaction;
+
 import java.util.Calendar;

 /**
diff --git a/src/main/java/Paycheck.java b/src/main/java/Affiliations/PaycheckImplementation.java
similarity index 72%
rename from src/main/java/Paycheck.java
rename to src/main/java/Affiliations/PaycheckImplementation.java
index 4681770..d207fb1 100644
--- a/src/main/java/Paycheck.java
+++ b/src/main/java/Affiliations/PaycheckImplementation.java
@@ -1,31 +1,23 @@
+package Affiliations;
+
 import java.util.Calendar;

+import PayrollDomain.Paycheck;
+
 /**
- * Created by k2works on 2017/04/07.
+ * Created by k2works on 2017/04/10.
  */
-public class Paycheck {
+public class PaycheckImplementation implements Paycheck {
     private Calendar itsPayPeriodStartDate;
     private Calendar itsPayPeriodEndDate;
     private double itsGrossPay;
-    private double itsDeducations;
+    private double itsDeductions;
     private double itsNetPay;

-    public Paycheck(Calendar payPeriodStartDate, Calendar payPeriodEndDate) {
+    public PaycheckImplementation(Calendar payPeriodStartDate, Calendar payPeriodEndDate) {
         itsPayPeriodStartDate = payPeriodStartDate;
         itsPayPeriodEndDate = payPeriodEndDate;
     }
-    
-    public void SetGrossPay(double grossPay) {
-        itsGrossPay = grossPay;
-    }
-
-    public void SetDeductions(double deductions) {
-        itsDeducations = deductions;
-    }
-
-    public void SetNetPay(double netPay) {
-        itsNetPay = netPay;
-    }

     public Calendar GetPayPeriodStartDate() {
         return itsPayPeriodStartDate;
@@ -39,6 +31,10 @@ public class Paycheck {
         return itsGrossPay;
     }

+    public void SetGrossPay(double grossPay) {
+        itsGrossPay = grossPay;
+    }
+
     public String GetField(String string) {
         if (string.equals("Disposition")) {
             return "Hold";
@@ -46,11 +42,20 @@ public class Paycheck {
         return null;
     }

-    public double GetDeducations() {
-        return itsDeducations;
+    public double GetDeductions() {
+        return itsDeductions;
+    }
+
+    public void SetDeductions(double deductions) {
+        itsDeductions = deductions;
     }

     public double GetNetPay() {
         return itsNetPay;
     }
+
+    public void SetNetPay(double netPay) {
+        itsNetPay = netPay;
+    }
 }
+
diff --git a/src/main/java/ServiceCharge.java b/src/main/java/Affiliations/ServiceCharge.java
similarity index 94%
rename from src/main/java/ServiceCharge.java
rename to src/main/java/Affiliations/ServiceCharge.java
index 57bd559..dde8671 100644
--- a/src/main/java/ServiceCharge.java
+++ b/src/main/java/Affiliations/ServiceCharge.java
@@ -1,3 +1,5 @@
+package Affiliations;
+
 import java.util.Calendar;

 /**
diff --git a/src/main/java/UnionAffiliation.java b/src/main/java/Affiliations/UnionAffiliation.java
similarity index 94%
rename from src/main/java/UnionAffiliation.java
rename to src/main/java/Affiliations/UnionAffiliation.java
index 4a633a3..71165b6 100644
--- a/src/main/java/UnionAffiliation.java
+++ b/src/main/java/Affiliations/UnionAffiliation.java
@@ -1,7 +1,13 @@
+package Affiliations;
+
 import java.util.Calendar;
 import java.util.HashMap;
 import java.util.Map;

+import PayrollDomain.Affiliation;
+import PayrollDomain.Paycheck;
+import PayrollUtil.Date;
+
 /**
  * Created by k2works on 2017/04/06.
  */
diff --git a/src/main/java/Application.java b/src/main/java/Application/Application.java
similarity index 85%
rename from src/main/java/Application.java
rename to src/main/java/Application/Application.java
index a0695ef..042aa6d 100644
--- a/src/main/java/Application.java
+++ b/src/main/java/Application/Application.java
@@ -1,3 +1,5 @@
+package Application;
+
 /**
  * Created by k2works on 2017/04/10.
  */
diff --git a/src/main/java/ChangeClassificationTransaction.java b/src/main/java/ClassificationTransactions/ChangeClassificationTransaction.java
similarity index 68%
rename from src/main/java/ChangeClassificationTransaction.java
rename to src/main/java/ClassificationTransactions/ChangeClassificationTransaction.java
index 8167f53..a79b3ee 100644
--- a/src/main/java/ChangeClassificationTransaction.java
+++ b/src/main/java/ClassificationTransactions/ChangeClassificationTransaction.java
@@ -1,3 +1,10 @@
+package ClassificationTransactions;
+
+import GeneralTransactions.ChangeEmployeeTransaction;
+import PayrollDomain.Employee;
+import PayrollDomain.PaymentClassification;
+import PayrollDomain.PaymentSchedule;
+
 /**
  * Created by k2works on 2017/04/07.
  */
diff --git a/src/main/java/ChangeCommissionedTransaction.java b/src/main/java/ClassificationTransactions/ChangeCommissionedTransaction.java
similarity index 74%
rename from src/main/java/ChangeCommissionedTransaction.java
rename to src/main/java/ClassificationTransactions/ChangeCommissionedTransaction.java
index d6861d1..f2bc752 100644
--- a/src/main/java/ChangeCommissionedTransaction.java
+++ b/src/main/java/ClassificationTransactions/ChangeCommissionedTransaction.java
@@ -1,3 +1,10 @@
+package ClassificationTransactions;
+
+import Classifications.CommissionedClassification;
+import PayrollDomain.PaymentClassification;
+import PayrollDomain.PaymentSchedule;
+import Schedules.BiweeklySchedule;
+
 /**
  * Created by k2works on 2017/04/07.
  */
diff --git a/src/main/java/ChangeHourlyTransaction.java b/src/main/java/ClassificationTransactions/ChangeHourlyTransaction.java
similarity index 69%
rename from src/main/java/ChangeHourlyTransaction.java
rename to src/main/java/ClassificationTransactions/ChangeHourlyTransaction.java
index c3b5fb3..4843576 100644
--- a/src/main/java/ChangeHourlyTransaction.java
+++ b/src/main/java/ClassificationTransactions/ChangeHourlyTransaction.java
@@ -1,3 +1,10 @@
+package ClassificationTransactions;
+
+import Classifications.HourlyClassification;
+import PayrollDomain.PaymentClassification;
+import PayrollDomain.PaymentSchedule;
+import Schedules.WeeklySchedule;
+
 /**
  * Created by k2works on 2017/04/07.
  */
diff --git a/src/main/java/ChangeSalariedTransaction.java b/src/main/java/ClassificationTransactions/ChangeSalariedTransaction.java
similarity index 70%
rename from src/main/java/ChangeSalariedTransaction.java
rename to src/main/java/ClassificationTransactions/ChangeSalariedTransaction.java
index b773c18..77d6cb6 100644
--- a/src/main/java/ChangeSalariedTransaction.java
+++ b/src/main/java/ClassificationTransactions/ChangeSalariedTransaction.java
@@ -1,3 +1,10 @@
+package ClassificationTransactions;
+
+import Classifications.SalariedClassification;
+import PayrollDomain.PaymentClassification;
+import PayrollDomain.PaymentSchedule;
+import Schedules.MonthlySchedule;
+
 /**
  * Created by k2works on 2017/04/07.
  */
diff --git a/src/main/java/SalesReceiptTransaction.java b/src/main/java/ClassificationTransactions/SalesReceiptTransaction.java
similarity index 75%
rename from src/main/java/SalesReceiptTransaction.java
rename to src/main/java/ClassificationTransactions/SalesReceiptTransaction.java
index 0eae104..e04aada 100644
--- a/src/main/java/SalesReceiptTransaction.java
+++ b/src/main/java/ClassificationTransactions/SalesReceiptTransaction.java
@@ -1,5 +1,13 @@
+package ClassificationTransactions;
+
 import java.util.Calendar;

+import Classifications.CommissionedClassification;
+import PayrollDatabase.GlobalDatabase;
+import PayrollDomain.Employee;
+import PayrollDomain.PaymentClassification;
+import TransactionApplication.Transaction;
+
 /**
  * Created by k2works on 2017/04/06.
  */
@@ -20,7 +28,7 @@ public class SalesReceiptTransaction implements Transaction {
             PaymentClassification pc = e.GetClassification();
             if (pc instanceof CommissionedClassification) {
                 CommissionedClassification cc = (CommissionedClassification) pc;
-                cc.AddReceipt(new SalesReceipt(itsSaleDate, itsAmount));
+                cc.AddReceipt(itsSaleDate, itsAmount);
             } else {
                 System.err.println("Tried to add sales receipt to non-commissioned employee");
             }
diff --git a/src/main/java/TimeCardTransaction.java b/src/main/java/ClassificationTransactions/TimeCardTransaction.java
similarity index 75%
rename from src/main/java/TimeCardTransaction.java
rename to src/main/java/ClassificationTransactions/TimeCardTransaction.java
index 6823042..b591366 100644
--- a/src/main/java/TimeCardTransaction.java
+++ b/src/main/java/ClassificationTransactions/TimeCardTransaction.java
@@ -1,5 +1,13 @@
+package ClassificationTransactions;
+
 import java.util.Calendar;

+import Classifications.HourlyClassification;
+import PayrollDatabase.GlobalDatabase;
+import PayrollDomain.Employee;
+import PayrollDomain.PaymentClassification;
+import TransactionApplication.Transaction;
+
 /**
  * Created by k2works on 2017/04/06.
  */
@@ -20,7 +28,7 @@ public class TimeCardTransaction implements Transaction {
             PaymentClassification pc = e.GetClassification();
             if (pc instanceof HourlyClassification) {
                 HourlyClassification hc = (HourlyClassification) pc;
-                hc.AddTimeCard(new TimeCard(itsDate, itsHours));
+                hc.AddTimeCard(itsDate, itsHours);
             } else {
                 throw new RuntimeException("Tried to add timecard to non-hourly employee.");
             }
diff --git a/src/main/java/CommissionedClassification.java b/src/main/java/Classifications/CommissionedClassification.java
similarity index 81%
rename from src/main/java/CommissionedClassification.java
rename to src/main/java/Classifications/CommissionedClassification.java
index 774abd6..33a3863 100644
--- a/src/main/java/CommissionedClassification.java
+++ b/src/main/java/Classifications/CommissionedClassification.java
@@ -1,7 +1,13 @@
+package Classifications;
+
 import java.util.Calendar;
 import java.util.HashMap;
 import java.util.Map;

+import PayrollDomain.Paycheck;
+import PayrollDomain.PaymentClassification;
+import PayrollUtil.Date;
+
 /**
  * Created by k2works on 2017/04/06.
  */
@@ -24,8 +30,8 @@ public class CommissionedClassification implements PaymentClassification {
         return itsCommissionRate;
     }

-    public void AddReceipt(SalesReceipt sr) {
-        itsReceipts.put(sr.GetSaleDate(),sr);
+    public void AddReceipt(Calendar saleDate, double amount) {
+        itsReceipts.put(saleDate ,new SalesReceipt(saleDate,amount));
     }

     public SalesReceipt GetReceipt(Calendar date) {
diff --git a/src/main/java/HourlyClassification.java b/src/main/java/Classifications/HourlyClassification.java
similarity index 81%
rename from src/main/java/HourlyClassification.java
rename to src/main/java/Classifications/HourlyClassification.java
index 3df6f8d..8316231 100644
--- a/src/main/java/HourlyClassification.java
+++ b/src/main/java/Classifications/HourlyClassification.java
@@ -1,7 +1,13 @@
+package Classifications;
+
 import java.util.Calendar;
 import java.util.HashMap;
 import java.util.Map;

+import PayrollDomain.Paycheck;
+import PayrollDomain.PaymentClassification;
+import PayrollUtil.Date;
+
 /**
  * Created by k2works on 2017/04/06.
  */
@@ -22,8 +28,8 @@ public class HourlyClassification implements  PaymentClassification {
         return itsTimeCards.get(date);
     }

-    public void AddTimeCard(TimeCard tc) {
-        itsTimeCards.put(tc.GetDate(), tc);
+    public void AddTimeCard(Calendar date, double amount) {
+        itsTimeCards.put(date, new TimeCard(date, amount));
     }

     public double CalculatePay(Paycheck pc) {
diff --git a/src/main/java/SalariedClassification.java b/src/main/java/Classifications/SalariedClassification.java
similarity index 78%
rename from src/main/java/SalariedClassification.java
rename to src/main/java/Classifications/SalariedClassification.java
index 81a2bbd..032437d 100644
--- a/src/main/java/SalariedClassification.java
+++ b/src/main/java/Classifications/SalariedClassification.java
@@ -1,3 +1,8 @@
+package Classifications;
+
+import PayrollDomain.Paycheck;
+import PayrollDomain.PaymentClassification;
+
 /**
  * Created by k2works on 2017/04/06.
  */
diff --git a/src/main/java/SalesReceipt.java b/src/main/java/Classifications/SalesReceipt.java
similarity index 94%
rename from src/main/java/SalesReceipt.java
rename to src/main/java/Classifications/SalesReceipt.java
index b62a8f3..94a6395 100644
--- a/src/main/java/SalesReceipt.java
+++ b/src/main/java/Classifications/SalesReceipt.java
@@ -1,3 +1,5 @@
+package Classifications;
+
 import java.util.Calendar;

 /**
diff --git a/src/main/java/TimeCard.java b/src/main/java/Classifications/TimeCard.java
similarity index 93%
rename from src/main/java/TimeCard.java
rename to src/main/java/Classifications/TimeCard.java
index 3ed238c..17a82d9 100644
--- a/src/main/java/TimeCard.java
+++ b/src/main/java/Classifications/TimeCard.java
@@ -1,3 +1,5 @@
+package Classifications;
+
 import java.util.Calendar;

 /**
diff --git a/src/main/java/AddCommissionedEmployee.java b/src/main/java/GeneralTransactions/AddCommissionedEmployee.java
similarity index 75%
rename from src/main/java/AddCommissionedEmployee.java
rename to src/main/java/GeneralTransactions/AddCommissionedEmployee.java
index 3f1a790..47716e5 100644
--- a/src/main/java/AddCommissionedEmployee.java
+++ b/src/main/java/GeneralTransactions/AddCommissionedEmployee.java
@@ -1,3 +1,10 @@
+package GeneralTransactions;
+
+import Classifications.CommissionedClassification;
+import PayrollDomain.PaymentClassification;
+import PayrollDomain.PaymentSchedule;
+import Schedules.BiweeklySchedule;
+
 /**
  * Created by k2works on 2017/04/06.
  */
diff --git a/src/main/java/AddEmployeeTransaction.java b/src/main/java/GeneralTransactions/AddEmployeeTransaction.java
similarity index 74%
rename from src/main/java/AddEmployeeTransaction.java
rename to src/main/java/GeneralTransactions/AddEmployeeTransaction.java
index fea788b..f595bdf 100644
--- a/src/main/java/AddEmployeeTransaction.java
+++ b/src/main/java/GeneralTransactions/AddEmployeeTransaction.java
@@ -1,3 +1,13 @@
+package GeneralTransactions;
+
+import Methods.HoldMethod;
+import PayrollDatabase.GlobalDatabase;
+import PayrollDomain.Employee;
+import PayrollDomain.PaymentClassification;
+import PayrollDomain.PaymentMethod;
+import PayrollDomain.PaymentSchedule;
+import TransactionApplication.Transaction;
+
 /**
  * Created by k2works on 2017/04/06.
  */
diff --git a/src/main/java/AddHourlyEmployee.java b/src/main/java/GeneralTransactions/AddHourlyEmployee.java
similarity index 72%
rename from src/main/java/AddHourlyEmployee.java
rename to src/main/java/GeneralTransactions/AddHourlyEmployee.java
index b5bdb47..134c52e 100644
--- a/src/main/java/AddHourlyEmployee.java
+++ b/src/main/java/GeneralTransactions/AddHourlyEmployee.java
@@ -1,3 +1,10 @@
+package GeneralTransactions;
+
+import Classifications.HourlyClassification;
+import PayrollDomain.PaymentClassification;
+import PayrollDomain.PaymentSchedule;
+import Schedules.WeeklySchedule;
+
 /**
  * Created by k2works on 2017/04/06.
  */
diff --git a/src/main/java/AddSalariedEmployee.java b/src/main/java/GeneralTransactions/AddSalariedEmployee.java
similarity index 62%
rename from src/main/java/AddSalariedEmployee.java
rename to src/main/java/GeneralTransactions/AddSalariedEmployee.java
index f09e9e8..079c6e2 100644
--- a/src/main/java/AddSalariedEmployee.java
+++ b/src/main/java/GeneralTransactions/AddSalariedEmployee.java
@@ -1,7 +1,14 @@
+package GeneralTransactions;
+
+import Classifications.SalariedClassification;
+import PayrollDomain.PaymentClassification;
+import PayrollDomain.PaymentSchedule;
+import Schedules.MonthlySchedule;
+
 /**
  * Created by k2works on 2017/04/06.
  */
-class AddSalariedEmployee extends AddEmployeeTransaction {
+public class AddSalariedEmployee extends AddEmployeeTransaction {
     private double itsSalary;

     public AddSalariedEmployee(int empId, String name, String address, double salary) {
diff --git a/src/main/java/ChangeAddressTransaction.java b/src/main/java/GeneralTransactions/ChangeAddressTransaction.java
similarity index 76%
rename from src/main/java/ChangeAddressTransaction.java
rename to src/main/java/GeneralTransactions/ChangeAddressTransaction.java
index 8ecf16c..391d035 100644
--- a/src/main/java/ChangeAddressTransaction.java
+++ b/src/main/java/GeneralTransactions/ChangeAddressTransaction.java
@@ -1,3 +1,7 @@
+package GeneralTransactions;
+
+import PayrollDomain.Employee;
+
 /**
  * Created by k2works on 2017/04/07.
  */
@@ -9,7 +13,7 @@ public class ChangeAddressTransaction extends ChangeEmployeeTransaction {
         itsAddress = address;
     }

-    void Change(Employee e) {
+    public void Change(Employee e) {
         e.SetAddress(itsAddress);
     }
 }
diff --git a/src/main/java/ChangeEmployeeTransaction.java b/src/main/java/GeneralTransactions/ChangeEmployeeTransaction.java
similarity index 67%
rename from src/main/java/ChangeEmployeeTransaction.java
rename to src/main/java/GeneralTransactions/ChangeEmployeeTransaction.java
index ce881bc..d7b5884 100644
--- a/src/main/java/ChangeEmployeeTransaction.java
+++ b/src/main/java/GeneralTransactions/ChangeEmployeeTransaction.java
@@ -1,3 +1,9 @@
+package GeneralTransactions;
+
+import PayrollDatabase.GlobalDatabase;
+import PayrollDomain.Employee;
+import TransactionApplication.Transaction;
+
 /**
  * Created by k2works on 2017/04/07.
  */
@@ -15,6 +21,6 @@ public abstract class ChangeEmployeeTransaction implements Transaction {
         }
     }

-    abstract void Change(Employee e);
+    public abstract void Change(Employee e);
 }

diff --git a/src/main/java/ChangeNameTransaction.java b/src/main/java/GeneralTransactions/ChangeNameTransaction.java
similarity index 84%
rename from src/main/java/ChangeNameTransaction.java
rename to src/main/java/GeneralTransactions/ChangeNameTransaction.java
index dc207d3..fc40bb0 100644
--- a/src/main/java/ChangeNameTransaction.java
+++ b/src/main/java/GeneralTransactions/ChangeNameTransaction.java
@@ -1,3 +1,7 @@
+package GeneralTransactions;
+
+import PayrollDomain.Employee;
+
 /**
  * Created by k2works on 2017/04/07.
  */
diff --git a/src/main/java/DeleteEmployeeTransaction.java b/src/main/java/GeneralTransactions/DeleteEmployeeTransaction.java
similarity index 73%
rename from src/main/java/DeleteEmployeeTransaction.java
rename to src/main/java/GeneralTransactions/DeleteEmployeeTransaction.java
index d117d32..43eb184 100644
--- a/src/main/java/DeleteEmployeeTransaction.java
+++ b/src/main/java/GeneralTransactions/DeleteEmployeeTransaction.java
@@ -1,3 +1,8 @@
+package GeneralTransactions;
+
+import PayrollDatabase.GlobalDatabase;
+import TransactionApplication.Transaction;
+
 /**
  * Created by k2works on 2017/04/06.
  */
diff --git a/src/main/java/PaydayTransaction.java b/src/main/java/GeneralTransactions/PaydayTransaction.java
similarity index 72%
rename from src/main/java/PaydayTransaction.java
rename to src/main/java/GeneralTransactions/PaydayTransaction.java
index d7b5b77..22d506e 100644
--- a/src/main/java/PaydayTransaction.java
+++ b/src/main/java/GeneralTransactions/PaydayTransaction.java
@@ -1,8 +1,16 @@
+package GeneralTransactions;
+
 import java.util.Calendar;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;

+import Affiliations.PaycheckImplementation;
+import PayrollDatabase.GlobalDatabase;
+import PayrollDomain.Employee;
+import PayrollDomain.Paycheck;
+import TransactionApplication.Transaction;
+
 /**
  * Created by k2works on 2017/04/07.
  */
@@ -19,7 +27,7 @@ public class PaydayTransaction implements Transaction {
         for(int empId : empIds) {
             Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
             if(e.IsPayDate(itsPayDate)) {
-                Paycheck pc = new Paycheck(e.GetPayPeriodStartDate(itsPayDate),itsPayDate);
+                Paycheck pc = new PaycheckImplementation(e.GetPayPeriodStartDate(itsPayDate),itsPayDate);
                 itsPaychecks.put(empId, pc);
                 e.Payday(pc);
             }
diff --git a/src/main/java/ChangeDirectTransaction.java b/src/main/java/MethodTransactions/ChangeDirectTransaction.java
similarity index 81%
rename from src/main/java/ChangeDirectTransaction.java
rename to src/main/java/MethodTransactions/ChangeDirectTransaction.java
index b53f17e..c30a8b5 100644
--- a/src/main/java/ChangeDirectTransaction.java
+++ b/src/main/java/MethodTransactions/ChangeDirectTransaction.java
@@ -1,3 +1,8 @@
+package MethodTransactions;
+
+import Methods.DirectMethod;
+import PayrollDomain.PaymentMethod;
+
 /**
  * Created by k2works on 2017/04/07.
  */
diff --git a/src/main/java/ChangeHoldTransaction.java b/src/main/java/MethodTransactions/ChangeHoldTransaction.java
similarity index 73%
rename from src/main/java/ChangeHoldTransaction.java
rename to src/main/java/MethodTransactions/ChangeHoldTransaction.java
index e8e23f3..c4d615a 100644
--- a/src/main/java/ChangeHoldTransaction.java
+++ b/src/main/java/MethodTransactions/ChangeHoldTransaction.java
@@ -1,3 +1,8 @@
+package MethodTransactions;
+
+import Methods.HoldMethod;
+import PayrollDomain.PaymentMethod;
+
 /**
  * Created by k2works on 2017/04/07.
  */
diff --git a/src/main/java/ChangeMailTransaction.java b/src/main/java/MethodTransactions/ChangeMailTransaction.java
similarity index 79%
rename from src/main/java/ChangeMailTransaction.java
rename to src/main/java/MethodTransactions/ChangeMailTransaction.java
index 79d835a..343b48e 100644
--- a/src/main/java/ChangeMailTransaction.java
+++ b/src/main/java/MethodTransactions/ChangeMailTransaction.java
@@ -1,3 +1,8 @@
+package MethodTransactions;
+
+import Methods.MailMethod;
+import PayrollDomain.PaymentMethod;
+
 /**
  * Created by k2works on 2017/04/07.
  */
diff --git a/src/main/java/ChangeMethodTransaction.java b/src/main/java/MethodTransactions/ChangeMethodTransaction.java
similarity index 68%
rename from src/main/java/ChangeMethodTransaction.java
rename to src/main/java/MethodTransactions/ChangeMethodTransaction.java
index 49875d5..fbd62bb 100644
--- a/src/main/java/ChangeMethodTransaction.java
+++ b/src/main/java/MethodTransactions/ChangeMethodTransaction.java
@@ -1,3 +1,9 @@
+package MethodTransactions;
+
+import GeneralTransactions.ChangeEmployeeTransaction;
+import PayrollDomain.Employee;
+import PayrollDomain.PaymentMethod;
+
 /**
  * Created by k2works on 2017/04/07.
  */
diff --git a/src/main/java/DirectMethod.java b/src/main/java/Methods/DirectMethod.java
similarity index 83%
rename from src/main/java/DirectMethod.java
rename to src/main/java/Methods/DirectMethod.java
index 7fba14a..ce89efe 100644
--- a/src/main/java/DirectMethod.java
+++ b/src/main/java/Methods/DirectMethod.java
@@ -1,3 +1,8 @@
+package Methods;
+
+import PayrollDomain.Paycheck;
+import PayrollDomain.PaymentMethod;
+
 /**
  * Created by k2works on 2017/04/07.
  */
diff --git a/src/main/java/HoldMethod.java b/src/main/java/Methods/HoldMethod.java
similarity index 61%
rename from src/main/java/HoldMethod.java
rename to src/main/java/Methods/HoldMethod.java
index 9bfadc9..062caf4 100644
--- a/src/main/java/HoldMethod.java
+++ b/src/main/java/Methods/HoldMethod.java
@@ -1,3 +1,8 @@
+package Methods;
+
+import PayrollDomain.Paycheck;
+import PayrollDomain.PaymentMethod;
+
 /**
  * Created by k2works on 2017/04/06.
  */
diff --git a/src/main/java/MailMethod.java b/src/main/java/Methods/MailMethod.java
similarity index 78%
rename from src/main/java/MailMethod.java
rename to src/main/java/Methods/MailMethod.java
index 842a9a0..bd38045 100644
--- a/src/main/java/MailMethod.java
+++ b/src/main/java/Methods/MailMethod.java
@@ -1,3 +1,8 @@
+package Methods;
+
+import PayrollDomain.Paycheck;
+import PayrollDomain.PaymentMethod;
+
 /**
  * Created by k2works on 2017/04/07.
  */
diff --git a/src/main/java/PayrollApplication.java b/src/main/java/PayrollApplication/PayrollApplication.java
similarity index 66%
rename from src/main/java/PayrollApplication.java
rename to src/main/java/PayrollApplication/PayrollApplication.java
index 531460f..0a2f1a6 100644
--- a/src/main/java/PayrollApplication.java
+++ b/src/main/java/PayrollApplication/PayrollApplication.java
@@ -1,3 +1,9 @@
+package PayrollApplication;
+
+import TextParserTransactionSource.TextParserTransactionSource;
+import TransactionApplication.TransactionApplication;
+import TransactionApplication.TransactionSource;
+
 /**
  * Created by k2works on 2017/04/10.
  */
diff --git a/src/main/java/GlobalDatabase.java b/src/main/java/PayrollDatabase/GlobalDatabase.java
similarity index 82%
rename from src/main/java/GlobalDatabase.java
rename to src/main/java/PayrollDatabase/GlobalDatabase.java
index a932039..dd5deec 100644
--- a/src/main/java/GlobalDatabase.java
+++ b/src/main/java/PayrollDatabase/GlobalDatabase.java
@@ -1,3 +1,5 @@
+package PayrollDatabase;
+
 /**
  * Created by k2works on 2017/04/10.
  */
diff --git a/src/main/java/PayrollDatabase.java b/src/main/java/PayrollDatabase/PayrollDatabase.java
similarity index 86%
rename from src/main/java/PayrollDatabase.java
rename to src/main/java/PayrollDatabase/PayrollDatabase.java
index 52574c1..9c846d7 100644
--- a/src/main/java/PayrollDatabase.java
+++ b/src/main/java/PayrollDatabase/PayrollDatabase.java
@@ -1,8 +1,8 @@
-import java.util.ArrayList;
-import java.util.HashMap;
+package PayrollDatabase;
+
 import java.util.List;
-import java.util.Map;

+import PayrollDomain.Employee;
 /**
  * Created by k2works on 2017/04/06.
  */
diff --git a/src/main/java/PayrollDatabaseImplementation.java b/src/main/java/PayrollDatabaseImplementation/PayrollDatabaseImplementation.java
similarity index 91%
rename from src/main/java/PayrollDatabaseImplementation.java
rename to src/main/java/PayrollDatabaseImplementation/PayrollDatabaseImplementation.java
index 47e451e..96498ed 100644
--- a/src/main/java/PayrollDatabaseImplementation.java
+++ b/src/main/java/PayrollDatabaseImplementation/PayrollDatabaseImplementation.java
@@ -1,8 +1,13 @@
+package PayrollDatabaseImplementation;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;

+import PayrollDatabase.PayrollDatabase;
+import PayrollDomain.Employee;
+
 /**
  * Created by k2works on 2017/04/10.
  */
diff --git a/src/main/java/Affiliation.java b/src/main/java/PayrollDomain/Affiliation.java
similarity index 89%
rename from src/main/java/Affiliation.java
rename to src/main/java/PayrollDomain/Affiliation.java
index eccbbd8..13e52a1 100644
--- a/src/main/java/Affiliation.java
+++ b/src/main/java/PayrollDomain/Affiliation.java
@@ -1,3 +1,5 @@
+package PayrollDomain;
+
 import java.util.Calendar;

 /**
diff --git a/src/main/java/Employee.java b/src/main/java/PayrollDomain/Employee.java
similarity index 97%
rename from src/main/java/Employee.java
rename to src/main/java/PayrollDomain/Employee.java
index f15b6e4..c31d7f5 100644
--- a/src/main/java/Employee.java
+++ b/src/main/java/PayrollDomain/Employee.java
@@ -1,9 +1,11 @@
+package PayrollDomain;
+
 import java.util.Calendar;

 /**
  * Created by k2works on 2017/04/06.
  */
-class Employee {
+public class Employee {
     private int itsEmpId;
     private String itsName;
     private String itsAddress;
diff --git a/src/main/java/NoAffiliation.java b/src/main/java/PayrollDomain/NoAffiliation.java
similarity index 92%
rename from src/main/java/NoAffiliation.java
rename to src/main/java/PayrollDomain/NoAffiliation.java
index 6edc76f..8d4a2b2 100644
--- a/src/main/java/NoAffiliation.java
+++ b/src/main/java/PayrollDomain/NoAffiliation.java
@@ -1,3 +1,5 @@
+package PayrollDomain;
+
 import java.util.Calendar;

 /**
diff --git a/src/main/java/PayrollDomain/Paycheck.java b/src/main/java/PayrollDomain/Paycheck.java
new file mode 100644
index 0000000..3fd1375
--- /dev/null
+++ b/src/main/java/PayrollDomain/Paycheck.java
@@ -0,0 +1,26 @@
+package PayrollDomain;
+
+import java.util.Calendar;
+
+/**
+ * Created by k2works on 2017/04/07.
+ */
+public interface Paycheck {
+    public Calendar GetPayPeriodStartDate();
+
+    public Calendar GetPayPeriodEndDate();
+
+    public double GetGrossPay();
+
+    public void SetGrossPay(double grossPay);
+
+    public String GetField(String string);
+
+    public double GetDeductions();
+
+    public void SetDeductions(double deductions);
+
+    public double GetNetPay();
+
+    public void SetNetPay(double netPay);
+}
diff --git a/src/main/java/PaymentClassification.java b/src/main/java/PayrollDomain/PaymentClassification.java
similarity index 84%
rename from src/main/java/PaymentClassification.java
rename to src/main/java/PayrollDomain/PaymentClassification.java
index 116a7cb..02cfc3b 100644
--- a/src/main/java/PaymentClassification.java
+++ b/src/main/java/PayrollDomain/PaymentClassification.java
@@ -1,3 +1,5 @@
+package PayrollDomain;
+
 /**
  * Created by k2works on 2017/04/06.
  */
diff --git a/src/main/java/PaymentMethod.java b/src/main/java/PayrollDomain/PaymentMethod.java
similarity index 81%
rename from src/main/java/PaymentMethod.java
rename to src/main/java/PayrollDomain/PaymentMethod.java
index eccd52e..a27a559 100644
--- a/src/main/java/PaymentMethod.java
+++ b/src/main/java/PayrollDomain/PaymentMethod.java
@@ -1,3 +1,5 @@
+package PayrollDomain;
+
 /**
  * Created by k2works on 2017/04/06.
  */
diff --git a/src/main/java/PaymentSchedule.java b/src/main/java/PayrollDomain/PaymentSchedule.java
similarity index 89%
rename from src/main/java/PaymentSchedule.java
rename to src/main/java/PayrollDomain/PaymentSchedule.java
index 278232e..7a66ef0 100644
--- a/src/main/java/PaymentSchedule.java
+++ b/src/main/java/PayrollDomain/PaymentSchedule.java
@@ -1,3 +1,5 @@
+package PayrollDomain;
+
 import java.util.Calendar;

 /**
diff --git a/src/main/java/Date.java b/src/main/java/PayrollUtil/Date.java
similarity index 95%
rename from src/main/java/Date.java
rename to src/main/java/PayrollUtil/Date.java
index 51f2774..3c52a35 100644
--- a/src/main/java/Date.java
+++ b/src/main/java/PayrollUtil/Date.java
@@ -1,3 +1,5 @@
+package PayrollUtil;
+
 import java.util.Calendar;
 import java.util.GregorianCalendar;

diff --git a/src/main/java/BiweeklySchedule.java b/src/main/java/Schedules/BiweeklySchedule.java
similarity index 94%
rename from src/main/java/BiweeklySchedule.java
rename to src/main/java/Schedules/BiweeklySchedule.java
index cbcab18..1376b0b 100644
--- a/src/main/java/BiweeklySchedule.java
+++ b/src/main/java/Schedules/BiweeklySchedule.java
@@ -1,6 +1,10 @@
+package Schedules;
+
 import java.util.Calendar;
 import java.util.GregorianCalendar;

+import PayrollDomain.PaymentSchedule;
+
 /**
  * Created by k2works on 2017/04/06.
  */
diff --git a/src/main/java/MonthlySchedule.java b/src/main/java/Schedules/MonthlySchedule.java
similarity index 92%
rename from src/main/java/MonthlySchedule.java
rename to src/main/java/Schedules/MonthlySchedule.java
index f0c3446..2a82c93 100644
--- a/src/main/java/MonthlySchedule.java
+++ b/src/main/java/Schedules/MonthlySchedule.java
@@ -1,3 +1,7 @@
+package Schedules;
+
+import PayrollDomain.PaymentSchedule;
+
 import java.util.Calendar;

 /**
diff --git a/src/main/java/WeeklySchedule.java b/src/main/java/Schedules/WeeklySchedule.java
similarity index 89%
rename from src/main/java/WeeklySchedule.java
rename to src/main/java/Schedules/WeeklySchedule.java
index 64e19f2..d2d1f93 100644
--- a/src/main/java/WeeklySchedule.java
+++ b/src/main/java/Schedules/WeeklySchedule.java
@@ -1,3 +1,7 @@
+package Schedules;
+
+import PayrollDomain.PaymentSchedule;
+
 import java.util.Calendar;

 /**
diff --git a/src/main/java/TextParserTransactionSource.java b/src/main/java/TextParserTransactionSource/TextParserTransactionSource.java
similarity index 84%
rename from src/main/java/TextParserTransactionSource.java
rename to src/main/java/TextParserTransactionSource/TextParserTransactionSource.java
index 92e43f9..dcf923c 100644
--- a/src/main/java/TextParserTransactionSource.java
+++ b/src/main/java/TextParserTransactionSource/TextParserTransactionSource.java
@@ -1,3 +1,5 @@
+package TextParserTransactionSource;
+
 import java.io.BufferedReader;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
@@ -8,6 +10,27 @@ import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;

+import AffiliationTransactions.ChangeMemberTransaction;
+import AffiliationTransactions.ChangeUnaffiliatedTransaction;
+import AffiliationTransactions.ServiceChargeTransaction;
+import ClassificationTransactions.ChangeCommissionedTransaction;
+import ClassificationTransactions.ChangeHourlyTransaction;
+import ClassificationTransactions.ChangeSalariedTransaction;
+import ClassificationTransactions.SalesReceiptTransaction;
+import ClassificationTransactions.TimeCardTransaction;
+import GeneralTransactions.AddCommissionedEmployee;
+import GeneralTransactions.AddHourlyEmployee;
+import GeneralTransactions.AddSalariedEmployee;
+import GeneralTransactions.ChangeAddressTransaction;
+import GeneralTransactions.ChangeNameTransaction;
+import GeneralTransactions.DeleteEmployeeTransaction;
+import GeneralTransactions.PaydayTransaction;
+import MethodTransactions.ChangeDirectTransaction;
+import MethodTransactions.ChangeHoldTransaction;
+import MethodTransactions.ChangeMailTransaction;
+import TransactionApplication.Transaction;
+import TransactionApplication.TransactionSource;
+
 /**
  * Created by k2works on 2017/04/10.
  */
@@ -32,7 +55,7 @@ public class TextParserTransactionSource extends TransactionSource {
         } else if (transactionName.equals("DelEmp")) {
             int empId = Integer.parseInt(line.get(1));
             t = new DeleteEmployeeTransaction(empId);
-        } else if (transactionName.equals("ServiceCharge")) {
+        } else if (transactionName.equals("Affiliations.ServiceCharge")) {
             int memberId = Integer.parseInt(line.get(1));
             Calendar date = Calendar.getInstance();
             date.setTime(new SimpleDateFormat("yyyy/MM/dd").parse(line.get(2)));
@@ -122,8 +145,8 @@ public class TextParserTransactionSource extends TransactionSource {
             t = new AddSalariedEmployee(empId, line.get(2), line.get(3), salary);
         } else if (line.get(4).equals("C")) {
             double salary = Double.parseDouble(line.get(5));
-            double commisionRate = Double.parseDouble(line.get(6));
-            t = new AddCommissionedEmployee(empId, line.get(2), line.get(3), salary, commisionRate);
+            double commissionRate = Double.parseDouble(line.get(6));
+            t = new AddCommissionedEmployee(empId, line.get(2), line.get(3), salary, commissionRate);
         }
         return t;
     }
diff --git a/src/main/java/Transaction.java b/src/main/java/TransactionApplication/Transaction.java
similarity index 74%
rename from src/main/java/Transaction.java
rename to src/main/java/TransactionApplication/Transaction.java
index c8b1c7c..67b6aa6 100644
--- a/src/main/java/Transaction.java
+++ b/src/main/java/TransactionApplication/Transaction.java
@@ -1,3 +1,5 @@
+package TransactionApplication;
+
 /**
  * Created by k2works on 2017/04/06.
  */
diff --git a/src/main/java/TransactionApplication.java b/src/main/java/TransactionApplication/TransactionApplication.java
similarity index 63%
rename from src/main/java/TransactionApplication.java
rename to src/main/java/TransactionApplication/TransactionApplication.java
index 2908221..0002121 100644
--- a/src/main/java/TransactionApplication.java
+++ b/src/main/java/TransactionApplication/TransactionApplication.java
@@ -1,3 +1,7 @@
+package TransactionApplication;
+
+import Application.Application;
+
 /**
  * Created by k2works on 2017/04/10.
  */
diff --git a/src/main/java/TransactionSource.java b/src/main/java/TransactionApplication/TransactionSource.java
similarity index 83%
rename from src/main/java/TransactionSource.java
rename to src/main/java/TransactionApplication/TransactionSource.java
index bc34478..b181050 100644
--- a/src/main/java/TransactionSource.java
+++ b/src/main/java/TransactionApplication/TransactionSource.java
@@ -1,3 +1,5 @@
+package TransactionApplication;
+
 /**
  * Created by k2works on 2017/04/10.
  */
diff --git a/src/test/java/Main.java b/src/test/java/Main.java
index 9594267..e839b85 100644
--- a/src/test/java/Main.java
+++ b/src/test/java/Main.java
@@ -1,6 +1,15 @@
 import java.util.Calendar;
 import java.util.GregorianCalendar;

+import Application.Application;
+import Classifications.HourlyClassification;
+import Classifications.TimeCard;
+import PayrollApplication.PayrollApplication;
+import PayrollDatabase.GlobalDatabase;
+import PayrollDatabaseImplementation.PayrollDatabaseImplementation;
+import PayrollDomain.Employee;
+import PayrollDomain.PaymentClassification;
+
 /**
  * Created by k2works on 2017/04/10.
  */
diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index 93cb08b..6cfc00f 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -3,6 +3,19 @@ import junit.framework.TestCase;
 import java.util.Calendar;
 import java.util.GregorianCalendar;

+import AffiliationTransactions.*;
+import Affiliations.*;
+import ClassificationTransactions.*;
+import Classifications.*;
+import GeneralTransactions.*;
+import MethodTransactions.*;
+import Methods.*;
+import PayrollDatabase.*;
+import PayrollDatabaseImplementation.*;
+import PayrollDomain.*;
+import Schedules.*;
+
+
 /**
  * Created by k2works on 2017/04/06.
  */
@@ -472,7 +485,7 @@ public class TestPayroll extends TestCase{
         assertEquals(pc.GetPayPeriodEndDate(), payDate);
         assertEquals(1000.0,pc.GetGrossPay());
         assertEquals("Hold", pc.GetField("Disposition"));
-        assertEquals(fridays * 9.42, pc.GetDeducations());
+        assertEquals(fridays * 9.42, pc.GetDeductions());
         assertEquals(1000.0 - fridays * 9.42, pc.GetNetPay());
     }

@@ -494,7 +507,7 @@ public class TestPayroll extends TestCase{
         assertEquals(pc.GetPayPeriodEndDate(),payDate);
         assertEquals(8 * 15.24, pc.GetGrossPay());
         assertEquals("Hold", pc.GetField("Disposition"));
-        assertEquals(9.42, pc.GetDeducations());
+        assertEquals(9.42, pc.GetDeductions());
         assertEquals(8 * 15.24 - 9.42, pc.GetNetPay());
     }

@@ -514,7 +527,7 @@ public class TestPayroll extends TestCase{
         assertEquals(pc.GetPayPeriodEndDate(),payDate);
         assertEquals(2500.0, pc.GetGrossPay());
         assertEquals("Hold", pc.GetField("Disposition"));
-        assertEquals(2 * 9.42, pc.GetDeducations());
+        assertEquals(2 * 9.42, pc.GetDeductions());
         assertEquals(2500.0 - 2 * 9.42, pc.GetNetPay());
     }

@@ -538,7 +551,7 @@ public class TestPayroll extends TestCase{
         assertEquals(pc.GetPayPeriodEndDate(), payDate);
         assertEquals(8 * 15.24, pc.GetGrossPay());
         assertEquals("Hold", pc.GetField("Disposition"));
-        assertEquals(9.42 + 19.42, pc.GetDeducations());
+        assertEquals(9.42 + 19.42, pc.GetDeductions());
         assertEquals(8 * 15.24 - (9.42 + 19.42), pc.GetNetPay());
     }

@@ -570,7 +583,7 @@ public class TestPayroll extends TestCase{
         assertEquals(pc.GetPayPeriodEndDate(), payDate);
         assertEquals(8 * 15.24, pc.GetGrossPay());
         assertEquals("Hold", pc.GetField("Disposition"));
-        assertEquals(9.42 + 19.42, pc.GetDeducations());
+        assertEquals(9.42 + 19.42, pc.GetDeductions());
         assertEquals(8 * 15.24 - (9.42 + 19.42), pc.GetNetPay());
     }

@@ -580,7 +593,7 @@ public class TestPayroll extends TestCase{
         assertEquals(pc.GetPayPeriodEndDate(), payDate);
         assertEquals(pay, pc.GetGrossPay());
         assertEquals("Hold", pc.GetField("Disposition"));
-        assertEquals(0.0, pc.GetDeducations());
+        assertEquals(0.0, pc.GetDeductions());
         assertEquals(pay, pc.GetNetPay());
     }
 }
\ No newline at end of file

コミット: 7332a49

メッセージ

メインプログラムとデータベース

変更されたファイル

  • A META-INF/AddEmp.txt
  • A META-INF/ChgEmp.txt
  • A META-INF/DelEmp.txt
  • A META-INF/Main.txt
  • A META-INF/SalesRecipt.txt
  • A META-INF/ServiceCharge.txt
  • A META-INF/TimeCard.txt
  • M src/main/java/AddEmployeeTransaction.java
  • A src/main/java/Application.java
  • M src/main/java/ChangeEmployeeTransaction.java
  • M src/main/java/ChangeMemberTransaction.java
  • M src/main/java/ChangeUnaffiliatedTransaction.java
  • M src/main/java/DeleteEmployeeTransaction.java
  • A src/main/java/GlobalDatabase.java
  • M src/main/java/PaydayTransaction.java
  • A src/main/java/PayrollApplication.java
  • M src/main/java/PayrollDatabase.java
  • A src/main/java/PayrollDatabaseImplementation.java
  • M src/main/java/SalesReceiptTransaction.java
  • M src/main/java/ServiceChargeTransaction.java
  • A src/main/java/TextParserTransactionSource.java
  • M src/main/java/TimeCardTransaction.java
  • A src/main/java/TransactionApplication.java
  • A src/main/java/TransactionSource.java
  • A src/test/java/Main.java
  • M src/test/java/TestPayroll.java

変更内容

commit 7332a4999ef32b1e96f06537ad68dfa5be923b7d
Author: k2works <kakimomokuri@gmail.com>
Date:   Mon Apr 10 15:20:59 2017 +0900

    メインプログラムとデータベース

diff --git a/META-INF/AddEmp.txt b/META-INF/AddEmp.txt
new file mode 100644
index 0000000..0e8ab1b
--- /dev/null
+++ b/META-INF/AddEmp.txt
@@ -0,0 +1,3 @@
+AddEmp 1 "Bob" "Home" S 1000.00
+AddEmp 2 "Bill" "Home" H 15.25
+AddEmp 3 "Lance" "Home" C 2500.0 3.2
\ No newline at end of file
diff --git a/META-INF/ChgEmp.txt b/META-INF/ChgEmp.txt
new file mode 100644
index 0000000..36e146f
--- /dev/null
+++ b/META-INF/ChgEmp.txt
@@ -0,0 +1,2 @@
+ChgEmp 2 Name "Lance"
+ChgEmp 3 Address "Second Home"
\ No newline at end of file
diff --git a/META-INF/DelEmp.txt b/META-INF/DelEmp.txt
new file mode 100644
index 0000000..a04f7ee
--- /dev/null
+++ b/META-INF/DelEmp.txt
@@ -0,0 +1 @@
+DelEmp 1
\ No newline at end of file
diff --git a/META-INF/Main.txt b/META-INF/Main.txt
new file mode 100644
index 0000000..5104442
--- /dev/null
+++ b/META-INF/Main.txt
@@ -0,0 +1,2 @@
+AddEmp 2 "Bill" "Home" H 15.25
+TimeCard 2 2001/10/31 8.0
\ No newline at end of file
diff --git a/META-INF/SalesRecipt.txt b/META-INF/SalesRecipt.txt
new file mode 100644
index 0000000..5bd5fab
--- /dev/null
+++ b/META-INF/SalesRecipt.txt
@@ -0,0 +1 @@
+SalesReceipt 3 2001/11/12 25000
\ No newline at end of file
diff --git a/META-INF/ServiceCharge.txt b/META-INF/ServiceCharge.txt
new file mode 100644
index 0000000..88e1c7a
--- /dev/null
+++ b/META-INF/ServiceCharge.txt
@@ -0,0 +1 @@
+ServiceCharge 86 2001/10/31 12.95
\ No newline at end of file
diff --git a/META-INF/TimeCard.txt b/META-INF/TimeCard.txt
new file mode 100644
index 0000000..a24d6ab
--- /dev/null
+++ b/META-INF/TimeCard.txt
@@ -0,0 +1 @@
+TimeCard 2 2001/10/31 8.0
\ No newline at end of file
diff --git a/src/main/java/AddEmployeeTransaction.java b/src/main/java/AddEmployeeTransaction.java
index 33b5ecf..fea788b 100644
--- a/src/main/java/AddEmployeeTransaction.java
+++ b/src/main/java/AddEmployeeTransaction.java
@@ -20,7 +20,7 @@ public abstract class AddEmployeeTransaction implements Transaction {
         e.SetClassification(pc);
         e.SetSchedule(ps);
         e.SetMethod(pm);
-        PayrollDatabase.AddEmployee(itsEmpId, e);
+        GlobalDatabase.payrollDB.AddEmployee(itsEmpId, e);
     }

     abstract PaymentSchedule GetSchedule();
diff --git a/src/main/java/Application.java b/src/main/java/Application.java
new file mode 100644
index 0000000..a0695ef
--- /dev/null
+++ b/src/main/java/Application.java
@@ -0,0 +1,6 @@
+/**
+ * Created by k2works on 2017/04/10.
+ */
+public abstract class Application {
+    public abstract void SetSource(String source);
+}
diff --git a/src/main/java/ChangeEmployeeTransaction.java b/src/main/java/ChangeEmployeeTransaction.java
index 37ece54..ce881bc 100644
--- a/src/main/java/ChangeEmployeeTransaction.java
+++ b/src/main/java/ChangeEmployeeTransaction.java
@@ -9,7 +9,7 @@ public abstract class ChangeEmployeeTransaction implements Transaction {
     }

     public void Execute() {
-        Employee e = PayrollDatabase.GetEmployee(itsEmpId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(itsEmpId);
         if (e != null) {
             Change(e);
         }
diff --git a/src/main/java/ChangeMemberTransaction.java b/src/main/java/ChangeMemberTransaction.java
index 3229e24..4e6d6b5 100644
--- a/src/main/java/ChangeMemberTransaction.java
+++ b/src/main/java/ChangeMemberTransaction.java
@@ -16,6 +16,6 @@ public class ChangeMemberTransaction extends ChangeAffiliationTransaction {
     }

     void RecordMembership(Employee e) {
-        PayrollDatabase.AddUnionMember(itsMemberId, e);
+        GlobalDatabase.payrollDB.AddUnionMember(itsMemberId, e);
     }
 }
diff --git a/src/main/java/ChangeUnaffiliatedTransaction.java b/src/main/java/ChangeUnaffiliatedTransaction.java
index b7f81ea..bcecdfd 100644
--- a/src/main/java/ChangeUnaffiliatedTransaction.java
+++ b/src/main/java/ChangeUnaffiliatedTransaction.java
@@ -15,7 +15,7 @@ public class ChangeUnaffiliatedTransaction extends ChangeAffiliationTransaction
         if (af instanceof UnionAffiliation) {
             UnionAffiliation uf = (UnionAffiliation) af;
             int memberId = uf.GetMemberId();
-            PayrollDatabase.RemoveUnionMember(memberId);
+            GlobalDatabase.payrollDB.RemoveUnionMember(memberId);
         }
     }
 }
diff --git a/src/main/java/DeleteEmployeeTransaction.java b/src/main/java/DeleteEmployeeTransaction.java
index da66810..d117d32 100644
--- a/src/main/java/DeleteEmployeeTransaction.java
+++ b/src/main/java/DeleteEmployeeTransaction.java
@@ -8,6 +8,6 @@ public class DeleteEmployeeTransaction implements Transaction {
     }

     public void Execute() {
-        PayrollDatabase.DeleteEmployee(itsEmpId);
+        GlobalDatabase.payrollDB.DeleteEmployee(itsEmpId);
     }
 }
diff --git a/src/main/java/GlobalDatabase.java b/src/main/java/GlobalDatabase.java
new file mode 100644
index 0000000..a932039
--- /dev/null
+++ b/src/main/java/GlobalDatabase.java
@@ -0,0 +1,6 @@
+/**
+ * Created by k2works on 2017/04/10.
+ */
+public class GlobalDatabase {
+    public static PayrollDatabase payrollDB;
+}
diff --git a/src/main/java/PaydayTransaction.java b/src/main/java/PaydayTransaction.java
index 1d6c03a..d7b5b77 100644
--- a/src/main/java/PaydayTransaction.java
+++ b/src/main/java/PaydayTransaction.java
@@ -15,9 +15,9 @@ public class PaydayTransaction implements Transaction {
     }

     public void Execute() {
-        List<Integer> empIds = PayrollDatabase.GetAllEmployeeIds();
+        List<Integer> empIds = GlobalDatabase.payrollDB.GetAllEmployeeIds();
         for(int empId : empIds) {
-            Employee e = PayrollDatabase.GetEmployee(empId);
+            Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
             if(e.IsPayDate(itsPayDate)) {
                 Paycheck pc = new Paycheck(e.GetPayPeriodStartDate(itsPayDate),itsPayDate);
                 itsPaychecks.put(empId, pc);
diff --git a/src/main/java/PayrollApplication.java b/src/main/java/PayrollApplication.java
new file mode 100644
index 0000000..531460f
--- /dev/null
+++ b/src/main/java/PayrollApplication.java
@@ -0,0 +1,15 @@
+/**
+ * Created by k2works on 2017/04/10.
+ */
+public class PayrollApplication extends TransactionApplication {
+    private TransactionSource transactionSource;
+
+    public PayrollApplication() {
+        transactionSource = new TextParserTransactionSource();
+    }
+
+    public void SetSource(String source) {
+        transactionSource.SetSource(source);
+        transactionSource.Execute();
+    }
+}
diff --git a/src/main/java/PayrollDatabase.java b/src/main/java/PayrollDatabase.java
index 24f3a66..52574c1 100644
--- a/src/main/java/PayrollDatabase.java
+++ b/src/main/java/PayrollDatabase.java
@@ -6,35 +6,20 @@ import java.util.Map;
 /**
  * Created by k2works on 2017/04/06.
  */
-class PayrollDatabase {
-    private static Map<Integer, Employee> itsEmployees = new HashMap<Integer, Employee>();
-    private static Map<Integer, Employee> itsUnionMembers = new HashMap<Integer, Employee>();
+public interface PayrollDatabase {
+    public void AddEmployee(int empId, Employee e);

-    public static void AddEmployee(int empId, Employee e) {
-        itsEmployees.put(empId, e);
-    }
+    public Employee GetEmployee(int empId);

-    public static Employee GetEmployee(int empId) {
-        return itsEmployees.get(empId);
-    }
+    public void Clear();

-    public static void DeleteEmployee(int empId) {
-        itsEmployees.remove(empId);
-    }
+    public void DeleteEmployee(int empId);

-    public static void AddUnionMember(int memberId, Employee e) {
-        itsUnionMembers.put(memberId, e);
-    }
+    public void AddUnionMember(int memberId, Employee e);

-    public static Employee GetUnionMbember(int memberId) {
-        return itsUnionMembers.get(memberId);
-    }
+    public Employee GetUnionMember(int memberId);

-    public static void RemoveUnionMember(int memberId) {
-        itsUnionMembers.remove(memberId);
-    }
+    public void RemoveUnionMember(int memberId);

-    public static List<Integer> GetAllEmployeeIds() {
-        return new ArrayList<Integer>(itsEmployees.keySet());
-    }
+    public List<Integer> GetAllEmployeeIds();
 }
diff --git a/src/main/java/PayrollDatabaseImplementation.java b/src/main/java/PayrollDatabaseImplementation.java
new file mode 100644
index 0000000..47e451e
--- /dev/null
+++ b/src/main/java/PayrollDatabaseImplementation.java
@@ -0,0 +1,45 @@
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by k2works on 2017/04/10.
+ */
+public class PayrollDatabaseImplementation implements PayrollDatabase {
+    private static Map<Integer, Employee> itsEmployees = new HashMap<Integer, Employee>();
+    private static Map<Integer, Employee> itsUnionMembers = new HashMap<Integer, Employee>();
+
+    public void AddEmployee(int empId, Employee e) {
+        itsEmployees.put(empId, e);
+    }
+
+    public Employee GetEmployee(int empId) {
+        return itsEmployees.get(empId);
+    }
+
+    public void Clear() {
+        itsEmployees.clear();
+        itsUnionMembers.clear();
+    }
+
+    public void DeleteEmployee(int empId) {
+        itsEmployees.remove(empId);
+    }
+
+    public void AddUnionMember(int memberId, Employee e) {
+        itsUnionMembers.put(memberId, e);
+    }
+
+    public Employee GetUnionMember(int memberId) {
+        return itsUnionMembers.get(memberId);
+    }
+
+    public void RemoveUnionMember(int memberId) {
+        itsUnionMembers.remove(memberId);
+    }
+
+    public List<Integer> GetAllEmployeeIds() {
+        return new ArrayList<Integer>(itsEmployees.keySet());
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/SalesReceiptTransaction.java b/src/main/java/SalesReceiptTransaction.java
index d747197..0eae104 100644
--- a/src/main/java/SalesReceiptTransaction.java
+++ b/src/main/java/SalesReceiptTransaction.java
@@ -15,7 +15,7 @@ public class SalesReceiptTransaction implements Transaction {
     }

     public void Execute() {
-        Employee e = PayrollDatabase.GetEmployee(itsEmpId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(itsEmpId);
         if (e != null) {
             PaymentClassification pc = e.GetClassification();
             if (pc instanceof CommissionedClassification) {
diff --git a/src/main/java/ServiceChargeTransaction.java b/src/main/java/ServiceChargeTransaction.java
index 8612128..8b0bfe4 100644
--- a/src/main/java/ServiceChargeTransaction.java
+++ b/src/main/java/ServiceChargeTransaction.java
@@ -15,7 +15,7 @@ public class ServiceChargeTransaction implements Transaction {
     }

     public void Execute() {
-        Employee e = PayrollDatabase.GetUnionMbember(itsMemberId);
+        Employee e = GlobalDatabase.payrollDB.GetUnionMember(itsMemberId);
         Affiliation af = e.GetAffiliation();
         if (af instanceof UnionAffiliation) {
             UnionAffiliation uaf = (UnionAffiliation) af;
diff --git a/src/main/java/TextParserTransactionSource.java b/src/main/java/TextParserTransactionSource.java
new file mode 100644
index 0000000..92e43f9
--- /dev/null
+++ b/src/main/java/TextParserTransactionSource.java
@@ -0,0 +1,169 @@
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+/**
+ * Created by k2works on 2017/04/10.
+ */
+public class TextParserTransactionSource extends TransactionSource {
+    public String itsSource;
+
+    public void Execute() {
+        parse();
+    }
+
+    private void lineExecute(List<String> line) throws ParseException {
+        if (line.size() < 1) {
+            System.err.println("Read Line Error");
+            return;
+        }
+        Transaction t = null;
+        String transactionName = line.get(0);
+        if (transactionName.equals("AddEmp")) {
+            t = AddEmp(line);
+        } else if (transactionName.equals("ChgEmp")) {
+            t = ChgEmp(line);
+        } else if (transactionName.equals("DelEmp")) {
+            int empId = Integer.parseInt(line.get(1));
+            t = new DeleteEmployeeTransaction(empId);
+        } else if (transactionName.equals("ServiceCharge")) {
+            int memberId = Integer.parseInt(line.get(1));
+            Calendar date = Calendar.getInstance();
+            date.setTime(new SimpleDateFormat("yyyy/MM/dd").parse(line.get(2)));
+            double amount = Double.parseDouble(line.get(2));
+            t = new ServiceChargeTransaction(memberId, date, amount);
+        }  else if (transactionName.equals("SalesReceipt")) {
+            int empId = Integer.parseInt(line.get(1));
+            Calendar date = Calendar.getInstance();
+            date.setTime(new SimpleDateFormat("yyyy/MM/dd").parse(line.get(2)));
+            double amount = Double.parseDouble(line.get(3));
+            t = new SalesReceiptTransaction(date, amount, empId);
+        } else if (transactionName.equals("TimeCard")) {
+            int empId = Integer.parseInt(line.get(1));
+            Calendar date = Calendar.getInstance();
+            date.setTime(new SimpleDateFormat("yyyy/MM/dd").parse(line.get(2)));
+            double hours = Double.parseDouble(line.get(3));
+            t = new TimeCardTransaction(date, hours, empId);
+        } else if (transactionName.equals("Payday")) {
+            Calendar payDate = Calendar.getInstance();
+            payDate.setTime(new SimpleDateFormat("yyyy/MM/dd").parse(line.get(1)));
+            t = new PaydayTransaction(payDate);
+        }
+        if (t != null) {
+            t.Execute();
+        }
+    }
+
+    public void SetSource(String source) {
+        itsSource = source;
+    }
+
+
+    private void parse() {
+        if (itsSource == null) {
+            System.err.println("Not set Source File");
+        } else {
+            try {
+                BufferedReader br = new BufferedReader(new FileReader(itsSource));
+                String line = null;
+                while((line = br.readLine()) != null) {
+                    String[] lineStrs = line.split(" ");
+                    List<String> lineList = new ArrayList<String>();
+                    boolean doublequoteFlag = false;
+                    StringBuilder sb = null;
+                    for(String str : lineStrs) {
+                        if(doublequoteFlag) {
+                            sb.append(" " + str);
+                            if(str.endsWith("\"")) {
+                                lineList.add(sb.toString());
+                                doublequoteFlag = false;
+                            }
+                        } else {
+                            if(str.startsWith("\"") && str.endsWith("\"") == false) {
+                                sb = new StringBuilder(str);
+                                doublequoteFlag = true;
+                            } else {
+                                lineList.add(str);
+                            }
+                        }
+                    }
+                    //System.out.println(lineList);
+                    lineExecute(lineList);
+                }
+            } catch (FileNotFoundException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            } catch (IOException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            } catch (ParseException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+
+        }
+    }
+
+
+    public Transaction AddEmp(List<String> line) {
+        Transaction t = null;
+        int empId = Integer.parseInt(line.get(1));
+        if (line.get(4).equals("H")) {
+            double hourlyRate = Double.parseDouble(line.get(5));
+            t = new AddHourlyEmployee(empId, line.get(2),  line.get(3), hourlyRate);
+        } else if (line.get(4).equals("S")) {
+            double salary = Double.parseDouble(line.get(5));
+            t = new AddSalariedEmployee(empId, line.get(2), line.get(3), salary);
+        } else if (line.get(4).equals("C")) {
+            double salary = Double.parseDouble(line.get(5));
+            double commisionRate = Double.parseDouble(line.get(6));
+            t = new AddCommissionedEmployee(empId, line.get(2), line.get(3), salary, commisionRate);
+        }
+        return t;
+    }
+
+    public Transaction ChgEmp(List<String> line) {
+        Transaction t = null;
+        int empId = Integer.parseInt(line.get(1));
+        String changeInfo = line.get(2);
+        if (changeInfo.equals("Name")) {
+            String name = line.get(3);
+            t = new ChangeNameTransaction(empId, name);
+        } else if (changeInfo.equals("Address")) {
+            String address = line.get(3);
+            t = new ChangeAddressTransaction(empId, address);
+        } else if (changeInfo.equals("Hourly")) {
+            double hourly = Double.parseDouble(line.get(3));
+            t = new ChangeHourlyTransaction(empId, hourly);
+        } else if (changeInfo.equals("Salaried")) {
+            double salary = Double.parseDouble(line.get(3));
+            t = new ChangeSalariedTransaction(empId, salary);
+        } else if (changeInfo.equals("Commissioned")) {
+            double salary = Double.parseDouble(line.get(3));
+            double rate = Double.parseDouble(line.get(4));
+            t = new ChangeCommissionedTransaction(empId, salary, rate);
+        } else if (changeInfo.equals("Hold")) {
+            t = new ChangeHoldTransaction(empId);
+        } else if (changeInfo.equals("Direct")) {
+            String bank = line.get(3);
+            String account = line.get(4);
+            t = new ChangeDirectTransaction(empId, bank, account);
+        } else if (changeInfo.equals("Mail")) {
+            String address = line.get(3);
+            t = new ChangeMailTransaction(0, address);
+        } else if (changeInfo.equals("Member")) {
+            int memberId = Integer.parseInt(line.get(3));
+            double dues = Double.parseDouble(line.get(5));
+            t = new ChangeMemberTransaction(empId, memberId, dues);
+        } else if (changeInfo.equals("NoMember")) {
+            t = new ChangeUnaffiliatedTransaction(empId);
+        }
+        return t;
+    }
+}
diff --git a/src/main/java/TimeCardTransaction.java b/src/main/java/TimeCardTransaction.java
index 81e5568..6823042 100644
--- a/src/main/java/TimeCardTransaction.java
+++ b/src/main/java/TimeCardTransaction.java
@@ -15,7 +15,7 @@ public class TimeCardTransaction implements Transaction {
     }

     public void Execute() {
-        Employee e = PayrollDatabase.GetEmployee(itsEmpId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(itsEmpId);
         if (e != null) {
             PaymentClassification pc = e.GetClassification();
             if (pc instanceof HourlyClassification) {
diff --git a/src/main/java/TransactionApplication.java b/src/main/java/TransactionApplication.java
new file mode 100644
index 0000000..2908221
--- /dev/null
+++ b/src/main/java/TransactionApplication.java
@@ -0,0 +1,5 @@
+/**
+ * Created by k2works on 2017/04/10.
+ */
+public abstract class TransactionApplication extends Application {
+}
diff --git a/src/main/java/TransactionSource.java b/src/main/java/TransactionSource.java
new file mode 100644
index 0000000..bc34478
--- /dev/null
+++ b/src/main/java/TransactionSource.java
@@ -0,0 +1,6 @@
+/**
+ * Created by k2works on 2017/04/10.
+ */
+public abstract class TransactionSource implements Transaction {
+    public abstract void SetSource(String source);
+}
diff --git a/src/test/java/Main.java b/src/test/java/Main.java
new file mode 100644
index 0000000..9594267
--- /dev/null
+++ b/src/test/java/Main.java
@@ -0,0 +1,20 @@
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+/**
+ * Created by k2works on 2017/04/10.
+ */
+public class Main {
+    public static void main(String[] args) {
+        GlobalDatabase.payrollDB = new PayrollDatabaseImplementation();
+        Application application = new PayrollApplication();
+        application.SetSource("META-INF/Main.txt");
+        Calendar date = new GregorianCalendar(2001, Calendar.OCTOBER, 31);
+        int empId = 2;
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
+        PaymentClassification pc = e.GetClassification();
+        HourlyClassification hc = (HourlyClassification) pc;
+        TimeCard tc = hc.GetTimeCard(date);
+        System.out.println(tc.GetHours());
+    }
+}
diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index 268e7b6..93cb08b 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -12,7 +12,7 @@ public class TestPayroll extends TestCase{
         int empId = 1;
         AddSalariedEmployee t = new AddSalariedEmployee(empId, "Bob", "Home", 1000.00);
         t.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         assertEquals("Bob", e.GetName());
         PaymentClassification pc = e.GetClassification();
@@ -32,7 +32,7 @@ public class TestPayroll extends TestCase{
         int empId = 2;
         AddHourlyEmployee t = new AddHourlyEmployee(empId, "Bill", "Home", 15.25);
         t.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         assertEquals("Bill", e.GetName());
         PaymentClassification pc = e.GetClassification();
@@ -52,7 +52,7 @@ public class TestPayroll extends TestCase{
         int empId = 1;
         AddCommissionedEmployee t = new AddCommissionedEmployee(empId, "Lance", "Home", 2500.0, 3.2);
         t.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         assertEquals("Lance", e.GetName());
         PaymentClassification pc = e.GetClassification();
@@ -73,11 +73,11 @@ public class TestPayroll extends TestCase{
         int empId = 3;
         AddCommissionedEmployee t = new AddCommissionedEmployee(empId, "Lance","Home",2500,3.2);
         t.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         DeleteEmployeeTransaction dt = new DeleteEmployeeTransaction(empId);
         dt.Execute();
-        e = PayrollDatabase.GetEmployee(empId);
+        e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNull(e);
     }

@@ -89,7 +89,7 @@ public class TestPayroll extends TestCase{
         Calendar date = new GregorianCalendar(2001, Calendar.OCTOBER, 31);
         TimeCardTransaction tct = new TimeCardTransaction(date,8.0,empId);
         tct.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         PaymentClassification pc = e.GetClassification();
         HourlyClassification hc = (HourlyClassification) pc;
@@ -107,7 +107,7 @@ public class TestPayroll extends TestCase{
         Calendar date = new GregorianCalendar(2001, Calendar.NOVEMBER, 12);
         SalesReceiptTransaction srt = new SalesReceiptTransaction(date, 25000, empId);
         srt.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         PaymentClassification pc = e.GetClassification();
         CommissionedClassification cc = (CommissionedClassification) pc;
@@ -125,12 +125,12 @@ public class TestPayroll extends TestCase{
         Calendar date = new GregorianCalendar(2001, Calendar.OCTOBER, 31);
         TimeCardTransaction tct = new TimeCardTransaction(date,8.0, empId);
         tct.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         Affiliation af = new UnionAffiliation(12.5);
         e.SetAffiliation(af);
         int memberId = 86;
-        PayrollDatabase.AddUnionMember(memberId,e);
+        GlobalDatabase.payrollDB.AddUnionMember(memberId,e);
         ServiceChargeTransaction sct = new ServiceChargeTransaction(memberId, date, 12.95);
         sct.Execute();
         double sc = af.GetServiceCharge(date);
@@ -144,7 +144,7 @@ public class TestPayroll extends TestCase{
         t.Execute();
         ChangeNameTransaction cnt = new ChangeNameTransaction(empId, "Bob");
         cnt.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         assertEquals("Bob", e.GetName());
     }
@@ -156,7 +156,7 @@ public class TestPayroll extends TestCase{
         t.Execute();
         ChangeAddressTransaction cat = new ChangeAddressTransaction(empId, "Second Home");
         cat.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         assertEquals("Second Home", e.GetAddress());
     }
@@ -168,7 +168,7 @@ public class TestPayroll extends TestCase{
         t.Execute();
         ChangeHourlyTransaction cht = new ChangeHourlyTransaction(empId, 27.52);
         cht.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         PaymentClassification pc = e.GetClassification();
         assertNotNull(pc);
@@ -187,7 +187,7 @@ public class TestPayroll extends TestCase{
         t.Execute();
         ChangeSalariedTransaction cst = new ChangeSalariedTransaction(empId, 25000);
         cst.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         PaymentClassification pc = e.GetClassification();
         assertNotNull(pc);
@@ -206,7 +206,7 @@ public class TestPayroll extends TestCase{
         t.Execute();
         ChangeCommissionedTransaction cct = new ChangeCommissionedTransaction(empId, 25000, 4.5);
         cct.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         PaymentClassification pc = e.GetClassification();
         assertNotNull(pc);
@@ -226,7 +226,7 @@ public class TestPayroll extends TestCase{
         t.Execute();
         ChangeMailTransaction cmt = new ChangeMailTransaction(empId, "4080 El Cerrito Road");
         cmt.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         PaymentMethod pm = e.GetMethod();
         assertNotNull(pm);
@@ -242,7 +242,7 @@ public class TestPayroll extends TestCase{
         t.Execute();
         ChangeDirectTransaction cdt = new ChangeDirectTransaction(empId, "FirstNational", "1058209");
         cdt.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         PaymentMethod pm = e.GetMethod();
         assertNotNull(pm);
@@ -259,7 +259,7 @@ public class TestPayroll extends TestCase{
         t.Execute();
         ChangeHoldTransaction cht = new ChangeHoldTransaction(empId);
         cht.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         PaymentMethod pm = e.GetMethod();
         assertNotNull(pm);
@@ -275,14 +275,14 @@ public class TestPayroll extends TestCase{
         t.Execute();
         ChangeMemberTransaction cmt = new ChangeMemberTransaction(empId, memberId, 99.42);
         cmt.Execute();
-        Employee e = PayrollDatabase.GetEmployee(empId);
+        Employee e = GlobalDatabase.payrollDB.GetEmployee(empId);
         assertNotNull(e);
         Affiliation af = e.GetAffiliation();
         assertNotNull(af);
         UnionAffiliation uf = (UnionAffiliation) af;
         assertNotNull(uf);
         assertEquals(99.42, uf.GetDues());
-        Employee member = PayrollDatabase.GetUnionMbember(memberId);
+        Employee member = GlobalDatabase.payrollDB.GetUnionMember(memberId);
         assertNotNull(member);
         assertEquals(e,member);
     }

コミット: ca7a48f

メッセージ

給与対象期間:設計上の問題
・TestServiceChargesSpanningMultiplePayPeriods

変更されたファイル

  • M src/test/java/TestPayroll.java

変更内容

commit ca7a48fec2fe0517d3293b3b1b0204743202410e
Author: k2works <kakimomokuri@gmail.com>
Date:   Mon Apr 10 13:19:19 2017 +0900

    給与対象期間:設計上の問題

    ・TestServiceChargesSpanningMultiplePayPeriods

diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index 29610d1..268e7b6 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -542,6 +542,38 @@ public class TestPayroll extends TestCase{
         assertEquals(8 * 15.24 - (9.42 + 19.42), pc.GetNetPay());
     }

+    public void testServiceChargesSpanningMultiplePayPeriods() {
+        System.err.println("TestServiceChargesSpanningMultiplePayPeriods");
+        int empId = 1;
+        AddHourlyEmployee t = new AddHourlyEmployee(empId, "Bill", "Home", 15.24);
+        t.Execute();
+        int memberId = 7734;
+        ChangeMemberTransaction cmt = new ChangeMemberTransaction(empId, memberId, 9.42);
+        cmt.Execute();
+        Calendar earlyDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 2); // Previous
+        // Friday
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 9);
+        Calendar lateDate = new GregorianCalendar(2001, Calendar.DECEMBER, 16); // Next
+        // Friday
+        ServiceChargeTransaction sct = new ServiceChargeTransaction(memberId, payDate, 19.42);
+        sct.Execute();
+        ServiceChargeTransaction sctEarly = new ServiceChargeTransaction(memberId, earlyDate, 100.00);
+        sctEarly.Execute();
+        ServiceChargeTransaction sctLate = new ServiceChargeTransaction(memberId, lateDate, 200.00);
+        sctLate.Execute();
+        TimeCardTransaction tct = new TimeCardTransaction(payDate, 8.0, empId);
+        tct.Execute();
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        Paycheck pc = pt.GetPaycheck(empId);
+        assertNotNull(pc);
+        assertEquals(pc.GetPayPeriodEndDate(), payDate);
+        assertEquals(8 * 15.24, pc.GetGrossPay());
+        assertEquals("Hold", pc.GetField("Disposition"));
+        assertEquals(9.42 + 19.42, pc.GetDeducations());
+        assertEquals(8 * 15.24 - (9.42 + 19.42), pc.GetNetPay());
+    }
+
     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);
         assertNotNull(pc);

コミット: f74da67

メッセージ

給与対象期間:設計上の問題
・TestHourlyUnionMemberServiceCharge

変更されたファイル

  • M src/test/java/TestPayroll.java

変更内容

commit f74da67f1f603d44ad60dcb27aecfb083b1dd5bd
Author: k2works <kakimomokuri@gmail.com>
Date:   Mon Apr 10 13:03:20 2017 +0900

    給与対象期間:設計上の問題

    ・TestHourlyUnionMemberServiceCharge

diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index 9281adb..29610d1 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -518,6 +518,30 @@ public class TestPayroll extends TestCase{
         assertEquals(2500.0 - 2 * 9.42, pc.GetNetPay());
     }

+    public void testHourlyUnionMemberServiceCharge() {
+        System.err.println("TestHourlyUnionMemberServiceCharge");
+        int empId = 1;
+        AddHourlyEmployee t = new AddHourlyEmployee(empId, "Bill", "Home", 15.24);
+        t.Execute();
+        int memberId = 7734;
+        ChangeMemberTransaction cmt = new ChangeMemberTransaction(empId, memberId, 9.42);
+        cmt.Execute();
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER,9);
+        ServiceChargeTransaction sct = new ServiceChargeTransaction(memberId, payDate, 19.42);
+        sct.Execute();
+        TimeCardTransaction tct = new TimeCardTransaction(payDate,8.0,empId);
+        tct.Execute();
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        Paycheck pc = pt.GetPaycheck(empId);
+        assertNotNull(pc);
+        assertEquals(pc.GetPayPeriodEndDate(), payDate);
+        assertEquals(8 * 15.24, pc.GetGrossPay());
+        assertEquals("Hold", pc.GetField("Disposition"));
+        assertEquals(9.42 + 19.42, pc.GetDeducations());
+        assertEquals(8 * 15.24 - (9.42 + 19.42), pc.GetNetPay());
+    }
+
     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);
         assertNotNull(pc);

コミット: 2019ea6

メッセージ

給与対象期間:設計上の問題
・TestCommissionedUnionMemberDues

変更されたファイル

  • M src/test/java/TestPayroll.java

変更内容

commit 2019ea67d66a2ffaba69fa564f61dc08aad4908f
Author: k2works <kakimomokuri@gmail.com>
Date:   Mon Apr 10 12:36:07 2017 +0900

    給与対象期間:設計上の問題

    ・TestCommissionedUnionMemberDues

diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index a133e0f..9281adb 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -498,6 +498,26 @@ public class TestPayroll extends TestCase{
         assertEquals(8 * 15.24 - 9.42, pc.GetNetPay());
     }

+    public void testCommissionedUnionMemberDues() {
+        System.err.println("TestCommissionedUnionMemberDues");
+        int empId = 3;
+        AddCommissionedEmployee t = new AddCommissionedEmployee(empId, "Lance", "Home", 2500,.032);
+        t.Execute();
+        int memberId = 7734;
+        ChangeMemberTransaction cmt = new ChangeMemberTransaction(empId, memberId, 9.42);
+        cmt.Execute();
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 9);
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        Paycheck pc = pt.GetPaycheck(empId);
+        assertNotNull(pc);
+        assertEquals(pc.GetPayPeriodEndDate(),payDate);
+        assertEquals(2500.0, pc.GetGrossPay());
+        assertEquals("Hold", pc.GetField("Disposition"));
+        assertEquals(2 * 9.42, pc.GetDeducations());
+        assertEquals(2500.0 - 2 * 9.42, pc.GetNetPay());
+    }
+
     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);
         assertNotNull(pc);

コミット: b5f1d97

メッセージ

給与対象期間:設計上の問題
・TestHourlyUnionMemberDues

変更されたファイル

  • M src/test/java/TestPayroll.java

変更内容

commit b5f1d97d2ac939707c32c035cc3b636d00b7f78f
Author: k2works <kakimomokuri@gmail.com>
Date:   Mon Apr 10 12:26:13 2017 +0900

    給与対象期間:設計上の問題

    ・TestHourlyUnionMemberDues

diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index a1722ff..a133e0f 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -476,6 +476,28 @@ public class TestPayroll extends TestCase{
         assertEquals(1000.0 - fridays * 9.42, pc.GetNetPay());
     }

+    public void testHourlyUnionMemberDues() {
+        System.err.println("TestHourlyUnionMemberDues");
+        int empId = 1;
+        AddHourlyEmployee t = new AddHourlyEmployee(empId, "Bill","Home",15.24);
+        t.Execute();
+        int memberId = 7734;
+        ChangeMemberTransaction cmt = new ChangeMemberTransaction(empId,memberId,9.42);
+        cmt.Execute();
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 9);
+        TimeCardTransaction tct = new TimeCardTransaction(payDate, 8.0, empId);
+        tct.Execute();
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        Paycheck pc = pt.GetPaycheck(empId);
+        assertNotNull(pc);
+        assertEquals(pc.GetPayPeriodEndDate(),payDate);
+        assertEquals(8 * 15.24, pc.GetGrossPay());
+        assertEquals("Hold", pc.GetField("Disposition"));
+        assertEquals(9.42, pc.GetDeducations());
+        assertEquals(8 * 15.24 - 9.42, pc.GetNetPay());
+    }
+
     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);
         assertNotNull(pc);

コミット: 0898e36

メッセージ

給与対象期間:設計上の問題
・TestSalariedUnionMemberDues

変更されたファイル

  • M src/main/java/Affiliation.java
  • M src/main/java/NoAffiliation.java
  • M src/main/java/ServiceCharge.java
  • M src/main/java/ServiceChargeTransaction.java
  • M src/main/java/UnionAffiliation.java
  • M src/test/java/TestPayroll.java

変更内容

commit 0898e3637a612cc0dfd31658c17cd5dd19460305
Author: k2works <kakimomokuri@gmail.com>
Date:   Mon Apr 10 12:01:40 2017 +0900

    給与対象期間:設計上の問題

    ・TestSalariedUnionMemberDues

diff --git a/src/main/java/Affiliation.java b/src/main/java/Affiliation.java
index 10834b3..eccbbd8 100644
--- a/src/main/java/Affiliation.java
+++ b/src/main/java/Affiliation.java
@@ -1,8 +1,10 @@
+import java.util.Calendar;
+
 /**
  * Created by k2works on 2017/04/06.
  */
 public interface Affiliation {
-    double GetServiceCharge(long date);
+    double GetServiceCharge(Calendar date);

     double CalculateDeductions(Paycheck pc);
 }
diff --git a/src/main/java/NoAffiliation.java b/src/main/java/NoAffiliation.java
index c6263b3..6edc76f 100644
--- a/src/main/java/NoAffiliation.java
+++ b/src/main/java/NoAffiliation.java
@@ -1,8 +1,10 @@
+import java.util.Calendar;
+
 /**
  * Created by k2works on 2017/04/07.
  */
 public class NoAffiliation implements Affiliation {
-    public double GetServiceCharge(long date) {
+    public double GetServiceCharge(Calendar date) {
         return 0;
     }

diff --git a/src/main/java/ServiceCharge.java b/src/main/java/ServiceCharge.java
index 313a8c1..57bd559 100644
--- a/src/main/java/ServiceCharge.java
+++ b/src/main/java/ServiceCharge.java
@@ -1,16 +1,18 @@
+import java.util.Calendar;
+
 /**
  * Created by k2works on 2017/04/06.
  */
 public class ServiceCharge {
-    private long itsDate;
+    private Calendar itsDate;
     private double itsAmount;

-    public ServiceCharge(long date, double amount) {
+    public ServiceCharge(Calendar date, double amount) {
         itsDate = date;
         itsAmount = amount;
     }

-    public long GetDate() {
+    public Calendar GetDate() {
         return itsDate;
     }

diff --git a/src/main/java/ServiceChargeTransaction.java b/src/main/java/ServiceChargeTransaction.java
index 058d09d..8612128 100644
--- a/src/main/java/ServiceChargeTransaction.java
+++ b/src/main/java/ServiceChargeTransaction.java
@@ -1,12 +1,14 @@
+import java.util.Calendar;
+
 /**
  * Created by k2works on 2017/04/06.
  */
 public class ServiceChargeTransaction implements Transaction {
     private int itsMemberId;
-    private long itsDate;
+    private Calendar itsDate;
     private double itsAmount;

-    public ServiceChargeTransaction(int memberId, long date, double amount) {
+    public ServiceChargeTransaction(int memberId, Calendar date, double amount) {
         itsMemberId = memberId;
         itsDate = date;
         itsAmount = amount;
diff --git a/src/main/java/UnionAffiliation.java b/src/main/java/UnionAffiliation.java
index f3d5de1..4a633a3 100644
--- a/src/main/java/UnionAffiliation.java
+++ b/src/main/java/UnionAffiliation.java
@@ -1,3 +1,4 @@
+import java.util.Calendar;
 import java.util.HashMap;
 import java.util.Map;

@@ -5,7 +6,7 @@ import java.util.Map;
  * Created by k2works on 2017/04/06.
  */
 public class UnionAffiliation implements Affiliation {
-    private Map<Long, ServiceCharge> itsServiceCharges = new HashMap<Long, ServiceCharge>();
+    private Map<Calendar, ServiceCharge> itsServiceCharges = new HashMap<Calendar, ServiceCharge>();
     private int itsMemberId;
     private double itsDues;

@@ -18,7 +19,7 @@ public class UnionAffiliation implements Affiliation {
         itsDues = dues;
     }

-    public double GetServiceCharge(long date) {
+    public double GetServiceCharge(Calendar date) {
         if (itsServiceCharges.get(date) == null) {
             return 0;
         }
@@ -26,10 +27,32 @@ public class UnionAffiliation implements Affiliation {
     }

     public double CalculateDeductions(Paycheck pc) {
-        return 0;
+        double totalServiceCharge = 0;
+        double totalDues = 0;
+        for (ServiceCharge sc : itsServiceCharges.values()) {
+            if (Date.IsBetween(sc.GetDate(), pc.GetPayPeriodStartDate(),pc.GetPayPeriodEndDate())) {
+                totalServiceCharge += sc.GetAmount();
+            }
+        }
+        int fridays = NumberOfFridaysInPayPeriod(pc.GetPayPeriodStartDate(),pc.GetPayPeriodEndDate());
+        totalDues = itsDues * fridays;
+        return totalDues + totalServiceCharge;
+    }
+
+    private int NumberOfFridaysInPayPeriod(Calendar payPeriodStart, Calendar payPeriodEnd) {
+        int fridays = 0;
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(payPeriodStart.getTime());
+        while (cal.compareTo(payPeriodEnd) <= 0) {
+            if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY) {
+                fridays++;
+            }
+            cal.add(Calendar.DATE,1);
+        }
+        return fridays;
     }

-    public void AddServiceCharge(long date, double amount) {
+    public void AddServiceCharge(Calendar date, double amount) {
         itsServiceCharges.put(date, new ServiceCharge(date, amount));
     }

diff --git a/src/test/java/TestPayroll.java b/src/test/java/TestPayroll.java
index a7192f2..a1722ff 100644
--- a/src/test/java/TestPayroll.java
+++ b/src/test/java/TestPayroll.java
@@ -131,9 +131,9 @@ public class TestPayroll extends TestCase{
         e.SetAffiliation(af);
         int memberId = 86;
         PayrollDatabase.AddUnionMember(memberId,e);
-        ServiceChargeTransaction sct = new ServiceChargeTransaction(memberId, 20011031, 12.95);
+        ServiceChargeTransaction sct = new ServiceChargeTransaction(memberId, date, 12.95);
         sct.Execute();
-        double sc = af.GetServiceCharge(20011031);
+        double sc = af.GetServiceCharge(date);
         assertEquals(12.95, sc, .001);
     }

@@ -455,6 +455,27 @@ public class TestPayroll extends TestCase{
         ValidatePaycheck(pt, empId, payDate, 2500.0 + .032 * 13000);
     }

+    public void testSalariedUnionMemberDues() {
+        System.err.println("TestSalariedUnionMemberDues");
+        int empId = 1;
+        AddSalariedEmployee t = new AddSalariedEmployee(empId, "Bob","Home",1000.0);
+        t.Execute();
+        int memberId = 7734;
+        ChangeMemberTransaction cmt = new ChangeMemberTransaction(empId, memberId,9.42);
+        cmt.Execute();
+        Calendar payDate = new GregorianCalendar(2001, Calendar.NOVEMBER, 30);
+        int fridays = 5; // Fridays in Nov, 2001.
+        PaydayTransaction pt = new PaydayTransaction(payDate);
+        pt.Execute();
+        Paycheck pc = pt.GetPaycheck(empId);
+        assertNotNull(pc);
+        assertEquals(pc.GetPayPeriodEndDate(), payDate);
+        assertEquals(1000.0,pc.GetGrossPay());
+        assertEquals("Hold", pc.GetField("Disposition"));
+        assertEquals(fridays * 9.42, pc.GetDeducations());
+        assertEquals(1000.0 - fridays * 9.42, pc.GetNetPay());
+    }
+
     private void ValidatePaycheck(PaydayTransaction pt, int empId, Calendar payDate, double pay) {
         Paycheck pc = pt.GetPaycheck(empId);
         assertNotNull(pc);