private Loan(CapitalStrategy capitalStrategy, double commitment,
                     double outstanding, int riskRating,
                     DateTime maturity, DateTime expiry)
        {
            this.commitment      = commitment;
            this.outstanding     = outstanding;
            this.riskRating      = riskRating;
            this.maturity        = maturity;
            this.expiry          = expiry;
            this.capitalStrategy = capitalStrategy;

            if (capitalStrategy == null)
            {
                if (expiry == NO_DATE)
                {
                    this.capitalStrategy = new CapitalStrategyTermLoan();
                }
                else if (maturity == NO_DATE)
                {
                    this.capitalStrategy = new CapitalStrategyRevolver();
                }
                else
                {
                    this.capitalStrategy = new CapitalStrategyRCTL();
                }
            }
        }
 public static Loan CreateTermLoan(CapitalStrategy strategy, double commitment, int riskRating, DateTime maturity)
 {
     return(new Loan(strategy, commitment, 0.00, riskRating, maturity, NO_DATE));
 }
 public void SetStrategy(CapitalStrategy strategy)
 {
     this.capitalStrategy = strategy;
 }