001 /** 002 * Copyright 2004-2012 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.hr.time.shiftdiff.rule.validation; 017 018 import org.apache.commons.lang.StringUtils; 019 import org.kuali.hr.time.shiftdiff.rule.ShiftDifferentialRule; 020 import org.kuali.hr.time.util.TkConstants; 021 import org.kuali.hr.time.util.ValidationUtils; 022 import org.kuali.rice.kns.document.MaintenanceDocument; 023 import org.kuali.rice.kns.maintenance.rules.MaintenanceDocumentRuleBase; 024 import org.kuali.rice.krad.bo.PersistableBusinessObject; 025 import org.kuali.rice.krad.util.GlobalVariables; 026 027 public class ShiftDifferentialRuleRule extends MaintenanceDocumentRuleBase { 028 029 boolean validateSalGroup(ShiftDifferentialRule shiftDifferentialRule) { 030 if (shiftDifferentialRule.getHrSalGroup() != null 031 && !StringUtils.equals(shiftDifferentialRule.getHrSalGroup(), 032 TkConstants.WILDCARD_CHARACTER) 033 && !ValidationUtils.validateSalGroup(shiftDifferentialRule 034 .getHrSalGroup(), shiftDifferentialRule 035 .getEffectiveDate())) { 036 this.putFieldError("hrSalGroup", "error.existence", "Salgroup '" 037 + shiftDifferentialRule.getHrSalGroup() + "'"); 038 return false; 039 } else { 040 return true; 041 } 042 } 043 044 boolean validateEarnCode(ShiftDifferentialRule shiftDifferentialRule) { 045 if (shiftDifferentialRule.getEarnCode() != null 046 && !ValidationUtils.validateEarnCode(shiftDifferentialRule 047 .getEarnCode(), shiftDifferentialRule 048 .getEffectiveDate())) { 049 this.putFieldError("earnCode", "error.existence", "earnCode '" 050 + shiftDifferentialRule.getEarnCode() + "'"); 051 return false; 052 } else { 053 return true; 054 } 055 } 056 057 boolean validateLocation(ShiftDifferentialRule shiftDifferentialRule) { 058 if (shiftDifferentialRule.getLocation() != null 059 && !StringUtils.equals(shiftDifferentialRule.getLocation(), 060 TkConstants.WILDCARD_CHARACTER) 061 && !ValidationUtils.validateLocation(shiftDifferentialRule 062 .getLocation(), shiftDifferentialRule 063 .getEffectiveDate())) { 064 this.putFieldError("location", "error.existence", "location '" 065 + shiftDifferentialRule.getLocation() + "'"); 066 return false; 067 } else { 068 return true; 069 } 070 } 071 072 boolean validatePayGrade(ShiftDifferentialRule shiftDifferentialRule) { 073 if (shiftDifferentialRule.getPayGrade() != null 074 && !StringUtils.equals(shiftDifferentialRule.getPayGrade(), 075 TkConstants.WILDCARD_CHARACTER) 076 && !ValidationUtils.validatePayGrade(shiftDifferentialRule 077 .getPayGrade(), shiftDifferentialRule 078 .getEffectiveDate())) { 079 this.putFieldError("payGrade", "error.existence", "pay grade '" 080 + shiftDifferentialRule.getPayGrade() + "'"); 081 return false; 082 } else { 083 return true; 084 } 085 } 086 087 /** 088 * It looks like the method that calls this class doesn't actually care 089 * about the return type. 090 */ 091 @Override 092 protected boolean processCustomRouteDocumentBusinessRules( 093 MaintenanceDocument document) { 094 boolean valid = false; 095 LOG.debug("entering custom validation for TimeCollectionRule"); 096 PersistableBusinessObject pbo = (PersistableBusinessObject) this.getNewBo(); 097 if (pbo instanceof ShiftDifferentialRule) { 098 ShiftDifferentialRule shiftDifferentialRule = (ShiftDifferentialRule) pbo; 099 shiftDifferentialRule.setUserPrincipalId(GlobalVariables 100 .getUserSession().getLoggedInUserPrincipalName()); 101 if (shiftDifferentialRule != null) { 102 valid = true; 103 valid &= this.validateLocation(shiftDifferentialRule); 104 valid &= this.validateSalGroup(shiftDifferentialRule); 105 valid &= this.validatePayGrade(shiftDifferentialRule); 106 valid &= this.validateEarnCode(shiftDifferentialRule); 107 } 108 } 109 110 return valid; 111 } 112 113 }