001 /*
002 * Copyright 2011 The Kuali Foundation.
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.kfs.module.endow.document.service;
017
018 import java.math.BigDecimal;
019 import java.sql.Date;
020 import java.util.Collection;
021 import java.util.List;
022
023 import org.kuali.kfs.module.endow.businessobject.Security;
024
025 /**
026 *
027 */
028 public interface SecurityService {
029
030 /**
031 * Calculates market value or unit value based on the security valuation method
032 *
033 * @param security the security for which we calculate the market value or unit value
034 * @return
035 */
036 public void computeValueBasedOnValuationMethod(Security security);
037
038 /**
039 * This method will perform the following updates: 1) Copy current Security Unit Value to Previous Unit Value 2) Copy current
040 * Security Value Date to Previous Unit Value Date 3) Copy newUnitValue to current Security Unit Value 4) Copy newValueDate to
041 * current Security Unit Value Date 5) Copy newUnitValueSource to Unit Value Source
042 *
043 * @param security the BO that needs to be updated.
044 * @param newUnitValue the new unit value for that security
045 * @param newValueDate the new value date for that security
046 * @param newUnitValueSource the new unit value source for that security
047 * @return Security the update security object
048 */
049 public Security updateUnitValue(Security security, BigDecimal newUnitValue, Date newValueDate, String newUnitValueSource);
050
051 /**
052 * This method will update the interest rate or amount
053 *
054 * @return Security the update security object
055 */
056 public Security updateInterestRate(Security theSecurity, BigDecimal interestRate);
057
058 /**
059 * Updates incomeChangeDate to currentDate
060 *
061 * @param id
062 */
063 public Security updateIncomeChangeDate(Security security);
064
065 /**
066 * Gets a Security by primary key.
067 *
068 * @param id
069 * @return a Security
070 */
071 public Security getByPrimaryKey(String id);
072
073 /**
074 * Gets all the Securities with the class code in the classCodes array and the units held greater than zero.
075 *
076 * @param classCodes
077 * @return All securities that meet the criteria
078 */
079 public List<Security> getSecuritiesByClassCodeWithUnitsGreaterThanZero(List<String> classCodes);
080
081 }