test


package sni.irct.model.services;

import java.math.BigDecimal;

import java.sql.SQLException;

import java.text.ParseException;
import java.text.SimpleDateFormat;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.StringTokenizer;
import java.util.TimeZone;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.management.AttributeList;

import oracle.adf.share.ADFContext;
import oracle.adf.share.security.identitymanagement.UserProfile;

import oracle.jbo.JboException;
import oracle.jbo.JboWarning;
import oracle.jbo.Key;
import oracle.jbo.Row;
import oracle.jbo.RowIterator;
import oracle.jbo.RowSet;
import oracle.jbo.RowSetIterator;
import oracle.jbo.ViewCriteria;
import oracle.jbo.ViewObject;
import oracle.jbo.common.StringManager;
import oracle.jbo.domain.ClobDomain;
import oracle.jbo.domain.DBSequence;
import oracle.jbo.domain.Number;
import oracle.jbo.domain.Timestamp;
import oracle.jbo.server.SequenceImpl;
import oracle.jbo.server.ViewLinkImpl;
import oracle.jbo.server.ViewObjectImpl;

import org.apache.commons.lang.StringUtils;

import org.omg.CORBA.StringHolder;

import sni.foundation.bcextensions.SNIApplicationModuleImpl;
import sni.foundation.bcextensions.utils.ApplicationModuleLocator;
import sni.foundation.bcextensions.utils.SNISearchCustomizer;
import sni.foundation.core.datetime.DateTimeUtil;
import sni.foundation.core.utils.Dumper;
import sni.foundation.lovs.quries.SNIListOfValuesVOImpl;
import sni.foundation.lovs.quries.SNIListOfValuesVORowImpl;
import sni.foundation.vpdacss.model.queries.readonly.ChildPermissionsROVOImpl;
import sni.foundation.vpdacss.model.queries.readonly.ChildPermissionsROVORowImpl;
import sni.foundation.vpdacss.model.queries.readonly.PermissionsROVOImpl;
import sni.foundation.vpdacss.model.queries.readonly.PermissionsROVORowImpl;

import sni.geo.common.businessrules.DistanceOptionsRule;
import sni.geo.common.dtos.CountryGeographyDTO;
import sni.geo.model.services.common.SNIGeographyService;

import sni.irct.common.businessrules.RTDistancePackageOptionsRule;
import static sni.irct.common.constants.RSConstants.ADMIN_MANAGER;
import sni.irct.common.dtos.IRCTGeography;
import sni.irct.common.dtos.request.IRCTContractSearchWSRequest;
import sni.irct.common.dtos.request.IRCTQualificationSearchWSRequest;
import sni.irct.common.dtos.result.IRCTContractSearchWSResponse;
import sni.irct.common.dtos.result.IRCTQualificationSearchWSResponse;
import sni.irct.common.util.IRCTPropertyUtils;
import static sni.irct.common.util.IRCTPropertyUtils.getOrbLookupPropertyValue;
import sni.irct.common.util.RCTDocumentQualificationSetRow;
import sni.irct.common.util.ValidationExceptionLWO;
import sni.irct.externaluser.model.services.common.IRCTExternalUserService;
import sni.irct.model.constants.IRCTModelConstants;
import static sni.irct.model.constants.IRCTModelConstants.SERVICE_TYPE_OBJ_CODE;
import sni.irct.model.constants.IRCTPubConstants;
import sni.irct.model.dtos.FreightClassDTO;
import sni.irct.model.dtos.RateEntryDTO;
import sni.irct.model.helpers.publication.CheckPublicationHelper;
import sni.irct.model.helpers.publication.SubmitPublicationHelper;
import sni.irct.model.queries.AuditVOImpl;
import sni.irct.model.queries.AuditVORowImpl;
import sni.irct.model.queries.BatchSummaryForPubVOImpl;
import sni.irct.model.queries.BatchSummaryForPubVORowImpl;
import sni.irct.model.queries.BatchSummaryVOImpl;
import sni.irct.model.queries.BatchSummaryVORowImpl;
import sni.irct.model.queries.BtchDtlCtntVOImpl;
import sni.irct.model.queries.BtchDtlVOImpl;
import sni.irct.model.queries.BtchDtlVORowImpl;
import sni.irct.model.queries.BtchRsltVOImpl;
import sni.irct.model.queries.BtchSumVOImpl;
import sni.irct.model.queries.CalcOprTypVOImpl;
import sni.irct.model.queries.CalcOprTypVORowImpl;
import sni.irct.model.queries.CalcOprVOImpl;
import sni.irct.model.queries.CalcOprVORowImpl;
import sni.irct.model.queries.CalcOprndVOImpl;
import sni.irct.model.queries.CalcOprndVORowImpl;
import sni.irct.model.queries.CalcTrnstVOImpl;
import sni.irct.model.queries.CalcTrnstVORowImpl;
import sni.irct.model.queries.CompanyVOImpl;
import sni.irct.model.queries.CompanyVORowImpl;
import sni.irct.model.queries.ContractAuditVOImpl;
import sni.irct.model.queries.ContractContactInfoVOImpl;
import sni.irct.model.queries.ContractRefAuditVOImpl;
import sni.irct.model.queries.ContractRefWithDescVOImpl;
import sni.irct.model.queries.ContractRefWithDescVORowImpl;
import sni.irct.model.queries.ContractReferenceVOImpl;
import sni.irct.model.queries.ContractReferenceVORowImpl;
import sni.irct.model.queries.ContractVOImpl;
import sni.irct.model.queries.ContractVORowImpl;
import sni.irct.model.queries.ContractXrefAuditVOImpl;
import sni.irct.model.queries.ContractXrefVOImpl;
import sni.irct.model.queries.ContractXrefVORowImpl;
import sni.irct.model.queries.CtrcDocVOImpl;
import sni.irct.model.queries.CtrcNoteVOImpl;
import sni.irct.model.queries.CtrcNoteVORowImpl;
import sni.irct.model.queries.CtrcXrefVOImpl;
import sni.irct.model.queries.DataGrpVOImpl;
import sni.irct.model.queries.DataGrpVORowImpl;
import sni.irct.model.queries.DocRateOrdStrcVOImpl;
import sni.irct.model.queries.DocRateOrdStrcVORowImpl;
import sni.irct.model.queries.DocTmplVOImpl;
import sni.irct.model.queries.DocTmplVORowImpl;
import sni.irct.model.queries.DocVOImpl;
import sni.irct.model.queries.DocVORowImpl;
import sni.irct.model.queries.EqvUomCnvVOImpl;
import sni.irct.model.queries.EqvUomCnvVORowImpl;
import sni.irct.model.queries.GeoSpecGroupMbrVOImpl;
import sni.irct.model.queries.GeoSpecGroupMbrVORowImpl;
import sni.irct.model.queries.GeoSpecGroupVOImpl;
import sni.irct.model.queries.GeoSpecGroupVORowImpl;
import sni.irct.model.queries.GeoSpecVORowImpl;
import sni.irct.model.queries.ImportTaskVOImpl;
import sni.irct.model.queries.ImportTaskVORowImpl;
import sni.irct.model.queries.IrctNoteVOImpl;
import sni.irct.model.queries.IrctNoteVORowImpl;
import sni.irct.model.queries.LtlFrtClaMapVOImpl;
import sni.irct.model.queries.LtlFrtClaMapVORowImpl;
import sni.irct.model.queries.PubBtchDtlCtntVOImpl;
import sni.irct.model.queries.QualGroupItemVOImpl;
import sni.irct.model.queries.QualGroupItemVORowImpl;
import sni.irct.model.queries.QualGroupVOImpl;
import sni.irct.model.queries.QualGroupVORowImpl;
import sni.irct.model.queries.QualItemMasterVOImpl;
import sni.irct.model.queries.QualItemMasterVORowImpl;
import sni.irct.model.queries.QualSetGroupItemVOImpl;
import sni.irct.model.queries.QualSetGroupItemVORowImpl;
import sni.irct.model.queries.QualSetGroupVOImpl;
import sni.irct.model.queries.QualSetGroupVORowImpl;
import sni.irct.model.queries.QualVOImpl;
import sni.irct.model.queries.QualVORowImpl;
import sni.irct.model.queries.QualificationVOImpl;
import sni.irct.model.queries.QualificationVORowImpl;
import sni.irct.model.queries.RateCompanyThresholdVOImpl;
import sni.irct.model.queries.RateCompanyVOImpl;
import sni.irct.model.queries.RndRuleVOImpl;
import sni.irct.model.queries.RndRuleVORowImpl;
import sni.irct.model.queries.ServiceTypeVOImpl;
import sni.irct.model.queries.ServiceTypeVORowImpl;
import sni.irct.model.queries.UserContractsVOImpl;
import sni.irct.model.queries.UserContractsVORowImpl;
import sni.irct.model.queries.UserPreferenceVOImpl;
import sni.irct.model.queries.UserPreferenceVORowImpl;
import sni.irct.model.queries.lov.CheckValidateGeoLOVImpl;
import sni.irct.model.queries.lov.CompanyIdByDescLOVImpl;
import sni.irct.model.queries.lov.CompanyIdLOVImpl;
import sni.irct.model.queries.lov.CompanyIdLOVRowImpl;
import sni.irct.model.queries.lov.ContractMatchQualificationsLOVImpl;
import sni.irct.model.queries.lov.ContractStatusLOVImpl;
import sni.irct.model.queries.lov.ContractTypeLOVImpl;
import sni.irct.model.queries.lov.CtrcStatusLOVImpl;
import sni.irct.model.queries.lov.CtrcTypeLOVImpl;
import sni.irct.model.queries.lov.DistancePkgCalcTypeLOVImpl;
import sni.irct.model.queries.lov.DistancePkgLOVImpl;
import sni.irct.model.queries.lov.DistancePkgLOVRowImpl;
import sni.irct.model.queries.lov.DistancePkgVersionLOVImpl;
import sni.irct.model.queries.lov.DistancePkgVersionLOVRowImpl;
import sni.irct.model.queries.lov.EngineEqualRuleLOVImpl;
import sni.irct.model.queries.lov.OrderOfPrecGeoLOVImpl;
import sni.irct.model.queries.lov.PageOrientLOVVOImpl;
import sni.irct.model.queries.lov.PaperSizeLOVOImpl;
import sni.irct.model.queries.lov.PubTypeLOVVOImpl;
import sni.irct.model.queries.lov.RatePublicationLOVImpl;
import sni.irct.model.queries.lov.RateResultsTypeLOVImpl;
import sni.irct.model.queries.lov.RatingEngineTypeLOVImpl;
import sni.irct.model.queries.lov.RatingEngineTypeLOVRowImpl;
import sni.irct.model.queries.lov.RoundingRuleLOVImpl;
import sni.irct.model.queries.lov.ServiceTypeLOVImpl;
import sni.irct.model.queries.lov.ServiceTypeLOVRowImpl;
import sni.irct.model.queries.lov.TariffTypesForEngineLOVImpl;
import sni.irct.model.queries.lov.TariffTypesForEngineLOVRowImpl;
import sni.irct.model.queries.lov.TransitOptDeliveryOptionsLOVImpl;
import sni.irct.model.queries.lov.TransitOptPickupOptionsLOVImpl;
import sni.irct.model.queries.readonly.ActvQuotChkROVOImpl;
import sni.irct.model.queries.readonly.ActvQuotChkROVORowImpl;
import sni.irct.model.queries.readonly.AuditROVOImpl;
import sni.irct.model.queries.readonly.AuditROVORowImpl;
import sni.irct.model.queries.readonly.BandValuePrecedenceROVOImpl;
import sni.irct.model.queries.readonly.BandValuePrecedenceROVORowImpl;
import sni.irct.model.queries.readonly.BaseEngineROVOImpl;
import sni.irct.model.queries.readonly.BatchQuedCntROVOImpl;
import sni.irct.model.queries.readonly.BatchQuedCntROVORowImpl;
import sni.irct.model.queries.readonly.BatchResultsROVOImpl;
import sni.irct.model.queries.readonly.BatchResultsROVORowImpl;
import sni.irct.model.queries.readonly.BatchSumDetailsROVOImpl;
import sni.irct.model.queries.readonly.BatchSumDetailsROVORowImpl;
import sni.irct.model.queries.readonly.BtchDtlCountROVOImpl;
import sni.irct.model.queries.readonly.BtchRsltROVOImpl;
import sni.irct.model.queries.readonly.CollectiveEngineROVOImpl;
import sni.irct.model.queries.readonly.CompaniesByBusIdROVOImpl;
import sni.irct.model.queries.readonly.CompaniesByBusIdROVORowImpl;
import sni.irct.model.queries.readonly.CompanyIdFromContractROVOImpl;
import sni.irct.model.queries.readonly.CompanyIdFromContractROVORowImpl;
import sni.irct.model.queries.readonly.ContractDupChkROVOImpl;
import sni.irct.model.queries.readonly.ContractROVOImpl;
import sni.irct.model.queries.readonly.ContractROVORowImpl;
import sni.irct.model.queries.readonly.ContractSearchForContractMaintROVOImpl;
import sni.irct.model.queries.readonly.ContractSearchROVOImpl;
import sni.irct.model.queries.readonly.CtrcXRefROVOImpl;
import sni.irct.model.queries.readonly.DefaultTransitContractCountROVOImpl;
import sni.irct.model.queries.readonly.DefaultTransitContractCountROVORowImpl;
import sni.irct.model.queries.readonly.DistGeoPkgROVOImpl;
import sni.irct.model.queries.readonly.DistGeoPkgROVORowImpl;
import sni.irct.model.queries.readonly.DocAudROVOImpl;
import sni.irct.model.queries.readonly.DocAudROVORowImpl;
import sni.irct.model.queries.readonly.DocEffDtCheckLTROVOImpl;
import sni.irct.model.queries.readonly.DocEffDtCheckLTROVORowImpl;
import sni.irct.model.queries.readonly.DocEffDtCheckROVOImpl;
import sni.irct.model.queries.readonly.DocEffDtCheckROVORowImpl;
import sni.irct.model.queries.readonly.DocExistsROVOImpl;
import sni.irct.model.queries.readonly.DocForPubROVOImpl;
import sni.irct.model.queries.readonly.DocForPubROVORowImpl;
import sni.irct.model.queries.readonly.DocStaROVOImpl;
import sni.irct.model.queries.readonly.DocStaROVORowImpl;
import sni.irct.model.queries.readonly.DocStaValidationROVOImpl;
import sni.irct.model.queries.readonly.DocStatusActionROVOImpl;
import sni.irct.model.queries.readonly.DocStatusActionROVORowImpl;
import sni.irct.model.queries.readonly.DocTypROVOImpl;
import sni.irct.model.queries.readonly.DocTypROVORowImpl;
import sni.irct.model.queries.readonly.DocumentPromoteROVOImpl;
import sni.irct.model.queries.readonly.DocumentPromoteROVORowImpl;
import sni.irct.model.queries.readonly.DocumentROVOImpl;
import sni.irct.model.queries.readonly.DocumentROVORowImpl;
import sni.irct.model.queries.readonly.EngTypPrecedenceROVOImpl;
import sni.irct.model.queries.readonly.EngineTypFrCalcOprROVOImpl;
import sni.irct.model.queries.readonly.GeoGroupROVOImpl;
import sni.irct.model.queries.readonly.OrdPblRptGrpByPrcdNumROVOImpl;
import sni.irct.model.queries.readonly.PblRptGrpROVOImpl;
import sni.irct.model.queries.readonly.PblcnBusTmplGrpROVOImpl;
import sni.irct.model.queries.readonly.PreSelectedContractsROVOImpl;
import sni.irct.model.queries.readonly.PrecedenceValuesROVOImpl;
import sni.irct.model.queries.readonly.PublicationFSRTmplROVOImpl;
import sni.irct.model.queries.readonly.PublicationFSRTmplROVORowImpl;
import sni.irct.model.queries.readonly.PublicationGENTmplROVOImpl;
import sni.irct.model.queries.readonly.PublicationGENTmplROVORowImpl;
import sni.irct.model.queries.readonly.PublicationHFTmplROVOImpl;
import sni.irct.model.queries.readonly.PublicationHFTmplROVORowImpl;
import sni.irct.model.queries.readonly.PublicationLGLTmplROVOImpl;
import sni.irct.model.queries.readonly.PublicationLGLTmplROVORowImpl;
import sni.irct.model.queries.readonly.QualGroupItemROVOImpl;
import sni.irct.model.queries.readonly.QualGroupItemROVORowImpl;
import sni.irct.model.queries.readonly.QualGroupROVOImpl;
import sni.irct.model.queries.readonly.QualGroupROVORowImpl;
import sni.irct.model.queries.readonly.QualGrpItemsROVOImpl;
import sni.irct.model.queries.readonly.QualItemMasterROVOImpl;
import sni.irct.model.queries.readonly.QualItemMasterROVORowImpl;
import sni.irct.model.queries.readonly.QualItmDelCheckROVOImpl;
import sni.irct.model.queries.readonly.QualPrecedAndDescROVOImpl;
import sni.irct.model.queries.readonly.RCTContractReferenceROVOImpl;
import sni.irct.model.queries.readonly.RCTDocumentStatusROVOImpl;
import sni.irct.model.queries.readonly.RCTDocumentStatusROVORowImpl;
import sni.irct.model.queries.readonly.RCTDocumentTemplateROVOImpl;
import sni.irct.model.queries.readonly.RCTDocumentTemplateROVORowImpl;
import sni.irct.model.queries.readonly.RCTDocumentTypeROVOImpl;
import sni.irct.model.queries.readonly.RCTDocumentTypeROVORowImpl;
import sni.irct.model.queries.readonly.RatePblcnTmplHFROVOImpl;
import sni.irct.model.queries.readonly.RatePblcnTmplROVOImpl;
import sni.irct.model.queries.readonly.RatingCompanyROVOImpl;
import sni.irct.model.queries.readonly.RatingCompanyROVORowImpl;
import sni.irct.model.queries.readonly.RouteEngTypePrecedenceROVOImpl;
import sni.irct.model.queries.readonly.RouteEngTypePrecedenceROVORowImpl;
import sni.irct.model.queries.readonly.SelectedServiceTypeROVOImpl;
import sni.irct.model.queries.readonly.ServiceTypeChkROVOImpl;
import sni.irct.model.queries.readonly.ServiceTypeChkROVORowImpl;
import sni.irct.model.queries.readonly.ServiceTypeCnvrsnROVOImpl;
import sni.irct.model.queries.readonly.ServiceTypeDescROVOImpl;
import sni.irct.model.queries.readonly.ServiceTypeROVOImpl;
import sni.irct.model.queries.readonly.ServiceTypeROVORowImpl;
import sni.irct.model.queries.readonly.UomTypROVOImpl;
import sni.irct.model.queries.readonly.UsrPrefCpyROVOImpl;
import sni.irct.model.queries.readonly.UsrPrefCtrcROVOImpl;
import sni.irct.model.queries.readonly.ValidateContractReferenceROVOImpl;
import sni.irct.model.queries.readonly.ValidateContractReferenceROVORowImpl;
import sni.irct.model.queries.readonly.ValidateDateOverlapROVOImpl;
import sni.irct.model.queries.readonly.ValidateDateOverlapROVORowImpl;
import sni.irct.model.queries.trans.AddRateEntryTRVOImpl;
import sni.irct.model.queries.trans.AddRateEntryTRVORowImpl;
import sni.irct.model.queries.trans.AuditTRVOImpl;
import sni.irct.model.queries.trans.AuditTRVORowImpl;
import sni.irct.model.queries.trans.AuditforDocCtrcRefTRVOImpl;
import sni.irct.model.queries.trans.BatchRateLookupTRVOImpl;
import sni.irct.model.queries.trans.BatchRateLookupTRVORowImpl;
import sni.irct.model.queries.trans.BusinessGroupTRVOImpl;
import sni.irct.model.queries.trans.BusinessGroupTRVORowImpl;
import sni.irct.model.queries.trans.CalcOprTRVOImpl;
import sni.irct.model.queries.trans.CalcOprTRVORowImpl;
import sni.irct.model.queries.trans.CompanyIdTRVOImpl;
import sni.irct.model.queries.trans.ContactTRVOImpl;
import sni.irct.model.queries.trans.ContractReferenceTRVOImpl;
import sni.irct.model.queries.trans.ContractReferenceTRVORowImpl;
import sni.irct.model.queries.trans.ContractSearchCriteriaTRVOImpl;
import sni.irct.model.queries.trans.ContractTRVOImpl;
import sni.irct.model.queries.trans.ContractTRVORowImpl;
import sni.irct.model.queries.trans.ContractXrefTRVOImpl;
import sni.irct.model.queries.trans.ContractXrefTRVORowImpl;
import sni.irct.model.queries.trans.CtrcRefTRVOImpl;
import sni.irct.model.queries.trans.CtrcRefTRVORowImpl;
import sni.irct.model.queries.trans.DisplayAdminResultTVOImpl;
import sni.irct.model.queries.trans.DisplayAdminResultTVORowImpl;
import sni.irct.model.queries.trans.DistAdvanceOptionTRVOImpl;
import sni.irct.model.queries.trans.DistAdvanceOptionTRVORowImpl;
import sni.irct.model.queries.trans.DocTmplForDfltTRVOImpl;
import sni.irct.model.queries.trans.DocTmplForDfltTRVORowImpl;
import sni.irct.model.queries.trans.DocumentForPubTRVOImpl;
import sni.irct.model.queries.trans.DocumentForPubTRVORowImpl;
import sni.irct.model.queries.trans.FreightClsMappingsTRVOImpl;
import sni.irct.model.queries.trans.FreightClsMappingsTRVORowImpl;
import sni.irct.model.queries.trans.FrtClsMappingTRVOImpl;
import sni.irct.model.queries.trans.FrtClsMappingTRVORowImpl;
import sni.irct.model.queries.trans.GeoSpecGrpTRVOImpl;
import sni.irct.model.queries.trans.GeoSpecGrpTRVORowImpl;
import sni.irct.model.queries.trans.GeoSpecTRVOImpl;
import sni.irct.model.queries.trans.GeoSpecTRVORowImpl;
import sni.irct.model.queries.trans.InitiatePublicationTRVOImpl;
import sni.irct.model.queries.trans.InitiatePublicationTRVORowImpl;
import sni.irct.model.queries.trans.OrderOfPrecTRVOImpl;
import sni.irct.model.queries.trans.OrderOfPrecTRVORowImpl;
import sni.irct.model.queries.trans.PblcnBusTmplGrpTRVOImpl;
import sni.irct.model.queries.trans.PblcnBusTmplGrpTRVORowImpl;
import sni.irct.model.queries.trans.PreviewFrmtdDataVOImpl;
import sni.irct.model.queries.trans.PubNotesTRVOImpl;
import sni.irct.model.queries.trans.PubNotesTRVORowImpl;
import sni.irct.model.queries.trans.PublicationFSRTmplTRVOImpl;
import sni.irct.model.queries.trans.PublicationGENTmplTRVOImpl;
import sni.irct.model.queries.trans.PublicationGENTmplTRVORowImpl;
import sni.irct.model.queries.trans.PublicationHFTmplTRVOImpl;
import sni.irct.model.queries.trans.PublicationLGLTmplTRVOImpl;
import sni.irct.model.queries.trans.PublicationLGLTmplTRVORowImpl;
import sni.irct.model.queries.trans.QualSetGrpDisplayTRVOImpl;
import sni.irct.model.queries.trans.QualSetGrpDisplayTRVORowImpl;
import sni.irct.model.queries.trans.RateCompanyThresholdTRVOImpl;
import sni.irct.model.queries.trans.RateCompanyThresholdTRVORowImpl;
import sni.irct.model.queries.trans.RateEntryBandXTRVOImpl;
import sni.irct.model.queries.trans.RateEntryBandYTRVOImpl;
import sni.irct.model.queries.trans.RateEntryResponseTRVOImpl;
import sni.irct.model.queries.trans.RateEntryResponseTRVORowImpl;
import sni.irct.model.queries.trans.RateEntryTRVOImpl;
import sni.irct.model.queries.trans.RateEntryTRVORowImpl;
import sni.irct.model.queries.trans.RatePblcnTmplForGrpCdTRVOImpl;
import sni.irct.model.queries.trans.RatePblcnTmplForGrpCdTRVORowImpl;
import sni.irct.model.queries.trans.RateTRVOImpl;
import sni.irct.model.queries.trans.ReportTypesForBtchRprtTRVOImpl;
import sni.irct.model.queries.trans.ReportTypesForBtchRprtTRVORowImpl;
import sni.irct.model.queries.trans.RoundingTRVOImpl;
import sni.irct.model.queries.trans.RoundingTRVORowImpl;
import sni.irct.model.queries.trans.RouteStopTRVOImpl;
import sni.irct.model.queries.trans.RouteStopTRVORowImpl;
import sni.irct.model.queries.trans.UserPrefTRVOImpl;
import sni.irct.model.queries.trans.UserPrefTRVORowImpl;
import sni.irct.model.services.common.IRCTRateCompanyService;
import sni.irct.model.services.internal.IRCTRateCompanyServiceHelper;
import sni.irct.model.services.internal.IRCTRateEntryHelper;
import sni.irct.model.services.internal.SNILOVUOMCache;
import sni.irct.model.util.IRCTCommonUtil;
import sni.irct.model.util.IRCTRateCompanyConstants;

import sni.prt.irct.IRCT_LWO.RCTInteger;
import sni.prt.irct.constants.RateServerConstants;
import sni.prt.irct.exceptions.IRCTSystemException;
import sni.prt.irct.exceptions.IRCTValidationException;
import sni.prt.irct.lwo.RCTAction;
import sni.prt.irct.lwo.RCTAdminParam;
import sni.prt.irct.lwo.RCTAudit;
import sni.prt.irct.lwo.RCTContractItem;
import sni.prt.irct.lwo.RCTCreateUpdate;
import sni.prt.irct.lwo.RCTDocument;
import sni.prt.irct.lwo.RCTDocumentStatus;
import sni.prt.irct.lwo.RCTDocumentTemplate;
import sni.prt.irct.lwo.RCTDocumentType;
import sni.prt.irct.lwo.RCTGeoArea;
import sni.prt.irct.lwo.RCTGeoGroup;
import sni.prt.irct.lwo.RCTNullableLong;
import sni.prt.irct.lwo.RCTQualificationItem;
import sni.prt.irct.lwo.RCTRate;
import sni.prt.irct.lwo.RCTRoutingGuide;
import sni.prt.irct.lwo.RCTRoutingGuideRate;
import sni.prt.irct.lwo.RCTTransit;
import sni.prt.irct.lwo.RCTUserInfo;
import sni.prt.irct.lwo.impl.RCTCreateUpdateImpl;
import sni.prt.irct.lwo.impl.RCTDocumentQualificationSetImpl;
import sni.prt.irct.lwo.impl.RCTOrdOfPrecedenceImpl;
import sni.prt.irct.manager.AdminManager;
import sni.prt.irct.manager.DistanceGeographyManager;
import sni.prt.irct.manager.RatingAdminManager;
import sni.prt.irct.utils.LWOUtils;


// ---------------------------------------------------------------------
// ---    File generated by Oracle ADF Business Components Design Time.
// ---    Fri Mar 19 14:24:13 CDT 2010
// ---    Custom code may be added to this class.
// ---    Warning: Do not modify method signatures of generated methods.
// ---------------------------------------------------------------------
public class IRCTRateCompanyServiceImpl
  extends SNIApplicationModuleImpl
  implements IRCTPubConstants, IRCTRateCompanyService
{

  private static final String CLAZZ_NAME =
    IRCTRateCompanyServiceImpl.class.getName();
  private static final Logger _logger = Logger.getLogger(CLAZZ_NAME);


  /**
   * This is the default constructor (do not remove).
   */
  public IRCTRateCompanyServiceImpl()
  {
    super();
  }

  public IRCTRateCompanyServiceHelper getIRCTRateCompanyServiceHelper()
  {
    return new IRCTRateCompanyServiceHelper(this);
  }

  /**
   *Singleton for IRCTRateEntryHelper class
   * @return
   */
  public IRCTRateEntryHelper getIRCTRateEntryHelper()
  {
    return new IRCTRateEntryHelper(this);
  }

  public void runPublication()
  {
    String methodName = "runPublication()";
    _logger.entering(CLAZZ_NAME, methodName);

    SubmitPublicationHelper pubHelper = new SubmitPublicationHelper();
    pubHelper.execute(this);

    _logger.exiting(CLAZZ_NAME, methodName);
  }

  /**
   * Handles IRCT CORBA Exceptions
   * @param pException
   * @param pMessage
   * @param pNewDataList
   */
  private void handleException(Exception pException, String pMessage,
                               Object pNewDataList)
  {
    final String methodName = "handleException(Exception, String, Object)";
    StringBuilder message = null;
    if (pException instanceof IRCTValidationException &&
        _logger.isLoggable(Level.FINEST))
    {
      message = new StringBuilder("IRCTValidationException");
    }
    else if (pException instanceof IRCTSystemException &&
             _logger.isLoggable(Level.FINEST))
    {
      message = new StringBuilder("IRCTSystemException");
    }
    else if (_logger.isLoggable(Level.FINEST))
    {
      message = new StringBuilder("Exception");
    }

    if (_logger.isLoggable(Level.FINEST))
    {
      message =
          message.append(" ").append(pMessage).append(" Input Request ").append(pNewDataList !=
                                                                                null?
                                                                                Dumper.dumpValueToString(pNewDataList):
                                                                                "");
      _logger.logp(Level.FINEST, CLAZZ_NAME, methodName,
                   message.toString(), pException);
    }
  }

  /**
   * Container's getter for GeographyService.
   * @return GeographyServiceImpl
   * Get the Geography Service using the ApplicationModule Locator and not using NestedAM.(NestedAM is giving SQL exceptions as it tries to connect withrte_guest User id.)
   *
   */
  public SNIGeographyService getGeographyService()
  {
    SNIGeographyService geographyAM =
      (SNIGeographyService) ApplicationModuleLocator.singleton().getApplicationModule("sni.geo.model.services.SNIGeographyService");
    return geographyAM;
  }

  public IRCTExternalUserService getIRCTExternalUserService()
  {
    String lMethodName = "getIRCTExternalUserService()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    IRCTExternalUserService externalUserAM =
      (IRCTExternalUserService) ApplicationModuleLocator.singleton().getApplicationModule("sni.irct.externaluser.model.services.IRCTExternalUserService");
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return externalUserAM;
  }

  public String getLoggedInUserName()
  {
    String lMethodName = "getLoggedInUserName()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return getIRCTExternalUserService().getLoggedInUserName();

  }

  /**
   * This method gets invoked via IRCT Web Service.
   * @param pIRCTGeography
   * @return
   */
  public IRCTGeography validateIRCTGeographyArea(IRCTGeography pIRCTGeography)
  {
    String lMethodName = "validateIRCTGeographyArea(IRCTGeography)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    getIRCTRateCompanyServiceHelper().validateIRCTGeographyArea(pIRCTGeography);
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return pIRCTGeography;
  }

  /**
   * This method gets invoked via IRCT Web Service.
   * @param pIRCTContractSearchWSRequest
   * @return
   */
  public IRCTContractSearchWSResponse searchForContract(IRCTContractSearchWSRequest pIRCTContractSearchWSRequest)
  {
    String lMethodName = "searchForContract(IRCTContractSearchWSRequest)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    IRCTContractSearchWSResponse response =
      getIRCTRateCompanyServiceHelper().searchForContract(pIRCTContractSearchWSRequest);
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return response;
  }

  /**
   * This method gets invoked via IRCT Web Service.
   * @param pIRCTQualificationSearchWSRequest
   * @return
   */
  public IRCTQualificationSearchWSResponse searchForQualification(IRCTQualificationSearchWSRequest pIRCTQualificationSearchWSRequest)
  {
    String lMethodName =
      "searchForQualification(IRCTContractSearchWSRequest)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    IRCTQualificationSearchWSResponse response =
      getIRCTRateCompanyServiceHelper().searchForQualification(pIRCTQualificationSearchWSRequest);
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return response;
  }

  /**
   * This method invokes from the Rate Entry screen by clicking on 'AdjustRates' button
   */
  public void adjustRates()
  {
    String lMethodName = "adjustRates()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    AddRateEntryTRVORowImpl addRateEntryRow = null;
    RowSetIterator rateRespIt = null;
    IRCTRateEntryHelper rateEntryHelper = new IRCTRateEntryHelper(this);
    addRateEntryRow =
        (AddRateEntryTRVORowImpl) getAddRateEntryTRVO().first();
    RateEntryResponseTRVOImpl rateEntryRespTRVO =
      getRateEntryResponseTRVO();
    rateRespIt = rateEntryRespTRVO.createRowSetIterator(null);
    rateEntryHelper.adjustRates(addRateEntryRow, rateRespIt);
    rateRespIt.closeRowSetIterator();
    _logger.entering(CLAZZ_NAME, lMethodName);

  }

  /**
   * This method gets invoke whenever user clicks on 'Save/Update' button
   * on Search Rate Entry results screen
   * @param pContractTreeMap
   */
  public String updateRateData(Map pContractTreeMap)
  {
    String lMethodName = "updateRateData(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    RowSetIterator rateEntryRespIt = null;
    String updateMsg = null;
    AddRateEntryTRVORowImpl addRateEntryTRVORow = null;
    List newDataList = new ArrayList();
    try
    {
      addRateEntryTRVORow =
          (AddRateEntryTRVORowImpl) getAddRateEntryTRVO().first();
      RateEntryDTO rateEntryDTO =
        getIRCTRateEntryHelper().prepareRateEntryDTO(pContractTreeMap);
      if (pContractTreeMap != null)
      {
        rateEntryRespIt =
            getRateEntryResponseTRVO().createRowSetIterator(null);
        newDataList =
            getIRCTRateEntryHelper().prepareUpdateRateEntryResults(rateEntryDTO,
                                                                   addRateEntryTRVORow,
                                                                   rateEntryRespIt);
        if (!rateEntryDTO.isUpdateValidationError() &&
            newDataList.size() > 0)
        {
          RCTUserInfo user =
            getIRCTRateEntryHelper().populateRCTUserInfoObject(rateEntryDTO.getBusinessId(),
                                                               rateEntryDTO.getCpyId(),
                                                               getLoggedInUserID());

          RatingAdminManager mgr = new RatingAdminManager();
          if (addRateEntryTRVORow.getDisplayEditViewRate() ||
              addRateEntryTRVORow.getDisplayAuditViewRate())
          {
            if (_logger.isLoggable(Level.FINEST))
            {
              _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                           " Invoking  updateRates() CORBA Call: Data List Size " +
                           newDataList.size());
            }
            if (addRateEntryTRVORow.getDisplayDurPriFlg())
            {
              mgr.updateRoutingGuideRates(rateEntryDTO.getDocTypeCd(),
                                          rateEntryDTO.getDataGrpUOMId(),
                                          rateEntryDTO.getDataGrpCurrCode(),
                                          newDataList, user);
            }
            else
            {
              mgr.updateRates(rateEntryDTO.getDocTypeCd(),
                              rateEntryDTO.getDataGrpUOMId(),
                              rateEntryDTO.getDataGrpCurrCode(),
                              newDataList, user);
            }
          }
          else if ((addRateEntryTRVORow.getDisplayEditViewTransit() ||
                    addRateEntryTRVORow.getDisplayViewTransit()))
          {
            if (_logger.isLoggable(Level.FINEST))
            {
              _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                           " Invoking  updateTransits() CORBA Call: Data List Size " +
                           newDataList.size());
            }
            mgr.updateTransits(rateEntryDTO.getDocTypeCd(),
                               rateEntryDTO.getDataGrpUOMId(),
                               rateEntryDTO.getDataGrpCurrCode(),
                               newDataList, user);
          }
          else if (addRateEntryTRVORow.getDisplayEditViewRoutingGuide() ||
                   addRateEntryTRVORow.getDisplayViewRoutingGuide())
          {
            if (_logger.isLoggable(Level.FINEST))
            {
              _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                           " Invoking  updateRoutingGuides() CORBA Call: Data List Size " +
                           newDataList.size());
            }
            mgr.updateRoutingGuides(rateEntryDTO.getDocTypeCd(),
                                    rateEntryDTO.getDataGrpUOMId(),
                                    rateEntryDTO.getDataGrpCurrCode(),
                                    newDataList, user);
          }
          if (newDataList != null && newDataList.size() > 0)
          {
            updateMsg = IRCTRateCompanyConstants.RATE_ENTRY_SAVE_ERR_MSG;
            getIRCTRateEntryHelper().processUpdateErrors(newDataList);
          }
          else
          {
            getRateEntryResponseTRVO().clearCache();
          }
        }
        else if (rateEntryDTO.isUpdateValidationError())
        {
          updateMsg = IRCTRateCompanyConstants.RATE_ENTRY_SAVE_ERR_MSG;
        }
      }
    }
    catch (Exception ex)
    {
      updateMsg = "Exception while Update Rate/RoutingGuide/Transit";
      handleException(ex, updateMsg, newDataList);
    }
    finally
    {
      rateEntryRespIt.closeRowSetIterator();
    }
    if (StringUtils.isNotBlank(updateMsg))
      return IRCTRateCompanyConstants.RATE_ENTRY_SAVE_ERROR;
    _logger.exiting(CLAZZ_NAME, lMethodName);

    return null;
  }

  /**
   * This method is being invoked from Rate/Routing Guide/Transit entry screens
   * Invokes CORBA call to Undo the Selected Rate on the screen
   */
  public String processUndoAllRates(Map pContractTreeMap)
  {
    String lMethodName = "processUndoAllRates(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    RowSetIterator rateRespIt = null;
    String errMsg = null;
    List rateList = new ArrayList();
    try
    {
      String cpyId = null;
      String businessId = null;

      if (pContractTreeMap.containsKey(IRCTRateCompanyConstants.CPY_ID))
        cpyId =
            String.valueOf(pContractTreeMap.get(IRCTRateCompanyConstants.CPY_ID));
      if (pContractTreeMap.containsKey(IRCTRateCompanyConstants.BUS_ID))
        businessId =
            String.valueOf(pContractTreeMap.get(IRCTRateCompanyConstants.BUS_ID));

      RCTUserInfo user =
        getIRCTRateCompanyServiceHelper().populateRCTUserInfoObject(businessId,
                                                                    cpyId,
                                                                    getLoggedInUserID());

      rateRespIt =
          this.getRateEntryResponseTRVO().createRowSetIterator(null);
      AddRateEntryTRVORowImpl addRateEntryRow =
        (AddRateEntryTRVORowImpl) this.getAddRateEntryTRVO().first();
      while (rateRespIt.hasNext())
      {
        RateEntryResponseTRVORowImpl rateRespRow =
          (RateEntryResponseTRVORowImpl) rateRespIt.next();
        if (rateRespRow.getRowChkFlg())
        {
          if (addRateEntryRow.getDisplayEditViewRate())
          {
            rateList.add(rateRespRow.getRateObj());
          }
        }
      }
      if (rateList.size() > 0)
      {
        RatingAdminManager mgr = new RatingAdminManager();
        mgr.undoRates(rateList, user);
        if (addRateEntryRow.getDisplayEditViewRate())
          mgr.undoRates(rateList, user);
        searchRateEntry(pContractTreeMap); //Added to refersh the data
      }
    }
    catch (Exception ex)
    {
      errMsg = "Exception while undoRates";
      handleException(ex, errMsg, rateList);
    }
    finally
    {
      rateRespIt.closeRowSetIterator();
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return null;
  }

  /**
   * This method is being invoked from Rate/Routing Guide/Transit entry screens
   * Invokes CORBA call to inactivate the Selected Rate on the screen
   */
  public String processRatesInactivate(Map pContractTreeMap)
  {
    String lMethodName = "processRatesInactivate(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    RowSetIterator rateRespIt = null;
    String errMsg = null;
    List rateList = new ArrayList();
    List rateRowList =
      new ArrayList();
    try
    {
      String cpyId = null;
      String businessId = null;
      if (pContractTreeMap.containsKey(IRCTRateCompanyConstants.CPY_ID))
        cpyId =
            String.valueOf(pContractTreeMap.get(IRCTRateCompanyConstants.CPY_ID));
      if (pContractTreeMap.containsKey(IRCTRateCompanyConstants.BUS_ID))
        businessId =
            String.valueOf(pContractTreeMap.get(IRCTRateCompanyConstants.BUS_ID));

      RCTUserInfo user =
        getIRCTRateCompanyServiceHelper().populateRCTUserInfoObject(businessId,
                                                                    cpyId,
                                                                    getLoggedInUserID());

      rateRespIt =
          this.getRateEntryResponseTRVO().createRowSetIterator(null);
      AddRateEntryTRVORowImpl addRateEntryRow =
        (AddRateEntryTRVORowImpl) getAddRateEntryTRVO().first();
      while (rateRespIt.hasNext())
      {
        RateEntryResponseTRVORowImpl rateRespRow =
          (RateEntryResponseTRVORowImpl) rateRespIt.next();
        if (rateRespRow.getRowChkFlg())
        {
          if (rateRespRow.getStatus().equals(IRCTRateCompanyConstants.STATUS_DLTD))
            return IRCTRateCompanyConstants.RATE_ENTRY_INACTIVATE_ERR_MSG;
          if (addRateEntryRow.getDisplayEditViewRate())
          {
            rateList.add(rateRespRow.getRateObj());
            rateRowList.add(rateRespRow);
          }
        }
      }

      if (rateList.size() > 0)
      {
        RatingAdminManager mgr = new RatingAdminManager();
        if (addRateEntryRow.getDisplayDurPriFlg())
          mgr.inactivateRoutingGuideRates(rateList, user);
        else if (addRateEntryRow.getDisplayEditViewRate())
          mgr.inactivateRates(rateList, user);
        //TODO LALITA
        for (RateEntryResponseTRVORowImpl rateRespRow: rateRowList)
        {
          rateRespRow.setStatus(IRCTRateCompanyConstants.STATUS_DLTD);
        }
      }
      else
        return IRCTRateCompanyConstants.SELECT_ONE_ITEM;
    }
    catch (Exception ex)
    {
      errMsg = "Exception while inactivateRates";
      handleException(ex, errMsg, rateList);
    }
    finally
    {
      rateRespIt.closeRowSetIterator();
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return null;

  }

  /**
   * This method gets invoked by clicking on Save/Done button on
   * Rate/Transit/Routing Guide/Routing Guide Rate Add/Edit screens
   * @param pContractTreeDataMap
   * @return
   */
  public String saveRateEntryData(Map pContractTreeDataMap)
  {
    String lMethodName = "saveRateEntryData(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    String saveErrMsg = null;
    List newDataList = new ArrayList();
    RateEntryDTO rateEntryDTO = null;
    if (pContractTreeDataMap != null)
      rateEntryDTO =
          getIRCTRateEntryHelper().prepareRateEntryDTO(pContractTreeDataMap);
    RateEntryTRVOImpl rateEntryTRVO = getRateEntryTRVO();
    AddRateEntryTRVORowImpl addRateEntryTRVORow = null;
    try
    {
      addRateEntryTRVORow =
          (AddRateEntryTRVORowImpl) getAddRateEntryTRVO().first();
      if (addRateEntryTRVORow != null)
      {
        addRateEntryTRVORow.setDisplayErrMsg(Boolean.FALSE);
        addRateEntryTRVORow.setDisplayRtgGdeErrMsg(Boolean.FALSE);
        addRateEntryTRVORow.setDisplayOriErrMsg(Boolean.FALSE);
        addRateEntryTRVORow.setDisplayDesErrMsg(Boolean.FALSE);
      }
      RCTUserInfo user =
        getIRCTRateEntryHelper().populateRCTUserInfoObject(rateEntryDTO.getBusinessId(),
                                                           rateEntryDTO.getCpyId(),
                                                           getLoggedInUserID());
      newDataList =
          getIRCTRateEntryHelper().prepareSaveRateEntryDataList(rateEntryDTO,
                                                                addRateEntryTRVORow,
                                                                rateEntryTRVO);
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                   "IS srateEntryDTO.isSaveValidationError()" +
                   rateEntryDTO.isSaveValidationError());
      // CreateTransits CORBA Call
      if (!rateEntryDTO.isSaveValidationError())
      {
        if (newDataList != null && newDataList.size() > 0)
        {
          RatingAdminManager manager = new RatingAdminManager();
          if (addRateEntryTRVORow.getDisplayTransit())
          {
            // If the document type is Transit
            if (_logger.isLoggable(Level.FINEST))
            {
              _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                           " Invoking  createTransits() CORBA Call: Data List Size " +
                           newDataList.size());
            }
            manager.createTransits(rateEntryDTO.getDocTypeCd(),
                                   rateEntryDTO.getDataGrpUOMId(),
                                   rateEntryDTO.getDataGrpCurrCode(),
                                   newDataList, user);

          }
          else if (addRateEntryTRVORow.getDisplayDurPriFlg())
          {
            // If Priority and Duration selected.
            if (_logger.isLoggable(Level.FINEST))
            {
              _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                           " Invoking  createRoutingGuideRate() CORBA Call: Data List Size " +
                           newDataList.size());
            }
            manager.createRoutingGuideRate(rateEntryDTO.getDocTypeCd(),
                                           rateEntryDTO.getDataGrpUOMId(),
                                           rateEntryDTO.getDataGrpCurrCode(),
                                           newDataList, user);
          }
          else if (addRateEntryTRVORow.getDisplayRoutingGuide())
          {
            // If the document type is Routing Guide
            if (_logger.isLoggable(Level.FINEST))
            {
              _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                           " Invoking  createRoutingGuide() CORBA Call: Data List Size " +
                           newDataList.size());
            }
            manager.createRoutingGuide(rateEntryDTO.getDocTypeCd(),
                                       rateEntryDTO.getDataGrpUOMId(),
                                       rateEntryDTO.getDataGrpCurrCode(),
                                       newDataList, user);
          }
          else if (addRateEntryTRVORow.getDisplayRate())
          {
            if (_logger.isLoggable(Level.FINEST))
            {
              _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                           " Invoking  createRate() CORBA Call: Data List Size " +
                           newDataList.size());
            }
            manager.createRate(rateEntryDTO.getDocTypeCd(),
                               rateEntryDTO.getDataGrpUOMId(),
                               rateEntryDTO.getDataGrpCurrCode(),
                               newDataList, user);
          }
        }
        // Populate Error rows
        if (newDataList != null && newDataList.size() > 0)
        {
          saveErrMsg = IRCTRateCompanyConstants.RATE_ENTRY_SAVE_ERR_MSG;
          getIRCTRateEntryHelper().processCreateErrors(newDataList, true);
        }
        else
        {
          rateEntryTRVO.clearCache();
        }
      }
      else
      {
        saveErrMsg = IRCTRateCompanyConstants.RATE_ENTRY_SAVE_ERR_MSG;
      }
    }
    catch (Exception ex)
    {
      saveErrMsg = "Exception while saveRateEntryData";
      handleException(ex, saveErrMsg, newDataList);
    }
    if (StringUtils.isNotBlank(saveErrMsg))
      return IRCTRateCompanyConstants.RATE_ENTRY_SAVE_ERROR;
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return saveErrMsg;
  }

  /**
   * This method takes all the Rates displayed in 'RateEntry'
   * and delete them by making CORBA call
   */
  public String deleteRateEntryData(Map pContractTreeDataMap)
  {
    String lMethodName = "deleteRateEntryData(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    String errMsg = null;
    RowSetIterator rateRespIt =
      getRateEntryResponseTRVO().createRowSetIterator(null);
    int rowSize = rateRespIt.getRowCount();
    AddRateEntryTRVORowImpl addRateEntryTRVORow =
      (AddRateEntryTRVORowImpl) getAddRateEntryTRVO().first();
    RateEntryDTO rateEntryDTO = null;
    if (pContractTreeDataMap != null)
      rateEntryDTO =
          getIRCTRateEntryHelper().prepareRateEntryDTO(pContractTreeDataMap);
    boolean rowChkVal = false;
    try
    {
      RatingAdminManager manager = new RatingAdminManager();
      RCTUserInfo user =
        getIRCTRateCompanyServiceHelper().populateRCTUserInfoObject(rateEntryDTO.getBusinessId(),
                                                                    rateEntryDTO.getCpyId(),
                                                                    getLoggedInUserID());
      if (addRateEntryTRVORow.getDisplayEditViewTransit())
      {
        int startIndex = 0;
        int index = 0;
        RateEntryResponseTRVORowImpl rateEntryRespTRVORow = null;

        List mastRecIndexList =
          getIRCTRateEntryHelper().getEditMasterRateRowIndexArraye();
        while (rateRespIt.hasNext())
        {
          int rowCount = 0;
          // if (rateEntryRespTRVORow == null)
          rateEntryRespTRVORow =
              (RateEntryResponseTRVORowImpl) rateRespIt.next();
          if (rateEntryRespTRVORow.getRowChkFlg())
          {
            RCTTransit transit =
              (RCTTransit) rateEntryRespTRVORow.getTransitObj();
            if (_logger.isLoggable(Level.FINEST))
            {
              _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                           " Invoking  deleteTransit() CORBA Call: ");
            }
            manager.deleteTransit(transit, user);
            //rateRespIt.removeCurrentRow();
            rowChkVal = true;
            if (addRateEntryTRVORow.getCutOffRowFlg())
            {
              if (mastRecIndexList.size() > 1 &&
                  mastRecIndexList.contains(rowCount))
              {
                if (mastRecIndexList.indexOf(rowCount) ==
                    mastRecIndexList.size() - 1)
                {
                  index = rowSize;
                }
                else
                {
                  index =
                      mastRecIndexList.get(mastRecIndexList.indexOf(rowCount) +
                                           1);
                }
              }
              else
              {
                index = rowSize;
              }

              startIndex = rowCount + 1;
              rateRespIt.removeCurrentRow();
              rowCount++;
              for (int i = startIndex; i < index; i++)
              {

                rateEntryRespTRVORow =
                    (RateEntryResponseTRVORowImpl) rateRespIt.next();
                rateRespIt.removeCurrentRow();
                if (i < index - 1)
                  rowCount++;
              }
            }
            else
            {
              rowCount++;
              rateRespIt.removeCurrentRow();
            }
          }
          rowCount++;
        }
      }
      else if (addRateEntryTRVORow.getDisplayDurPriFlg())
      {
        while (rateRespIt.hasNext())
        {
          RateEntryResponseTRVORowImpl rateEntryRespTRVORow =
            (RateEntryResponseTRVORowImpl) rateRespIt.next();
          if (rateEntryRespTRVORow.getRowChkFlg())
          {
            RCTRoutingGuideRate rgRate =
              (RCTRoutingGuideRate) rateEntryRespTRVORow.getRoutingGuideRateObj();
            if (_logger.isLoggable(Level.FINEST))
            {
              _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                           " Invoking  deleteRoutingGuideRate() CORBA Call: ");
            }
            manager.deleteRoutingGuideRate(rgRate, user);
            rateRespIt.removeCurrentRow();
            rowChkVal = true;
          }
        }
      }
      else if (addRateEntryTRVORow.getDisplayEditViewRoutingGuide())
      {
        while (rateRespIt.hasNext())
        {
          RateEntryResponseTRVORowImpl rateEntryRespTRVORow =
            (RateEntryResponseTRVORowImpl) rateRespIt.next();
          if (rateEntryRespTRVORow.getRowChkFlg())
          {
            RCTRoutingGuide rg =
              (RCTRoutingGuide) rateEntryRespTRVORow.getRoutingGuideObj();
            if (_logger.isLoggable(Level.FINEST))
            {
              _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                           " Invoking  deleteRoutingGuide() CORBA Call: ");
            }
            manager.deleteRoutingGuide(rg, user);
            rateRespIt.removeCurrentRow();
            rowChkVal = true;
          }
        }

      }
      else if (addRateEntryTRVORow.getDisplayEditViewRate())
      {
        while (rateRespIt.hasNext())
        {
          RateEntryResponseTRVORowImpl rateEntryRespTRVORow =
            (RateEntryResponseTRVORowImpl) rateRespIt.next();
          if (rateEntryRespTRVORow.getRowChkFlg())
          {
            RCTRate rate = (RCTRate) rateEntryRespTRVORow.getRateObj();
            if (_logger.isLoggable(Level.FINEST))
            {
              _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                           " Invoking  deleteRate() CORBA Call: ");
            }
            manager.deleteRate(rate, user);
            rateRespIt.removeCurrentRow();
            rowChkVal = true;
          }

        }
      }
    }
    catch (Exception ex)
    {
      errMsg = "Exception while deleteRateEntryData";
      handleException(ex, errMsg, null);
    }
    finally
    {
      if (rateRespIt != null)
        rateRespIt.closeRowSetIterator();
    }
    if (StringUtils.isNotBlank(errMsg) || !rowChkVal)
    {
      return IRCTRateCompanyConstants.RATE_ENTRY_DELETE_VLD_MSG;
    }
    else if (StringUtils.isNotBlank(errMsg))
    {
      return IRCTRateCompanyConstants.RATE_ENTRY_DELETE_ERR_MSG;
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return errMsg;
  }

  /**
   *  This method invokes CORBA call to search for the rate's based on provided
   *  search criteria.
   */
  public void searchRateEntry(Map pCtrTreeTaskFlowParamMap)
  {
    String lMethodName = "searchRateEntry()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    long stTime = System.currentTimeMillis();
    AddRateEntryTRVORowImpl addRateEntryTRVORow = null;
    RateEntryDTO rateEntryDTO = null;
    if (pCtrTreeTaskFlowParamMap != null)
      rateEntryDTO =
          getIRCTRateEntryHelper().prepareRateEntryDTO(pCtrTreeTaskFlowParamMap);
    Date effectiveDate =
      DateTimeUtil.singleton().getCurrentUtilDateWithTime();
    try
    {
      getRateEntryResponseTRVO().clearCache();

      RCTUserInfo user =
        getIRCTRateCompanyServiceHelper().populateRCTUserInfoObject(rateEntryDTO.getBusinessId(),
                                                                    rateEntryDTO.getCpyId(),
                                                                    getLoggedInUserID());
      addRateEntryTRVORow =
          (AddRateEntryTRVORowImpl) getAddRateEntryTRVO().first();

      if (addRateEntryTRVORow != null)
      {

        RCTGeoArea origin =
          getIRCTRateEntryHelper().getOriginGeoAraObject(addRateEntryTRVORow);
        RCTGeoArea destination =
          getIRCTRateEntryHelper().getDesGeoAraObject(addRateEntryTRVORow);
        boolean allDates = true;
        boolean chgOnly = false;
        int pageNumber = 1;
        if (StringUtils.isNotBlank(addRateEntryTRVORow.getEffectiveDate()))
        {
          effectiveDate =
              DateTimeUtil.singleton().parse(addRateEntryTRVORow.getEffectiveDate(),
                                             IRCTRateCompanyConstants.RATING_DATE_FORMAT,
                                             DateTimeUtil.DEFAULT_TIMEZONE);
        }
        if (StringUtils.isBlank(addRateEntryTRVORow.getDisplayAllEffectiveDates()) ||
            addRateEntryTRVORow.getDisplayAllEffectiveDates().equals(IRCTRateCompanyConstants.NO_FLG))
        {
          allDates = false;
        }
        // Validate Effective Date field
        if (!allDates &&
            StringUtils.isBlank(addRateEntryTRVORow.getEffectiveDate()))
        {
          addWarningMessage(IRCTRateCompanyConstants.RATE_ENTRY_EFF_DATE_REQ_MSG,
                            new Object[]
              { });
          return;

        }
        RatingAdminManager mgr = new RatingAdminManager();
        List rates = new ArrayList();
        if (addRateEntryTRVORow.getDisplayEditViewRate() ||
            addRateEntryTRVORow.getDisplayAuditViewRate() ||
            addRateEntryTRVORow.getDisplayViewRate())
        {
          //Added to get the data for RoutingGuide rate in case of Include Priority and Duration
          if (addRateEntryTRVORow.getDisplayDurPriFlg())
          {
            rates =
                mgr.getRoutingGuideRatePage(addRateEntryTRVORow.getPageNum(),
                                            Long.parseLong(rateEntryDTO.getDataGrpId()),
                                            origin, destination, allDates,
                                            effectiveDate, chgOnly, user);
          }
          else
          {
            rates =
                mgr.getRatePage(addRateEntryTRVORow.getPageNum(), Long.parseLong(rateEntryDTO.getDataGrpId()),
                                origin, destination, allDates,
                                effectiveDate, chgOnly, user);
          }
          if (rates != null && rates.size() > 0)
          {

            if (addRateEntryTRVORow.getPageSize() == 0)
            {
              int totalPage = 0;
              if (addRateEntryTRVORow.getDisplayDurPriFlg())
              {
                totalPage =
                    mgr.getNumPagesInRoutingGuideRate(Long.parseLong(rateEntryDTO.getDataGrpId()),
                                                      origin, destination,
                                                      user, chgOnly);
              }
              else
              {
                totalPage =
                    mgr.getNumPagesInRate(Long.parseLong(rateEntryDTO.getDataGrpId()),
                                          origin, destination, user,
                                          chgOnly);
              }
              addRateEntryTRVORow.setPageSize(totalPage);
            }
            getIRCTRateEntryHelper().popuateNextPrevButtonsForRateEntrySearchResults(addRateEntryTRVORow);
            getIRCTRateEntryHelper().processRateSearchResults(rates);
          }
        }
        else if (addRateEntryTRVORow.getDisplayEditViewTransit() ||
                 addRateEntryTRVORow.getDisplayViewTransit())
        {
          rates =
              mgr.getTransitPage(addRateEntryTRVORow.getPageNum().intValue(),
                                 Long.parseLong(rateEntryDTO.getDataGrpId()),
                                 origin, destination, allDates,
                                 effectiveDate, user);
          if (addRateEntryTRVORow.getPageSize() == 0)
          {
            int totalPage =
              mgr.getNumPagesInTransit(Long.parseLong(rateEntryDTO.getDataGrpId()),
                                       origin, destination, user);
            addRateEntryTRVORow.setPageSize(totalPage);
          }
          getIRCTRateEntryHelper().popuateNextPrevButtonsForRateEntrySearchResults(addRateEntryTRVORow);
          getIRCTRateEntryHelper().processRateSearchResults(rates);
        }
        else if (addRateEntryTRVORow.getDisplayEditViewRoutingGuide() ||
                 addRateEntryTRVORow.getDisplayViewRoutingGuide())
        {
          rates =
              mgr.getRoutingGuidePage(pageNumber, Long.parseLong(rateEntryDTO.getDataGrpId()),
                                      origin, destination, allDates,
                                      effectiveDate, user);
          if (addRateEntryTRVORow.getPageSize() == 0)
          {
            int totalPage =
              mgr.getNumPagesInRoutingGuideRate(Long.parseLong(rateEntryDTO.getDataGrpId()),
                                                origin, destination, user,
                                                false);
            addRateEntryTRVORow.setPageSize(totalPage);
          }
          getIRCTRateEntryHelper().popuateNextPrevButtonsForRateEntrySearchResults(addRateEntryTRVORow);
          getIRCTRateEntryHelper().processRateSearchResults(rates);
        }
      }
    }
    catch (Exception ex)
    {
      String errMsg = "Exception while searchRateEntry";
      handleException(ex, errMsg, null);
    }
    _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                 "Total Time Took for searchRateEntry " +
                 (System.currentTimeMillis() - stTime));
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * This method invokes CORBA Call to get all the Rates based on provided
   * Search criteria and export as CSV file.
   */
  public List exportRate(Map pContractTreeDataMap)
  {
    String lMethodName = "exportRate(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    List ratesFnl = new ArrayList();
    List header = new ArrayList();
    AddRateEntryTRVOImpl addRateEntryTRVO = getAddRateEntryTRVO();
    RowSetIterator addRateEntryIt = null;
    AddRateEntryTRVORowImpl addRateEntryTRVORow = null;
    String routingGuideFooter = "";
    String transitFooter = "";
    String rateFooter = "";
    int count = 1;
    try
    {
      RateEntryDTO rateEntryDTO = null;
      if (pContractTreeDataMap != null)
        rateEntryDTO =
            getIRCTRateEntryHelper().prepareRateEntryDTO(pContractTreeDataMap);
      addRateEntryIt = addRateEntryTRVO.createRowSetIterator(null);

      int pageNumber = 1;
      if (addRateEntryIt.hasNext())
      {
        addRateEntryTRVORow =
            (AddRateEntryTRVORowImpl) addRateEntryIt.first();
        RCTUserInfo user =
          getIRCTRateCompanyServiceHelper().populateRCTUserInfoObject(rateEntryDTO.getBusinessId(),
                                                                      rateEntryDTO.getCpyId(),
                                                                      getLoggedInUserID());
        RCTGeoArea originGeoArea =
          getIRCTRateEntryHelper().getOriginGeoAraObject(addRateEntryTRVORow);
        RCTGeoArea destinationGeoArea =
          getIRCTRateEntryHelper().getDesGeoAraObject(addRateEntryTRVORow);
        RatingAdminManager mgr = new RatingAdminManager();
        RCTInteger maxStopCount = new RCTInteger();
        RCTInteger maxTransitCount = new RCTInteger();

        int totalPages = 0;
        long dataGroupID = Long.parseLong(rateEntryDTO.getDataGrpId());
        boolean changesOnly = false;
        if (StringUtils.equals(rateEntryDTO.getDocTypeCd(),
                               IRCTRateCompanyConstants.DOCUMENT_TYPE_TNST))
        {
          totalPages =
              mgr.getNumPagesInTransit(dataGroupID, originGeoArea, destinationGeoArea,
                                       user);
        }
        //      else if (StringUtils.equals(rateEntryDTO.getDocTypeCd(),
        //                                  IRCTRateCompanyConstants.DOCUMENT_TYPE_RTNG))
        //      {
        //        totalPages =
        //            mgr.getNumPagesInRoutingGuide(dataGroupID, originGeoArea,
        //                                          destinationGeoArea, user);
        //      }
        else
        {
          if (pContractTreeDataMap.containsKey(IRCTRateCompanyConstants.INCLUDE_PRI_DUR) &&
              pContractTreeDataMap.get(IRCTRateCompanyConstants.INCLUDE_PRI_DUR).toString().equals("1"))
          {
            totalPages =
                mgr.getNumPagesInRoutingGuideRate(dataGroupID, originGeoArea,
                                                  destinationGeoArea, user,
                                                  changesOnly);
          }
          else
          {
            totalPages =
                mgr.getNumPagesInRate(dataGroupID, originGeoArea, destinationGeoArea,
                                      user, changesOnly);
          }

        }
        int totalRatesCnt = 0;
        while (pageNumber <= totalPages)
        {
          List rates = new ArrayList();
          if (addRateEntryTRVORow.getDisplayEditViewRate() ||
              addRateEntryTRVORow.getDisplayAuditViewRate() ||
              addRateEntryTRVORow.getDisplayViewRate())
          {
            if (addRateEntryTRVORow.getDisplayDurPriFlg())
            {
              mgr.exportRoutingGuideRates(pageNumber,
                                          Long.parseLong(rateEntryDTO.getDataGrpId()),
                                          originGeoArea,
                                          destinationGeoArea, ",", ".",
                                          ",", rates, maxStopCount, user,
                                          false);
            }
            else
              mgr.exportRates(pageNumber,
                              Long.parseLong(rateEntryDTO.getDataGrpId()),
                              originGeoArea, destinationGeoArea, ",", ".",
                              ",", rates, maxStopCount, user, false);
            if (rates.size() != 0)
            {
              totalRatesCnt = totalRatesCnt + rates.size();
              rates =
                  getIRCTRateEntryHelper().addSequenceToExportRts(rates,
                                                                  pageNumber);
              //Getting header when totalnumber is more than 1
              if (pageNumber == 1)
              {
                header =
                    getIRCTRateEntryHelper().createRateHeader(pContractTreeDataMap,
                                                              "RATES",
                                                              maxStopCount.getInt());
                rates.add(0, rateEntryDTO.getTreePath());
                rates.add(1, header.get(0));
                rates.add(2, header.get(1));
              }
              //Getting footer when totalnumber is more than 1
              if (totalPages == pageNumber)
              {
                rateFooter =
                    IRCTRateCompanyConstants.EXPORT_RATES_PRE_FOOTER.concat(Integer.toString(totalRatesCnt)).concat(IRCTRateCompanyConstants.EXPORT_POST_FOOTER);

                rates.add(rateFooter);
              }
              ratesFnl.addAll(rates);
            }
            else
            {
              rates.add(0, rateEntryDTO.getTreePath());
              ratesFnl.addAll(rates);
            }
          }
          else if (addRateEntryTRVORow.getDisplayEditViewTransit())
          {

            mgr.exportTransits(pageNumber,
                               Long.parseLong(rateEntryDTO.getDataGrpId()),
                               originGeoArea, destinationGeoArea, ",", ".",
                               ",", rates, maxStopCount, maxTransitCount,
                               user);

            if (rates.size() != 0)
            {
              totalRatesCnt = totalRatesCnt + rates.size();
              rates =
                  getIRCTRateEntryHelper().addSequenceToExportRts(rates,
                                                                  pageNumber);
              //Getting header when totalnumber is more than 1
              if (pageNumber == 1)
              {
                header =
                    getIRCTRateEntryHelper().createRateHeader(pContractTreeDataMap,
                                                              "TRANSIT",
                                                              maxStopCount.getInt());
                rates.add(0, rateEntryDTO.getTreePath());
                for (int i = 0; i < header.size(); i++)
                {
                  rates.add(count, header.get(i));
                  count++;
                }
              }
              //Getting footer when totalnumber is more than 1
              if (totalPages == pageNumber)
              {
                transitFooter =
                    IRCTRateCompanyConstants.EXPORT_TRANSITS_PRE_FOOTER.concat(Integer.toString(totalRatesCnt)).concat(IRCTRateCompanyConstants.EXPORT_POST_FOOTER);
                rates.add(transitFooter);
              }
              ratesFnl.addAll(rates);
            }
            else
            {
              rates.add(0, rateEntryDTO.getTreePath());
              ratesFnl.addAll(rates);
            }
          }
          else if (addRateEntryTRVORow.getDisplayEditViewRoutingGuide())
          {

            mgr.exportRoutingGuides(pageNumber,
                                    Long.parseLong(rateEntryDTO.getDataGrpId()),
                                    originGeoArea, destinationGeoArea, ",",
                                    ".", ",", rates, maxStopCount, user);
            if (rates.size() != 0)
            {
              totalRatesCnt = totalRatesCnt + rates.size();
              rates =
                  getIRCTRateEntryHelper().addSequenceToExportRts(rates,
                                                                  pageNumber);
              //Getting header when totalnumber is more than 1
              if (pageNumber == 1)
              {
                header =
                    getIRCTRateEntryHelper().createRateHeader(pContractTreeDataMap,
                                                              "RTGUIDE",
                                                              maxStopCount.getInt());
                rates.add(0, rateEntryDTO.getTreePath());
                for (int i = 0; i < header.size(); i++)
                {
                  rates.add(count, header.get(i));
                  count++;
                }

              }
              //Getting footer when totalnumber is more than 1
              if (totalPages == pageNumber)
              {
                routingGuideFooter =
                    IRCTRateCompanyConstants.EXPORT_ROUTING_GUIDES_PRE_FOOTER.concat(Integer.toString(totalRatesCnt)).concat(IRCTRateCompanyConstants.EXPORT_POST_FOOTER);
                rates.add(routingGuideFooter);
              }
              ratesFnl.addAll(rates);
            }
            else
            {
              rates.add(0, rateEntryDTO.getTreePath());
              ratesFnl.addAll(rates);
            }
          }
          pageNumber++;
        }
      }
    }
    catch (Exception ex)
    {
      String errMsg = "Exception while exportRate";
      handleException(ex, errMsg, null);
    }
    finally
    {
      addRateEntryIt.closeRowSetIterator();
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return ratesFnl;
  }


  /**
   * This method invokes CORBA Call to get all the Rates based on given DataGroupId.
   *
   * @param pContractTreeDataMap
   * @return List
   */
  public List exportRatesByDataGroupId(Map pContractTreeDataMap)
  {
    String methodName = "exportRatesByDataGroupId(longMap)";
    _logger.entering(CLAZZ_NAME, methodName);

    String transitHeader = "";
    String routingGuideFooter = "";
    String transitFooter = "";
    String rateFooter = "";
    List header = new ArrayList();
    int count = 1;

    List ratesFnl = new ArrayList();
    boolean changesOnly = false;
    try
    {
      int pageNumber = 1;
      RateEntryDTO rateEntryDTO = null;
      if (pContractTreeDataMap != null)
        rateEntryDTO =
            getIRCTRateEntryHelper().prepareRateEntryDTO(pContractTreeDataMap);

      RCTGeoArea originGeoArea =
        (RCTGeoArea) LWOUtils.createLWO(RCTGeoArea.class.getName());
      if (StringUtils.equals(rateEntryDTO.getOriGeoGroup(), "1"))
        originGeoArea.setIsGeoGroup(true);
      RCTGeoArea destinationGeoArea =
        (RCTGeoArea) LWOUtils.createLWO(RCTGeoArea.class.getName());
      if (StringUtils.equals(rateEntryDTO.getDesGeoGroup(), "1"))
        destinationGeoArea.setIsGeoGroup(true);
      String userId = getLoggedInUserID();
      RCTUserInfo user =
        IRCTRateCompanyServiceHelper.populateRCTUserInfoObject(rateEntryDTO.getBusinessId(),
                                                               rateEntryDTO.getCpyId(),
                                                               userId);
      RatingAdminManager mgr = new RatingAdminManager();
      RCTInteger maxStopCount = new RCTInteger();
      RCTInteger maxTransitCount = new RCTInteger();


      // Get the Total Number of Pages
      int totalPages = 0;
      long dataGroupID = Long.parseLong(rateEntryDTO.getDataGrpId());
      if (StringUtils.equals(rateEntryDTO.getDocTypeCd(),
                             IRCTRateCompanyConstants.DOCUMENT_TYPE_TNST))
      {
        totalPages =
            mgr.getNumPagesInTransit(dataGroupID, originGeoArea, destinationGeoArea,
                                     user);
      }
      else
      {
        if (pContractTreeDataMap.containsKey(IRCTRateCompanyConstants.INCLUDE_PRI_DUR) &&
            pContractTreeDataMap.get(IRCTRateCompanyConstants.INCLUDE_PRI_DUR).toString().equals("1"))
        {
          totalPages =
              mgr.getNumPagesInRoutingGuideRate(dataGroupID, originGeoArea,
                                                destinationGeoArea, user,
                                                changesOnly);
        }
        else
        {
          totalPages =
              mgr.getNumPagesInRate(dataGroupID, originGeoArea, destinationGeoArea,
                                    user, changesOnly);
        }

      }
      int totalRatesCnt = 0;
      while (pageNumber <= totalPages)
      {
        List rates = new ArrayList();
        if (StringUtils.equals(rateEntryDTO.getDocTypeCd(),
                               IRCTRateCompanyConstants.DOCUMENT_TYPE_TNST))
        {
          transitHeader =
              IRCTRateCompanyConstants.EXPORT_SEQ_NO.concat(",").concat(IRCTRateCompanyConstants.EXPORT_ACTION_CODE).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_COUNT).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_ONE_CITY_NAME).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_ONE_STATE_PROV).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_ONE_COUNTY).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_ONE_COUNTRY).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_ONE_POSTAL).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_ONE_MAX_POSTAL).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_ONE_DISTANCE_PACK_CODE).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_ONE_DISTANCE_PACK_ID).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_ONE_LOCATION_CODE).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_ONE_GEO_GROUP_ID).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_TWO_CITY_NAME).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_TWO_STATE_PROV).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_TWO_COUNTY).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_TWO_COUNTRY).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_TWO_POSTAL).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_TWO_MAX_POSTAL).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_TWO_CITY_NAME).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_TWO_DISTANCE_PACK_ID).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_TWO_LOCATION_CODE).concat(",").concat(IRCTRateCompanyConstants.EXPORT_STOP_TWO_GEO_GROUP_ID).concat(",").concat(IRCTRateCompanyConstants.EXPORT_BAND_MIN).concat(",").concat(IRCTRateCompanyConstants.EXPORT_BAND_MAX).concat(",").concat(IRCTRateCompanyConstants.EXPORT_TRANSIT_MONDAY).concat(",").concat(IRCTRateCompanyConstants.EXPORT_TRANSIT_TUESDAY).concat(",").concat(IRCTRateCompanyConstants.EXPORT_TRANSIT_WEDNESDAY).concat(",").concat(IRCTRateCompanyConstants.EXPORT_TRANSIT_THURSDAY).concat(",").concat(IRCTRateCompanyConstants.EXPORT_TRANSIT_FRIDAY).concat(",").concat(IRCTRateCompanyConstants.EXPORT_TRANSIT_SATURDAY).concat(",").concat(IRCTRateCompanyConstants.EXPORT_TRANSIT_SUNDAY);
          mgr.exportTransits(pageNumber,
                             Long.parseLong(rateEntryDTO.getDataGrpId()),
                             originGeoArea, destinationGeoArea, ",", ".",
                             ",", rates, maxStopCount, maxTransitCount,
                             user);
          if (rates.size() != 0)
          {
            totalRatesCnt = totalRatesCnt + rates.size();
            rates =
                getIRCTRateEntryHelper().addSequenceToExportRts(rates, pageNumber);
            //Getting header when totalnumber is more than 1
            if (pageNumber == 1)
            {
              header =
                  getIRCTRateEntryHelper().createRateHeader(pContractTreeDataMap,
                                                            "TRANSIT",
                                                            maxStopCount.getInt());
              rates.add(0, rateEntryDTO.getTreePath());

              for (int i = 0; i < header.size(); i++)
              {
                rates.add(count, header.get(i));
                count++;
              }
            }
            //Getting footer when totalnumber is more than 1
            if (totalPages == pageNumber)
            {
              transitFooter =
                  IRCTRateCompanyConstants.EXPORT_TRANSITS_PRE_FOOTER.concat(Integer.toString(totalRatesCnt)).concat(IRCTRateCompanyConstants.EXPORT_POST_FOOTER);
              rates.add(transitFooter);
            }
            ratesFnl.addAll(rates);
          }
          else
          {
            rates.add(0, rateEntryDTO.getTreePath());
            ratesFnl.addAll(rates);
          }
        }
        else if (StringUtils.equals(rateEntryDTO.getDocTypeCd(),
                                    IRCTRateCompanyConstants.DOCUMENT_TYPE_RTNG))
        {
          mgr.exportRoutingGuides(pageNumber,
                                  Long.parseLong(rateEntryDTO.getDataGrpId()),
                                  originGeoArea, destinationGeoArea, ",",
                                  ".", ",", rates, maxStopCount, user);
          if (rates.size() != 0)
          {
            totalRatesCnt = totalRatesCnt + rates.size();
            rates =
                getIRCTRateEntryHelper().addSequenceToExportRts(rates, pageNumber);
            //Getting header when totalnumber is more than 1
            if (pageNumber == 1)
            {
              header =
                  getIRCTRateEntryHelper().createRateHeader(pContractTreeDataMap,
                                                            "RTGUIDE",
                                                            maxStopCount.getInt());
              rates.add(0, rateEntryDTO.getTreePath());
              for (int i = 0; i < header.size(); i++)
              {
                rates.add(count, header.get(i));
                count++;
              }
            }
            //Getting footer when totalnumber is more than 1
            if (totalPages == pageNumber)
            {
              routingGuideFooter =
                  IRCTRateCompanyConstants.EXPORT_ROUTING_GUIDES_PRE_FOOTER.concat(Integer.toString(totalRatesCnt)).concat(IRCTRateCompanyConstants.EXPORT_POST_FOOTER);
              rates.add(routingGuideFooter);
            }
            ratesFnl.addAll(rates);
          }
          else
          {
            rates.add(0, rateEntryDTO.getTreePath());
            ratesFnl.addAll(rates);
          }
        }
        else
        {
          //Added
          if (pContractTreeDataMap.containsKey(IRCTRateCompanyConstants.INCLUDE_PRI_DUR) &&
              pContractTreeDataMap.get(IRCTRateCompanyConstants.INCLUDE_PRI_DUR).toString().equals("1"))
          {
            mgr.exportRoutingGuideRates(pageNumber,
                                        Long.parseLong(rateEntryDTO.getDataGrpId()),
                                        originGeoArea, destinationGeoArea,
                                        ",", ".", ",", rates, maxStopCount,
                                        user, false);
          }
          //
          else
            mgr.exportRates(pageNumber,
                            Long.parseLong(rateEntryDTO.getDataGrpId()),
                            originGeoArea, destinationGeoArea, ",", ".",
                            ",", rates, maxStopCount, user, false);
          if (rates.size() != 0)
          {
            totalRatesCnt = totalRatesCnt + rates.size();
            rates =
                getIRCTRateEntryHelper().addSequenceToExportRts(rates, pageNumber);
            //Getting header when totalnumber is more than 1
            if (pageNumber == 1)
            {
              header =
                  getIRCTRateEntryHelper().createRateHeader(pContractTreeDataMap,
                                                            "RATES",
                                                            maxStopCount.getInt());
              rates.add(0, rateEntryDTO.getTreePath());
              rates.add(1, header.get(0));
              rates.add(2, header.get(1));
            }
            //Getting footer when totalnumber is more than 1
            if (totalPages == pageNumber)
            {
              rateFooter =
                  IRCTRateCompanyConstants.EXPORT_RATES_PRE_FOOTER.concat(Integer.toString(totalRatesCnt)).concat(IRCTRateCompanyConstants.EXPORT_POST_FOOTER);
              rates.add(rateFooter);
            }
            ratesFnl.addAll(rates);
          }
          else
          {
            rates.add(0, rateEntryDTO.getTreePath());
            ratesFnl.addAll(rates);
          }
        }
        pageNumber++;
      }
    }
    catch (Exception ex)
    {
      String errMsg = "Exception while exportRatesByDataGroupId";
      handleException(ex, errMsg, null);

      raiseSNIJboException(IRCTModelConstants.EXPORT_RATES_ERROR,
                           ex.getMessage());


    }
    _logger.exiting(CLAZZ_NAME, methodName);
    return ratesFnl;
  }


  /**
   * This method is being invoked from Rate/Transit/RoutingGuide Entry screen
   * by clicking on removeSelectedRows button
   * @param pRowType
   */
  public String removeSelectedRateEntryRow(String pRowType)
  {
    String lMethodName = "removeSelectedRateEntryRow()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    getIRCTRateEntryHelper().removeSelectedRateEntryRow(pRowType);
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return null;
  }

  /**
   * This method invokes from the Rate/Transit/Routing Guide Edit screen
   * By clicking on
   * @param pRowType
   * @param pIndex
   */
  public void addRateEntryRowsAtIndex(String pRowType, int pIndex)
  {
    String lMethodName = "addRateEntryRowsAtIndex(String,int)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pRowType, pIndex });
    getIRCTRateEntryHelper().addRateEntryRowsAtIndex(pRowType, pIndex);
    _logger.exiting(CLAZZ_NAME, lMethodName);

  }


  /**
   * This method invoked by clicking on 'Add' Button in Rate Entry screen
   */
  public void addRateBandRows(String pRowType)
  {
    String lMethodName = "addRateBandRows()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    getIRCTRateEntryHelper().addRateBandRows(pRowType);
    _logger.exiting(CLAZZ_NAME, lMethodName);

  }

  /**
   * This method populates required data items for Edit/View Rate Entry Search Criteria.
   * @param pCtrTreeTaskFlowParamMap
   */
  public void populateEditViewRateEntrySearchCriteria(Map pCtrTreeTaskFlowParamMap)
  {
    String lMethodName = "populateEditViewRateEntrySearchCriteria(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    AddRateEntryTRVORowImpl addRateEntryTRVORow = null;
    getRateEntryTRVO().clearCache();
    getRateEntryResponseTRVO().clearCache();
    addRateEntryTRVORow =
        (AddRateEntryTRVORowImpl) getAddRateEntryTRVO().first();
    if (addRateEntryTRVORow != null)
    {
      getIRCTRateEntryHelper().populateEditViewRateEntrySearchCriteria(addRateEntryTRVORow);
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * This method invokes before Add/Edit Rate Entry Page gets loaded
   */
  public void populateAddEditRateEntryParams(Map pCtrTreeTaskFlowParamMap)
  {
    String lMethodName = "populateAddEditRateEntryParams(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    AddRateEntryTRVORowImpl addRateEntryTRVORow = null;
    AddRateEntryTRVOImpl addRateEntryTRVO = getAddRateEntryTRVO();
    RateEntryDTO rateEntryDTO = null;
    if (pCtrTreeTaskFlowParamMap != null)
      rateEntryDTO =
          getIRCTRateEntryHelper().prepareRateEntryDTO(pCtrTreeTaskFlowParamMap);
    String link = rateEntryDTO.getTreeLink();
    getRateEntryTRVO().clearCache();
    getRateEntryResponseTRVO().clearCache();
    getRouteStopTRVO().clearCache();
    getRateEntryBandXTRVO().clearCache();
    getRateEntryBandYTRVO().clearCache();
    if (pCtrTreeTaskFlowParamMap != null)
    {
      addRateEntryTRVORow =
          (AddRateEntryTRVORowImpl) addRateEntryTRVO.createRow();
      addRateEntryTRVORow.setTreePath(rateEntryDTO.getTreePath());
      addRateEntryTRVORow.setDisplayAllEffectiveDates("Y");
      addRateEntryTRVORow.setRouteStopRowSize(null);
      addRateEntryTRVORow.setAdjOperation("MUL");
      addRateEntryTRVO.insertRow(addRateEntryTRVORow);
      getIRCTRateEntryHelper().populateRateEntryDisplayItems(addRateEntryTRVORow,
                                                             pCtrTreeTaskFlowParamMap);

      if (link.equals("add transits") || link.equals("add data") ||
          link.equals("add rates"))

      {

        if (pCtrTreeTaskFlowParamMap.containsKey(IRCTRateCompanyConstants.BAND_CD) &&
            pCtrTreeTaskFlowParamMap.containsKey(IRCTRateCompanyConstants.BAND2_CD))
        {
          addRateBandRows(IRCTRateCompanyConstants.RATE_ENTRY_BAND_X);
          addRateBandRows(IRCTRateCompanyConstants.RATE_ENTRY_BAND_Y);
        }

      }
      else if (link.equals("edit/view transits") ||
               link.equals("edit/view data") ||
               link.equals("edit/view rates"))
      {
        populateEditViewRateEntrySearchCriteria(pCtrTreeTaskFlowParamMap);
      }
      else if (link.equals("view transits") || link.equals("view data") ||
               link.equals("audit/view rates"))
      {

        getIRCTRateEntryHelper().populateRateEntryAuditViewParams(addRateEntryTRVORow);
      }
      else if (link.equals("view rates") || link.equals("view data"))
      {
        getIRCTRateEntryHelper().populateRateEntryViewParams(addRateEntryTRVORow);
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);

  }

  public void editGeoGrpMemSpec()
  {
    String lMethodName = "editGeoGrpMemSpec()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    GeoSpecGroupVORowImpl groupRow =
      (GeoSpecGroupVORowImpl) getGeoSpecGroupVO().getCurrentRow();

    if (groupRow != null)
    {
      GeoSpecGrpTRVOImpl groupTVO = getGeoSpecGrpTVO();
      GeoSpecTRVOImpl specTVO = getGeoSpecTVO();
      specTVO.clearCache();
      GeoSpecGroupMbrVORowImpl memberRow = null;
      GeoSpecVORowImpl specRow = null;
      GeoSpecTRVORowImpl spectTVORow = null;

      GeoSpecGrpTRVORowImpl groupTVORow =
        (GeoSpecGrpTRVORowImpl) groupTVO.createRow();
      groupTVORow.setEditMode(Boolean.TRUE);
      groupTVORow.setGeoSpecGrpId(groupRow.getGeoSpecGrpId().getSequenceNumber());
      groupTVORow.setBusId(groupRow.getBusId());
      groupTVORow.setCpyId(groupRow.getCpyId());
      groupTVORow.setIxCd(groupRow.getIxCd());
      groupTVORow.setGeoSpecGrpDesc(groupRow.getGeoSpecGrpDesc());
      groupTVORow.setCreatedUser(groupRow.getCreUsrId());
      Date utilDate = new Date(groupRow.getCreDttm().getTime());
      groupTVORow.setCreatedOn(utilDate);
      groupTVORow.setUpdatedUser(groupRow.getUpdUsrId());
      utilDate = new Date(groupRow.getUpdDttm().getTime());
      groupTVORow.setUpdatedOn(utilDate);
      groupTVO.insertRow(groupTVORow);

      RowIterator memberIterator = groupRow.getGeoSpecGroupMbr();

      if (memberIterator.hasNext())
      {
        RowIterator specIterator = null;
        int memberIndex = 0;
        int specIndex = 0;
        int memberCount = memberIterator.getFetchedRowCount();
        memberIterator.setRangeStart(0);
        memberIterator.setRangeSize(memberCount);

        for (memberIndex = 0; memberIndex < memberCount; memberIndex++)
        {
          memberRow =
              (GeoSpecGroupMbrVORowImpl) memberIterator.getRowAtRangeIndex(memberIndex);

          if (memberRow != null)
          {
            specIterator = memberRow.getGeoSpecAcc();
            specIterator.setRangeStart(0);
            specIterator.setRangeSize(memberCount);

            for (specIndex = 0; specIndex < memberCount; specIndex++)
            {
              specRow =
                  (GeoSpecVORowImpl) specIterator.getRowAtRangeIndex(specIndex);
              if (specRow != null)
              {
                spectTVORow = (GeoSpecTRVORowImpl) specTVO.createRow();
                spectTVORow.setSpecEditMode(Boolean.TRUE);
                spectTVORow.setGeoSpecId(specRow.getGeoSpecId());
                spectTVORow.setIxCD(specRow.getIxCd());
                spectTVORow.setCityNam(specRow.getCityNam());
                spectTVORow.setStPrvCd(specRow.getStPrvCd());
                spectTVORow.setCntyCd(specRow.getCntyCd());
                spectTVORow.setCntryCd(specRow.getCntryCd());
                spectTVORow.setStpActvCd(specRow.getStpActvCd());
                if (IRCTModelConstants.POST.equals(specRow.getIxCd()))
                  spectTVORow.setPostCd(specRow.getPostCd());
                else if (IRCTModelConstants.POS2.equals(specRow.getIxCd()))
                  spectTVORow.setPostal2Code(specRow.getPostCd());
                else if (IRCTModelConstants.POS3.equals(specRow.getIxCd()))
                  spectTVORow.setPostal3Code(specRow.getPostCd());

                spectTVORow.setMaxPostCd(specRow.getMaxPostCd());
                spectTVORow.setGeoPkgCd(specRow.getGeoPkgCd());
                spectTVORow.setGeoPkgId(specRow.getGeoPkgId());
                spectTVORow.setExtlLocCd(specRow.getExtlLocCd());
                spectTVORow.setGeoSpecGrpId(specRow.getGeoSpecGrpId());
                spectTVORow.setGeoSpecGrpFlg(specRow.getGeoSpecGrpFlg());
                spectTVORow.setConcatSTDispTxt(specRow.getConcatStDispTxt());
                spectTVORow.setCreatedUser(specRow.getCreUsrId());
                utilDate = new Date(specRow.getCreDttm().getTime());
                spectTVORow.setCreatedOn(utilDate);
                specTVO.insertRowAtRangeIndex(specIndex, spectTVORow);
              }
            }
          }
        }
      } //memberIterator.hasNext() loop
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Retrieves the User associated compnay ID's from the VPD.
   * This method will be invoked from the IRCTPagePhaseListener class only
   * And No One should directly use this method.
   * @return
   */
  public String getCompanyIdFromVPDByBusinessID()
  {
    String lMethodName = "getCompanyIdFromVPDByBusinessID()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    String cpyID = null;
    String businessID = getBusinessID();
    if (StringUtils.isNotBlank(businessID))
    {
      cpyID = getCompanyId(businessID);
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return cpyID;
  }

  private String getCompanyId(String businessID)
  {
    String lMethodName = "getCompanyId(String)";
    StringBuffer cpyID = new StringBuffer();
    PermissionsROVOImpl prmsnVO = getPermissionsROVO();
    ChildPermissionsROVOImpl childVO = getChildPermissionsROVO();
    if (prmsnVO.getRowCount() > 0)
    {
      prmsnVO.clearCache();
      childVO.clearCache();
    }
    if (StringUtils.isNotBlank(businessID))
      prmsnVO.setBindPermissionValue(businessID);

    childVO.executeQuery();
    while (childVO.hasNext())
    {
      ChildPermissionsROVORowImpl childRow =
        (ChildPermissionsROVORowImpl) childVO.next();
      if (childVO.hasNext())
        cpyID.append(childRow.getChildPermissionValue() + ",");
      else
        cpyID.append(childRow.getChildPermissionValue());
    }
    if (_logger.isLoggable(Level.FINEST))
    {
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                   " User " + getLoggedInUserID() +
                   " Has access to Companies : " + cpyID.toString());
    }
    return cpyID.toString();
  }

  /**
   * Retrieves the User associated compnay ID's from the VPD.
   * This method will be invoked from the IRCTPagePhaseListener class only
   * And No One should directly use this method.
   * @return
   */
  public String getLoggedInUserCompanyIDsFromVPD()
  {
    String lMethodName = "getLoggedInUserCompanyIDsFromVPD()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    String cpyID = null;
    String businessID = getBusinessID();
    if (StringUtils.isNotBlank(businessID))
    {
      cpyID = getLoggedInUserCompanies(businessID);
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return cpyID;
  }

  private String getLoggedInUserCompanies(String businessID)
  {
    String lMethodName = "getLoggedInUserCompanies(String)";
    StringBuffer cpyID = new StringBuffer();
    String userID = getLoggedInUserID();

    PermissionsROVOImpl prmsnVO = getPermissionsROVO();
    ChildPermissionsROVOImpl childVO = getChildPermissionsROVO();
    if (prmsnVO.getRowCount() > 0)
    {
      prmsnVO.clearCache();
      childVO.clearCache();
    }
    if (StringUtils.isNotBlank(businessID))
      prmsnVO.setBindPermissionValue(businessID);
    if (StringUtils.isNotBlank(userID))
      prmsnVO.setBindUserName(userID);

    childVO.executeQuery();
    while (childVO.hasNext())
    {
      ChildPermissionsROVORowImpl childRow =
        (ChildPermissionsROVORowImpl) childVO.next();
      if (childVO.hasNext())
        cpyID.append(childRow.getChildPermissionValue() + ",");
      else
        cpyID.append(childRow.getChildPermissionValue());
    }
    if (_logger.isLoggable(Level.FINEST))
    {
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                   " User " + getLoggedInUserID() +
                   " Has access to Companies : " + cpyID.toString());
    }
    return cpyID.toString();
  }

  /**
   * Retrieves the selected Business ID Value from BusinessGroupTRVO
   * @return
   */
  public String getBusinessID()
  {
    String lMethodName = "getBusinessID()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    Hashtable userdata = getDBTransaction().getSession().getUserData();
    String busID = null;
    if (!userdata.containsKey("businessID"))
    {
      BusinessGroupTRVOImpl busGrpVO = getBusinessGroupTRVO();
      RowIterator busItr = busGrpVO.createRowSetIterator(null);
      if (busGrpVO.getRowCount() > 0)
      {
        BusinessGroupTRVORowImpl row =
          (BusinessGroupTRVORowImpl) busItr.getCurrentRow();
        if (row != null)
        {
          busID = row.getBusinessId();
        }
      }
    }
    else if (userdata != null && userdata.containsKey("businessID"))
    {
      busID = String.valueOf(userdata.get("businessID"));
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return busID;
  }


  /**
   * Container's getter for RateCompanyVO.
   * @return RateCompanyVO
   */
  public RateCompanyVOImpl getRateCompanyVO()
  {
    return (RateCompanyVOImpl) findViewObject("RateCompanyVO");
  }

  /**
   * Container's getter for QualGroupROVO.
   * @return QualGroupROVO
   */
  public QualGroupROVOImpl getQualGroupROVO()
  {
    return (QualGroupROVOImpl) findViewObject("QualGroupROVO");
  }

  /**
   * Container's getter for RateCompanyThresholdVO.
   * @return RateCompanyThresholdVO
   */
  public RateCompanyThresholdVOImpl getRateCompanyThresholdVO()
  {
    return (RateCompanyThresholdVOImpl) findViewObject("RateCompanyThresholdVO");
  }

  /**
   * Container's getter for ServiceTypeVO.
   * @return ServiceTypeVO
   */
  public ServiceTypeVOImpl getServiceTypeVO()
  {
    return (ServiceTypeVOImpl) findViewObject("ServiceTypeVO");
  }

  public void saveImportRates(List batchLookupCSVData,
                              String pobjDataGroupId, String pobjCompanyId,
                              Integer plineCount, short pversionNumber)
  {
    String lMethodName =
      "saveImportRates(List,String,String,Integer,short)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pobjDataGroupId, pobjCompanyId, plineCount, pversionNumber });
    try
    {
      BatchRateLookupTRVOImpl batchRateLookupTRVO =
        getBatchRateLookupTRVO();
      BatchRateLookupTRVORowImpl batchRateLookupTransVORow =
        (BatchRateLookupTRVORowImpl) batchRateLookupTRVO.getCurrentRow();
      BatchSummaryVOImpl btchSum = getBatchSummaryVO();
      btchSum.clearCache();
      BatchSummaryVORowImpl btchSumRow =
        (BatchSummaryVORowImpl) btchSum.createRow();
      btchSumRow.setCpyId(pobjCompanyId);
      if (StringUtils.isNotBlank(getBusinessID()))
        btchSumRow.setBusId(getBusinessID());
      DBSequence btchId =
        new DBSequence(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ));
      btchSumRow.setBtchSumId(btchId);
      btchSumRow.setObjId(new Number(pobjDataGroupId));
      btchSumRow.setObjCd(IRCTRateCompanyConstants.OBJ_TYPE_CODE_DATA);
      btchSumRow.setBtchDesc(batchRateLookupTransVORow.getBatchDesc());
      btchSumRow.setStaCd(IRCTRateCompanyConstants.STA_CD_UPLD);
      btchSumRow.setFleLocTxt(batchRateLookupTransVORow.getFileName());
      btchSumRow.setFleSizeAmt(toJBONumber(IRCTRateCompanyConstants.FLE_SIZE_AMT));
      btchSumRow.setDltFlg(IRCTRateCompanyConstants.DLT_FLG_INITIALLY);
      btchSumRow.setXferEndDttm(null);
      btchSumRow.setPrcsStrtDttm(null);
      btchSumRow.setPrcsEndDttm(null);
      btchSumRow.setTotRecCt(toJBONumber(IRCTRateCompanyConstants.TOT_REC_CT_INITIALLY));
      btchSumRow.setErrCt(toJBONumber(IRCTRateCompanyConstants.ERR_CT));
      if (batchRateLookupTransVORow.getDelimiter() != null)
      {
        btchSumRow.setDlmtSym(IRCTRateCompanyConstants.DELIMITER);
      }
      else
      {
        btchSumRow.setDlmtSym(IRCTRateCompanyConstants.DELIMITER);
      }
      if (batchRateLookupTransVORow.getDecimalSystem() != null)
      {
        btchSumRow.setDecSym(IRCTRateCompanyConstants.DEC_SYM);
      }
      else
      {
        btchSumRow.setDecSym(IRCTRateCompanyConstants.DEC_SYM);
      }

      if (batchRateLookupTransVORow.getDecimalSystem() == null ||
          batchRateLookupTransVORow.getDecimalSystem().equals("."))
      {
        btchSumRow.setDigSym(",");
      }
      else
      {
        btchSumRow.setDigSym(".");
      }
      btchSumRow.setBtchCd(IRCTRateCompanyConstants.BTCH_CD_IMPORT_RATES);
      btchSumRow.setBtchFmtVers(new Number(pversionNumber));
      btchSumRow.setGlblDtlTxt(batchRateLookupTransVORow.getMultiplePointsFound());
      btchSum.insertRow(btchSumRow);
      performDatabaseCommit();
      btchSum.setBindBtchCd(IRCTRateCompanyConstants.BTCH_CD_IMPORT_RATES);
      //      btchSum.setBindUserID(getLoggedInUserID());
      //      btchSum.setBindBusID(getBusinessID());
      btchSum.setBindCompanyID(pobjCompanyId);
      btchSum.executeQuery();
      btchSum.setCurrentRow(btchSumRow);
      BtchDtlVOImpl btchDtl = getBtchDtlVO();
      btchDtl.clearCache();
      for (int k = 0; k < batchLookupCSVData.size(); k++)
      {
        BtchDtlVORowImpl btchDtlRow =
          (BtchDtlVORowImpl) btchDtl.createRow();
        btchDtlRow.setBtchSumId(btchId);
        btchDtlRow.setErrNum((toJBONumber(IRCTRateCompanyConstants.ERR_CT)));
        btchDtlRow.setParmCnt(toJBONumber(IRCTRateCompanyConstants.PARM_CNT));
        btchDtlRow.setParmTxt(null);
        btchDtlRow.setPrcsDtaTxt(batchLookupCSVData.get(k).toString());
        btchDtlRow.setStaCd(IRCTRateCompanyConstants.STA_CD_WAIT);
        btchDtlRow.setBtchDtlSeqNum(new Number(k + 1));
        btchDtl.insertRow(btchDtlRow);
      }
      Key svcReqKey = new Key(new Object[]
          { btchSumRow.getBtchSumId() });
      Row[] reqsFound = btchSum.findByKey(svcReqKey, 1);
      if (reqsFound != null && reqsFound.length > 0)
      {
        BatchSummaryVORowImpl btchSumRowupdt =
          (BatchSummaryVORowImpl) reqsFound[0];
        btchSumRowupdt.setXferEndDttm(new Timestamp(System.currentTimeMillis()));
        btchSumRowupdt.setTotRecCt(new Number(plineCount));
        btchSumRowupdt.setStaCd(IRCTRateCompanyConstants.STA_CD_QUED);
      }
      performDatabaseCommit();
    }

    catch (Exception e)
    {
      getDBTransaction().rollback();
      getBatchSummaryVO().clearCache();
      getBtchDtlVO().clearCache();
      String errMsg = "Exception while commit in Rate lookup";
      if (_logger.isLoggable(Level.FINEST))
      {
        _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, errMsg, e);
      }
    }
    finally
    {
      getBatchSummaryVO().closeRowSet();
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Stores the user selected defaults to MDS
   */
  public String saveSubmitBatchRateLookup(List pBatchLookupCSVData)
  {
    String lMethodName = "saveSubmitBatchRateLookup(List)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    String globalDtlTxt = null;
    String errorMsg = null;

    for (int i = 0; i < pBatchLookupCSVData.size(); i++)
    {
      if (pBatchLookupCSVData.get(i).toString().startsWith(IRCTRateCompanyConstants.BATCH_INPUT_FILE_HDR))
      {

        pBatchLookupCSVData.remove(pBatchLookupCSVData.get(i).toString());
        break;
      }
      else
      {
        errorMsg = IRCTRateCompanyConstants.FILE_INVALID_HDR;
        //addInformationMessage(IRCTRateCompanyConstants.FILE_INVALID_HDR);
        return errorMsg;
        //addInformationMessage(IRCTRateCompanyConstants.FILE_INVALID_HDR);
      }

    }
    try
    {
      BatchRateLookupTRVOImpl batchRateLookupTRVO =
        getBatchRateLookupTRVO();
      RowSetIterator batchRateLookupTransVORowItr =
        batchRateLookupTRVO.createRowSetIterator(null);
      BatchRateLookupTRVORowImpl batchRateLookupTransVORow =
        (BatchRateLookupTRVORowImpl) batchRateLookupTransVORowItr.first();
      String del = batchRateLookupTransVORow.getDelimiter();
      String sortRsltsBy = batchRateLookupTransVORow.getSortResultsBy();
      if (StringUtils.isBlank(sortRsltsBy))
      {
        sortRsltsBy = "DURN";
      }

      if (StringUtils.equalsIgnoreCase(batchRateLookupTransVORow.getValidateCheckGeo(),
                                       "Y"))
      {
        batchRateLookupTransVORow.setValidateCheckGeo("YES");
      }
      else
      {
        batchRateLookupTransVORow.setValidateCheckGeo("NO");
      }

      if (StringUtils.equalsIgnoreCase(batchRateLookupTransVORow.getGenDetailFilesCheck(),
                                       "Y"))
      {
        batchRateLookupTransVORow.setGenDetailFilesCheck("YES");
      }
      else
      {
        batchRateLookupTransVORow.setGenDetailFilesCheck("NO");
      }

      if (StringUtils.equalsIgnoreCase(batchRateLookupTransVORow.getMultiplePointsFound(),
                                       "FRST"))
      {
        batchRateLookupTransVORow.setMultiplePointsFound("YES");
      }
      else
      {
        batchRateLookupTransVORow.setMultiplePointsFound("NO");
      }

      globalDtlTxt =
          batchRateLookupTransVORow.getResultCurrency() + ',' + batchRateLookupTransVORow.getMaxResultsPerRequest() +
          ',' + sortRsltsBy + ',' +
          batchRateLookupTransVORow.getValidateCheckGeo() + ',' +
          batchRateLookupTransVORow.getGenDetailFilesCheck() + ',' +
          batchRateLookupTransVORow.getMultiplePointsFound() + ',';

      BatchSummaryVOImpl btchSum = getBatchSummaryVO();
      btchSum.clearCache();
      BatchSummaryVORowImpl btchSumRow =
        (BatchSummaryVORowImpl) btchSum.createRow();

      btchSumRow.setCpyId(IRCTRateCompanyConstants.NO_COMPANY);
      if (StringUtils.isNotBlank(getBusinessID()))
        btchSumRow.setBusId(getBusinessID());
      DBSequence btchId =
        new DBSequence(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ));
      btchSumRow.setBtchSumId(btchId);
      btchSumRow.setObjId(toJBONumber(IRCTRateCompanyConstants.OBJ_ID));
      btchSumRow.setObjCd(IRCTRateCompanyConstants.OBJ_TYPE_CODE_DATA);
      btchSumRow.setBtchDesc(batchRateLookupTransVORow.getBatchDesc());
      btchSumRow.setStaCd(IRCTRateCompanyConstants.STA_CD_UPLD);
      btchSumRow.setFleLocTxt(batchRateLookupTransVORow.getFileName());
      btchSumRow.setFleSizeAmt(toJBONumber(IRCTRateCompanyConstants.FLE_SIZE_AMT));
      btchSumRow.setDltFlg(IRCTRateCompanyConstants.DLT_FLG_INITIALLY);
      btchSumRow.setXferEndDttm(null);
      btchSumRow.setBusId(getBusinessID());
      btchSumRow.setPrcsStrtDttm(null);
      btchSumRow.setPrcsEndDttm(null);
      btchSumRow.setTotRecCt(toJBONumber(IRCTRateCompanyConstants.TOT_REC_CT_INITIALLY));
      btchSumRow.setErrCt(toJBONumber(IRCTRateCompanyConstants.ERR_CT));
      if (batchRateLookupTransVORow.getDelimiter() != null)
      {
        btchSumRow.setDlmtSym(batchRateLookupTransVORow.getDelimiter());
      }
      else
      {
        btchSumRow.setDlmtSym(IRCTRateCompanyConstants.DELIMITER);
      }
      if (batchRateLookupTransVORow.getDecimalSystem() != null)
      {
        btchSumRow.setDecSym(batchRateLookupTransVORow.getDecimalSystem());
      }
      else
      {
        btchSumRow.setDecSym(IRCTRateCompanyConstants.DEC_SYM);
      }
      if (batchRateLookupTransVORow.getDecimalSystem() == null ||
          batchRateLookupTransVORow.getDecimalSystem().equals("."))
      {
        btchSumRow.setDigSym(",");
      }
      else
      {
        btchSumRow.setDigSym(".");
      }
      // btchSumRow.setDigSym(IRCTRateCompanyConstants.DIG_SYM);
      btchSumRow.setBtchCd(IRCTRateCompanyConstants.BTCH_CD_BATCH_LOOKUP);
      btchSumRow.setBtchFmtVers(toJBONumber(IRCTRateCompanyConstants.BTCH_FMT_VERS));
      btchSumRow.setGlblDtlTxt(globalDtlTxt);

      btchSum.insertRow(btchSumRow);
      performDatabaseCommit();
      btchSum.setBindBtchCd(IRCTRateCompanyConstants.BTCH_CD_BATCH_LOOKUP);
      btchSum.executeQuery();
      btchSum.setCurrentRow(btchSumRow);

      for (int k = 0; k < pBatchLookupCSVData.size(); k++)
      {
        String batchLookupItem = pBatchLookupCSVData.get(k).toString();
        if (batchLookupItem.startsWith(IRCTRateCompanyConstants.BATCH_INPUT_FILE_HDR))
        {
          break;
        }

        if (StringUtils.contains(batchLookupItem,
                                 IRCTRateCompanyConstants.BATCH_INPUT_FILE_FTR))
        {
          break;
        }
        // split the batchLookupItem by delimeter to transform the values as needed
        String errorNum = null;
        String[] csvRowItems =
          StringUtils.splitPreserveAllTokens(batchLookupItem, del);
        Object[] processedBtch =
          getIRCTRateCompanyServiceHelper().processUpload(csvRowItems,
                                                          errorNum, del);
        StringBuffer processedBtchLookupItem =
          (StringBuffer) processedBtch[0];
        if (processedBtch.length > 1 && processedBtch[1] != null)
          errorNum = (String) processedBtch[1];
        BtchDtlVOImpl btchDtl = getBtchDtlVO();
        btchDtl.clearCache();
        BtchDtlVORowImpl btchDtlRow =
          (BtchDtlVORowImpl) btchDtl.createRow();
        btchDtlRow.setBtchSumId(btchId);
        String status =
          (errorNum != null)? IRCTRateCompanyConstants.FAIL: IRCTRateCompanyConstants.STA_CD_WAIT;
        errorNum =
            (errorNum != null)? errorNum: IRCTRateCompanyConstants.ERR_CT;
        btchDtlRow.setErrNum((toJBONumber(errorNum)));
        btchDtlRow.setParmCnt(toJBONumber(IRCTRateCompanyConstants.PARM_CNT));
        btchDtlRow.setParmTxt(null);
        // For process data text, read the csv input file and set first row in here
        String prcsDtaTxt = processedBtchLookupItem.toString();
        btchDtlRow.setPrcsDtaTxt(prcsDtaTxt);

        btchDtlRow.setStaCd(status);
        btchDtlRow.setBtchDtlSeqNum(new Number(k + 1));
      }

      Key svcReqKey = new Key(new Object[]
          { btchSumRow.getBtchSumId() });
      Row[] reqsFound = btchSum.findByKey(svcReqKey, 1);
      if (reqsFound != null && reqsFound.length > 0)
      {
        BatchSummaryVORowImpl btchSumRowupdt =
          (BatchSummaryVORowImpl) reqsFound[0];
        btchSumRowupdt.setXferEndDttm(new Timestamp(System.currentTimeMillis()));
        btchSumRowupdt.setTotRecCt(toJBONumber(pBatchLookupCSVData.size() -
                                               1));
        btchSumRowupdt.setStaCd(IRCTRateCompanyConstants.STA_CD_QUED);
      }

      performDatabaseCommit();

    }
    catch (Exception e)
    {
      getDBTransaction().rollback();
      getBatchSummaryVO().clearCache();
      getBtchDtlVO().clearCache();
      String errMsg = "Exception while commit in Batch Lookup";
      if (_logger.isLoggable(Level.INFO))
      {
        _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, errMsg, e);

      }
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return errorMsg;
  }


  public String getCountryCodeFromDIG(String pCountry)
  {
    String lMethodName = "getCountryCodeFromDIG(String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pCountry });

    CountryGeographyDTO countryGeoDTO =
      getGeographyService().fetchCountry(pCountry);
    if (countryGeoDTO != null &&
        StringUtils.isNotBlank(countryGeoDTO.getCountryCode()))
    {
      return countryGeoDTO.getCountryCode();
    }
    _logger.entering(CLAZZ_NAME, lMethodName);
    return null;

  }

  public String getLoggedInUserID()
  {
    String lMethodName = "getLoggedInUserID()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    UserProfile up =
      ADFContext.getCurrent().getSecurityContext().getUserProfile();
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return up.getUserID();
  }


  /**
   * This method invokes at very begining of the rating home page.
   * @return
   */
  public String initializeBusinessSelection()
  {
    String lMethodName = "initializeBusinessSelection()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    populateUserPreferences();
    // Empty Comapnies Map whenever intialize Business or Business selection changs.
    SNILOVUOMCache.singleton().setCompanyMap(null);
    String businessId = checkAndSetBusinessPermissions();
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return businessId;
  }

  /**
   *
   * @return
   */
  private String checkAndSetBusinessPermissions()
  {
    String lMethodName = "checkAndSetBusinessPermissions()";
    String businessId = "";
    try
    {
      // check if single business available as part of permissions
      PermissionsROVOImpl permissionsROVO = getPermissionsROVO();
      permissionsROVO.setBindPermissionType(IRCTModelConstants.RATING_BUSINESS_PERMISSION_TYPE_CODE);
      String userName = getLoggedInUserID();
      permissionsROVO.setBindUserName(userName);
      permissionsROVO.executeQuery();
      BusinessGroupTRVOImpl businessGroupTRVO = getBusinessGroupTRVO();
      businessGroupTRVO.clearCache();
      while (permissionsROVO.hasNext())
      {
        PermissionsROVORowImpl permissionsRow =
          (PermissionsROVORowImpl) permissionsROVO.next();
        BusinessGroupTRVORowImpl businessGroupRow =
          (BusinessGroupTRVORowImpl) businessGroupTRVO.createRow();
        businessGroupRow.setBusinessId(permissionsRow.getPermissionValue());
        businessGroupRow.setBusinessDesc(permissionsRow.getPermissionValue());
        businessGroupTRVO.insertRow(businessGroupRow);
        businessId = permissionsRow.getPermissionValue();
      }
      if (permissionsROVO.getRowCount() > 1)
      {
        businessId = "";
      }
      if (StringUtils.isNotBlank(businessId))
      {
        getDBTransaction().getSession().getUserData().put(IRCTRateCompanyConstants.BUSINESS_ID,
                                                          businessId);
      }
    }
    catch (Exception e)
    {
      if (_logger.isLoggable(Level.FINEST))
      {
        _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, e.getMessage(),
                     e);
      }
    }
    return businessId;
  }

  /**
   *
   * removing updateBusinessSelection -- the usrpref table will only be updated  prior to entering the contracttree screen
   * -- nm talk with john -- nov/2/2010
   */


  /**
   * Method to populate Rating UOM map for Long value
   */
  private Map populateRatingUOMMap()
  {
    String lMethodName = "populateRatingUOMMap()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    // FIXME
    _logger.logp(Level.FINEST, CLAZZ_NAME, "populateRatingUOMMap()",
                 " Starts ");
    Map uomMap = null;
    SNIListOfValuesVOImpl sniLOVVO = getRatingUOMVA();
    sniLOVVO.executeQuery();
    if (sniLOVVO.hasNext())
    {
      uomMap = new HashMap();
      while (sniLOVVO.hasNext())
      {
        SNIListOfValuesVORowImpl sniLOVVORRow =
          (SNIListOfValuesVORowImpl) sniLOVVO.next();
        uomMap.put(sniLOVVORRow.getDmnValCd().trim(),
                   sniLOVVORRow.getLongVal().trim());
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return uomMap;
  }


  /**
   * Method to populate Rating UOM map for Short value
   */
  private Map populateRatingUOMShtValMap()
  {
    String lMethodName = "populateRatingUOMShtValMap()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    // FIXME
    _logger.logp(Level.FINEST, CLAZZ_NAME, "populateRatingUOMShtValMap()",
                 " Starts ");

    Map uomMap = null;
    SNIListOfValuesVOImpl sniLOVVO = getRatingUOMVA();
    sniLOVVO.executeQuery();
    if (sniLOVVO.hasNext())
    {
      uomMap = new HashMap();
      while (sniLOVVO.hasNext())
      {
        SNIListOfValuesVORowImpl sniLOVVORRow =
          (SNIListOfValuesVORowImpl) sniLOVVO.next();
        uomMap.put(sniLOVVORRow.getDmnValCd().trim(),
                   sniLOVVORRow.getShtVal().trim());
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return uomMap;
  }


  /**
   * Container's getter for QualItemMasterVO.
   * @return QualItemMasterVO
   */
  public QualItemMasterVOImpl getQualItemMasterVO()
  {
    return (QualItemMasterVOImpl) findViewObject("QualItemMasterVO");
  }

  /**
   * Container's getter for QualGroupVO.
   * @return QualGroupVO
   */
  public QualGroupVOImpl getQualGroupVO()
  {
    return (QualGroupVOImpl) findViewObject("QualGroupVO");
  }

  /**
   * Container's getter for QualGroupItemVO.
   * @return QualGroupItemVO
   */
  public QualGroupItemVOImpl getQualGroupItemVO()
  {
    return (QualGroupItemVOImpl) findViewObject("QualGroupItemVO");
  }

  /**
   * Method to save Geography Group Members and Specs using CORBA Call
   * */
  public void saveGeoGrpMemSpec()
  {
    String lMethodName = "saveGeoGrpMemSpec()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    getIRCTRateCompanyServiceHelper().saveGeoGrpMbrSpec();

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to clear the cache from GeoSpecTRVI
   * */
  public void displayGeoGroup()
  {
    String lMethodName = "displayGeoGroup()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    GeoSpecTRVOImpl specTVO = getGeoSpecTVO();
    specTVO.clearCache();
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to add Geography Spec records based on the User's Input.
   * */
  public void addGeoSpecRows()
  {
    String lMethodName = "addGeoSpecRows()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    GeoSpecGrpTRVORowImpl groupRow =
      (GeoSpecGrpTRVORowImpl) getGeoSpecGrpTVO().getCurrentRow();

    Number rowsNeed = groupRow.getNoOfRows();
    //    if (rowsNeed != null)
    //    {
    String deftCntryCd = groupRow.getDefaultCountry();

    GeoSpecTRVOImpl specTVO = getGeoSpecTVO();
    if (!specTVO.isExecuted())
      specTVO.executeQuery();
    GeoSpecTRVORowImpl geoSpecRow = null;

    int rowIndex = 0;
    int rowsNeeded = 0;

    if (rowsNeed == null)
    {
      rowsNeeded = 1;
    }
    else
    {
      rowsNeeded = rowsNeed.intValue();
    }
    if (rowsNeeded > 100)
    {
      addWarningMessage(IRCTModelConstants.ROW_MORE_THAN_100, new Object[]
          { });
      return;
    }
    for (rowIndex = 0; rowIndex < rowsNeeded; rowIndex++)
    {
      geoSpecRow = (GeoSpecTRVORowImpl) specTVO.createRow();
      geoSpecRow.setGeoSpecId(new Number(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ)));
      geoSpecRow.setCntryCd(deftCntryCd);
      specTVO.insertRow(geoSpecRow);
    }
    //}
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to add Geography Spec records based on the User's Postal Range
   * Input.
   * */
  public void addGeoPostalRange()
  {
    String lMethodName = "addGeoPostalRange()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    // Add event code here...
    GeoSpecGrpTRVORowImpl groupRow =
      (GeoSpecGrpTRVORowImpl) getGeoSpecGrpTVO().getCurrentRow();

    String deftCntryCd = groupRow.getDefaultCountry();
    String indexType = groupRow.getIxCd();
    String rageStart = null;
    String rageEnd = null;

    if (IRCTModelConstants.POST.equals(indexType))
    {
      rageStart = groupRow.getRangeStart();
      rageEnd = groupRow.getRangeEnd();
    }
    else if (IRCTModelConstants.POS2.equals(indexType))
    {
      rageStart = groupRow.getRange2Start();
      rageEnd = groupRow.getRange2End();
      if (Integer.parseInt(rageStart) > Integer.parseInt(rageEnd))
      {
        addWarningMessage(IRCTModelConstants.INT_LESS_THAN_END,
                          new Object[]
            { });
        return;
      }
    }
    else if (IRCTModelConstants.POS3.equals(indexType))
    {
      rageStart = groupRow.getRange3Start();
      rageEnd = groupRow.getRange3End();
    }
    if (rageStart.length() != rageEnd.length())
    {
      addWarningMessage(IRCTModelConstants.RANGE_LENGTH_NOT_EQUAL,
                        new Object[]
          { });
      return;
    }

    if ((rageStart != null) && (rageEnd != null))
    {
      GeoSpecTRVOImpl specTVO = getGeoSpecTVO();
      if (!specTVO.isExecuted())
        specTVO.executeQuery();
      GeoSpecTRVORowImpl geoSpecRow = null;
      ArrayList postalList = new ArrayList();
      String postalCode = null;
      RowSetIterator specIterator = specTVO.getRowSetIterator();
      int rowCount = specTVO.getFetchedRowCount();
      specIterator.setRangeStart(0);
      specIterator.setRangeSize(rowCount);
      int rowIndex = 0;

      while (specIterator.hasNext())
      {
        geoSpecRow = (GeoSpecTRVORowImpl) specIterator.next();
        if (IRCTModelConstants.POST.equals(indexType))
          postalCode = geoSpecRow.getPostCd();
        else if (IRCTModelConstants.POS2.equals(indexType))
          postalCode = geoSpecRow.getPostal2Code();
        else if (IRCTModelConstants.POS3.equals(indexType))
          postalCode = geoSpecRow.getPostal3Code();
        postalList.add(postalCode);
      }

      int rangeStVal = 0;
      int rangeEndVal = 0;
      int startLength = rageStart.length();
      rangeStVal = Integer.parseInt(rageStart);
      rangeEndVal = Integer.parseInt(rageEnd);
      int rowsCount = (rangeEndVal - rangeStVal) + 1;
      if (rowsCount > 100)
      {
        addWarningMessage(IRCTModelConstants.ROW_MORE_THAN_100,
                          new Object[]
            { });
        return;
      }

      for (rowIndex = 0; rowIndex < rowsCount; rowIndex++)
      {
        postalCode = Integer.toString(rangeStVal);
        if (postalCode.length() < startLength)
        {
          while (postalCode.length() < startLength)
          {
            postalCode = 0 + postalCode;
          }
        }
        if (!postalList.contains(postalCode))
        {
          geoSpecRow = (GeoSpecTRVORowImpl) specTVO.createRow();
          specTVO.last();
          specTVO.next();
          geoSpecRow.setGeoSpecId(new Number(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ)));
          geoSpecRow.setCntryCd(deftCntryCd);
          if (IRCTModelConstants.POST.equals(indexType))
            geoSpecRow.setPostCd(postalCode);
          else if (IRCTModelConstants.POS2.equals(indexType))
            geoSpecRow.setPostal2Code(postalCode);
          else if (IRCTModelConstants.POS3.equals(indexType))
            geoSpecRow.setPostal3Code(postalCode);
          specTVO.insertRow(geoSpecRow);

          rangeStVal++;
        }
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Container's getter for QualGroupItemVOVL.
   * @return QualGroupItemVOVL
   */
  public QualGroupItemVOImpl getQualGroupItemVL()
  {
    return (QualGroupItemVOImpl) findViewObject("QualGroupItemVL");
  }

  /**
   * Container's getter for GroupItemsForQualAcc.
   * @return GroupItemsForQualAcc
   */
  public ViewLinkImpl getGroupItemsForQualAcc()
  {
    return (ViewLinkImpl) findViewLink("GroupItemsForQualAcc");
  }

  /**
   * Method to delete Qualification Group Item records when
   * Qulification Type is changed.
   * */
  public void removeNewQualItems()
  {
    String lMethodName = "removeNewQualItems()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    QualGroupVOImpl qualGrpVO = getQualGroupVO();
    QualGroupVORowImpl qualGrpVORow =
      (QualGroupVORowImpl) qualGrpVO.getCurrentRow();
    RowIterator qualItemItr = qualGrpVORow.getQualGroupItem();
    while (qualItemItr.hasNext())
      qualItemItr.next().remove();


    String cpyId =
      ((QualGroupVORowImpl) getQualGroupVO().getCurrentRow()).getCpyId();
    getQualItemForQualTypeVL().setBindCpyId(cpyId);
    getQualItemForQualTypeVL().executeQuery();

    getQualGroupROVL().setBindCpyId(cpyId);
    getQualGroupROVL().executeQuery();
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to create Audit Row
   * @param pObjectID
   * @param pObjectCode
   * @param pBusinessID
   * @param pCompanyID
   */
  public void createAuditRow(String pObjectID, String pObjectCode,
                             String pBusinessID, String pCompanyID)
  {
    String methodName = "createAuditRow(String,String,String,String)";
    _logger.entering(CLAZZ_NAME, methodName,
                     pObjectID + "," + pObjectCode + "," + pBusinessID +
                     "," + pCompanyID);

    AuditTRVOImpl vo = getAuditTRVO();
    AuditTRVORowImpl row = (AuditTRVORowImpl) vo.createRow();
    Number auditID =
      getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ);
    row.setAudId(auditID);
    row.setObjId(toJBONumber(pObjectID));
    row.setObjCd(pObjectCode);
    row.setBusId(pBusinessID);
    row.setCpyId(pCompanyID);
    row.setDocId(new Number(0));
    row.setDelFlg(false);
    vo.insertRow(row);

    _logger.exiting(CLAZZ_NAME, methodName, "Audit Row Inserted to VO");
  }

  public void createAuditRow(String pObjectID, String pObjectCode,
                             String pBusinessID, String pCompanyID,
                             Number pDocId)
  {
    String methodName = "createAuditRow(String,String,String,String)";
    _logger.entering(CLAZZ_NAME, methodName,
                     pObjectID + "," + pObjectCode + "," + pBusinessID +
                     "," + pCompanyID);

    AuditTRVOImpl vo = getAuditTRVO();
    AuditTRVORowImpl row = (AuditTRVORowImpl) vo.createRow();
    Number auditID =
      getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ);
    row.setAudId(auditID);
    row.setObjId(toJBONumber(pObjectID));
    row.setObjCd(pObjectCode);
    row.setBusId(pBusinessID);
    row.setCpyId(pCompanyID);
    row.setDocId(pDocId);
    row.setDelFlg(false);
    vo.insertRow(row);

    _logger.exiting(CLAZZ_NAME, methodName, "Audit Row Inserted to VO");
  }

  /**
   * Method to create Audit Row for Service Type
   * @param pObjectID
   * @param pObjectCode
   * @param pBusinessID
   * @param pCompanyID
   */
  public void createSrvTypAuditRow(String pObjectID, String pObjectCode,
                                   String pBusinessID, String pCompanyID)
  {
    String methodName =
      "createSrvTypAuditRow(String,String,String,String)";
    _logger.entering(CLAZZ_NAME, methodName,
                     pObjectID + "," + pObjectCode + "," + pBusinessID +
                     "," + pCompanyID);

    AuditVOImpl vo = getAuditVO();
    vo.executeEmptyRowSet();
    AuditVORowImpl row = (AuditVORowImpl) vo.createRow();
    row.setObjId(toJBONumber(pObjectID));
    row.setObjCd(pObjectCode);
    row.setBusId(pBusinessID);
    row.setCpyId(pCompanyID);
    row.setDocId(new Number(0));
    vo.insertRow(row);

    _logger.exiting(CLAZZ_NAME, methodName, "Audit Row Inserted to VO");
  }


  public void createContactRow()
  {
    String methodName = "createContactRow()";
    _logger.entering(CLAZZ_NAME, methodName);

    getIRCTRateCompanyServiceHelper().createContactInfoRow(getCurrentCtrcId());
    _logger.exiting(CLAZZ_NAME, methodName);
  }

  /**
   * Method to check if there exists an Audit Record in Table.
   * @param pObjectID
   * @param pObjectCode
   * @return
   */
  public Boolean isAuditRecordExists(String pObjectID, String pObjectCode)
  {
    String methodName = "isAuditRecordExists()";
    _logger.entering(CLAZZ_NAME, methodName,
                     pObjectID + "," + pObjectCode);

    boolean isExists = false;
    if (StringUtils.isNotBlank(pObjectID) &&
        StringUtils.isNotBlank(pObjectCode))
    {
      AuditVOImpl vo = getAuditVO();
      try
      {
        vo.setBindObjId(new Number(pObjectID));
        vo.setBindDocId(null);
        vo.setBindAudId(null);
      }
      catch (SQLException sqle)
      {
        if (_logger.isLoggable(Level.FINEST))
        {
          _logger.logp(Level.FINEST, CLAZZ_NAME, methodName,
                       sqle.getMessage());
        }
      }

      vo.executeQuery();
      RowSetIterator rsIter = vo.createRowSetIterator(null);
      while (rsIter.hasNext())
      {
        AuditVORowImpl auditRow = (AuditVORowImpl) rsIter.next();
        if (pObjectCode.equals(auditRow.getObjCd()))
        {
          return Boolean.valueOf(true);
        }
      }
    }

    _logger.exiting(CLAZZ_NAME, methodName,
                    "Audit Records Check Flag:" + isExists);
    return Boolean.valueOf(isExists);
  }


  /**
   * Method to check if there exists an Audit Record in Table.
   * @param pObjectID
   * @param pObjectCode
   * @return
   */
  public Number getAuditRecordKey(String pObjectID, String pObjectCode)
  {
    String methodName = "getAuditRecordKey()";
    _logger.entering(CLAZZ_NAME, methodName,
                     pObjectID + "," + pObjectCode);

    Number primaryKey = null;
    AuditVOImpl vo = getAuditVO();
    Key key = new Key(new Object[]
        { pObjectID, pObjectCode });
    RowIterator rowIter = vo.findByAltKey("AuditAltKey", key, 1, false);
    if (rowIter != null && rowIter.hasNext())
    {
      AuditVORowImpl row = (AuditVORowImpl) rowIter.next();
      primaryKey = toJBONumber(row.getAudId().getValue());
    }

    _logger.exiting(CLAZZ_NAME, methodName,
                    "Audit Record primary Key:" + primaryKey);
    return primaryKey;
  }


  /**
   * Method to update Audit Flag for Service Type
   * @param pObjectID
   */
  public void updateServiceTypeAuditFlag(String pObjectID)
  {
    String methodName = "updateServiceTypeAuditFlag(String)";
    _logger.entering(CLAZZ_NAME, methodName);

    if (StringUtils.isNotBlank(pObjectID))
    {
      ServiceTypeVOImpl serviceVO = getServiceTypeVO();
      Key key = new Key(new Object[]
          { toJBONumber(pObjectID) });
      Row[] rows = serviceVO.findByKey(key, 1);
      if (rows != null && rows.length > 0)
      {
        ServiceTypeVORowImpl row = (ServiceTypeVORowImpl) rows[0];
        if (isAuditRecordExists(pObjectID, SERVICE_TYPE_OBJ_CODE))
        {
          row.setAudFlg(new Number(1));
        }
        else
        {
          row.setAudFlg(new Number(0));
        }
        getDBTransaction().commit();
      }
    }

    _logger.exiting(CLAZZ_NAME, methodName);
  }

  /**
   * Method to populate User Preferences
   **/
  public void populateUserPreferences()
  {
    String methodName = "populateUserPreferences()";
    _logger.entering(CLAZZ_NAME, methodName);

    UserPreferenceVOImpl userPrefVO = getUserPreferenceVO();

    String userId = getLoggedInUserID();
    userPrefVO.setbindUsrId(userId);
    userPrefVO.executeQuery();
    if (userPrefVO.getRowCount() == 0)
    {
      UserPreferenceVORowImpl newRow =
        (UserPreferenceVORowImpl) userPrefVO.createRow();
      newRow.setNewRowState(Row.STATUS_INITIALIZED);
      newRow.setUsrId(userId);
      userPrefVO.insertRow(newRow);
      getDBTransaction().commit();
    }
    else
    {
      /**
       * If any results found, Get the User selected timezone value from MDS and set to User Preference VO Row
       */
      UserPrefTRVOImpl userPrefTRVO = getUserPrefTRVO();
      String[] usrPrefSearchArr =
        SNISearchCustomizer.getAllSavedSearchNames(userPrefTRVO);
      UserPreferenceVORowImpl newRow =
        (UserPreferenceVORowImpl) userPrefVO.first();
      UserPrefTRVORowImpl usrPrefVORow = null;
      if (usrPrefSearchArr != null && usrPrefSearchArr.length > 0)
      {
        usrPrefVORow = (UserPrefTRVORowImpl) userPrefTRVO.createRow();

        try
        {
          SNISearchCustomizer.applySearchPreference(usrPrefSearchArr[0],
                                                    userPrefTRVO,
                                                    usrPrefVORow);
        }
        catch (Exception ex)
        {
          // TODO - Remove try catch once FA fix this issue.
          if (_logger.isLoggable(Level.FINEST))
          {
            _logger.logp(Level.FINE, CLAZZ_NAME, methodName,
                         "Error while applySearchPreference() for UserPreference , Key -" +
                         usrPrefSearchArr[0], ex);
          }
        }
        newRow.setTimeZoneID(usrPrefVORow.getTimeZoneId());
      }
    }
    _logger.exiting(CLAZZ_NAME, methodName);
  }

  private Number toJBONumber(Object pObject)
  {
    Number jboNumber = null;

    if (pObject != null)
    {
      try
      {
        jboNumber = new Number(pObject);
      }
      catch (SQLException e)
      {
        raiseSNIJboException("JBO_NUMBER_ERROR", pObject);
      }
    }
    return jboNumber;
  }


  /**
   * Container's getter for AuditVO.
   * @return AuditVO
   */
  public AuditVOImpl getAuditVO()
  {
    return (AuditVOImpl) findViewObject("AuditVO");
  }

  /**
   * Container's getter for IprtTskVO.
   * @return IprtTskVO
   */
  public ImportTaskVOImpl getImportTaskVO()
  {
    return (ImportTaskVOImpl) findViewObject("ImportTaskVO");
  }

  /**
   * Container's getter for QualItemForQualTypeVL.
   * @return QualItemForQualTypeVL
   */
  public QualItemMasterVOImpl getQualItemForQualTypeVL()
  {
    return (QualItemMasterVOImpl) findViewObject("QualItemForQualTypeVL");
  }

  /**
   * Container's getter for QualGroupROVL.
   * @return QualGroupROVL
   */
  public QualGroupROVOImpl getQualGroupROVL()
  {
    return (QualGroupROVOImpl) findViewObject("QualGroupROVL");
  }

  /**
   * Container's getter for QualGroupItemROVL.
   * @return QualGroupItemROVL
   */
  public QualGroupItemROVOImpl getQualGroupItemROVL()
  {
    return (QualGroupItemROVOImpl) findViewObject("QualGroupItemROVL");
  }

  /**
   * Container's getter for CompanyIdLOV.
   * @return CompanyIdLOV
   */
  public CompanyIdLOVImpl getCompanyIdLOV()
  {
    return (CompanyIdLOVImpl) findViewObject("CompanyIdLOV");
  }

  /**
   * Container's getter for QualItemsForQualTypeVL.
   * @return QualItemsForQualTypeVL
   */
  public ViewLinkImpl getQualItemsForQualTypeVL()
  {
    return (ViewLinkImpl) findViewLink("QualItemsForQualTypeVL");
  }

  /**
   * Container's getter for QualGrpROForQualTypVL.
   * @return QualGrpROForQualTypVL
   */
  public ViewLinkImpl getQualGrpROForQualTypVL()
  {
    return (ViewLinkImpl) findViewLink("QualGrpROForQualTypVL");
  }

  /**
   * Container's getter for QualGropROToQualItemVL.
   * @return QualGropROToQualItemVL
   */
  public ViewLinkImpl getQualGropROToQualItemVL()
  {
    return (ViewLinkImpl) findViewLink("QualGropROToQualItemVL");
  }

  /**
   * Container's getter for CurrencyLOV.
   * @return CurrencyLOV
   */
  public SNIListOfValuesVOImpl getCurrencyLOV()
  {
    return (SNIListOfValuesVOImpl) findViewObject("CurrencyLOV");
  }

  /**
   * Container's getter for GeoSpecGroupVO.
   * @return GeoSpecGroupVO
   */
  public GeoSpecGroupVOImpl getGeoSpecGroupVO()
  {
    return (GeoSpecGroupVOImpl) findViewObject("GeoSpecGroupVO");
  }

  /**
   * Container's getter for GeoSpecGroupMbrVO.
   * @return GeoSpecGroupMbrVO
   */
  public GeoSpecGroupMbrVOImpl getGeoSpecGroupMbrVO()
  {
    return (GeoSpecGroupMbrVOImpl) findViewObject("GeoSpecGroupMbrVO");
  }

  /**
   * Container's getter for MembersForGeoGroupVL.
   * @return MembersForGeoGroupVL
   */
  public ViewLinkImpl getMembersForGeoGroupVL()
  {
    return (ViewLinkImpl) findViewLink("MembersForGeoGroupVL");
  }

  /**
   * Container's getter for GeoSpecGrpTVO.
   * @return GeoSpecGrpTVO
   */
  public GeoSpecGrpTRVOImpl getGeoSpecGrpTVO()
  {
    return (GeoSpecGrpTRVOImpl) findViewObject("GeoSpecGrpTVO");
  }


  /**
   * Container's getter for GeoSpecTVO.
   * @return GeoSpecTVO
   */
  public GeoSpecTRVOImpl getGeoSpecTVO()
  {
    return (GeoSpecTRVOImpl) findViewObject("GeoSpecTVO");
  }


  /**
   * Container's getter for CompaniesByBusId1.
   * @return CompaniesByBusId1
   */
  public CompaniesByBusIdROVOImpl getCompaniesByBusIdVO()
  {
    return (CompaniesByBusIdROVOImpl) findViewObject("CompaniesByBusIdVO");
  }

  /**
   * Container's getter for DistancePkgCalcTypeLOV.
   * @return DistancePkgCalcTypeLOV
   */
  public DistancePkgCalcTypeLOVImpl getDistancePkgCalcTypeLOV()
  {
    return (DistancePkgCalcTypeLOVImpl) findViewObject("DistancePkgCalcTypeLOV");
  }

  /**
   * Container's getter for DistancePkgLOV.
   * @return DistancePkgLOV
   */
  public DistancePkgLOVImpl getDistancePkgLOV()
  {
    return (DistancePkgLOVImpl) findViewObject("DistancePkgLOV");
  }

  /**
   * Container's getter for DistancePkgVersionLOV.
   * @return DistancePkgVersionLOV
   */
  public DistancePkgVersionLOVImpl getDistancePkgVersionLOV()
  {
    return (DistancePkgVersionLOVImpl) findViewObject("DistancePkgVersionLOV");
  }


  public void deleteGeoGrpMemSpec(long pGeoSpecGrpId, String pUpdatedUser,
                                  String pCompanyID, String pIndexType,
                                  String pDescription)
  {
    String lMethodName =
      "deleteGeoGrpMemSpec(long, String, String, String, String)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    String businessID = getBusinessID();

    if (pGeoSpecGrpId != 0)
    {

      RCTUserInfo userInfo =
        (RCTUserInfo) LWOUtils.createLWO(RCTUserInfo.class.getName());
      userInfo.setUserID(pUpdatedUser);
      userInfo.setCompanyID(pCompanyID);
      userInfo.setBusinessID(businessID);


      RCTGeoGroup rctGeoGroup =
        (RCTGeoGroup) LWOUtils.createLWO(RCTGeoGroup.class.getName());
      rctGeoGroup.setGroupID(pGeoSpecGrpId);
      rctGeoGroup.setCompanyID(pCompanyID);
      rctGeoGroup.setBusinessID(businessID);
      rctGeoGroup.setIndexTypeCode(pIndexType);
      rctGeoGroup.setDescription(pDescription);

      DistanceGeographyManager distanceGeoMgr =
        new DistanceGeographyManager();

      try
      {
        distanceGeoMgr.deleteGeoGroup(rctGeoGroup, userInfo);
        getGeoSpecGroupVO().executeQuery();
      }
      catch (IRCTValidationException validationException)
      {
        ValidationExceptionLWO next =
          (ValidationExceptionLWO) validationException.getValidationErrors().iterator().next();
        String errorMsg =
          IRCTPropertyUtils.getIRCTMessagesPropertyValue(String.valueOf(next.msgID));
        if (_logger.isLoggable(Level.FINEST))
        {
          _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                       StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                               next.msgID, null));
        }
        throw new JboException(errorMsg);
      }
      catch (Exception ex)
      {
        String errMsg = "Exception while deleteGeoGrpMemSpec";
        handleException(ex, errMsg, null);
      }

    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Container's getter for PermissionsROVO.
   * @return PermissionsROVO
   */
  public PermissionsROVOImpl getPermissionsROVO()
  {
    return (PermissionsROVOImpl) findViewObject("PermissionsROVO");
  }

  /**
   * Container's getter for ChildPermissionsROVO.
   * @return ChildPermissionsROVO
   */
  public ChildPermissionsROVOImpl getChildPermissionsROVO()
  {
    return (ChildPermissionsROVOImpl) findViewObject("ChildPermissionsROVO");
  }


  /**
   * Container's getter for RatingCompanyROVO.
   * @return RatingCompanyROVO
   */
  public RatingCompanyROVOImpl getRatingCompanyROVO()
  {
    return (RatingCompanyROVOImpl) findViewObject("RatingCompanyROVO");
  }


  /**
   * Method to get list of company items to add
   * @return ArrayList
   */
  public List getCpyIdItems()
  {
    String lMethodName = "getCpyIdItems()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    String iterComp = null;
    String cmpIdFromVO = null;
    HashMap hm = new HashMap();
    List alCmpItems = new ArrayList();

    String compList = getLoggedInUserCompanyIDsFromVPD();
    StringTokenizer st = new StringTokenizer(compList, ",");
    String businessId = getBusinessID();

    CompaniesByBusIdROVOImpl compVO = getCompaniesByBusIdVO();
    compVO.setp_busid(businessId);
    compVO.executeQuery();

    while (compVO.hasNext())
    {
      CompaniesByBusIdROVORowImpl cmpVORow =
        (CompaniesByBusIdROVORowImpl) compVO.next();
      cmpIdFromVO = cmpVORow.getCpyId();
      hm.put(cmpIdFromVO, cmpIdFromVO);
    }

    while (st.hasMoreTokens())
    {
      iterComp = st.nextToken();

      if (hm.get(iterComp) == null)
      {
        alCmpItems.add(iterComp);
      }
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return alCmpItems;
  }

  /**
   * Container's getter for ContractMatchQualificationsLOV.
   * @return ContractMatchQualificationsLOV
   */
  public ContractMatchQualificationsLOVImpl getContractMatchQualificationsLOV()
  {
    return (ContractMatchQualificationsLOVImpl) findViewObject("ContractMatchQualificationsLOV");
  }

  /**
   * Method to verify presence of any new companies in VPD.
   * @return true, if company exists
   */
  public boolean isNewCompaniesAvailable()
  {
    String lMethodName = "isNewCompaniesAvailable()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    boolean bNewCompExists = false;
    String iterComp = null;
    String cmpIdFromVO = null;
    HashMap hm = new HashMap();

    String compList = getLoggedInUserCompanyIDsFromVPD();
    StringTokenizer st = new StringTokenizer(compList, ",");
    String businessId = getBusinessID();

    CompaniesByBusIdROVOImpl compVO = getCompaniesByBusIdVO();
    compVO.setp_busid(businessId);
    compVO.executeQuery();

    while (compVO.hasNext())
    {
      CompaniesByBusIdROVORowImpl cmpVORow =
        (CompaniesByBusIdROVORowImpl) compVO.next();
      cmpIdFromVO = cmpVORow.getCpyId();
      hm.put(cmpIdFromVO, cmpIdFromVO);
    }

    while (st.hasMoreTokens())
    {
      iterComp = st.nextToken();

      if (hm.get(iterComp) == null)
      {
        bNewCompExists = true;
        break;
      }
    }

    if (!bNewCompExists)
    {
      if (_logger.isLoggable(Level.FINEST))
      {
        _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                     "No New company exists...");
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return bNewCompExists;

  }

  /**
   * Container's getter for RateResultsTypeLOV.
   * @return RateResultsTypeLOV
   */
  public RateResultsTypeLOVImpl getRateResultsTypeLOV()
  {
    return (RateResultsTypeLOVImpl) findViewObject("RateResultsTypeLOV");
  }

  /**
   * Container's getter for TransitOptPickupOptionsLOV.
   * @return TransitOptPickupOptionsLOV
   */
  public TransitOptPickupOptionsLOVImpl getTransitOptPickupOptionsLOV()
  {
    return (TransitOptPickupOptionsLOVImpl) findViewObject("TransitOptPickupOptionsLOV");
  }

  /**
   * Container's getter for TransitOptDeliveryOptionsLOV.
   * @return TransitOptDeliveryOptionsLOV
   */
  public TransitOptDeliveryOptionsLOVImpl getTransitOptDeliveryOptionsLOV()
  {
    return (TransitOptDeliveryOptionsLOVImpl) findViewObject("TransitOptDeliveryOptionsLOV");
  }


  /**
   * Container's getter for PreviewFrmtdDataVO.
   * @return PreviewFrmtdDataVO
   */
  public PreviewFrmtdDataVOImpl getPreviewFrmtdDataVO()
  {
    return (PreviewFrmtdDataVOImpl) findViewObject("PreviewFrmtdDataVO");
  }


  /**
   * Container's getter for DisplayAdminResultTVO.
   * @return DisplayAdminResultTVO
   */
  public DisplayAdminResultTVOImpl getDisplayAdminResultTVO()
  {
    return (DisplayAdminResultTVOImpl) findViewObject("DisplayAdminResultTVO");
  }

  /**
   *   This method parse the input command
   * @return
   */
  private String parseCommand(String command, List params)
  {
    String lMethodName = "parseCommand()";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { command, params });

    String strFirst = null;
    StringBuffer value = new StringBuffer();
    final String adminType = RCTAdminParam.class.getName();

    if (StringUtils.isNotBlank(command))
    {
      StringTokenizer tok = new StringTokenizer(command, " \n");
      while (tok.hasMoreTokens())
      {
        if (strFirst == null)
        {
          strFirst = tok.nextToken().trim();
          continue;
        }
        String theTok = tok.nextToken().trim();
        boolean hasArgs = theTok.endsWith(":");
        theTok = theTok.replace(':', ' ').trim();

        if (theTok.length() == 0)
          continue;

        RCTAdminParam param =
          (RCTAdminParam) LWOUtils.createLWO(adminType);
        param.setCode(theTok);
        if (hasArgs)
        {
          //build a value from tokens until an end is seen
          value.setLength(0);
          boolean done = false;
          while (tok.hasMoreTokens() && !done)
          {
            String valpart = tok.nextToken().trim();
            if (valpart.equals(":"))
            {
              done = true;
            }
            else if (valpart.equals("\\:"))
            {
              value.append(": ");
            }
            else if (valpart.equals("\\n"))
            {
              value.append("
");
            }
            else
            {
              value.append(valpart);
              value.append(" ");
            }
          }
          String arg = value.toString().trim();
          if (arg.length() > 0)
            param.setValue(arg);
        }
        params.add(param);
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return strFirst;
  }


  /**
   *   Makes the CORBA call for IT Admin
   * @return
   */

  public void postconditionForITAdmin(String pAdObjLst, String pCommand)
  {
    String lMethodName = "postcondition(String, String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pAdObjLst, pCommand });

    AdminManager mgr = null;
    DisplayAdminResultTVOImpl dadminVO = null;
    RCTUserInfo userInfo =
      (RCTUserInfo) LWOUtils.createLWO(RCTUserInfo.class.getName());

    userInfo.setUserID(IRCTRateCompanyConstants.RSIT_ADMIN);
    userInfo.setBusinessID(IRCTRateCompanyConstants.ALL_ADMIN);
    userInfo.setCompanyID(IRCTRateCompanyConstants.ALL_COMPANIES);

    if (!pAdObjLst.equals("0"))
    {
      try
      {
        mgr = new AdminManager(pAdObjLst);
      }
      catch (Exception ex)
      {
        String errMsg = "Exception while postconditionForITAdmin";
        handleException(ex, errMsg, null);
      }
    }
    else
    {
      addWarningMessage(IRCTModelConstants.PLZ_SELECT_ADMIN_OBJ,
                        new Object[]
          { });
    }
    List params = new ArrayList();
    String strFirst = null;

    strFirst = parseCommand(pCommand, params);

    List resList = new ArrayList();
    try
    {
      if (StringUtils.isNotBlank(strFirst))
      {
        mgr.doRequest(strFirst, params, resList, userInfo);
      }
      else
      {
        mgr.getRequestList(resList, userInfo);
      }
    }
    catch (IRCTValidationException validationException)
    {
      ValidationExceptionLWO next =
        (ValidationExceptionLWO) validationException.getValidationErrors().iterator().next();
      if (_logger.isLoggable(Level.FINEST))
      {
        _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                     StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                             next.msgID, null),
                     validationException.getMessage());
      }

      raiseValidationException(StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                                       next.msgID, null),
                               null);
    }
    catch (Exception ex)
    {
      String errMsg =
        "Exception while postconditionForITAdmin" + StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                                                            "FAILED_TO_WORK_WITH_REMOTE_CORBA_POSTCONDITION",
                                                                            null);
      handleException(ex, errMsg, null);
    }

    // ---------------- Process results
    StringBuffer resultBuffer = new StringBuffer();
    for (int count = 0; count < resList.size(); count++)
    {
      IRCTCommonUtil.processRequestList(resultBuffer, resList, count);
    }

    dadminVO = getDisplayAdminResultTVO();
    DisplayAdminResultTVORowImpl daRow =
      (DisplayAdminResultTVORowImpl) dadminVO.createRow();
    daRow.setResult(resultBuffer.toString());
    dadminVO.insertRow(daRow);

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Container's getter for CheckValidateGeoLOV.
   * @return CheckValidateGeoLOV
   */
  public CheckValidateGeoLOVImpl getCheckValidateGeoLOV()
  {
    return (CheckValidateGeoLOVImpl) findViewObject("CheckValidateGeoLOV");
  }


  /**
   * Container's getter for ContractStatusLOV.
   * @return ContractStatusLOV
   */
  public ContractStatusLOVImpl getContractStatusLOV()
  {
    return (ContractStatusLOVImpl) findViewObject("ContractStatusLOV");
  }

  /**
   * Container's getter for ContractTypeLOV.
   * @return ContractTypeLOV
   */
  public ContractTypeLOVImpl getContractTypeLOV()
  {
    return (ContractTypeLOVImpl) findViewObject("ContractTypeLOV");
  }

  /**
   * Container's getter for ContractSearchROVO.
   * @return ContractSearchROVO
   */
  public ContractSearchROVOImpl getContractSearchROVO()
  {
    return (ContractSearchROVOImpl) findViewObject("ContractSearchROVO");
  }

  /**
   * Container's getter for PreSelectedContractsROVO.
   * @return PreSelectedContractsROVO
   */
  public PreSelectedContractsROVOImpl getPreSelectedContractsROVO()
  {
    return (PreSelectedContractsROVOImpl) findViewObject("PreSelectedContractsROVO");
  }

  /**
   * Container's getter for Qualification1.
   * @return Qualification1
   */
  public QualificationVOImpl getQualificationVO()
  {
    return (QualificationVOImpl) findViewObject("QualificationVO");
  }


  /**
   * Container's getter for QualSetGrpForQualVL1.
   * @return QualSetGrpForQualVL1
   */
  public ViewLinkImpl getQualSetGrpForQualVL1()
  {
    return (ViewLinkImpl) findViewLink("QualSetGrpForQualVL1");
  }


  /**
   * Container's getter for NoteTxtForQual1.
   * @return NoteTxtForQual1
   */
  public ViewLinkImpl getNoteTxtForQual1()
  {
    return (ViewLinkImpl) findViewLink("NoteTxtForQual1");
  }


  /**
   * Container's getter for IrctNote.
   * @return IrctNote
   */
  public IrctNoteVOImpl getIrctNoteVL()
  {
    return (IrctNoteVOImpl) findViewObject("IrctNoteVL");
  }


  /**
   * Container's getter for QualSetGroup1.
   * @return QualSetGroup1
   */
  public QualSetGroupVOImpl getQualSetGroupVL()
  {
    return (QualSetGroupVOImpl) findViewObject("QualSetGroupVL");
  }

  /**
   * Container's getter for CompanyIdTVO.
   * @return CompanyIdTVO
   */
  public CompanyIdTRVOImpl getCompanyIdTVO()
  {
    return (CompanyIdTRVOImpl) findViewObject("CompanyIdTVO");
  }

  /**
   * Container's getter for QualItmMasterVO.
   * @return QualItmMasterVO
   */
  public QualItemMasterVOImpl getQualItmMasterVO()
  {
    return (QualItemMasterVOImpl) findViewObject("QualItmMasterVO");
  }

  /**
   * Container's getter for QualGrpVO.
   * @return QualGrpVO
   */
  public QualGroupVOImpl getQualGrpVO()
  {
    return (QualGroupVOImpl) findViewObject("QualGrpVO");
  }


  /**
   * Container's getter for QualSetGrpItmVO.
   * @return QualSetGrpItmVO
   */
  public QualSetGroupItemVOImpl getQualSetGrpItmVO()
  {
    return (QualSetGroupItemVOImpl) findViewObject("QualSetGrpItmVO");
  }

  /**
   * Container's getter for QualSetGroupVO.
   * @return QualSetGroupVO
   */
  public QualSetGroupVOImpl getQualSetGroupVO()
  {
    return (QualSetGroupVOImpl) findViewObject("QualSetGroupVO");
  }


  /**
   * Container's getter for QualSetGroupItem1.
   * @return QualSetGroupItem1
   */
  public QualSetGroupItemVOImpl getQualSetGroupItemVL()
  {
    return (QualSetGroupItemVOImpl) findViewObject("QualSetGroupItemVL");
  }

  /**
   * Container's getter for QualSetGroupItemVL1.
   * @return QualSetGroupItemVL1
   */
  public ViewLinkImpl getQualSetGroupItemVL1()
  {
    return (ViewLinkImpl) findViewLink("QualSetGroupItemVL1");
  }


  /**
   * Container's getter for QualGroupItem1.
   * @return QualGroupItem1
   */
  public QualGroupItemVOImpl getQualGroupItem1()
  {
    return (QualGroupItemVOImpl) findViewObject("QualGroupItem1");
  }

  /**
   * Container's getter for QualGroupItem2.
   * @return QualGroupItem2
   */
  public QualGroupItemVOImpl getQualGroupItem2()
  {
    return (QualGroupItemVOImpl) findViewObject("QualGroupItem2");
  }

  /**
   * Container's getter for Audit1.
   * @return Audit1
   */
  public AuditVOImpl getAuditVL()
  {
    return (AuditVOImpl) findViewObject("AuditVL");
  }

  /**
   * Container's getter for AuditForQual1.
   * @return AuditForQual1
   */
  public ViewLinkImpl getAuditForQual1()
  {
    return (ViewLinkImpl) findViewLink("AuditForQual1");
  }

  /**
   * Container's getter for QualSetGroupItem1.
   * @return QualSetGroupItem1
   */
  public QualSetGroupItemVOImpl getQualSetGroupItem()
  {
    return (QualSetGroupItemVOImpl) findViewObject("QualSetGroupItem");
  }

  /**
   * Container's getter for QualSetGrtDisplayTVO.
   * @return QualSetGrtDisplayTVO
   */
  public QualSetGrpDisplayTRVOImpl getQualSetGrpDisplayTVO()
  {
    return (QualSetGrpDisplayTRVOImpl) findViewObject("QualSetGrpDisplayTVO");
  }


  /**
   * Container's getter for CtrcXref1.
   * @return CtrcXref1
   */
  public CtrcXrefVOImpl getCtrcXrefVO()
  {
    return (CtrcXrefVOImpl) findViewObject("CtrcXrefVO");
  }


  /**
   * Container's getter for QualificationTypeVA.
   * @return QualificationTypeVA
   */
  public SNIListOfValuesVOImpl getQualificationTypeVA()
  {
    return (SNIListOfValuesVOImpl) findViewObject("QualificationTypeVA");
  }

  /**
   * Container's getter for UserContracts1.
   * @return UserContracts1
   */
  public UserContractsVOImpl getUserContractsVO()
  {
    return (UserContractsVOImpl) findViewObject("UserContractsVO");
  }

  public void addContractReferences(List pcontractIds,
                                    String pobjContractId)
  {
    String lMethodName = "addContractReferences(List , String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pobjContractId });
    ContractVORowImpl lovRow = null;

    if (pcontractIds.size() > 0)
    {
      String busId = getBusinessID();
      String first_contract_id = (String) pcontractIds.get(0);
      String ctrcdesc = null;
      String ctrcStatus = null;
      boolean inActvCtrcPresesent = false;
      ContractReferenceTRVORowImpl newrow = null;
      ContractReferenceTRVOImpl ctrcreftvo = getContractReferenceTRVO();

      for (Iterator it = pcontractIds.iterator(); it.hasNext(); )
      {
        String contract_id = it.next();

        boolean bCtrcFound = false;

        ctrcreftvo.reset();

        if (contract_id.equals(pobjContractId))
        {
          bCtrcFound = true;
        }

        if (!bCtrcFound)
        {
          while (ctrcreftvo.hasNext()) //check if the contract selected by user is not already present in the the contract reference
          {
            newrow = (ContractReferenceTRVORowImpl) ctrcreftvo.next();
            if ((newrow.getCtrcId().equals(contract_id) ||
                 contract_id.equals(newrow.getObjCtrcId())) &&
                newrow.getCtrcRefEffDt().equals(DateTimeUtil.singleton().getCurrentJboDate()))
            {
              bCtrcFound =
                  true; //if contract is found, no need to add it again
              break;
            }
          }

          if (!bCtrcFound)
          {
            CtrcRefTRVOImpl ctrcRefTRVO = getCtrcRefTRVO();
            ctrcRefTRVO.reset();

            while (ctrcRefTRVO.hasNext()) //check if the contract selected by user is not already present in the the contract reference
            {
              CtrcRefTRVORowImpl ctrcRefTRVORow =
                (CtrcRefTRVORowImpl) ctrcRefTRVO.next();
              if ((ctrcRefTRVORow.getCtrcId().equals(contract_id) ||
                   contract_id.equals(pobjContractId)) &&
                  ctrcRefTRVORow.getCtrcRefEffDt().equals(DateTimeUtil.singleton().getCurrentJboDate()))
              {
                bCtrcFound =
                    true; //if contract is found, no need to add it again
                break;
              }
            }
          }
        }

        if (!bCtrcFound) //if contract not found, create a new row and add it
        {
          /**  Start - To find Company description **/
          ContractVOImpl ctrcVO = getContractVO();
          ctrcVO.setBindCtrcId(contract_id);
          ctrcVO.setBindBusId(null);
          ctrcVO.setBindCpyId(null);
          ctrcVO.setBindCtrcDesc(null);
          ctrcVO.setBindCtrcSecDesc(null);
          ctrcVO.executeQuery();

          if (ctrcVO.getRowCount() > 0)
          {
            lovRow = (ContractVORowImpl) ctrcVO.next();
            ctrcdesc = lovRow.getCtrcDesc().toString();
            ctrcStatus = lovRow.getStaCd();
          }
          /**  End - To find Company description **/

          if (IRCTRateCompanyConstants.ACTIVE.equals(ctrcStatus))
          {
            newrow = (ContractReferenceTRVORowImpl) ctrcreftvo.createRow();

            ContractTRVOImpl ctrctrvo = getContractTRVO();
            ContractTRVORowImpl newctrcrow =
              (ContractTRVORowImpl) ctrctrvo.getCurrentRow();
            if (newctrcrow != null)
            {
              String ctrccd = newctrcrow.getCtrcCd();
              if ("AFFL".equals(ctrccd) || "Affiliate".equals(ctrccd))
              {
                newrow.setAfflIsVisible(true);

                newrow.setAfflIsSelected(true);
              }
              else
              {
                newrow.setAfflIsVisible(false);
                newrow.setAfflIsSelected(false);
              }
            }
            try
            {
              newrow.setCtrcRefId(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ));
              newrow.setrowMode(IRCTRateCompanyConstants.ADD_CTRC_REF_MODE);
              newrow.setCtrcId(new Number(contract_id));
              newrow.setBusId(busId);
              newrow.setCpyId(getCompanyIDFromContract(first_contract_id));
              newrow.setObjCd(IRCTRateCompanyConstants.CTRC);
              newrow.setDescription(ctrcdesc);
              Date d = new Date();
              java.sql.Date d1 = new java.sql.Date(d.getTime());
              newrow.setCtrcRefEffDt(new oracle.jbo.domain.Date(d1));
              newrow.setIsAuditVisible(false);
              newrow.setAudFlg(new Number(0));
              if (StringUtils.isNotBlank(pobjContractId))
              {
                newrow.setObjCtrcId(new Number(pobjContractId));
              }
              ctrcreftvo.insertRow(newrow);
            }
            catch (SQLException sqle)
            {
              if (_logger.isLoggable(Level.FINEST))
              {
                raiseSNIJboException("JBO_NUMBER_ERROR", sqle);
                _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                             "JBO_NUMBER_ERROR", sqle);
              }
            }
          }
          else
          {
            inActvCtrcPresesent = true;
          }
        }
      }

      if (inActvCtrcPresesent)
      {
        try
        {
          throw new JboWarning(Class.forName(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES),
                               IRCTRateCompanyConstants.INACV_CTRC_NO_ADD,
                               new Object[]
              { });
        }
        catch (ClassNotFoundException cnfe)
        {
          if (_logger.isLoggable(Level.SEVERE))
          {
            _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                         cnfe.getMessage());
          }
        }
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  public boolean processContractReferences(List pcontractIds,
                                           String pobjContractId)
  {
    String lMethodName = "processContractReferences(List,String)";
    _logger.entering(CLAZZ_NAME, lMethodName, pobjContractId);
    boolean result = saveDocument();
    if (result)
    {
      DocVOImpl vo = getDocVO();
      DocVORowImpl voRow = (DocVORowImpl) vo.getCurrentRow();
      Number docId = voRow.getDocId();

      ContractReferenceVOImpl ctrcRefVO = getContractReferenceVO();
      ctrcRefVO.setBindCtrcId(null);
      ctrcRefVO.setBindObjCd(null);
      try
      {
        ctrcRefVO.setBindObjCtrcId(new Number(pobjContractId));
      }
      catch (SQLException sqle)
      {
        if (_logger.isLoggable(Level.FINEST))
        {
          _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                       sqle.getMessage());
        }
      }
      ctrcRefVO.setBindObjId(docId == null? null: docId.toString());
      ctrcRefVO.setBindCtrcRefId(null);
      ctrcRefVO.executeQuery();

      while (ctrcRefVO.hasNext())
      {
        ContractReferenceVORowImpl ctrcRefVORow =
          (ContractReferenceVORowImpl) ctrcRefVO.next();
        ctrcRefVORow.remove();
      }

      ContractReferenceTRVOImpl ctrcreftvo = getContractReferenceTRVO();
      RowSetIterator ctrcRefItr = ctrcreftvo.createRowSetIterator(null);

      while (ctrcRefItr.hasNext())
      {
        ContractReferenceTRVORowImpl ctrcRefTvoRow =
          (ContractReferenceTRVORowImpl) ctrcRefItr.next();
        ContractReferenceVORowImpl newctrcRefrow =
          (ContractReferenceVORowImpl) ctrcRefVO.createRow();

        if (ctrcRefTvoRow.getCtrcRefId().equals(ctrcRefTvoRow.getCtrcId()))
        {
          Number prMsgSeq =
            getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ);
          newctrcRefrow.setCtrcRefId(prMsgSeq);
        }
        else
        {
          newctrcRefrow.setCtrcRefId(ctrcRefTvoRow.getCtrcRefId());
        }

        Number noteid = getNoteIdForPubNotesForCtrcRef(ctrcRefTvoRow);

        saveAuditInfo();

        newctrcRefrow.setObjId(ctrcRefTvoRow.getObjId() == null? docId:
                               ctrcRefTvoRow.getObjId());
        newctrcRefrow.setCtrcId(ctrcRefTvoRow.getCtrcId());
        newctrcRefrow.setBusId(ctrcRefTvoRow.getBusId());
        newctrcRefrow.setCpyId(ctrcRefTvoRow.getCpyId());
        newctrcRefrow.setObjCd(ctrcRefTvoRow.getObjCd());
        newctrcRefrow.setObjCtrcId(ctrcRefTvoRow.getObjCtrcId());
        newctrcRefrow.setRefRuleCd(ctrcRefTvoRow.getRefRuleCd());
        newctrcRefrow.setPblshDrctvCd(ctrcRefTvoRow.getPblshDrctvCd());
        newctrcRefrow.setPrcdnNum(ctrcRefTvoRow.getPrcdnNum());
        newctrcRefrow.setAudFlg(ctrcRefTvoRow.getAudFlg());
        newctrcRefrow.setAffCtrcInd(new oracle.jbo.domain.Number(0));
        newctrcRefrow.setCtrcRefEffDt(ctrcRefTvoRow.getCtrcRefEffDt());
        newctrcRefrow.setCtrcRefExprDt(ctrcRefTvoRow.getCtrcRefExpDt());
        newctrcRefrow.setNoteId(noteid);

        ctrcRefVO.insertRow(newctrcRefrow);
      }

      ctrcRefItr.closeRowSetIterator();
      //Add Code for Doc Tmpl
      getIRCTRateCompanyServiceHelper().savePublicationTemplate(docId,
                                                                voRow.getCpyId(),
                                                                voRow.getBusId());
      String advOption = "";
      if (voRow.getDigsAdvDistVal() != null)
      {
        advOption = voRow.getDigsAdvDistVal();
        String distAdvoption = voRow.getDigsAdvDistVal();
        if (distAdvoption.indexOf("Advanced:") > -1)
        {
          int index = distAdvoption.indexOf("Advanced:");
          distAdvoption =
              distAdvoption.substring(index + 9, distAdvoption.length());
          voRow.setDigsAdvDistVal(distAdvoption);
        }
        else
          voRow.setDigsAdvDistVal("");
      }

      performDatabaseCommit();
      if (StringUtils.isNotBlank(advOption))
        voRow.setDigsAdvDistVal(advOption);
      setUpRatingCompanyForUser(null, null);
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return result;
  }

  /**
   * Method to add/modify/delete pub note row for a contract reference of a document
   * @param ctrcRefTvoRow
   * @return
   */
  private Number getNoteIdForPubNotesForCtrcRef(ContractReferenceTRVORowImpl ctrcRefTvoRow)
  {
    String lMethodName =
      "getNoteIdForPubNotesForCtrcRef(ContractReferenceTRVORowImpl)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    Number noteId = null;
    PubNotesTRVOImpl pubnotetvo = getPubNotesTRVO();
    RowSetIterator rs = pubnotetvo.createRowSetIterator(null);
    Number ctrcId = ctrcRefTvoRow.getCtrcId();
    PubNotesTRVORowImpl pubnoteRow = null;

    while (rs.hasNext())
    {
      PubNotesTRVORowImpl pubNoteTRVORow = (PubNotesTRVORowImpl) rs.next();

      if (pubNoteTRVORow.getCtrcId().toString().equals(ctrcId.toString()) &&
          ctrcRefTvoRow.getPubnoteflag() != null &&
          ctrcRefTvoRow.getPubnoteflag())
      {
        pubnoteRow = pubNoteTRVORow;
      }
    }

    if (pubnoteRow != null)
    {
      noteId = ctrcRefTvoRow.getNoteId();
      if (IRCTRateCompanyConstants.PBTX.equals(ctrcRefTvoRow.getPblshDrctvCd()) &&
          noteId == null)
      {
        String pubnotes = String.valueOf(pubnoteRow.getNoteTxt());
        noteId = saveIrctNotes(pubnotes);
      }
      else if (IRCTRateCompanyConstants.PBTX.equals(ctrcRefTvoRow.getPblshDrctvCd()) &&
               noteId != null)
      {
        modifyIrctNotes(noteId, String.valueOf(pubnoteRow.getNoteTxt()));
      }
      else
      {
        pubnoteRow.remove();
        deleteIrctNotes(noteId);
        noteId = null;
      }
    }
    else if (ctrcRefTvoRow.getNoteId() != null)
    {
      deleteIrctNotes(ctrcRefTvoRow.getNoteId());
      noteId = null;
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);

    return noteId;
  }


  // this method will first delete the existing preselected user contracts
  // from the usr_ctrc table then add the ones chosen from the shuttle to usr_ctrc table
  // update the usr_pref info
  // update the companid session data

  public void processContractsFromUserSelection(List pcontractIds,
                                                String pcompanyId)
  {
    String lMethodName = "processContractsFromUserSelection(List,String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pcompanyId });
    String pusrId = getLoggedInUserID(); // get the logged in user id
    getIRCTRateCompanyServiceHelper().deleteExistingUsrContracts(pusrId); // now delete the records connected with the usr_id
    addUsrContractsForAUser(pusrId,
                            pcontractIds); // now add the records to usr_ctrc table based on the contractids
    if (StringUtils.isBlank(pcompanyId))
    {
      pcompanyId = IRCTRateCompanyConstants.NO_COMPANY;
    }
    String pbusId = getBusinessID(); // get the business id
    getIRCTRateCompanyServiceHelper().updateUsrPrefInfo(pusrId, pcompanyId,
                                                        pbusId); // and update the info cur_cpy_id for the user in usr_pref table
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * This method gets invoked from Contract Search screen by clicking on "Save' button
   */
  public void processCompanyWithNoContracts()
  {

    ContractSearchForContractMaintROVOImpl contractSearchVO =
      getContractSearchForContractMaintROVO();
    String pcompanyId = contractSearchVO.getBindcpyid();

    contractSearchVO.setBindExtId(null);
    contractSearchVO.setBindctrcdesc(null);
    contractSearchVO.setBindctrcscddesc(null);
    contractSearchVO.setBindctrcstatus(null);
    contractSearchVO.setBindctrctype(null);
    // Added new ROVO bind variables on Contract Search screen as View criteria is not going to be used anymore for defect # 00030261
    // contractSearchVO.setApplyViewCriteriaName("ContractSearchROVOCriteria");
    contractSearchVO.executeQuery();
    String pusrId = getLoggedInUserID();
    Number usrPrefId =
      getIRCTRateCompanyServiceHelper().getUsrPrefId(pusrId);
    UserContractsVOImpl existingUserCtrcsVo = getUserContractsVO();
    existingUserCtrcsVo.setBindUsrPrefId(usrPrefId);
    existingUserCtrcsVo.executeQuery();
    if (existingUserCtrcsVo.hasNext())
    {
      getIRCTRateCompanyServiceHelper().deleteExistingUsrContracts(pusrId);
      UserContractsVORowImpl r =
        (UserContractsVORowImpl) existingUserCtrcsVo.createRow();
      SequenceImpl prMsgSeq =
        new SequenceImpl(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ,
                         getDBTransaction());
      long seq = prMsgSeq.getSequenceNumber().longValue();
      r.setCtrcId(new Number(seq));
      r.setUsrPrefId(usrPrefId);
      performDatabaseCommit();
      String pbusId = getBusinessID();
      getIRCTRateCompanyServiceHelper().updateUsrPrefInfo(pusrId,
                                                          pcompanyId,
                                                          pbusId);
      RatingCompanyROVOImpl ratCpyView = getRatingCompanyROVO();
      ratCpyView.setBindBusinessID(pbusId);
      ratCpyView.setBindCompanyID(pcompanyId);
      Hashtable ht = getDBTransaction().getSession().getUserData();
      ht.put(IRCTRateCompanyConstants.CONTRACT_IDS, " ");
    }
    else
    {
      UserContractsVORowImpl r =
        (UserContractsVORowImpl) existingUserCtrcsVo.createRow();
      SequenceImpl prMsgSeq =
        new SequenceImpl(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ,
                         getDBTransaction());
      long seq = prMsgSeq.getSequenceNumber().longValue();
      r.setCtrcId(new Number(seq));
      r.setUsrPrefId(usrPrefId);
      performDatabaseCommit();
      String pbusId = getBusinessID();
      getIRCTRateCompanyServiceHelper().updateUsrPrefInfo(pusrId,
                                                          pcompanyId,
                                                          pbusId);
      RatingCompanyROVOImpl ratCpyView = getRatingCompanyROVO();
      ratCpyView.setBindBusinessID(pbusId);
      ratCpyView.setBindCompanyID(pcompanyId);
      Hashtable ht = getDBTransaction().getSession().getUserData();
      ht.put(IRCTRateCompanyConstants.CONTRACT_IDS, " ");
    }
  }


  private String getCompanyIDFromContract(String pcontractId)
  {

    String lMethodName = "getCompanyIDFromContract(String)";
    _logger.entering(CLAZZ_NAME, lMethodName, pcontractId);
    try
    {
      CompanyIdFromContractROVOImpl ctView =
        getCompanyIdInfoFromContract();
      ctView.setBindContractId(new Number(pcontractId));
      ctView.executeQuery();
      if (ctView.hasNext())
      {
        return ((CompanyIdFromContractROVORowImpl) ctView.next()).getCpyId();
      }
    }
    catch (SQLException e)
    {
      if (_logger.isLoggable(Level.FINEST))
      {
        _logger.logp(Level.FINEST, CLAZZ_NAME, "getCompanyIDFromContract",
                     "Error in identifying company id for contract " +
                     pcontractId);
      }

    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return null;
  }

  /**
   * Value change Listner for Qualification
   * @return
   */
  public void qualTypeChngLstnr()
  {
    String lMethodName = "qualTypeChngLstnr()";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { });

    RowSetIterator qsgIVOiter =
      getQualSetGroupItemVL().createRowSetIterator(null);
    qsgIVOiter.reset();

    while (qsgIVOiter.hasNext())
    {
      QualSetGroupItemVORowImpl row =
        (QualSetGroupItemVORowImpl) qsgIVOiter.next();
      qsgIVOiter.removeCurrentRow();
    }

    QualSetGrpDisplayTRVOImpl qDisPlayVO = getQualSetGrpDisplayTVO();
    qDisPlayVO.reset();
    qDisPlayVO.clearCache();
    //----  Setting no rows for QualItmMasterVO / QualGrpVO .

    QualItemMasterVOImpl qImVO = getQualItmMasterVO();
    QualGroupROVOImpl qgVO = getQualGroupROVO();
    getIRCTRateCompanyServiceHelper().getFilteredQIMasterVO(qImVO,
                                                            IRCTRateCompanyConstants.NULL,
                                                            IRCTRateCompanyConstants.NULL);
    getIRCTRateCompanyServiceHelper().getFilteredQGVO(qgVO,
                                                      IRCTRateCompanyConstants.NULL,
                                                      IRCTRateCompanyConstants.NULL);

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Search the Qualifications based on QualCd.
   * @return String
   */
  public String searchQualifications(String pQualCd)
  {
    String lMethodName = "searchQualifications(String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pQualCd });

    String wrnMsg = "";
    QualSetGroupVOImpl qsgVO = getQualSetGroupVL();
    QualSetGroupVORowImpl qsgRow = (QualSetGroupVORowImpl) qsgVO.first();

    QualItemMasterVOImpl qImVO = getQualItmMasterVO();
    QualGroupROVOImpl qgVO = getQualGroupROVO();

    getIRCTRateCompanyServiceHelper().getFilteredQGVO(qgVO,
                                                      qsgRow.getCpyId(),
                                                      pQualCd);
    getIRCTRateCompanyServiceHelper().getFilteredQIMasterVO(qImVO,
                                                            qsgRow.getCpyId(),
                                                            pQualCd);
    if (qImVO.getRowCount() <= 0 && qgVO.getRowCount() <= 0)
    {
      wrnMsg = IRCTRateCompanyConstants.NO_RESULT_FOUND;
      return wrnMsg;
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return wrnMsg;
  }


  /**
   * Method to remove groups from Qualification
   * @param keySet
   */
  public void removeQualSetGrpRecs(List keySet)
  {
    String lMethodName = "removeQualSetGrpRecs(keySet)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { keySet });

    QualSetGroupVOImpl qsgVO = getQualSetGroupVL();
    Key rowKey = null;

    for (int i = 0; i < keySet.size(); i++)
    {
      rowKey = (Key) keySet.get(i);
      QualSetGroupVORowImpl qsgRow =
        (QualSetGroupVORowImpl) qsgVO.getRow(rowKey);
      qsgVO.setCurrentRow(qsgRow);
      qsgVO.removeCurrentRow();
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Method to remove Qual Set Groups Items from Qualification
   * @param keySet
   */
  public String removeQualSetGrpItemsRecs(List keySet)
  {
    String lMethodName = "delRoundSelRows(List)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    QualSetGroupItemVOImpl qsgIVO = getQualSetGroupItemVL();
    String wrnMsg = "";
    if (qsgIVO.getRowCount() ==
        keySet.size()) //---- there should be atleast one non selected item in Qual Set Groups Items
    {
      wrnMsg = IRCTRateCompanyConstants.QUAL_SET_BLANK_ITEM_ERROR;
      return wrnMsg;
    }

    Key rowKey = null;

    for (int i = 0; i < keySet.size(); i++)
    {
      rowKey = (Key) keySet.get(i);
      QualSetGroupItemVORowImpl tVORow =
        (QualSetGroupItemVORowImpl) qsgIVO.getRow(rowKey);
      qsgIVO.setCurrentRow(tVORow);
      qsgIVO.removeCurrentRow();
    }

    removeDisplayGrps();

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return wrnMsg;
  }


  /**
   * this method checks for Duplication of Qual Item Master
   * @param pQualItmMstrId
   */
  public boolean checkForQualItemMaster(long pQualItmMstrId)
  {
    String lMethodName = "checkForQualItemMaster(long)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pQualItmMstrId });

    boolean isExist = false;
    StringBuffer errMsgString = new StringBuffer("");
    QualSetGroupItemVOImpl qSGIVO = getQualSetGroupItemVL();
    QualSetGroupVOImpl qsgVO = getQualSetGroupVL();

    QualSetGroupVORowImpl qsgRow =
      (QualSetGroupVORowImpl) qsgVO.getCurrentRow();

    for (int rowIndex = 0; rowIndex < qSGIVO.getRowCount(); rowIndex++)
    {
      QualSetGroupItemVORowImpl tempRow =
        (QualSetGroupItemVORowImpl) qSGIVO.getRowAtRangeIndex(rowIndex);
      if (tempRow.getQualItmMstrId().longValue() == pQualItmMstrId &&
          tempRow.getOprCd().equalsIgnoreCase(IRCTRateCompanyConstants.EQUAL))
      {
        isExist = true;
        IRCTCommonUtil.qualItemAddedValidation(errMsgString,
                                               tempRow.getQualItmMstrDesc());
      }
    }
    if (isExist)
    {
      throw new JboException(errMsgString.toString());
    }
    else
    {
      QualSetGroupItemVORowImpl qSGIRow =
        (QualSetGroupItemVORowImpl) qSGIVO.createRow();
      SequenceImpl prMsgSeq =
        new SequenceImpl(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ,
                         getDBTransaction());
      long seq = prMsgSeq.getSequenceNumber().longValue();
      qSGIRow.setOprCd(IRCTRateCompanyConstants.EQUAL);
      qSGIRow.setQualItmMstrId(new oracle.jbo.domain.Number(pQualItmMstrId));
      qSGIRow.setQualItmMstrDesc(getIRCTRateCompanyServiceHelper().getItemDesc(pQualItmMstrId +
                                                                               ""));
      qSGIRow.setQualSetGrpId(new oracle.jbo.domain.Number(qsgRow.getQualSetGrpId()));
      qSGIRow.setQualSetGrpitmId(new oracle.jbo.domain.Number(seq));
      qSGIRow.setItemGroupDescTran(IRCTRateCompanyConstants.NULL);
      qSGIVO.last();
      qSGIVO.insertRow(qSGIRow);
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return isExist;
  }

  /**
   * this method keeps the previously added items
   * @param
   */
  public void saveQualGrp()
  {
    String lMethodName = "saveQualGrp()";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { });
    RowSetIterator qsgIVOiter =
      getQualSetGroupItemVL().createRowSetIterator(null);
    qsgIVOiter.reset();

    while (qsgIVOiter.hasNext())
    {
      QualSetGroupItemVORowImpl qsgiRow =
        (QualSetGroupItemVORowImpl) qsgIVOiter.next();
      Number qImId = qsgiRow.getQualItmMstrId();
      Row[] rows =
        qsgIVOiter.getFilteredRows(IRCTRateCompanyConstants.QUAL_ITM_MSTR_ID,
                                   qImId);
      if (rows.length > 1)
      {
        StringBuffer errMsgString = new StringBuffer("");
        errMsgString =
            getIRCTRateCompanyServiceHelper().uniqueOprValidation(rows,
                                                                  errMsgString);
        if (errMsgString.length() > 1)
        {
          _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, null, "");
          throw new JboWarning(errMsgString.toString());
        }
      }
    }

    qsgIVOiter.reset();
    while (qsgIVOiter.hasNext())
    {
      QualSetGroupItemVORowImpl qsgiRow =
        (QualSetGroupItemVORowImpl) qsgIVOiter.next();

      if ((qsgiRow.getNewRowState() == Row.STATUS_NEW) ||
          (qsgiRow.getNewRowState() == Row.STATUS_INITIALIZED))
      {
        qsgiRow.setIsSave(true);
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * this method roll back the Audit Row for Eng /Qual
   * @param
   */
  public void rollBackAudit()
  {
    String lMethodName = "rollBackAudit()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    AuditVOImpl aVL = getAuditVO();
    AuditVORowImpl row = (AuditVORowImpl) aVL.getCurrentRow();
    if (row.getNewRowState() == Row.STATUS_NEW ||
        row.getNewRowState() == Row.STATUS_INITIALIZED)
    {
      row.remove();
    }
    else
    {
      row.refresh(Row.REFRESH_UNDO_CHANGES);
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * this method deletes the Audit Row for Eng / Qual
   * @param
   */
  public void deleteAudit(boolean pSave)
  {
    String lMethodName = "deleteAudit()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    AuditVOImpl aVL = getAuditVO();
    AuditVORowImpl row = (AuditVORowImpl) aVL.getCurrentRow();
    row.remove();

    QualificationVORowImpl qualRow =
      (QualificationVORowImpl) getQualificationVO().getCurrentRow();
    if (qualRow != null)
    {
      qualRow.setAudFlg(new Number(0));
    }

    CalcOprVORowImpl calcRow =
      (CalcOprVORowImpl) getCalcOprVO().getCurrentRow();
    if (calcRow != null)
    {
      calcRow.setAudFlg(new Number(0));
    }

    if (pSave)
    {
      getDBTransaction().commit();
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * this method Cancel the newely added items
   * @param
   */
  public void cancelQualGrp()
  {
    String lMethodName = "cancelQualGrp()";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { });

    getQualSetGroupItemVL().reset();
    RowSetIterator qsgIVOiter =
      getQualSetGroupItemVL().createRowSetIterator(null);
    while (qsgIVOiter.hasNext())
    {
      QualSetGroupItemVORowImpl qsgiRow =
        (QualSetGroupItemVORowImpl) qsgIVOiter.next();

      if ((qsgiRow.getNewRowState() == Row.STATUS_NEW ||
           qsgiRow.getNewRowState() == Row.STATUS_INITIALIZED) &&
          !(qsgiRow.getIsSave()))
      {
        qsgIVOiter.removeCurrentRow();
      }
    }

    QualSetGroupVOImpl qualSetGrpVO = getQualSetGroupVL();
    QualSetGroupVORowImpl qualSetGroupVORow =
      ((QualSetGroupVORowImpl) qualSetGrpVO.getCurrentRow());
    if (qualSetGroupVORow.getQualSetGroupItem().getRowCount() ==
        0) //----- In case when there is no Qual Item for current Qual Set Group...
    {
      qualSetGroupVORow.remove();
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * this method checks for Duplication of Qual Group
   * @param pQualGrpId, pQualGrpDesc
   */

  public boolean checkForQualGroup(long pQualGrpId, String pQualGrpDesc)
  {
    String lMethodName = "checkForQualGroup(long, String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pQualGrpId, pQualGrpDesc });

    boolean isExist = false;
    QualSetGroupItemVOImpl qsgIVO = getQualSetGroupItemVL();
    QualSetGroupVOImpl qsgVO = getQualSetGroupVL();
    QualItemMasterVOImpl qImVO = getQualItmMasterVO();

    QualSetGroupVORowImpl qsgRow =
      (QualSetGroupVORowImpl) qsgVO.getCurrentRow();

    QualGroupROVOImpl qgVO = getQualGroupROVO();
    RowIterator qgiItr = null;

    Key key = new Key(new Object[]
        { (pQualGrpId) });
    Row[] qualRows = qgVO.findByKey(key, 1);
    QualGroupROVORowImpl qualGroupRow = (QualGroupROVORowImpl) qualRows[0];
    qgiItr = qualGroupRow.getQualGroupItemRO();
    qgiItr.reset();

    QualGroupItemROVORowImpl qgiRow = null;
    QualSetGroupItemVORowImpl qsgiRow = null;

    RowSetIterator qsgiIter = qsgIVO.createRowSetIterator(null);

    qsgiIter.reset();

    List commonItems =
      new ArrayList();

    while (qgiItr.hasNext())
    {
      qgiRow = (QualGroupItemROVORowImpl) qgiItr.next();
      qsgiIter.reset();
      qgiRow.getQualGrpId();
      while (qsgiIter.hasNext())
      {
        qsgiRow = (QualSetGroupItemVORowImpl) qsgiIter.next();
        if ((qgiRow.getQualItmMstrId().longValue() ==
             qsgiRow.getQualItmMstrId().longValue()) &&
            (qgiRow.getOprCd().equalsIgnoreCase(qsgiRow.getOprCd())))
        {
          IRCTRateCompanyServiceHelper.QualTypHelperClass cmnObj =
            getIRCTRateCompanyServiceHelper().getQualTypClass();
          cmnObj.setId(qgiRow.getQualItmMstrId().longValue());
          cmnObj.setQualVal(qgiRow.getOprCd());

          commonItems.add(cmnObj);
        }
      }
    }

    List qgiItems =
      new ArrayList();
    IRCTRateCompanyServiceHelper.QualTypHelperClass cmnObj = null;
    IRCTRateCompanyServiceHelper.QualTypHelperClass tempObj = null;

    qgiItr.reset();

    while (qgiItr.hasNext()) //----- Group Items
    {
      qgiRow = (QualGroupItemROVORowImpl) qgiItr.next();
      qgiRow.getQualGrpId();
      cmnObj = getIRCTRateCompanyServiceHelper().getQualTypClass();
      cmnObj.setId(qgiRow.getQualItmMstrId().longValue());
      cmnObj.setQualVal(qgiRow.getOprCd());

      qgiItems.add(cmnObj);
    }

    Iterator qsgiDifferenceItr =
      qgiItems.iterator();
    Iterator commonItemsItr =
      commonItems.iterator();

    while (qsgiDifferenceItr.hasNext())
    {
      cmnObj = qsgiDifferenceItr.next();

      commonItemsItr = commonItems.iterator();

      while (commonItemsItr.hasNext())
      {
        tempObj = commonItemsItr.next();

        if (cmnObj.getId() == tempObj.getId() &&
            cmnObj.getQualVal().equalsIgnoreCase(tempObj.getQualVal()))
        {
          qsgiDifferenceItr.remove();
        }
      }
    }

    Row[] rows = null;
    qsgiDifferenceItr = qgiItems.iterator();
    while (qsgiDifferenceItr.hasNext())
    {
      cmnObj = qsgiDifferenceItr.next();
      long mstrId = cmnObj.getId();
      String opr = cmnObj.getQualVal();

      Object[] keyValue = new Object[1];
      keyValue[0] = new oracle.jbo.domain.Number(mstrId);

      rows = qImVO.findByKey(new Key(keyValue), -1);
      QualItemMasterVORowImpl mstrItmRows =
        (QualItemMasterVORowImpl) rows[0];

      QualSetGroupItemVORowImpl qSGIRow =
        (QualSetGroupItemVORowImpl) qsgIVO.createRow();
      SequenceImpl prMsgSeq =
        new SequenceImpl(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ,
                         getDBTransaction());
      long seq = prMsgSeq.getSequenceNumber().longValue();
      qSGIRow.setOprCd(opr);
      qSGIRow.setQualItmMstrId(mstrItmRows.getQualItmMstrId().getSequenceNumber());
      qSGIRow.setQualItmMstrDesc(mstrItmRows.getQualItmMstrDesc());
      qSGIRow.setQualSetGrpId(new oracle.jbo.domain.Number(qsgRow.getQualSetGrpId()));
      qSGIRow.setQualSetGrpitmId(new oracle.jbo.domain.Number(seq));
      qSGIRow.setItemGroupDescTran(pQualGrpDesc);
      qsgIVO.last();
      qsgIVO.insertRow(qSGIRow);
      qsgIVO.reset();
    }

    addDisplayGrps(pQualGrpId);

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return isExist;
  }

  public void addDisplayGrps(long pQualGrpId)
  {
    String lMethodName = "addDisplayGrps(long)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pQualGrpId });

    QualSetGrpDisplayTRVOImpl qDisPlayVO = getQualSetGrpDisplayTVO();
    RowSetIterator qgIter =
      getQualSetGrpDisplayTVO().createRowSetIterator(null);

    qgIter.reset();

    QualGroupROVOImpl qgVO = getQualGroupROVO();
    qgIter.reset();

    Set qdgSet = new HashSet();
    while (qgIter.hasNext())
    {
      QualSetGrpDisplayTRVORowImpl qsgdRow =
        (QualSetGrpDisplayTRVORowImpl) qgIter.next();
      qdgSet.add(qsgdRow.getQualGrpId().longValue());
    }

    qdgSet.add(pQualGrpId);

    qDisPlayVO.clearCache();
    Iterator qdgItr = qdgSet.iterator();
    Row[] rows = null;
    while (qdgItr.hasNext())
    {
      long grpId = (Long) qdgItr.next();
      Object[] keyValue = new Object[1];
      keyValue[0] = new oracle.jbo.domain.Number(grpId);
      rows = qgVO.findByKey(new Key(keyValue), -1);
      QualGroupROVORowImpl grpRows = (QualGroupROVORowImpl) rows[0];

      QualSetGrpDisplayTRVORowImpl qDisplayRow =
        (QualSetGrpDisplayTRVORowImpl) qDisPlayVO.createRow();
      qDisplayRow.setQualGrpDesc(grpRows.getQualGrpDesc());
      qDisplayRow.setQualGrpId(grpRows.getQualGrpId());
      qDisPlayVO.last();
      qDisPlayVO.insertRow(qDisplayRow);
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  public void removeDisplayGrps()
  {
    String lMethodName = "removeDisplayGrps()";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { });

    QualSetGroupItemVOImpl qsgIVO = getQualSetGroupItemVL();
    RowSetIterator qsgiIter = qsgIVO.createRowSetIterator(null);

    Set qsgiSet = new HashSet();
    qsgiIter.reset();
    while (qsgiIter.hasNext())
    {
      QualSetGroupItemVORowImpl qsgiRow =
        (QualSetGroupItemVORowImpl) qsgiIter.next();

      qsgiSet.add(qsgiRow.getQualItmMstrId().longValue() + "-" +
                  qsgiRow.getOprCd());
    }

    QualSetGrpDisplayTRVOImpl qDisPlayVO = getQualSetGrpDisplayTVO();
    QualGroupVOImpl qgVO = getQualGroupVO();
    RowSetIterator qgdIter =
      getQualSetGrpDisplayTVO().createRowSetIterator(null);
    Set qdgSet = new HashSet();

    qgdIter.reset();
    while (qgdIter.hasNext())
    {
      QualSetGrpDisplayTRVORowImpl qsgdRow =
        (QualSetGrpDisplayTRVORowImpl) qgdIter.next();
      qdgSet.add(qsgdRow.getQualGrpId().longValue());
    }

    qDisPlayVO.clearCache();

    Iterator qdgItr = qdgSet.iterator();
    Row[] rows = null;

    while (qdgItr.hasNext())
    {
      long grpId = (Long) qdgItr.next();
      Object[] keyValue = new Object[1];
      keyValue[0] = new oracle.jbo.domain.Number(grpId);
      rows = qgVO.findByKey(new Key(keyValue), -1);
      QualGroupVORowImpl qgRow = (QualGroupVORowImpl) rows[0];

      Set qgiSet = new HashSet();
      RowIterator qgiItr = (qgRow).getQualGroupItem();
      qgiItr.reset();

      while (qgiItr.hasNext())
      {
        QualGroupItemVORowImpl qgiRow =
          (QualGroupItemVORowImpl) qgiItr.next();
        qgiSet.add(qgiRow.getQualItmMstrId().longValue() + "-" +
                   qgiRow.getOprCd());
      }

      boolean isGrpExist = qsgiSet.containsAll(qgiSet);

      if (!isGrpExist)
      {
        qdgItr.remove();
      }
    }

    qdgItr = qdgSet.iterator();
    while (qdgItr.hasNext())
    {
      long grpId = (Long) qdgItr.next();
      Object[] keyValue = new Object[1];
      keyValue[0] = new oracle.jbo.domain.Number(grpId);
      rows = qgVO.findByKey(new Key(keyValue), -1);
      QualGroupVORowImpl grpRows = (QualGroupVORowImpl) rows[0];

      QualSetGrpDisplayTRVORowImpl qDisplayRow =
        (QualSetGrpDisplayTRVORowImpl) qDisPlayVO.createRow();
      qDisplayRow.setQualGrpDesc(grpRows.getQualGrpDesc());
      qDisplayRow.setQualGrpId(grpRows.getQualGrpId().getSequenceNumber());
      qDisPlayVO.last();
      qDisPlayVO.insertRow(qDisplayRow);
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Container's getter for RatingUOMTypeVA.
   * @return RatingUOMTypeVA
   */
  public SNIListOfValuesVOImpl getRatingUOMTypeVA()
  {
    return (SNIListOfValuesVOImpl) findViewObject("RatingUOMTypeVA");
  }

  /**
   * Container's getter for CalcOprTypVO.
   * @return CalcOprTypVO
   */
  public CalcOprTypVOImpl getCalcOprTypVO()
  {
    return (CalcOprTypVOImpl) findViewObject("CalcOprTypVO");
  }


  /**
   * Container's getter for CalcOprVO.
   * @return CalcOprVO
   */
  public CalcOprVOImpl getCalcOprVO()
  {
    return (CalcOprVOImpl) findViewObject("CalcOprVO");
  }


  /**
   * Container's getter for RatingEngineTypeLOV1.
   * @return RatingEngineTypeLOV1
   */
  public RatingEngineTypeLOVImpl getRatingEngineTypeLOV()
  {
    return (RatingEngineTypeLOVImpl) findViewObject("RatingEngineTypeLOV");
  }

  /**
   * Container's getter for RatingEngineTypeVO.
   * @return RatingEngineTypeVO
   */
  public RatingEngineTypeLOVImpl getRatingEngineTypeVO()
  {
    return (RatingEngineTypeLOVImpl) findViewObject("RatingEngineTypeVO");
  }

  /**
   * Container's getter for EngineEqualRuleLOVVA.
   * @return EngineEqualRuleLOVVA
   */
  public EngineEqualRuleLOVImpl getEngineEqualRuleLOV()
  {
    return (EngineEqualRuleLOVImpl) findViewObject("EngineEqualRuleLOV");
  }


  /**
   * Container's getter for RoundingTVO.
   * @return RoundingTVO
   */
  public RoundingTRVOImpl getRoundingTVO()
  {
    return (RoundingTRVOImpl) findViewObject("RoundingTVO");
  }

  /**
   * Container's getter for EqvUomCnvVL.
   * @return EqvUomCnvVL
   */
  public EqvUomCnvVOImpl getEqvUomCnvVL()
  {
    return (EqvUomCnvVOImpl) findViewObject("EqvUomCnvVL");
  }

  /**
   * Container's getter for EqvUomCnvForCalcOprVL1.
   * @return EqvUomCnvForCalcOprVL1
   */
  public ViewLinkImpl getEqvUomCnvForCalcOprVL1()
  {
    return (ViewLinkImpl) findViewLink("EqvUomCnvForCalcOprVL1");
  }

  /**
   * Container's getter for LtlFrtClaMap1.
   * @return LtlFrtClaMap1
   */
  public LtlFrtClaMapVOImpl getLtlFrtClaMapVL()
  {
    return (LtlFrtClaMapVOImpl) findViewObject("LtlFrtClaMapVL");
  }

  /**
   * Container's getter for ltlFrtClaMapForCalcOprVL1.
   * @return ltlFrtClaMapForCalcOprVL1
   */
  public ViewLinkImpl getltlFrtClaMapForCalcOprVL1()
  {
    return (ViewLinkImpl) findViewLink("ltlFrtClaMapForCalcOprVL1");
  }

  /**
   * Container's getter for RoundingRuleLOVVA.
   * @return RoundingRuleLOVVA
   */
  public RoundingRuleLOVImpl getRoundingRuleLOV()
  {
    return (RoundingRuleLOVImpl) findViewObject("RoundingRuleLOV");
  }

  /**
   * Container's getter for RndRule1.
   * @return RndRule1
   */
  public RndRuleVOImpl getRndRuleVL()
  {
    return (RndRuleVOImpl) findViewObject("RndRuleVL");
  }

  /**
   * Container's getter for RandRuleForCalcOprVL1.
   * @return RandRuleForCalcOprVL1
   */
  public ViewLinkImpl getRandRuleForCalcOprVL1()
  {
    return (ViewLinkImpl) findViewLink("RandRuleForCalcOprVL1");
  }

  /**
   * Container's getter for EngineTypFrCalcOprROVO.
   * @return EngineTypFrCalcOprROVO
   */
  public EngineTypFrCalcOprROVOImpl getEngineTypFrCalcOprROVO()
  {
    return (EngineTypFrCalcOprROVOImpl) findViewObject("EngineTypFrCalcOprROVO");
  }


  /**
   * Container's getter for PblRptGrpVO.
   * @return PblRptGrpVO
   */
  public PblRptGrpROVOImpl getPblRptGrpVO()
  {
    return (PblRptGrpROVOImpl) findViewObject("PblRptGrpVO");
  }

  /**
   * This method persists the data into database.
   * @return
   */
  public boolean performDatabaseCommit()
  {
    String lMethodName = "performDatabaseCommit()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    boolean isSaved = true;
    try
    {
      getDBTransaction().commit();
    }
    catch (Exception ex)
    {
      isSaved = false;
      //      if (_logger.isLoggable(Level.FINEST))
      //      {
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                   " Exception while updating to the database", ex);
      //      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return isSaved;
  }

  /**
   * Container's getter for DocVO.
   * @return DocVO
   */
  public DocVOImpl getDocVO()
  {
    return (DocVOImpl) findViewObject("DocVO");
  }

  /**
   * Container's getter for BtchSumVO.
   * @return BtchSumVOImpl
   */
  public BtchSumVOImpl getBtchSumVO()
  {
    return (BtchSumVOImpl) findViewObject("BtchSumVO");
  }

  /**
   * Container's getter for BtchDtlVO.
   * @return BtchDtlVOImpl
   */
  public BtchDtlVOImpl getBtchDtlVO()
  {
    return (BtchDtlVOImpl) findViewObject("BtchDtlVO");
  }

  /**
   * Container's getter for BtchDtlForBtchSum.
   * @return BtchDtlForBtchSum
   */
  public ViewLinkImpl getBtchDtlForBtchSum()
  {
    return (ViewLinkImpl) findViewLink("BtchDtlForBtchSum");
  }

  /**
   * Container's getter for BtchRsltForBtchDtl.
   * @return BtchRsltForBtchDtl
   */
  public ViewLinkImpl getBtchRsltForBtchDtl()
  {
    return (ViewLinkImpl) findViewLink("BtchRsltForBtchDtl");
  }


  /**
   * Container's getter for BtchDtlCtntForBtchDtl.
   * @return BtchDtlCtntForBtchDtl
   */
  public ViewLinkImpl getBtchDtlCtntForBtchDtl()
  {
    return (ViewLinkImpl) findViewLink("BtchDtlCtntForBtchDtl");
  }


  /**
   * Container's getter for BtchDtlCtntVO.
   * @return BtchDtlCtntVO
   */
  public BtchDtlCtntVOImpl getBtchDtlCtntVO()
  {
    return (BtchDtlCtntVOImpl) findViewObject("BtchDtlCtntVO");
  }


  /**
   * Container's getter for UserPreferenceVO.
   * @return UserPreferenceVO
   */
  public UserPreferenceVOImpl getUserPreferenceVO()
  {
    return (UserPreferenceVOImpl) findViewObject("UserPreferenceVO");
  }


  /**
   * Container's getter for CollectiveEnginesView.
   * @return CollectiveEnginesView
   */
  public CollectiveEngineROVOImpl getCollectiveEnginesViewROVO()
  {
    return (CollectiveEngineROVOImpl) findViewObject("CollectiveEnginesViewROVO");
  }


  private void addUsrContractsForAUser(String pusrId, List pcontractIds)
  {
    String lMethodName = "addUsrContractsForAUser(String , List)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pusrId });
    if (StringUtils.isNotBlank(pusrId) && pcontractIds != null &&
        pcontractIds.size() > 0)
    {
      // get the user pref id
      Number usrPrefId =
        getIRCTRateCompanyServiceHelper().getUsrPrefId(pusrId);
      UserContractsVOImpl existingUserCtrcsVo = getUserContractsVO();
      existingUserCtrcsVo.setBindUsrPrefId(usrPrefId);
      existingUserCtrcsVo.executeQuery();
      for (Iterator it = pcontractIds.iterator(); it.hasNext(); )
      {
        UserContractsVORowImpl r =
          (UserContractsVORowImpl) existingUserCtrcsVo.createRow();
        try
        {
          r.setCtrcId(new Number(it.next()));
        }
        catch (SQLException sqle)
        {
          if (_logger.isLoggable(Level.INFO))
          {
            _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                         "JBO_NUMBER_ERROR", sqle);
          }
        }
        r.setUsrPrefId(usrPrefId);
        performDatabaseCommit();
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * 1 - This method will check whether a Rating Company Exists for the logged in user with the preselected busiiness id
   * 2 - If no records for a Rating Company exists, it updates the existing user preference with the default of 'NO_COMPANY' and the preselected business id
   * 3 - It then deletes the existing user contracts.....
   *
   * @NOTE -> There is a record of 'NO_COMPANY' for all business groups   - and we wont have to append NO_COMPANY to the user's session data
   * Once the usr_pref table haas been updated to NO_COMPANY; the Contract Tree will automatically pick it up
   */
  public void setUpRatingCompanyForUser(String path, HashMap params)
  {
    String lMethodName = "setUpRatingCompanyForUser(String, HashMap)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { path, params });
    getIRCTRateCompanyServiceHelper().setUpRatingCompanyForUserHelper(path,
                                                                      params);
    _logger.exiting(CLAZZ_NAME, lMethodName);

  }


  public String getUsrPrefBusinessID(String pUsrId)
  {
    String methodName = "getUsrPrefBusinessID(usrId)";
    _logger.entering(CLAZZ_NAME, methodName, new Object[]
        { pUsrId });
    String busId = null;
    RowSetIterator iter = null;

    try
    {
      if (pUsrId != null && !pUsrId.equals(""))
      {
        UserPreferenceVOImpl usrPrefView = getUserPreferenceVO();
        usrPrefView.setbindUsrId(pUsrId);
        iter = usrPrefView.createRowSetIterator(null);
        iter.reset();
        if (iter.hasNext())
        {
          busId = ((UserPreferenceVORowImpl) iter.next()).getCurBusId();
        }
      }
    }
    finally
    {
      if (iter != null)
      {
        iter.closeRowSetIterator();
      }
    }

    _logger.exiting(CLAZZ_NAME, methodName);
    return busId;
  }


  /**
   * Container's getter for CompanyIdFromContract.
   * @return CompanyIdFromContract
   */
  public CompanyIdFromContractROVOImpl getCompanyIdInfoFromContract()
  {
    return (CompanyIdFromContractROVOImpl) findViewObject("CompanyIdInfoFromContract");
  }

  /**
   * Method to add Contract to Engine
   * @param pSelectedContId, pParentContId
   */
  public boolean addContractReferenceFrEng(Number pSelectedContId,
                                           Number pParentContId)
  {
    String lMethodName = "addContractReferenceFrEng(Number, Number)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pSelectedContId, pParentContId });

    StringBuffer errMsgString = new StringBuffer("");
    boolean refCheck = true;
    IRCTCommonUtil.selectedBlankContractValidation(errMsgString,
                                                   pSelectedContId.toString());

    if (errMsgString.length() > 0)
    {
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, null, "");
      throw new JboWarning(errMsgString.toString());
    }

    CalcOprVORowImpl coRow =
      (CalcOprVORowImpl) getCalcOprVO().getCurrentRow();

    coRow.createContRefRow(pSelectedContId, pParentContId);
    RowIterator contRef = coRow.getContractRefWithDesc();

    ContractRefWithDescVORowImpl contRefRow =
      (ContractRefWithDescVORowImpl) contRef.first();

    refCheck =
        getIRCTRateCompanyServiceHelper().validateSelfReference(contRefRow);

    if (!refCheck)
    {
      contRef.first().remove();
      raiseSNIJboException(IRCTRateCompanyConstants.CTRC_SELF_REF,
                           new Object[]
          { });

      return refCheck;
    }

    refCheck =
        getIRCTRateCompanyServiceHelper().validateCircularReference(contRefRow);
    if (!refCheck)
    {
      contRef.first().remove();
      raiseSNIJboException(IRCTRateCompanyConstants.CIRC_REF_OCCUR,
                           new Object[]
          { });

      return refCheck;
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return refCheck;
  }


  /**
   * Method to save the editView Engine Call
   * @param pAutoCalPre
   */

  public void editViewSaveEngine(boolean pAutoCalPre)
  {

    String lMethodName = "editViewSaveEngine(boolean)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pAutoCalPre });
    String linkText = null;
    StringBuffer errMsgString = new StringBuffer("");

    CalcOprTypVOImpl coTypeVO = getCalcOprTypVO();
    CalcOprTypVORowImpl calTyprow = (CalcOprTypVORowImpl) coTypeVO.first();

    CalcOprVOImpl coVO = getCalcOprVO();
    CalcOprVORowImpl coRow = (CalcOprVORowImpl) coVO.getCurrentRow();

    QualificationVOImpl qVO = getQualificationVO();
    qVO.setBind_BUS_ID(coRow.getBusId());
    qVO.setBindQualId(coRow.getQualId());
    qVO.executeQuery();
    QualificationVORowImpl qualRow = (QualificationVORowImpl) qVO.first();

    if (qualRow.getStaCd().equalsIgnoreCase(IRCTRateCompanyConstants.ACTIVE))
    {
      coRow.setRvsCd(IRCTRateCompanyConstants.CHANGE);
    }

    coRow =
        commonValidationFrAllEngine(pAutoCalPre, calTyprow, coRow, errMsgString,
                                    linkText);
    if (errMsgString.length() > 1)
    {
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, null, "");
      throw new JboWarning(errMsgString.toString());
    }

    coRow = specialEngineCheck(calTyprow, coRow, errMsgString);
    //Added
    if (coRow.getCalcOprDesc().length() > 50)
    {
      errMsgString.append(StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                                  "DESC_TOO_LONG", null));
      errMsgString.append("\n");
    }
    //ENd

    if (errMsgString.length() > 1)
    {
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, null, "");
      throw new JboWarning(errMsgString.toString());
    }
    else
    {
      if (!performDatabaseCommit())
      {
        IRCTCommonUtil.generalDataBaseError(errMsgString);
        raiseValidationException(errMsgString.toString(), null);
      }
      else
      {
        getRoundingTVO().clearCache();
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * common Validation for All Engine
   * @param pAutoCalPre,calTyprow, coRow, errMsgString
   */

  public CalcOprVORowImpl commonValidationFrAllEngine(boolean pAutoCalPre,
                                                      CalcOprTypVORowImpl calTyprow,
                                                      CalcOprVORowImpl coRow,
                                                      StringBuffer errMsgString,
                                                      String linkText)
  {

    String lMethodName =
      "commonValidationFrAllEngine(boolean, CalcOprTypVORowImpl, CalcOprVORowImpl, StringBuffer)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pAutoCalPre, calTyprow, coRow, errMsgString });

    //------------------ In case Desc is blank ------------------
    if (StringUtils.isBlank(coRow.getCalcOprDesc()))
    {
      updateDescFrEngine();
    }

    // ------------------ get the EnginePrecedence ------------------
    double enginePrecedence = 0.0;

    if (pAutoCalPre)
    {
      enginePrecedence =
          getIRCTRateCompanyServiceHelper().enginePrecedence(calTyprow,
                                                             coRow);
    }
    else
    {
      if (coRow.getPrcdnNum() == null)
      {
        IRCTCommonUtil.PrecedenceBlank(errMsgString);
      }
      else
      {
        enginePrecedence = coRow.getPrcdnNum().longValue();
      }
    }
    try
    {
      coRow.setPrcdnNum(new Number(enginePrecedence));
    }
    catch (SQLException e)
    {
      if (_logger.isLoggable(Level.FINEST))
      {
        _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                     StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                             "CAN_NOT_COVERT_DOUBLE_TO_NUMBER",
                                             null), e.getMessage());
      }
    }
    int duplicateRows =
      getIRCTRateCompanyServiceHelper().checkDuplicatePrec(enginePrecedence,
                                                           coRow.getPrntCalcOprId(),
                                                           coRow.getCalcOprTypId(),
                                                           coRow.getQualId(),
                                                           coRow.getDocCtntSubCd(),
                                                           linkText,
                                                           coRow.getCalcOprId());

    if (duplicateRows > 0)
    {

      IRCTCommonUtil.xAK1CALC_OPRConstraintError(errMsgString);
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return coRow;

  }

  /**
   * Container's getter for ServiceTypeDescRO.
   * @return ServiceTypeDescRO
   */
  public ServiceTypeDescROVOImpl getServiceTypeDescRO()
  {
    return (ServiceTypeDescROVOImpl) findViewObject("ServiceTypeDescRO");
  }

  /**
   * Container's getter for ContractSearchForContractMaintROVO.
   * @return ContractSearchForContractMaintROVO
   */
  public ContractSearchForContractMaintROVOImpl getContractSearchForContractMaintROVO()
  {
    return (ContractSearchForContractMaintROVOImpl) findViewObject("ContractSearchForContractMaintROVO");
  }

  /**
   * Container's getter for CompanyIdForContractSearch.
   * @return CompanyIdForContractSearch
   */
  public CompanyIdLOVImpl getCompanyIdForContractSearch()
  {
    return (CompanyIdLOVImpl) findViewObject("CompanyIdForContractSearch");
  }

  /**
   * Container's getter for CtrcDoc.
   * @return CtrcDoc
   */
  public CtrcDocVOImpl getCtrcDoc()
  {
    return (CtrcDocVOImpl) findViewObject("CtrcDoc");
  }

  /**
   * Container's getter for ContractSearchCriteriaTRVO.
   * @return ContractSearchCriteriaTRVO
   */
  public ContractSearchCriteriaTRVOImpl getContractSearchCriteriaTRVO()
  {
    return (ContractSearchCriteriaTRVOImpl) findViewObject("ContractSearchCriteriaTRVO");
  }

  /**
   * Container's getter for OrdPblRptGrpByPrcdNumROVO.
   * @return OrdPblRptGrpByPrcdNumROVO
   */
  public OrdPblRptGrpByPrcdNumROVOImpl getOrdPblRptGrpByPrcdNumROVO()
  {
    return (OrdPblRptGrpByPrcdNumROVOImpl) findViewObject("OrdPblRptGrpByPrcdNumROVO");
  }

  /**
   * Container's getter for PubBtchDtlCtnt.
   * @return PubBtchDtlCtnt
   */
  public PubBtchDtlCtntVOImpl getPubBtchDtlCtnt()
  {
    return (PubBtchDtlCtntVOImpl) findViewObject("PubBtchDtlCtnt");
  }

  /**
   * Container's getter for BtchRsltROVO.
   * @return BtchRsltROVO
   */
  public BtchRsltROVOImpl getBtchRsltROVO()
  {
    return (BtchRsltROVOImpl) findViewObject("BtchRsltROVO");
  }


  private static class FrtComparator
    implements Comparator
  {
    public int compare(FreightClassDTO fromfrtClass1,
                       FreightClassDTO fromfrtClass2)
    {
      Number fromClass1 = fromfrtClass1.getFromFrtClass();
      Number fromClass2 = fromfrtClass2.getFromFrtClass();
      return fromClass1.compareTo(fromClass2);
    }
  }

  /**
   * Method to check the validation for some different Engine
   * @param calTyprow, coRow, errMsgString
   */

  public CalcOprVORowImpl specialEngineCheck(CalcOprTypVORowImpl calTyprow,
                                             CalcOprVORowImpl coRow,
                                             StringBuffer errMsgString)
  {
    String lMethodName =
      "specialEngineCheck(CalcOprTypVORowImpl, CalcOprVORowImpl, StringBuffer)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { calTyprow, coRow, errMsgString });

    if (calTyprow.getCalcOprCd().equalsIgnoreCase(IRCTRateCompanyConstants.EQUIVALENCY_SEELCTIVE))
    {
      IRCTCommonUtil.conversionRuleMissing(coRow, errMsgString);
      RowIterator eqvUm = coRow.getEqvUomCnv();
      while (eqvUm.hasNext())
      {
        EqvUomCnvVORowImpl getRow = (EqvUomCnvVORowImpl) eqvUm.next();
        IRCTCommonUtil.valueMissingFromUnitOfMeasure(getRow, errMsgString);
        IRCTCommonUtil.valueMissingToUnitOfMeasure(getRow, errMsgString);
        IRCTCommonUtil.valueMissingFromValue(getRow, errMsgString);
        IRCTCommonUtil.valueMissingToValue(getRow, errMsgString);
        if (errMsgString.length() > 0)
        {
          return coRow;
        }
      }
    }
    else if (calTyprow.getCalcOprCd().equalsIgnoreCase(IRCTRateCompanyConstants.FREIGHT_CLASS_MAPPING_SELECTIVE))
    {
      FreightClsMappingsTRVOImpl fcmTRVO = getFreightClsMappingsTRVO();

      // ------- Overlap Validation -------------------

      List frtClassArray =
        new ArrayList();

      RowSetIterator fcmIter = fcmTRVO.createRowSetIterator(null);

      while (fcmIter.hasNext())
      {
        FreightClsMappingsTRVORowImpl getRow =
          (FreightClsMappingsTRVORowImpl) fcmIter.next();
        FreightClassDTO fClass = new FreightClassDTO();
        fClass.setFromFrtClass(getRow.getFromFreightClass());
        fClass.setToFrtClass(getRow.getToFreightClass());
        frtClassArray.add(fClass);
      }
      Collections.sort(frtClassArray, new FrtComparator());

      label:
      for (int i = 0; i < frtClassArray.size(); i++)
      {
        int ifrom = frtClassArray.get(i).getFromFrtClass().intValue();
        int iTo = frtClassArray.get(i).getToFrtClass().intValue();

        if (iTo < ifrom)
        {
          errMsgString.append(StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                                      "LWR_FRT_CLS_MST_LSS_THN_OR_EQL_TO_UPR",
                                                      null));
          errMsgString.append("\n");
        }
        else
        {
          for (int j = i + 1; j < frtClassArray.size(); j++)
          {
            int jfrom = frtClassArray.get(j).getFromFrtClass().intValue();
            int jTo = frtClassArray.get(j).getToFrtClass().intValue();
            if ((ifrom == jfrom) && (iTo == jTo))
            {
              errMsgString.append(StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                                          "FRT_CLS_OVERLAP",
                                                          null));
              errMsgString.append("\n");
              break label;
            }
            if ((ifrom < jfrom) && (iTo > jfrom))
            {
              errMsgString.append(StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                                          "FRT_CLS_OVERLAP",
                                                          null));
              errMsgString.append("\n");
              break label;
            }
          }
        }
      }

      //            errMsgString =
      //                getIRCTRateCompanyServiceHelper().frtClsMapsOverlapValidation(fcmTRVO,
      //                                                                              errMsgString);
      //
      //
      //            RowSetIterator fcmIter = fcmTRVO.createRowSetIterator(null);
      //            fcmIter.reset();
      //
      //            while (fcmIter.hasNext())
      //            {
      //              FreightClsMappingsTRVORowImpl getRow =
      //                (FreightClsMappingsTRVORowImpl) fcmIter.next();
      //          IRCTCommonUtil.lowerFrtClsMstLessOrEqualToUpper(getRow,
      //                                                              errMsgString);
      //              if (errMsgString.length() > 0)
      //              {
      //                return coRow;
      //              }
      //            }

      if (!(errMsgString.length() > 0))
      {
        RowIterator ltlFrtClaMap = coRow.getLtlFrtClaMap();

        while (ltlFrtClaMap.hasNext())
        {
          oracle.jbo.Row row = ltlFrtClaMap.next();
          row.remove();
        }
        fcmTRVO.setRangeSize(-1);
        fcmTRVO.setRangeStart(0);

        for (int i = 0; i < fcmTRVO.getEstimatedRowCount(); i++)
        {
          FreightClsMappingsTRVORowImpl fcmRow =
            (FreightClsMappingsTRVORowImpl) fcmTRVO.getRowAtRangeIndex(i);
          LtlFrtClaMapVORowImpl lfcRow =
            (LtlFrtClaMapVORowImpl) ltlFrtClaMap.createRow();
          lfcRow.setObjId(coRow.getCalcOprId());
          lfcRow.setObjCd(IRCTRateCompanyConstants.ENGN);
          lfcRow.setCpyId(coRow.getCpyId());
          lfcRow.setHighFrtClaNum(fcmRow.getToFreightClass());
          lfcRow.setLowFrtClaNum(fcmRow.getFromFreightClass());
          lfcRow.setMapToFrtClaNum(fcmRow.getMapToFreightClass());
          ltlFrtClaMap.insertRow(lfcRow);
        }
        //---------- clearing the Cache of Transient View Object
        //roundTRVO.clearCache();
      }
    }
    else if (calTyprow.getCalcOprCd().equalsIgnoreCase(IRCTRateCompanyConstants.CONTRACT_REFERENCE)) // --- Contract Reference will be handled later On
    {
    }
    else if (calTyprow.getCalcOprCd().equalsIgnoreCase(IRCTRateCompanyConstants.QUANTITY_LOOKUP_SELECTIVE)) // --- Contract Reference will be handled later On
    {
    }
    else if (calTyprow.getCalcOprCd().equalsIgnoreCase(IRCTRateCompanyConstants.DAY_QUANTITY_LOOKUP_SELECTIVE)) // --- Contract Reference will be handled later On
    {
      //      CommonUtils.routingGuideTypeValidation(coRow, errMsgString);
    }
    else if (calTyprow.getCalcOprCd().equalsIgnoreCase(IRCTRateCompanyConstants.ROUNDING_SELECTIVE))
    {
      RoundingTRVOImpl roundTRVO = getRoundingTVO();

      // -------- Row Validation -----------------------------------
      roundTRVO.setRangeSize(-1);
      roundTRVO.setRangeStart(0);
      for (int i = 0; i < roundTRVO.getEstimatedRowCount(); i++)
      {
        RoundingTRVORowImpl getRow =
          (RoundingTRVORowImpl) roundTRVO.getRowAtRangeIndex(i);
        errMsgString =
            IRCTCommonUtil.valueMissingUpTo(getRow, errMsgString);
        errMsgString =
            IRCTCommonUtil.valueMissingUnitOfMeasure(getRow, errMsgString);
        errMsgString = IRCTCommonUtil.valueMissingBy(getRow, errMsgString);
        if (errMsgString.length() > 0)
        {
          return coRow;
        }
      }

      // ------- Precedence Validation -------------------
      errMsgString =
          getIRCTRateCompanyServiceHelper().dupliPreceValidationFrRound(roundTRVO,
                                                                        errMsgString);
      if (!(errMsgString.length() > 0))
      {
        RowIterator rndRule = coRow.getRndRule1();

        while (rndRule.hasNext())
        {
          oracle.jbo.Row row = rndRule.next();
          row.remove();
        }
        roundTRVO.setRangeSize(-1);
        roundTRVO.setRangeStart(0);

        for (int i = 0; i < roundTRVO.getEstimatedRowCount(); i++)
        {
          RoundingTRVORowImpl rtRow =
            (RoundingTRVORowImpl) roundTRVO.getRowAtRangeIndex(i);
          RndRuleVORowImpl rndRow = (RndRuleVORowImpl) rndRule.createRow();
          rndRow.setCalcOprId(coRow.getCalcOprId());
          rndRow.setRndRuleCd(rtRow.getRule());
          rndRow.setTtnVal(rtRow.getBy());
          rndRow.setUomId(rtRow.getUnitOfMeasure());
          rndRow.setUptoVal(rtRow.getUpTo());
          rndRule.insertRow(rndRow);
        }
        //---------- clearing the Cache of Transient View Object
        //roundTRVO.clearCache();
      }
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return coRow;
  }


  /**
   *  Engine Publication Setup (overrideTemplateName)
   * @return
   */

  public void overrideTemplateName(String EngTyp)
  {
    String lMethodName = "overrideTemplateName()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    CalcOprVORowImpl coRow =
      (CalcOprVORowImpl) getCalcOprVO().getCurrentRow();

    RatePublicationLOVImpl set =
      (RatePublicationLOVImpl) coRow.getRatePublicationLOVVA();

    set.setbind_calc_opr_cd("BAND");
    set.executeQuery();

    //    coRow.setBindPubTmplID("BAND");
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Method to save Engine
   * @param pAutoCalPre, pSelectedContId, pParentContId, linkText
   */

  public void saveEngine(boolean pAutoCalPre, String pSelectedContId,
                         long pParentContId, String linkText)
  {
    String lMethodName = "saveEngine(boolean, String, long)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pAutoCalPre, pSelectedContId, pParentContId });

    StringBuffer errMsgString = new StringBuffer("");

    CalcOprVOImpl coVO = getCalcOprVO();
    CalcOprVORowImpl coRow = (CalcOprVORowImpl) coVO.getCurrentRow();

    CalcOprTypVOImpl coTypeVO = getCalcOprTypVO();
    CalcOprTypVORowImpl calTyprow = (CalcOprTypVORowImpl) coTypeVO.first();

    ServiceTypeROVOImpl stVO = getServiceTypeROVO();

    //        Validation for Same Service Type(DataType) / In Case of COLLECTIVE Engine
    //        In case of Add Engine from Qualification Link only
    // -------  In case of Document Type SRV, Service Type(DataType) would be displayed on page / In case of PRD it would be a Input box
    int duplicateRows = 0;
    //Added to set the Rtg_gde_pct_flg
    if (calTyprow.getDocCtntCd().equalsIgnoreCase(IRCTRateCompanyConstants.DOCUMENT_TYPE_RTNG))
    {
      if (StringUtils.equals(coRow.getRteGdeCd(), "PRTP"))
        coRow.setRtgGdePctFlg(new Number(1));
    }

    if (calTyprow.getDocCtntCd().equalsIgnoreCase(IRCTRateCompanyConstants.DOCUMENT_TYPE_SRV))
    {
      ServiceTypeROVORowImpl stRow =
        (ServiceTypeROVORowImpl) stVO.getCurrentRow();
      if (stRow != null && stRow.getSrvCd() != null)
      {
        coRow.setDocCtntSubCd(stRow.getSrvCd());
      }
      else
        coRow.setDocCtntSubCd(null);
      if (coRow.getPrntCalcOprId() == null)
      {
        duplicateRows =
            getIRCTRateCompanyServiceHelper().checkForSameServiceType(coRow.getQualId(),
                                                                      stRow,
                                                                      linkText);
      }
    }
    else if (calTyprow.getDocCtntCd().equalsIgnoreCase(IRCTRateCompanyConstants.DOCUMENT_TYPE_PRD))
    {
      if (coRow.getPrntCalcOprId() == null)
      {
        duplicateRows =
            getIRCTRateCompanyServiceHelper().checkForSameServiceType(coRow.getQualId(),
                                                                      coRow.getDocCtntSubCd(),
                                                                      linkText);
      }
    }
    else
    {
      if (coRow.getPrntCalcOprId() == null)
      {
        duplicateRows =
            getIRCTRateCompanyServiceHelper().checkForSameServiceType(coRow.getQualId(),
                                                                      coRow.getDocCtntSubCd(),
                                                                      linkText);
      }
    }
    if (duplicateRows > 0)
    {
      IRCTCommonUtil.cantAddSameDataType(errMsgString);
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, null, "");
      throw new JboWarning(errMsgString.toString());
    }

    coRow =
        commonValidationFrAllEngine(pAutoCalPre, calTyprow, coRow, errMsgString,
                                    linkText);
    if (errMsgString.length() > 1)
    {
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, null, "");
      throw new JboWarning(errMsgString.toString());
    }
    coRow = specialEngineCheck(calTyprow, coRow, errMsgString);

    if (errMsgString.length() > 1)
    {
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, null, "");
      throw new JboWarning(errMsgString.toString());
    }

    else
    {
      //--
      IRCTCommonUtil.preScaleChkForDesc(coRow, errMsgString);

      if (calTyprow.getPmEngSelBoolean()) //--
      {
        IRCTCommonUtil.mPGValidation(coRow, errMsgString);
        IRCTCommonUtil.triggerValidation(coRow, errMsgString);
        IRCTCommonUtil.mPGValidation(coRow, errMsgString);
        IRCTCommonUtil.adderValidation(coRow, errMsgString);
        IRCTCommonUtil.calcTypeValidation(coRow, errMsgString);
        IRCTCommonUtil.priceTypeValidation(coRow, errMsgString);
        IRCTCommonUtil.routeChoiceValidation(coRow, errMsgString);
      }
      if (calTyprow.getReqOriZoneBoolean()) //---
      {
        IRCTCommonUtil.oriTypeValidation(coRow, errMsgString);
      }
      if (calTyprow.getReqStpZoneBoolean()) //-----
      {
        IRCTCommonUtil.stopTypeValidation(coRow, errMsgString);
      }
      if (calTyprow.getReqDesZoneBoolean()) //----
      {
        IRCTCommonUtil.destTypeValidation(coRow, errMsgString);
      }
      if (calTyprow.getReqTrfBoolean()) //----
      {
        IRCTCommonUtil.tariffTypeValidation(coRow, errMsgString);
      }
      if (calTyprow.getReqTierCdBoolean()) //----
      {
        IRCTCommonUtil.tierTypeValidation(coRow, errMsgString);
      }
      if (calTyprow.getReqBandCdBoolean()) //----
      {
        IRCTCommonUtil.bandTypeValidation(coRow, errMsgString,
                                          calTyprow.getCalcOprCd());
        IRCTCommonUtil.bandUOMValidation(coRow, errMsgString,
                                         calTyprow.getCalcOprCd());
      }
      if (calTyprow.getReqBand2CdBoolean()) //----
      {
        IRCTCommonUtil.band2TypeValidation(coRow, errMsgString);
        IRCTCommonUtil.band2UOMValidation(coRow, errMsgString);
      }
      if (calTyprow.getReqTrnstCdBoolean()) //----
      {
        IRCTCommonUtil.transitTypeValidation(coRow, errMsgString);
      }
      if (calTyprow.getReqRteGdeCdBoolean()) //---
      {
        IRCTCommonUtil.routingGuideValidation(coRow, errMsgString);
      }
    }

    //------ Special check for transit OR routing type document
    //---- If user has selected Band type engine, put "DIND" default value for tire type (Even though it is not visible for User)....

    if (calTyprow.getDocCtntCd().equalsIgnoreCase(IRCTRateCompanyConstants.DOCUMENT_TYPE_RTNG) ||
        calTyprow.getDocCtntCd().equalsIgnoreCase(IRCTRateCompanyConstants.DOCUMENT_TYPE_TNST)) // Doc Type => TNST / RTNG
    {
      if (calTyprow.getReqBandCdBoolean()) //----
      {
        coRow.setTierCd("DIND");
      }
    }
    //Added
    if (coRow.getCalcOprDesc().length() > 50)
    {
      errMsgString.append(StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                                  "DESC_TOO_LONG", null));
      errMsgString.append("\n");
    }
    //ENd

    if (errMsgString.length() > 1)
    {
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, null, "");
      throw new JboWarning(errMsgString.toString());
    }
    else
    {
      //  Base Engine has to create a Data Group along with the Engine record When Doc data Type is RTNG (Routing Guide) && CreOprndFlg is true
      if ((calTyprow.getDocCtntCd().equalsIgnoreCase(IRCTRateCompanyConstants.DOCUMENT_TYPE_RTNG) &&
           (calTyprow.getCreOprndBoolean())))
      {
        DataGrpVOImpl dgVO = getDataGrpVO();
        getIRCTRateCompanyServiceHelper().createDataGroup(dgVO, coRow);
      }

      //--- In case of ADD_ENGINE_ABOVE... It may need two transactions.......
      if (linkText.equalsIgnoreCase(IRCTRateCompanyConstants.ADD_ENGINE_ABOVE))
      {
        coVO.reset();

        RowSetIterator coIter = coVO.createRowSetIterator(null);
        coIter.reset();
        CalcOprTRVORowImpl newTRow = null;
        CalcOprTRVOImpl coTrVO = getCalcOprTRVO();
        while (coIter.hasNext())
        {
          CalcOprVORowImpl newEngRow = (CalcOprVORowImpl) coIter.next();
          newTRow = (CalcOprTRVORowImpl) coTrVO.createRow();
          newTRow =
              getIRCTRateCompanyServiceHelper().setEngineTransientValue(newEngRow,
                                                                        newTRow);
          coTrVO.insertRow(newTRow);
        }
        coIter.closeRowSetIterator();
        coVO.first().remove(); //--- first would be New Row. We are saving the the Old row first (Caller Engine )

        if (!performDatabaseCommit())
        {
          _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                       StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                               "ERROR_FOR_CALLER_ENGINE",
                                               null), "");
          raiseValidationException(IRCTModelConstants.DATABASE_COMMIT_ERROR,
                                   null);
        }

        coTrVO.reset();

        coTrVO.setRangeStart(0);
        coTrVO.setRangeSize(-1);
        for (int i = 0; i < coTrVO.getRowCount(); i++)
        {
          if (i == 1) //------ second row New Engine
          {
            coRow = (CalcOprVORowImpl) coVO.createRow();
            newTRow = (CalcOprTRVORowImpl) coTrVO.getRowAtRangeIndex(i);

            coRow =
                getIRCTRateCompanyServiceHelper().setEngineValue(coRow, newTRow);

            coVO.insertRow(coRow);
          }
        }

        if (!performDatabaseCommit())
        {
          _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                       StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                               "ERROR_FOR_NEW_ENGINE",
                                               null), "");
          raiseValidationException(IRCTModelConstants.DATABASE_COMMIT_ERROR,
                                   null);
        }

      }
      else
      {
        if (!performDatabaseCommit())
        {
          raiseValidationException(IRCTModelConstants.DATABASE_COMMIT_ERROR,
                                   null);
        }
      }

    }
    _logger.exiting(CLAZZ_NAME, lMethodName);

  }


  public void cancelEngine()
  {
    String lMethodName = "cancelEngine()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    getDBTransaction().rollback();
    getRoundingTVO().clearCache();
    getFreightClsMappingsTRVO().clearCache();

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * This method is used to add Qual Group Record
   * @
   */
  public void addQualGrpRecord()
  {
    String lMethodName = "addQualGrpRecord()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    //----  Setting no rows for QualItmMasterVO / QualGrpVO . It allows the user to search QualificationType

    QualItemMasterVOImpl qImVO = getQualItmMasterVO();
    QualGroupROVOImpl qgVO = getQualGroupROVO();
    getIRCTRateCompanyServiceHelper().getFilteredQIMasterVO(qImVO,
                                                            IRCTRateCompanyConstants.NULL,
                                                            IRCTRateCompanyConstants.NULL);
    getIRCTRateCompanyServiceHelper().getFilteredQGVO(qgVO,
                                                      IRCTRateCompanyConstants.NULL,
                                                      IRCTRateCompanyConstants.NULL);

    QualificationVOImpl qVO = getQualificationVO();
    QualificationVORowImpl qRow = (QualificationVORowImpl) qVO.first();

    QualSetGroupVOImpl qsgVO = getQualSetGroupVL();
    QualSetGroupVORowImpl qsgRow =
      (QualSetGroupVORowImpl) qsgVO.createRow();

    Number prMsgSeq =
      getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ);

    qsgRow.setCpyId(qRow.getCpyId());
    qsgRow.setQualId(qRow.getQualId());
    qsgRow.setBusId(qRow.getBusId());
    qsgRow.setDocId(qRow.getDocId());
    qsgRow.setQualCd(null);
    qsgRow.setStaCd(IRCTRateCompanyConstants.NO_STATUS);
    qsgRow.setQualSetGrpId(prMsgSeq);

    if (qsgRow.getNewRowState() == Row.STATUS_NEW ||
        qsgRow.getNewRowState() == Row.STATUS_INITIALIZED)
    {
      qsgVO.setRangeStart(0);
      qsgVO.setRangeSize(-1);
      qsgVO.insertRowAtRangeIndex(0, qsgRow);
      qsgVO.setCurrentRow(qsgRow);
    }

    getQualSetGrpDisplayTVO().clearCache();

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * This method save the Qualification
   * @param
   */

  public void saveQual()
  {
    String lMethodName = "saveQual()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    QualificationVORowImpl qRow =
      (QualificationVORowImpl) (getQualificationVO().getCurrentRow());
    StringBuffer errMsgString = new StringBuffer("");
    errMsgString =
        IRCTCommonUtil.isEmply(errMsgString, qRow.getQualDesc(), qRow.getClass().toString());
    errMsgString =
        getIRCTRateCompanyServiceHelper().checkDuplicatePrec(qRow,
                                                             qRow.getPrcdnNum(),
                                                             errMsgString);
    errMsgString =
        getIRCTRateCompanyServiceHelper().checkDuplicateDesc(qRow,
                                                             qRow.getQualDesc(),
                                                             errMsgString);

    if (errMsgString.length() > 1)
    {
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, null, "");
      throw new JboWarning(errMsgString.toString());
    }
    if (qRow.getStaCd().equalsIgnoreCase(IRCTRateCompanyConstants.ACTIVE))
    {
      qRow.setRvsCd(IRCTRateCompanyConstants.CHANGE);
    }
    if (!performDatabaseCommit())
    {
      addWarningMessage(IRCTModelConstants.DATABASE_COMMIT_ERROR,
                        new Object[]
          { });

      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, null, "");
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * This method Initialize the Audit VO for Engine Or Qual
   * @param pAuditBelongsTo
   */
  public void loadAudit(String pAuditBelongsTo)
  {
    String lMethodName = "loadAudit(String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pAuditBelongsTo });

    if (pAuditBelongsTo.equalsIgnoreCase(IRCTRateCompanyConstants.ADDAUDIT_FR_ENG))
    {
      CalcOprVORowImpl coVORow =
        (CalcOprVORowImpl) getCalcOprVO().getCurrentRow();

      AuditVOImpl auditVO = getAuditVO();
      if (auditVO.getRowCount() == 0)
      {
        AuditVORowImpl aRow = (AuditVORowImpl) auditVO.createRow();
        aRow.setObjCd(IRCTRateCompanyConstants.ENGN);
        coVORow.setAudFlg(new oracle.jbo.domain.Number(1));
        aRow.setObjId(coVORow.getCalcOprId());
        aRow.setBusId(coVORow.getBusId());
        aRow.setCpyId(coVORow.getCpyId());
        aRow.setDocId(coVORow.getDocId());
        auditVO.insertRowAtRangeIndex(0, aRow);
        auditVO.setCurrentRow(aRow);
      }
    }
    else if (pAuditBelongsTo.equalsIgnoreCase(IRCTRateCompanyConstants.ADDAUDIT_FR_QUAL))
    {
      QualificationVORowImpl qRow =
        (QualificationVORowImpl) getQualificationVO().getCurrentRow();
      AuditVOImpl auditVO = getAuditVO();

      if (auditVO.getRowCount() == 0)
      {
        AuditVORowImpl aRow = (AuditVORowImpl) auditVO.createRow();
        aRow.setObjCd(IRCTRateCompanyConstants.QUAL);
        qRow.setAudFlg(new oracle.jbo.domain.Number(1));
        aRow.setObjId(qRow.getQualId());
        aRow.setBusId(qRow.getBusId());
        aRow.setCpyId(qRow.getCpyId());
        aRow.setDocId(qRow.getDocId());
        auditVO.insertRowAtRangeIndex(0, aRow);
        auditVO.setCurrentRow(aRow);
      }
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * This method Initialize the Audit VO
   * @param pCpId, pQualCd, pQualSetGrpId
   * @
   */
  public void filterdQualSetSelection(String pCpId, String pQualCd,
                                      String pQualSetGrpId)
  {
    String lMethodName = "filterdQualSetSelection(String, String, String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pCpId, pQualCd, pQualSetGrpId });

    QualSetGroupItemVOImpl qsgiVO = getQualSetGroupItemVL();
    qsgiVO.reset();
    while (qsgiVO.hasNext())
    {
      QualSetGroupItemVORowImpl row =
        (QualSetGroupItemVORowImpl) qsgiVO.next();
      if (row.getNewRowState() == Row.STATUS_NEW ||
          row.getNewRowState() == Row.STATUS_INITIALIZED)
      {
        row.setQualItmMstrDesc(getIRCTRateCompanyServiceHelper().getItemDesc(row.getQualItmMstrId() +
                                                                             ""));
      }
    }

    QualItemMasterVOImpl qImVO = getQualItmMasterVO();
    QualGroupROVOImpl qGVO = getQualGroupROVO();

    getIRCTRateCompanyServiceHelper().getFilteredQIMasterVO(qImVO, pCpId,
                                                            pQualCd);
    getIRCTRateCompanyServiceHelper().getFilteredQGVO(qGVO, pCpId,
                                                      pQualCd);
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Container's getter for CalcOprSearchVO.
   * @return CalcOprSearchVO
   */
  public CalcOprVOImpl getCalcOprSearchVO()
  {
    return (CalcOprVOImpl) findViewObject("CalcOprSearchVO");
  }

  /**
   * Container's getter for RateBandType.
   * @return RateBandType
   */
  public SNIListOfValuesVOImpl getRateBandTypeLOV()
  {
    return (SNIListOfValuesVOImpl) findViewObject("RateBandTypeLOV");
  }

  /**
   * Container's getter for NoteTxtFrCalcOprVL.
   * @return NoteTxtFrCalcOprVL
   */
  public ViewLinkImpl getNoteTxtFrCalcOprVL()
  {
    return (ViewLinkImpl) findViewLink("NoteTxtFrCalcOprVL");
  }


  /**
   * This method returns the Next Sequence Number based on provided sequence name
   * @param pSequenceName
   * @return
   */
  public Number getNextSequenceNumber(String pSequenceName)
  {
    String lMethodName = "getNextSequenceNumber(String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pSequenceName });
    SequenceImpl seqNum =
      new SequenceImpl(pSequenceName, getDBTransaction());
    if (seqNum != null)
      return seqNum.getSequenceNumber();

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return null;

  }

  /**
   *
   *Method for Add and Edit Data Group Screen
   */


  public void addEditDataGroup(Map pContractTreeData)
  {
    String lMethodName = "addEditDataGroup()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    long stTime = System.currentTimeMillis();
    long calcOprndGrpId = 0;
    long noteID = 0;
    String busId = getBusinessID();
    String docId = "";
    String dataGrpId = "";
    String cpyId = "";
    String link = "";
    String baseEngID = "";
    String docDesc = "";
    String contractTreePath = "";
    //Number bindNoteId = 0;

    if (pContractTreeData != null)

    {
      if (pContractTreeData.containsKey(IRCTRateCompanyConstants.DOC_ID))
        docId =
            String.valueOf(pContractTreeData.get(IRCTRateCompanyConstants.DOC_ID));

      if (pContractTreeData.containsKey(IRCTRateCompanyConstants.DATA_GROUP_ID))
        dataGrpId =
            String.valueOf(pContractTreeData.get(IRCTRateCompanyConstants.DATA_GROUP_ID));

      if (pContractTreeData.containsKey(IRCTRateCompanyConstants.CPY_ID))
        cpyId =
            String.valueOf(pContractTreeData.get(IRCTRateCompanyConstants.CPY_ID));

      if (pContractTreeData.containsKey(IRCTRateCompanyConstants.ENGINE_ID))
        baseEngID =
            String.valueOf(pContractTreeData.get(IRCTRateCompanyConstants.ENGINE_ID));


      if (pContractTreeData.containsKey(IRCTRateCompanyConstants.DOC_CONTENT_CODE))
        docDesc =
            String.valueOf(pContractTreeData.get(IRCTRateCompanyConstants.DOC_CONTENT_CODE));


      if (pContractTreeData.containsKey(IRCTRateCompanyConstants.CONTRACT_TREE_PATH))
        contractTreePath =
            String.valueOf(pContractTreeData.get(IRCTRateCompanyConstants.CONTRACT_TREE_PATH));

      if (pContractTreeData.containsKey(IRCTRateCompanyConstants.CONTRACT_TREE_LINK_INFO))
        link =
            String.valueOf(pContractTreeData.get(IRCTRateCompanyConstants.CONTRACT_TREE_LINK_INFO));

    }
    if (StringUtils.isBlank(dataGrpId))
    {
      try
      {
        DataGrpVOImpl dgVO = getDataGrpVO();
        dgVO.executeEmptyRowSet();
        if (dgVO.getRowCount() == 0)
        {
          DataGrpVORowImpl dgRow = (DataGrpVORowImpl) dgVO.createRow();
          RowIterator rowItr = dgRow.getIrctNote1();
          IrctNoteVORowImpl row = (IrctNoteVORowImpl) rowItr.createRow();
          noteID =
              getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ).longValue();

          row.setNoteId(new oracle.jbo.domain.Number(noteID));
          row.setAscCmpntNam(IRCTRateCompanyConstants.IRCT);
          rowItr.insertRow(row);
          calcOprndGrpId =
              getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ).longValue();

          dgRow.setCalcOprndGrpId(new oracle.jbo.domain.Number(calcOprndGrpId));
          dgRow.setCalcOprId(new oracle.jbo.domain.Number(baseEngID));
          dgRow.setPblcFlg(new oracle.jbo.domain.Number(0));
          dgRow.setAudFlg(new oracle.jbo.domain.Number(0));
          dgRow.setBusId(busId);
          dgRow.setRvsCd(IRCTRateCompanyConstants.ADD);
          dgRow.setDocId(new oracle.jbo.domain.Number(docId));
          dgRow.setNoteId(new oracle.jbo.domain.Number(noteID));
          dgRow.setStaCd(IRCTRateCompanyConstants.NO_STATUS);
          dgRow.setCpyId(cpyId);
          dgRow.setSortOrdCd("ORIG"); //check hard Code for now
          dgRow.setDocumentType(docDesc);
          dgRow.setEditScreen("ADD");
          Date updateDate =
            DateTimeUtil.singleton().getCurrentUtilDateWithTime();
          dgRow.setUpdDttm(new Timestamp(updateDate));
          dgRow.setUpdUsrId(getLoggedInUserID());
          dgRow.setTreePath(contractTreePath);
          dgVO.insertRow(dgRow);
        }
      }
      catch (SQLException e)
      {
        _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                     StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                             "CAN_NOT_COVERT_DOUBLE_TO_NUMBER",
                                             null), e.getMessage());
      }
    }
    else
    {
      DataGrpVOImpl dgVO = getDataGrpVO();
      dgVO.setBind_Data_GrpID(dataGrpId);
      dgVO.setBind_Bus_ID(busId);
      dgVO.setBind_Calc_Opr_Id(baseEngID);
      dgVO.executeQuery();
      while (dgVO.hasNext())
      {
        IrctNoteVOImpl row = getIrctNoteVO();
        DataGrpVORowImpl dgRow = (DataGrpVORowImpl) dgVO.next();
        if (dgRow.getNoteId() == null ||
            dgRow.getNoteId().longValue() == 0)
        {
          IrctNoteVORowImpl noterow = (IrctNoteVORowImpl) row.createRow();
          noteID =
              getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ).longValue();
          noterow.setNoteId(new oracle.jbo.domain.Number(noteID));
          noterow.setAscCmpntNam(IRCTRateCompanyConstants.IRCT);
          row.insertRow(noterow);
          dgRow.setNoteId(new Number(noteID));
        }
        else
        {
          row.setBindNoteId(dgRow.getNoteId());
          row.executeQuery();
        }
        dgRow.setDocumentType(docDesc);
        dgRow.setTreePath(contractTreePath);
        if (link.equals("edit / view"))
        {
          dgRow.setEditScreen("EDIT");
        }
        else if (link.equals("view"))
        {
          dgRow.setEditScreen("VIEW");
        }
      }
    }
    //FIXME
    _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                 " Total Time took for :" + lMethodName + "->" +
                 (System.currentTimeMillis() - stTime));
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Container's getter for RatingEngineSNILOV.
   * @return RatingEngineSNILOV
   */
  public SNIListOfValuesVOImpl getRatingEngineSNILOV()
  {
    return (SNIListOfValuesVOImpl) findViewObject("RatingEngineSNILOV");
  }


  /**
   * Container's getter for DataGrp1.
   * @return DataGrp1
   */
  public DataGrpVOImpl getDataGrpVO()
  {
    return (DataGrpVOImpl) findViewObject("DataGrpVO");
  }


  /**
   * Container's getter for IrctNoteVO.
   * @return IrctNoteVO
   */
  public IrctNoteVOImpl getIrctNoteVO()
  {
    return (IrctNoteVOImpl) findViewObject("IrctNoteVO");
  }

  /**
   * Container's getter for IrctNoteFrData.
   * @return IrctNoteFrData
   */
  public IrctNoteVOImpl getIrctNoteFrData()
  {
    return (IrctNoteVOImpl) findViewObject("IrctNoteFrData");
  }

  /**
   * Container's getter for NotesForDatagroup1.
   * @return NotesForDatagroup1
   */
  public ViewLinkImpl getNotesForDatagroup1()
  {
    return (ViewLinkImpl) findViewLink("NotesForDatagroup1");
  }

  /**
   * Container's getter for DataGrp1.
   * @return DataGrp1
   */
  public DataGrpVOImpl getDataGrp1()
  {
    return (DataGrpVOImpl) findViewObject("DataGrp1");
  }


  /**
   * Container's getter for NotesForDatagroupVL.
   * @return NotesForDatagroupVL
   */
  public ViewLinkImpl getNotesForDatagroupVL()
  {
    return (ViewLinkImpl) findViewLink("NotesForDatagroupVL");
  }

  /**
   *This method prepares the Key value pair of Compnay Code and long description.
   *First time it will store this Map into In Memory cache , subsequent calls,
   * Retrieve from In memory cache and returns back
   * @return
   */
  public Map getCompanies()
  {
    String lMethodName = "getCompanies()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    Map complMap =
      SNILOVUOMCache.singleton().getCompanyMap();
    if (complMap == null || complMap.size() == 0)
    {
      CompanyIdLOVImpl compLOV = getCompanyIdLOV();
      compLOV.executeQuery();
      complMap = new HashMap();
      while (compLOV.hasNext())
      {
        CompanyIdLOVRowImpl lovRow = (CompanyIdLOVRowImpl) compLOV.next();
        complMap.put(lovRow.getCpyId(), lovRow.getCpyDesc());
      }
      SNILOVUOMCache.singleton().setCompanyMap(complMap);
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return complMap;
  }


  /**
   *Used to save the submitted report into Batch Summary and Batch Detail tables
   * @return
   */
  public void saveSubmitReportDetails()
  {
    String lMethodName = "saveSubmitReportDetails()";
    _logger.entering(CLAZZ_NAME, lMethodName);


    StringBuffer prcsDtaTxt = new StringBuffer();
    StringBuffer companiesBuf = new StringBuffer();
    StringBuffer documentsBuf = new StringBuffer();
    String[] companies = null;
    String[] documents = null;
    String inputDate = null;
    String strtDate = null;
    String endDate = null;
    String packge = null;
    String version = null;
    String reportType = null, reporDesc = null;

    try
    {
      int noOfComp = 0;
      int noOfDocs = 0;

      ReportTypesForBtchRprtTRVORowImpl reportsRow =
        (ReportTypesForBtchRprtTRVORowImpl) getReportTypesForBtchRprtTRVO().getCurrentRow();
      reporDesc = reportsRow.getSelectedReport();
      reportType = reportsRow.getReportDesc();

      if ((reportType.equals(IRCTRateCompanyConstants.REPORT_CP) ||
           (reportType.equals(IRCTRateCompanyConstants.REPORT_EX))))
        if (reportsRow.getInputDate() != null)
        {
          inputDate =
              DateTimeUtil.singleton().formatDateTime(reportsRow.getInputDate(),
                                                      "MM/dd/yyyy",
                                                      DateTimeUtil.DEFAULT_TIMEZONE);

        }
      if (reportType.equals(IRCTRateCompanyConstants.REPORT_CU))
      {
        if (reportsRow.getStartDate() != null)
        {
          strtDate =
              DateTimeUtil.singleton().formatDateTime(reportsRow.getStartDate(),
                                                      "MM/dd/yyyy",
                                                      DateTimeUtil.DEFAULT_TIMEZONE);

        }

        if (reportsRow.getEndDate() != null)
        {
          //endDate = reportsRow.getEndDate().toString();
          endDate =
              DateTimeUtil.singleton().formatDateTime(reportsRow.getEndDate(),
                                                      "MM/dd/yyyy",
                                                      DateTimeUtil.DEFAULT_TIMEZONE);

        }
      }
      if (reportType.equals(IRCTRateCompanyConstants.REPORT_MP))
      {
        packge = reportsRow.getDistPackage();

        version = reportsRow.getDistPckgVersn();

      }

      if (reportsRow.getcompany() != null)
      {
        companies =
            reportsRow.getcompany().toString().split(IRCTRateCompanyConstants.DELIMITER);

        noOfComp = companies.length;
      }

      if (reportType.equals(IRCTRateCompanyConstants.REPORT_DD))
      {
        if (reportsRow.getDocumentStatus() != null)
        {
          documents =
              reportsRow.getDocumentStatus().toString().split(IRCTRateCompanyConstants.DELIMITER);

          noOfDocs = documents.length;
        }
      }


      for (int i = 0; i < noOfComp; i++)
      {
        companiesBuf.append(companies[i] +
                            IRCTRateCompanyConstants.DELIMITER);
      }

      for (int i = 0; i < noOfDocs; i++)
      {
        documentsBuf.append(documents[i] +
                            IRCTRateCompanyConstants.DELIMITER);
      }


      if (reportType.equals(IRCTRateCompanyConstants.REPORT_CP))
      {
        reportType = IRCTRateCompanyConstants.REPORT_TYPE_CP;
        prcsDtaTxt.append(noOfComp + IRCTRateCompanyConstants.DELIMITER +
                          companiesBuf + inputDate +
                          IRCTRateCompanyConstants.DELIMITER);
      }
      else if (reportType.equals(IRCTRateCompanyConstants.REPORT_CU))
      {
        reportType = IRCTRateCompanyConstants.REPORT_TYPE_CU;
        prcsDtaTxt.append(noOfComp + IRCTRateCompanyConstants.DELIMITER +
                          companiesBuf + strtDate +
                          IRCTRateCompanyConstants.DELIMITER + endDate +
                          IRCTRateCompanyConstants.DELIMITER);
      }
      else if (reportType.equals(IRCTRateCompanyConstants.REPORT_DD))
      {
        reportType = IRCTRateCompanyConstants.REPORT_TYPE_DD;
        prcsDtaTxt.append(noOfComp + IRCTRateCompanyConstants.DELIMITER +
                          companiesBuf + noOfDocs +
                          IRCTRateCompanyConstants.DELIMITER +
                          documentsBuf);
      }
      else if (reportType.equals(IRCTRateCompanyConstants.REPORT_EX))
      {
        reportType = IRCTRateCompanyConstants.REPORT_TYPE_EX;
        prcsDtaTxt.append(noOfComp + IRCTRateCompanyConstants.DELIMITER +
                          companiesBuf + inputDate +
                          IRCTRateCompanyConstants.DELIMITER);
      }
      else
      {
        reportType = IRCTRateCompanyConstants.REPORT_TYPE_MP;
        prcsDtaTxt.append(noOfComp + IRCTRateCompanyConstants.DELIMITER +
                          companiesBuf + packge +
                          IRCTRateCompanyConstants.DELIMITER + version +
                          IRCTRateCompanyConstants.DELIMITER);
      }

      BatchSummaryVOImpl btchSum = getBatchSummaryVO();
      btchSum.clearCache();
      BatchSummaryVORowImpl btchSumRow =
        (BatchSummaryVORowImpl) btchSum.createRow();
      btchSumRow.setNewRowState(Row.STATUS_INITIALIZED);
      if (StringUtils.isNotBlank(getBusinessID()))
      {
        btchSumRow.setBusId(getBusinessID());
      }
      btchSumRow.setCpyId(IRCTRateCompanyConstants.NO_COMPANY);
      DBSequence btchId =
        new DBSequence(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ));
      btchSumRow.setBtchSumId(btchId);
      btchSumRow.setObjId(toJBONumber(IRCTRateCompanyConstants.OBJ_ID));
      btchSumRow.setObjCd(reportType);
      btchSumRow.setBtchDesc(reporDesc);
      btchSumRow.setStaCd(IRCTRateCompanyConstants.STA_CD_UPLD);
      btchSumRow.setFleLocTxt(IRCTRateCompanyConstants.FLE_LOC_TXT);
      btchSumRow.setFleSizeAmt(toJBONumber(IRCTRateCompanyConstants.FLE_SIZE_AMT));
      btchSumRow.setDltFlg(IRCTRateCompanyConstants.DLT_FLG_INITIALLY);
      btchSumRow.setXferEndDttm(null);
      btchSumRow.setPrcsStrtDttm(null);
      btchSumRow.setPrcsEndDttm(null);
      btchSumRow.setTotRecCt(toJBONumber(IRCTRateCompanyConstants.TOT_REC_CT_INITIALLY));
      btchSumRow.setErrCt(toJBONumber(IRCTRateCompanyConstants.ERR_CT));
      btchSumRow.setDlmtSym(IRCTRateCompanyConstants.DELIMITER);
      btchSumRow.setDecSym(IRCTRateCompanyConstants.DEC_SYM);
      btchSumRow.setDigSym(IRCTRateCompanyConstants.DIG_SYM);
      btchSumRow.setBtchCd(IRCTRateCompanyConstants.BTCH_CD);
      btchSumRow.setBtchFmtVers(toJBONumber(IRCTRateCompanyConstants.BTCH_FMT_VERS));
      btchSumRow.setGlblDtlTxt(IRCTRateCompanyConstants.GLBL_DTL_TXT);
      btchSum.insertRow(btchSumRow);
      performDatabaseCommit();

      btchSum.setBindUserID(getLoggedInUserID());
      btchSum.setBindBtchCd(null);
      btchSum.setBindBtchSumId(null);
      btchSum.setBindBusID(null);
      btchSum.setBindCompanyID(null);
      btchSum.setBindObjCd(null);
      btchSum.setBindStatusCd(null);
      //      btchSum.setBindDLTFlag(IRCTModelConstants.DLT_FLAG_N);
      btchSum.executeQuery();

      btchSumRow = (BatchSummaryVORowImpl) btchSum.first();
      BtchDtlVOImpl btchDtl = getBtchDtlVO();
      btchDtl.clearCache();
      BtchDtlVORowImpl btchDtlRow = (BtchDtlVORowImpl) btchDtl.createRow();
      btchDtlRow.setBtchSumId(btchSumRow.getBtchSumId());
      btchDtlRow.setErrNum((toJBONumber(IRCTRateCompanyConstants.ERR_CT)));
      btchDtlRow.setParmCnt(toJBONumber(IRCTRateCompanyConstants.PARM_CNT));
      btchDtlRow.setParmTxt(null);
      btchDtlRow.setPrcsDtaTxt(prcsDtaTxt.toString());
      btchDtlRow.setStaCd(IRCTRateCompanyConstants.STA_CD_WAIT);
      btchDtlRow.setBtchDtlSeqNum(new Number(1));
      Key svcReqKey = new Key(new Object[]
          { btchSumRow.getBtchSumId() });
      Row[] reqsFound = btchSum.findByKey(svcReqKey, 1);
      if (reqsFound != null && reqsFound.length > 0)
      {
        BatchSummaryVORowImpl btchSumRowupdt =
          (BatchSummaryVORowImpl) reqsFound[0];
        btchSumRowupdt.setXferEndDttm(new Timestamp(System.currentTimeMillis()));
        btchSumRowupdt.setTotRecCt(toJBONumber(IRCTRateCompanyConstants.TOT_REC_CT_LATER));
        btchSumRowupdt.setStaCd(IRCTRateCompanyConstants.STA_CD_QUED);
      }
      performDatabaseCommit();
      _logger.exiting(CLAZZ_NAME, lMethodName);
    }
    catch (Exception e)
    {
      getDBTransaction().rollback();
      getBatchSummaryVO().clearCache();
      getBtchDtlVO().clearCache();
      String errorMessage =
        StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                "FAILED_TO_SAVE_REPORT", null);
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, errorMessage,
                   e.getMessage());
      addInformationMessage("FAILED_TO_SAVE_REPORT", e.getMessage());
    }
  }


  /**
   *to get the batchdetails for the selected batch summary report
   * @param
   */
  public void getBatchDetails(String pViewBtchSumId)
  {
    String lMethodName = "getBatchDetails";
    _logger.entering(CLAZZ_NAME, lMethodName);
    if (!pViewBtchSumId.equals(IRCTRateCompanyConstants.REPORT_WARN))
    {
      BtchDtlVOImpl detailRow = getBtchDtlVO();
      detailRow.clearCache();
      detailRow.setBindBtchSumId(toJBONumber(pViewBtchSumId));
      detailRow.executeQuery();
    }
    else
    {
      addWarningMessage(IRCTRateCompanyConstants.REPORT_VIEW_WARN);
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);

  }

  /**
   *
   * @return
   */
  public String getBtchReportResults()
  {
    String lMethodName = "getBtchReportResults";
    _logger.entering(CLAZZ_NAME, lMethodName);
    String rslt = null;
    StringBuffer sb = new StringBuffer();
    String typeRslt = null;
    String result = "";
    Map statusDoc = new HashMap();
    Map packageMap = new HashMap();
    Map c = new HashMap();
    BatchSummaryVORowImpl reportsRow =
      (BatchSummaryVORowImpl) getBatchSummaryVO().getCurrentRow();
    Number btchSumId = new Number(reportsRow.getBtchSumId().getValue());
    String downloadID = reportsRow.getDownloadID();
    String type = reportsRow.getObjCd().toString();
    BatchResultsROVOImpl btchRsltsVo = getBatchResultsROVO();
    btchRsltsVo.clearCache();
    btchRsltsVo.setBindBtchSumId(btchSumId);
    btchRsltsVo.setBindRsltCd(null);
    btchRsltsVo.executeQuery();
    String typeRow = type + IRCTRateCompanyConstants.REPORT_TYPE_S;

    String[] comps = null;
    int index = 0;
    RowSetIterator btchRsltRoWSetIter =
      btchRsltsVo.createRowSetIterator(null);

    int rowCount = btchRsltRoWSetIter.getRowCount();

    c = getCompanies();
    statusDoc = getDocumentStatusMap();
    packageMap = getDistancePackTypesMap();
    BatchResultsROVORowImpl btchRsltRow;
    try
    {
      if ((rowCount > 0))
      {
        while (btchRsltRoWSetIter.hasNext())
        {
          btchRsltRow =
              (BatchResultsROVORowImpl) btchRsltRoWSetIter.next();
          if (btchRsltRow.getRsltCd() != null)
          {
            if (btchRsltRow.getRsltCd().equals(typeRow))
            {
              index =
                  Integer.parseInt(btchRsltRow.getRsltTxt().substring(0,
                                                                      1));
              comps =
                  StringUtils.splitPreserveAllTokens(btchRsltRow.getRsltTxt(),
                                                     IRCTRateCompanyConstants.DELIMITER);
              for (int j = 1; j <= index; j++)
              {
                if (index == 1)
                {
                  String compId = comps[j];
                  String sam = (String) c.get(compId.trim());
                  sb.append(sam);
                }
                else
                {
                  String compId = comps[j];
                  String sam = (String) c.get(compId.trim());
                  sb.append(sam + IRCTRateCompanyConstants.DELIMITER);
                }
              }
              typeRslt =
                  IRCTCommonUtil.downloadHeaders(type, comps, index, sb,
                                                 rowCount, downloadID,
                                                 statusDoc, packageMap);
            }
            else
            {
              Map docDataType = new HashMap();
              docDataType = getDocumentDataTypesMap();


              String reportResultData =
                IRCTCommonUtil.downloadReportLane(reportsRow, btchRsltRow,
                                                  statusDoc, docDataType);
              result =
                  result + reportResultData + IRCTRateCompanyConstants.NEW_LINE_CHAR;
            }
          }
        }


        if (StringUtils.isBlank(result))
          result = IRCTRateCompanyConstants.NO_RESULT;

        typeRslt =
            typeRslt + IRCTRateCompanyConstants.NEW_LINE_CHAR + result;

      }
      else
      {
        typeRslt =
            IRCTCommonUtil.downloadHeaders(type, comps, index, sb, rowCount,
                                           downloadID, statusDoc,
                                           packageMap);
      }
      //    btchRsltRoWSetIter = btchRsltsVo.getRowSetIterator();
      //
      //    rowCount = btchRsltRoWSetIter.getFetchedRowCount();
      //    btchRsltRoWSetIter.setRangeStart(0);
      //    btchRsltRoWSetIter.setRangeSize(rowCount);
      //    while (btchRsltRoWSetIter.hasNext())
      //    {
      //      btchRsltRow = (BatchResultsROVORowImpl) btchRsltRoWSetIter.next();
      //      if (btchRsltRow.getRsltCd().equals(type))
      //      {
      //        if (btchRsltRow.getRsltTxt() != null)
      //        {
      //          typeRslt =
      //              typeRslt + IRCTRateCompanyConstants.NEW_LINE_CHAR + btchRsltRow.getRsltTxt();
      //        }
      //      }
      //      else
      //      {
      //        typeRslt =
      //            typeRslt + IRCTRateCompanyConstants.NEW_LINE_CHAR + IRCTRateCompanyConstants.REPORT_NORESULTS;
      //      }
      //    }
    }
    catch (Exception e)
    {
      String errorMessage =
        StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                "FAILED_TO_DOWNLOAD_REPORT", null);
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName, errorMessage,
                   e.getMessage());

    }
    rslt = typeRslt;

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return rslt;


  }

  /**
   *
   * @return
   */
  public String getBtchResults(Number pBtchSumId, String pDownloadId)
  {
    String lMethodName = "getBtchResults";
    _logger.entering(CLAZZ_NAME, lMethodName);
    String result =
      getIRCTRateCompanyServiceHelper().getBtchResultsHelper(pBtchSumId,
                                                             pDownloadId);
    _logger.exiting(CLAZZ_NAME, lMethodName);

    return result;

  }

  public void getUserBatchReports()
  {
    String lMethodName = "getUserBatchReports";
    _logger.entering(CLAZZ_NAME, lMethodName);
    BatchSummaryVOImpl btchSum = getBatchSummaryVO();
    btchSum.executeQuery();
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  //  /**
  //   *
  //   * @param reqsFound
  //   */
  //  public void deleteBatchSummaryReports(List reqsFound)
  //  {
  //    String lMethodName = "delteBatchSummaryReports";
  //    _logger.entering(CLAZZ_NAME, lMethodName);
  //    try
  //    {
  //      for (int i = 0; i < reqsFound.size(); i++)
  //      {
  //        Number btchSumId = new Number(reqsFound.get(i));
  //        Key key = new Key(new Object[]
  //            { btchSumId });
  //        if (this.getBtchSummaryVO().findByKey(key, 1).length > 0)
  //        {
  //          Row row = getBtchSummaryVO().findByKey(key, 1)[0];
  //          row.setAttribute("DltFlg", "Y");
  //        }
  //        performDatabaseCommit();
  //      }
  //      //      getUserBatchReports();
  //      executeBatchSummaryVO();
  //      _logger.exiting(CLAZZ_NAME, lMethodName);
  //    }
  //    catch (Exception e)
  //    {
  //      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
  //                   StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
  //                                           "FAILED_TO_DELETE_REPORT",
  //                                           null), e.getMessage());
  //    }
  //  }

  /**
   *Initializer method for the EditViewQualification Page
   * @param contractTreeDataMap
   */
  public String initEditViewQual(java.util.Map contractTreeDataMap)
  {

    String lMethodName = "initEditViewQual(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { contractTreeDataMap });

    long stTime = System.currentTimeMillis();
    QualificationVOImpl qVO = getQualificationVO();
    oracle.jbo.domain.Number pQualId =
      (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.QUAL_ID);
    String treePath =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.CONTRACT_TREE_PATH);
    String busId =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.BUS_ID);
    qVO.setBind_BUS_ID(busId);
    qVO.setBindQualId(pQualId);
    qVO.executeQuery();
    QualificationVORowImpl qualRow = (QualificationVORowImpl) qVO.first();
    qualRow.setTreePath(treePath);

    AuditVOImpl auditVO = getAuditVO();
    auditVO.setBindObjId(pQualId);
    auditVO.setBindAudId(null);
    auditVO.setBindDocId(null);
    auditVO.executeQuery();

    if (qualRow.getIrctNote2().getRowCount() == 0)
    {
      qualRow.createNoteRow(getIrctNoteVL1());
    }

    String isReadOnly =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.IS_READ_ONLY);

    String screenSelected = "";
    if (isReadOnly.equalsIgnoreCase(IRCTRateCompanyConstants.TRUE))
    {
      qualRow.setDisplayViewFlg(true);
      // screenSelected = IRCTRateCompanyConstants.VIEW_SCREEN;
    }
    else
    {
      qualRow.setDisplayEditFlg(true);
      //screenSelected = IRCTRateCompanyConstants.EDIT_SCREEN;
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return screenSelected;


  }

  /**
   *to set the input values for the AddBaseEngine
   * @return List
   * @param contractTreeDataMap
   */
  public List initParamAddEngBase(java.util.Map contractTreeDataMap)
  {
    String lMethodName = "initParamAddEngBase(HashMap)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { contractTreeDataMap });
    long stTime = System.currentTimeMillis();
    List initEngineItems = new ArrayList();
    boolean dataTypDisable = true;

    CalcOprVOImpl coVO = getCalcOprVO();
    CalcOprVORowImpl coRow = null;

    SequenceImpl seq =
      new SequenceImpl(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ,
                       getDBTransaction());
    long calOprId = seq.getSequenceNumber().longValue();

    oracle.jbo.domain.Number pQualId =
      (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.QUAL_ID);
    oracle.jbo.domain.Number pDocId =
      (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.DOC_ID);

    String pDocConCd =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.DOC_CONTENT_CODE);
    String pCpyId =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.CPY_ID);
    String pEngTyp =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.ENGINE_CLASS_CODE);
    oracle.jbo.domain.Number pEngId =
      (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.ENGINE_ID);
    String link_Text =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.CONTRACT_TREE_LINK_INFO);

    oracle.jbo.domain.Number pContractId =
      (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.CTRC_ID);
    String treePath =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.CONTRACT_TREE_PATH);
    String pEngCd =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.ENGINE_CODE);
    String busId =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.BUS_ID);
    Number pQulificationId =
      (Number) contractTreeDataMap.get(IRCTRateCompanyConstants.QUAL_ID);
    String pDocContectCode = null;
    if (!contractTreeDataMap.containsKey(IRCTRateCompanyConstants.BASE_ENG_DOC_CON_CODE))
    {
      pDocContectCode =
          (String) contractTreeDataMap.get(IRCTRateCompanyConstants.COLL_ENG_DOC_CON_CODE);
    }
    else
    {
      pDocContectCode =
          (String) contractTreeDataMap.get(IRCTRateCompanyConstants.BASE_ENG_DOC_CON_CODE);
    }
    RatingEngineTypeLOVImpl retypeLOV = getRatingEngineTypeLOV();

    CalcOprTypVOImpl coTypVO = getCalcOprTypVO();

    coTypVO.setBind_CalcOprCd(null);
    coTypVO.setBind_DocCtntCd(null);
    coTypVO.setBind_CalcOprTypId(null);
    coTypVO.executeQuery();

    ServiceTypeROVOImpl sstROVO = getServiceTypeROVO();
    sstROVO.clearCache();
    sstROVO.cancelQuery();
    sstROVO.setBind_SrvCd(null);

    retypeLOV.setBindDocTyp(null);
    retypeLOV.setBindEngTyp(null);
    retypeLOV.setBindEngTyp1(null);
    retypeLOV.setBindEngTyp2(null);

    //---- AddEngine Above
    if (link_Text.equalsIgnoreCase(IRCTRateCompanyConstants.ADD_ENGINE_ABOVE))
    {
      if (pEngId == null)
      {
        pEngId =
            (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.CALLER_ENGINE_ID);
      }

      coVO.setBindCalcOprId(pEngId);
      coVO.setBind_BUS_ID(busId);
      coVO.setBindPrntCalcOprId(null);
      coVO.setBindQualId(pQulificationId);
      coVO.executeQuery();

      CalcOprVORowImpl coChildRow = (CalcOprVORowImpl) coVO.first();
      coRow = (CalcOprVORowImpl) coVO.createRow();

      // ---- Don't have Parent (New Engine would be Parent for calling one)
      if (coChildRow.getPrntCalcOprId() == null)
      {
        coRow =
            getIRCTRateCompanyServiceHelper().setNewEngineValues(coRow, pDocId,
                                                                 pCpyId,
                                                                 calOprId,
                                                                 pQualId,
                                                                 treePath,
                                                                 pDocContectCode);
      }
      // -- Have Parent (New Engine would be Parent for calling one & Parent of calling would be the Parent of New One)
      else if (coChildRow.getPrntCalcOprId() != null)
      {
        coRow =
            getIRCTRateCompanyServiceHelper().setNewEngineValues(coRow, pDocId,
                                                                 pCpyId,
                                                                 calOprId,
                                                                 pQualId,
                                                                 coChildRow.getPrntCalcOprId(),
                                                                 treePath,
                                                                 pDocContectCode);
      }

      //------------ Parent of Child node should get changed after setting the values in New Node....
      coChildRow.setPrntCalcOprId(new oracle.jbo.domain.Number(calOprId)); //----- #########

      pEngTyp =
          IRCTRateCompanyConstants.COLLECTIVE; //---- It would always be a Collective Engine in Case of "add engine above"
      retypeLOV.setBindDocTyp(pDocConCd);
      retypeLOV.setBindEngTyp(pEngTyp);
      dataTypDisable = true;
    }
    else if (link_Text.equalsIgnoreCase(IRCTRateCompanyConstants.ADD_ENGINE)) //---- AddEngine
    {
      if (pEngId == null)
      {
        pEngId =
            (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.CALLER_ENGINE_ID);
      }
      // -------- Coll Engine Type (Don't have any Parent) / Add Engine call From Qual level--------------------------------------
      if (pEngId == null) //---- CALLER_ENGINE_ID is also NULL
      {
        coRow = (CalcOprVORowImpl) coVO.createRow();

        coRow =
            getIRCTRateCompanyServiceHelper().setNewEngineValues(coRow, pDocId,
                                                                 pCpyId,
                                                                 calOprId,
                                                                 pQualId,
                                                                 treePath,
                                                                 null);
        pEngTyp =
            IRCTRateCompanyConstants.COLLECTIVE; //---- It would always be a Collective Engine in Case of "add engine" (Don't have any Parent)
        retypeLOV.setBindDocTyp(pDocConCd);
        retypeLOV.setBindEngTyp(pEngTyp);
        dataTypDisable = false;
      }
      else
      {
        coRow = (CalcOprVORowImpl) coVO.createRow();

        coRow =
            getIRCTRateCompanyServiceHelper().setNewEngineValues(coRow, pDocId,
                                                                 pCpyId,
                                                                 calOprId,
                                                                 pQualId,
                                                                 pEngId,
                                                                 treePath,
                                                                 pDocContectCode);

        retypeLOV.setBindDocTyp(pDocConCd);
        retypeLOV.setBindEngTyp(IRCTRateCompanyConstants.BASE);
        retypeLOV.setBindEngTyp1(IRCTRateCompanyConstants.COLLECTIVE);

        //---------- In case of Engine Code (CALC_OPR_CD = CREA), Dependent Type is also required.....
        if (pEngCd.equalsIgnoreCase(IRCTRateCompanyConstants.CREATIVE)) // ----- Creative engine ------
        {
          retypeLOV.setBindEngTyp2(IRCTRateCompanyConstants.DEPENDENT);
        }

        dataTypDisable = true;
      }
    }
    coVO.insertRowAtRangeIndex(0, coRow);
    coVO.setCurrentRow(coRow);

    retypeLOV.executeQuery();

    SortedMap engTypes = new TreeMap();
    while (retypeLOV.hasNext())
    {
      RatingEngineTypeLOVRowImpl row =
        (RatingEngineTypeLOVRowImpl) retypeLOV.next();
      engTypes.put(row.getCalcOprDesc(), row.getCalcOprCd());
    }

    initEngineItems.add(0, engTypes);
    initEngineItems.add(1, pContractId);
    initEngineItems.add(2, pDocConCd);
    initEngineItems.add(3, dataTypDisable);
    initEngineItems.add(4, link_Text);
    //FIXME
    _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                 " Total Time took for :" + lMethodName + "->" +
                 (System.currentTimeMillis() - stTime));
    _logger.exiting(CLAZZ_NAME, lMethodName);

    return initEngineItems;
  }


  /**
   *to set the input values for the initEditViewEngine(CollectiveEngine)
   * @param contractTreeDataMap
   */

  public String initEditViewEngine(java.util.Map contractTreeDataMap)
  {
    String lMethodName = "initEditViewEngine(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { contractTreeDataMap });

    long stTime = System.currentTimeMillis();

    CalcOprVOImpl coVO = getCalcOprVO();

    String pCpyId =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.CPY_ID);
    oracle.jbo.domain.Number pEngId =
      (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.ENGINE_ID);
    Number QualId =
      (Number) contractTreeDataMap.get(IRCTRateCompanyConstants.QUAL_ID);
    if (pEngId == null)
    {
      pEngId =
          (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.CALLER_ENGINE_ID);
    }

    String treePath =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.CONTRACT_TREE_PATH);
    String isReadOnly =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.IS_READ_ONLY);

    String screenSelected = "";
    if (isReadOnly.equalsIgnoreCase(IRCTRateCompanyConstants.TRUE))
    {
      screenSelected = IRCTRateCompanyConstants.VIEW_SCREEN;
    }
    else
    {
      screenSelected = IRCTRateCompanyConstants.EDIT_SCREEN;
    }

    coVO.setBindCalcOprId(pEngId);
    coVO.setBindPrntCalcOprId(null);
    coVO.setBindQualId(QualId);
    coVO.executeQuery();
    CalcOprVORowImpl coRow = (CalcOprVORowImpl) coVO.first();

    //----- Audit VO --------
    AuditVOImpl auditVO = getAuditVO();
    auditVO.setBindObjId(pEngId);
    auditVO.setBindAudId(null);
    auditVO.setBindDocId(null);
    auditVO.executeQuery();

    coRow.setTreePath(treePath);
    ServiceTypeROVOImpl sstROVO = getServiceTypeROVO();
    sstROVO =
        getIRCTRateCompanyServiceHelper().getFilteredServiceType(pCpyId,
                                                                 coRow.getDocCtntSubCd(),
                                                                 sstROVO);

    CalcOprTypVOImpl coTypVO = getCalcOprTypVO();
    coTypVO.setBind_CalcOprCd(null);
    coTypVO.setBind_DocCtntCd(null);
    coTypVO.setBind_CalcOprTypId(coRow.getCalcOprTypId());
    coTypVO.executeQuery();
    CalcOprTypVORowImpl calTypRow = (CalcOprTypVORowImpl) coTypVO.first();

    //---------- setting the bind value for the Publication & creating a blank NOTE row if it is null

    if (coRow.getIrctNote().getRowCount() == 0)
    {
      coRow.createNoteRow(getIrctNoteVL());
    }

    //---------- if it is not Collective Engine bring the Override Template Names
    if (!calTypRow.getCalcOprClaCd().equalsIgnoreCase(IRCTRateCompanyConstants.COLLECTIVE))
    {
      coRow.setBindPubTmplID(calTypRow.getCalcOprCd());
    }
    // ------------ Using transient VO ------------
    if (calTypRow.getCalcOprCd().equalsIgnoreCase(IRCTRateCompanyConstants.ROUNDING_SELECTIVE))
    {
      RoundingTRVOImpl roundTRVO = getRoundingTVO();
      //---------- clearing the earlier created cache of Transient View Object
      roundTRVO.clearCache();
      Row[] rows = roundTRVO.getAllRowsInRange();
      if (rows == null || rows.length == 0)
      {
        RowIterator rndRule = coRow.getRndRule1();
        while (rndRule.hasNext())
        {
          RndRuleVORowImpl rndRow = (RndRuleVORowImpl) rndRule.next();
          RoundingTRVORowImpl rtvRow =
            (RoundingTRVORowImpl) roundTRVO.createRow();

          rtvRow.setCalcOprId(coRow.getCalcOprId());
          rtvRow.setRule(rndRow.getRndRuleCd());
          rtvRow.setBy(rndRow.getTtnVal());
          rtvRow.setUnitOfMeasure(rndRow.getUomId());
          rtvRow.setUpTo(rndRow.getUptoVal());
          roundTRVO.insertRow(rtvRow);
        }
      }
    }
    else if (calTypRow.getCalcOprCd().equalsIgnoreCase(IRCTRateCompanyConstants.FREIGHT_CLASS_MAPPING_SELECTIVE))
    {
      FreightClsMappingsTRVOImpl fcmTRVO = getFreightClsMappingsTRVO();
      //---------- clearing the earlier created cache of Transient View Object
      fcmTRVO.clearCache();
      int frtClassId = 1;
      Row[] rows = fcmTRVO.getAllRowsInRange();
      if (rows == null || rows.length == 0)
      {
        RowIterator ltlMap = coRow.getLtlFrtClaMap();
        while (ltlMap.hasNext())
        {
          LtlFrtClaMapVORowImpl ltlRow =
            (LtlFrtClaMapVORowImpl) ltlMap.next();
          FreightClsMappingsTRVORowImpl fcmTVRow =
            (FreightClsMappingsTRVORowImpl) fcmTRVO.createRow();

          fcmTVRow.setToFreightClass(ltlRow.getHighFrtClaNum());
          fcmTVRow.setFromFreightClass(ltlRow.getLowFrtClaNum());
          fcmTVRow.setMapToFreightClass(ltlRow.getMapToFrtClaNum());
          fcmTVRow.setFrtClassId(new Number(frtClassId));
          fcmTRVO.last();
          fcmTRVO.next();
          fcmTRVO.insertRow(fcmTVRow);
          frtClassId++;
        }
      }
    }
    //FIXME
    _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                 " Total Time took for :" + lMethodName + "->" +
                 (System.currentTimeMillis() - stTime));
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return screenSelected;
  }

  /**
   * Container's getter for BatchSummaryVO.
   * @return BatchSummaryVO
   */
  public BatchSummaryVOImpl getBatchSummaryVO()
  {
    return (BatchSummaryVOImpl) findViewObject("BatchSummaryVO");
  }


  /**
   * Container's getter for BatchResultsROVO.
   * @return BatchResultsROVO
   */
  public BatchResultsROVOImpl getBatchResultsROVO()
  {
    return (BatchResultsROVOImpl) findViewObject("BatchResultsROVO");
  }

  /**
   * Container's getter for ContractReferenceVO.
   * @return ContractReferenceVO
   */
  public ContractReferenceVOImpl getContractReferenceVO()
  {
    return (ContractReferenceVOImpl) findViewObject("ContractReferenceVO");
  }

  /**
   * Method to remove geo group specs.
   */
  public void removeGeoSpecs(List keySet)
  {
    String lMethodName = "removeGeoSpecs(List)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    GeoSpecTRVOImpl tVO = getGeoSpecTVO();
    Key rowKey = null;
    Iterator itr = keySet.iterator();

    while (itr.hasNext())
    {
      try
      {
        rowKey = (Key) itr.next();
      }
      catch (Exception e)
      {
        if (_logger.isLoggable(Level.FINEST))
        {
          _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                       e.getMessage());
        }
      }
      GeoSpecTRVORowImpl tVORow = (GeoSpecTRVORowImpl) tVO.getRow(rowKey);
      tVORow.removeFromCollection();
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Container's getter for IrctNote.
   * @return IrctNote
   */
  public IrctNoteVOImpl getIrctNoteVL1()
  {
    return (IrctNoteVOImpl) findViewObject("IrctNoteVL1");
  }

  /**
   * Container's getter for NoteTxtForQualVL1.
   * @return NoteTxtForQualVL1
   */
  public ViewLinkImpl getNoteTxtForQualVL1()
  {
    return (ViewLinkImpl) findViewLink("NoteTxtForQualVL1");
  }

  /**
   * Container's getter for NoteForQualVL1.
   * @return NoteForQualVL1
   */
  public ViewLinkImpl getNoteForQualVL1()
  {
    return (ViewLinkImpl) findViewLink("NoteForQualVL1");
  }


  /**
   * Method to remove selected qualification item rows.
   * @param keySet
   */
  public void removeSelectedQulItmRows(List keySet)
  {
    String lMethodName = "removeSelectedQulItmRows(List)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    QualGroupItemVOImpl tVO = getQualGroupItemVL();
    Key rowKey = null;
    int count = tVO.getRowCount();
    if (count > 1)
    {

      for (int i = 0; i < keySet.size(); i++)
      {
        rowKey = (Key) keySet.get(i);
        QualGroupItemVORowImpl tVORow =
          (QualGroupItemVORowImpl) tVO.getRow(rowKey);

        tVO.removeCurrentRow();
      }
    }
    else
    {

      addWarningMessage(IRCTModelConstants.QUAL_GRP_REM_ERR_MSG,
                        new Object[]
          { });
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);

  }


  /**
   * Method to copy selected qualification Mstr item rows.
   * @param keySet
   */
  public void copySelectedQulMstrItmRows(ArrayList keySet)
  {
    String lMethodName = "copySelectedQulMstrItmRows(ArrayList)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { keySet });

    Key rowKey = null;

    List qGrpItems =
      new ArrayList();
    IRCTRateCompanyServiceHelper.QualTypHelperClass cmnObj = null;


    for (int i = 0; i < keySet.size(); i++)
    {
      rowKey = (Key) keySet.get(i);
      QualItemMasterVORowImpl qualMtrRow =
        (QualItemMasterVORowImpl) getQualItemForQualTypeVL().findByKey(rowKey,
                                                                       1)[0];
      cmnObj = getIRCTRateCompanyServiceHelper().getQualTypClass();
      cmnObj.setId(qualMtrRow.getQualItmMstrId().getValue());
      cmnObj.setQualVal(IRCTRateCompanyConstants.EQUAL);
      qGrpItems.add(cmnObj);
    }

    Iterator iterator =
      qGrpItems.iterator();

    qulItmRowsExt(iterator);

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to copy selected qualification Grp item rows.
   * @param keySet
   */
  public void copySelectedQulGrpItmRows(ArrayList keySet)
  {
    String lMethodName = "copySelectedQulGrpItmRows(ArrayList)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { keySet });

    Key rowKey = null;

    List qGrpItems =
      new ArrayList();
    IRCTRateCompanyServiceHelper.QualTypHelperClass cmnObj = null;


    for (int i = 0; i < keySet.size(); i++)
    {
      rowKey = (Key) keySet.get(i);
      QualGroupROVORowImpl qualGrpRow =
        (QualGroupROVORowImpl) getQualGroupROVL().findByKey(rowKey, 1)[0];

      RowIterator qgiItr = qualGrpRow.getQualGroupItemRO();
      qgiItr.reset();
      while (qgiItr.hasNext())
      {
        QualGroupItemROVORowImpl qgiRow =
          (QualGroupItemROVORowImpl) qgiItr.next();
        cmnObj = getIRCTRateCompanyServiceHelper().getQualTypClass();
        cmnObj.setId(qgiRow.getQualItmMstrId().longValue());
        cmnObj.setQualVal(qgiRow.getOprCd());
        qGrpItems.add(cmnObj);
      }
    }

    Iterator iterator =
      qGrpItems.iterator();

    qulItmRowsExt(iterator);

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Ext Method to copy selected qualification item rows.
   * @param iterator
   */
  private void qulItmRowsExt(Iterator iterator)
  {
    String lMethodName = "qulItmRowsExt(Iterator)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { iterator });

    QualGroupItemVORowImpl qualGroupItemRow = null;
    IRCTRateCompanyServiceHelper.QualTypHelperClass cmnObj = null;

    while (iterator.hasNext())
    {
      cmnObj = iterator.next();
      Row[] rows =
        getQualGroupItemVL().getFilteredRows(IRCTRateCompanyConstants.QUAL_ITM_MSTR_ID,
                                             new oracle.jbo.domain.Number(cmnObj.getId()));
      boolean isExist = false;
      if (rows.length > 0)
      {
        for (int i = 0; i < rows.length; i++)
        {
          if (cmnObj.getQualVal().equalsIgnoreCase(((QualGroupItemVORowImpl) rows[i]).getOprCd()))
          {
            isExist = true;
            break;
          }
        }
        if (!isExist)
        {
          qulItmRowsExt1(qualGroupItemRow, cmnObj);
        }
      }
      else
      {
        qulItmRowsExt1(qualGroupItemRow, cmnObj);
      }
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Ext Method to copy selected qualification item rows.
   * @param QualGroupItemVORowImpl qualGroupItemRow
   * @param IRCTRateCompanyServiceHelper.QualTypHelperClass cmnObj
   */
  private void qulItmRowsExt1(QualGroupItemVORowImpl qualGroupItemRow,
                              IRCTRateCompanyServiceHelper.QualTypHelperClass cmnObj)
  {
    String lMethodName =
      "qulItmRowsExt1(QualGroupItemVORowImpl, IRCTRateCompanyServiceHelper.QualTypHelperClass)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { qualGroupItemRow, cmnObj });

    qualGroupItemRow =
        (QualGroupItemVORowImpl) getQualGroupItemVL().createRow();
    qualGroupItemRow.setQualItmMstrId(new oracle.jbo.domain.Number(cmnObj.getId()));
    qualGroupItemRow.setOprCd(cmnObj.getQualVal());
    getQualGroupItemVL().last();
    getQualGroupItemVL().insertRow(qualGroupItemRow);

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Container's getter for BatchRateLookupTRVO.
   * @return BatchRateLookupTRVO
   */
  public BatchRateLookupTRVOImpl getBatchRateLookupTRVO()
  {
    return (BatchRateLookupTRVOImpl) findViewObject("BatchRateLookupTRVO");
  }

  /**
   * Container's getter for ReportTypesForBtchRprtTRVO.
   * @return ReportTypesForBtchRprtTRVO
   */
  public ReportTypesForBtchRprtTRVOImpl getReportTypesForBtchRprtTRVO()
  {
    return (ReportTypesForBtchRprtTRVOImpl) findViewObject("ReportTypesForBtchRprtTRVO");
  }

  /**
   * Container's getter for RouteEngTypePrecedenceROVO.
   * @return RouteEngTypePrecedenceROVO
   */
  public RouteEngTypePrecedenceROVOImpl getRouteEngTypePrecedenceROVO()
  {
    return (RouteEngTypePrecedenceROVOImpl) findViewObject("RouteEngTypePrecedenceROVO");
  }

  /**
   * Container's getter for EngTypPrecedenceROVO.
   * @return EngTypPrecedenceROVO
   */
  public EngTypPrecedenceROVOImpl getEngTypPrecedenceROVO()
  {
    return (EngTypPrecedenceROVOImpl) findViewObject("EngTypPrecedenceROVO");
  }

  /**
   * Container's getter for BandValuePrecedenceROVO.
   * @return BandValuePrecedenceROVO
   */
  public BandValuePrecedenceROVOImpl getBandValuePrecedenceROVO()
  {
    return (BandValuePrecedenceROVOImpl) findViewObject("BandValuePrecedenceROVO");
  }

  /**
   *help in bringing the Precedence for Band1
   * @return double
   * @param pBand1ValueTypeCode
   */

  public double getBand1ValueTypePrec(String pBand1ValueTypeCode)
  {
    String lMethodName = "getBand1ValueTypePrec";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pBand1ValueTypeCode });

    BandValuePrecedenceROVOImpl bandpVO = getBandValuePrecedenceROVO();
    bandpVO.setBind_BandCd(pBand1ValueTypeCode);
    bandpVO.executeQuery();
    double bandPrecedence =
      ((BandValuePrecedenceROVORowImpl) (bandpVO.first())).getPrcdnNum().doubleValue();

    _logger.exiting(CLAZZ_NAME, lMethodName);

    return bandPrecedence;
  }


  /**
   *help in bringing the Precedence for Band2
   * @return double
   * @param pBand2ValueTypeCode
   */

  public double getBand2ValueTypePrec(String pBand2ValueTypeCode)
  {
    String lMethodName = "getBand2ValueTypePrec";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pBand2ValueTypeCode });

    BandValuePrecedenceROVOImpl bandpVO = getBandValuePrecedenceROVO();
    bandpVO.setBind_BandCd(pBand2ValueTypeCode);
    bandpVO.executeQuery();
    double band2Precedence =
      ((BandValuePrecedenceROVORowImpl) (bandpVO.first())).getPrcdnNum().doubleValue();
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return band2Precedence;
  }


  /**
   *brings the Route Engine Precedence Types
   * @return Map
   * @param pEnableOriginZone, pEnableStopoffZone, pEnableDestinationZone
   */

  public Map getRouteEnginePrec(String pEnableOriginZone,
                                                String pEnableStopoffZone,
                                                String pEnableDestinationZone)
  {
    String lMethodName = "getRouteEnginePrec(String, String, String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pEnableOriginZone, pEnableStopoffZone, pEnableDestinationZone });

    Map PrecedenceTypes = new HashMap();
    RouteEngTypePrecedenceROVOImpl retPreVO =
      getRouteEngTypePrecedenceROVO();
    retPreVO.setBind_OriginZone(pEnableOriginZone);
    retPreVO.setBind_StopOffZone(pEnableStopoffZone);
    retPreVO.setBind_DestinationZone(pEnableDestinationZone);
    retPreVO.executeQuery();

    while (retPreVO.hasNext())
    {
      RouteEngTypePrecedenceROVORowImpl row =
        (RouteEngTypePrecedenceROVORowImpl) retPreVO.next();
      if (pEnableOriginZone.equalsIgnoreCase(row.getIxCd()))
      {
        PrecedenceTypes.put(IRCTRateCompanyConstants.ORG_PRECEDENCE,
                            row.getPrcdnNum().doubleValue());
      }
      if (pEnableStopoffZone.equalsIgnoreCase(row.getIxCd()))
      {
        PrecedenceTypes.put(IRCTRateCompanyConstants.STP_PRECEDENCE,
                            row.getPrcdnNum().doubleValue());
      }
      if (pEnableDestinationZone.equalsIgnoreCase(row.getIxCd()))
      {
        PrecedenceTypes.put(IRCTRateCompanyConstants.DST_PRECEDENCE,
                            row.getPrcdnNum().doubleValue());
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return PrecedenceTypes;
  }


  /**
   *brings the Zone Zone Engine Precedence Types
   * @return Map
   * @param pEnableOriginZone, pEnableDestinationZone
   */

  public Map getZoneZoneEnginePrec(String pEnableOriginZone,
                                                   String pEnableDestinationZone)
  {
    String lMethodName = "getZoneZoneEnginePrec";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pEnableOriginZone, pEnableDestinationZone });

    Map PrecedenceTypes = new HashMap();
    RouteEngTypePrecedenceROVOImpl retPreVO =
      getRouteEngTypePrecedenceROVO();
    retPreVO.setBind_OriginZone(pEnableOriginZone);
    retPreVO.setBind_DestinationZone(pEnableDestinationZone);
    retPreVO.executeQuery();

    while (retPreVO.hasNext())
    {
      RouteEngTypePrecedenceROVORowImpl row =
        (RouteEngTypePrecedenceROVORowImpl) retPreVO.next();
      if (pEnableOriginZone.equalsIgnoreCase(row.getIxCd()))
      {
        PrecedenceTypes.put(IRCTRateCompanyConstants.ORG_PRECEDENCE,
                            row.getPrcdnNum().doubleValue());
      }
      if (pEnableDestinationZone.equalsIgnoreCase(row.getIxCd()))
      {
        PrecedenceTypes.put(IRCTRateCompanyConstants.DST_PRECEDENCE,
                            row.getPrcdnNum().doubleValue());
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return PrecedenceTypes;
  }


  /**
   *brings the Origin Zone Engine Precedence Types
   * @return Map
   * @param pEnableOriginZone
   */

  public double getOriginZoneEnginePrec(String pEnableOriginZone)
  {
    String lMethodName = "getOriginZoneEnginePrec";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pEnableOriginZone });

    double orgPrecedence = 0.0;
    RouteEngTypePrecedenceROVOImpl retPreVO =
      getRouteEngTypePrecedenceROVO();
    retPreVO.setBind_OriginZone(pEnableOriginZone);
    retPreVO.executeQuery();
    while (retPreVO.hasNext())
    {
      RouteEngTypePrecedenceROVORowImpl row =
        (RouteEngTypePrecedenceROVORowImpl) retPreVO.next();
      if (pEnableOriginZone.equalsIgnoreCase(row.getIxCd()))
      {
        orgPrecedence = row.getPrcdnNum().doubleValue();
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return orgPrecedence;
  }


  /**
   *brings the Destination Zone Engine Precedence Types
   * @return Map
   * @param pEnableDestinationZone
   */

  public double getDestinationZoneEnginePrec(String pEnableDestinationZone)
  {
    String lMethodName = "getDestinationZoneEnginePrec";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pEnableDestinationZone });

    double dstPrecedence = 0.0;
    RouteEngTypePrecedenceROVOImpl retPreVO =
      getRouteEngTypePrecedenceROVO();
    retPreVO.setBind_DestinationZone(pEnableDestinationZone);
    retPreVO.executeQuery();

    while (retPreVO.hasNext())
    {
      RouteEngTypePrecedenceROVORowImpl row =
        (RouteEngTypePrecedenceROVORowImpl) retPreVO.next();
      if (pEnableDestinationZone.equalsIgnoreCase(row.getIxCd()))
      {
        dstPrecedence = row.getPrcdnNum().doubleValue();
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return dstPrecedence;
  }

  /**
   * Container's getter for PrecedenceValuesROVO.
   * @return PrecedenceValuesROVO
   */
  public PrecedenceValuesROVOImpl getPrecedenceValuesROVO()
  {
    return (PrecedenceValuesROVOImpl) findViewObject("PrecedenceValuesROVO");
  }

  /**
   * Container's getter for TariffTypesForEngineLOVVA.
   * @return TariffTypesForEngineLOVVA
   */
  public TariffTypesForEngineLOVImpl getTariffTypesForEngineLOV()
  {
    return (TariffTypesForEngineLOVImpl) findViewObject("TariffTypesForEngineLOV");
  }

  /**
   * Container's getter for ContractTRVO.
   * @return ContractTRVO
   */
  public ContractTRVOImpl getContractTRVO()
  {
    return (ContractTRVOImpl) findViewObject("ContractTRVO");
  }

  /**
   * Container's getter for FrtClsMappingTRVO.
   * @return FrtClsMappingTRVO
   */
  public FrtClsMappingTRVOImpl getFrtClsMappingTRVO()
  {
    return (FrtClsMappingTRVOImpl) findViewObject("FrtClsMappingTRVO");
  }

  /**
   * Container's getter for ContractXrefTRVO.
   * @return ContractXrefTRVO
   */
  public ContractXrefTRVOImpl getContractXrefTRVO()
  {
    return (ContractXrefTRVOImpl) findViewObject("ContractXrefTRVO");
  }

  /**
   * Container's getter for ContractReferenceTVO.
   * @return ContractReferenceTVO
   */
  public ContractReferenceTRVOImpl getContractReferenceTRVO()
  {
    return (ContractReferenceTRVOImpl) findViewObject("ContractReferenceTRVO");
  }

  /**
   * Container's getter for ContractVO.
   * @return ContractVO
   */
  public ContractVOImpl getContractVO()
  {
    return (ContractVOImpl) findViewObject("ContractVO");
  }

  /**
   * Container's getter for ContractXrefVO.
   * @return ContractXrefVO
   */
  public ContractXrefVOImpl getContractXrefVO()
  {
    return (ContractXrefVOImpl) findViewObject("ContractXrefVO");
  }

  /**
   * Container's getter for LtlFrtClaMapVO.
   * @return LtlFrtClaMapVO
   */
  public LtlFrtClaMapVOImpl getLtlFrtClaMapVO()
  {
    return (LtlFrtClaMapVOImpl) findViewObject("LtlFrtClaMapVO");
  }

  /**
   * Container's getter for ContractHistoryMtdLOV.
   * @return ContractHistoryMtdLOV
   */
  public sni.irct.model.queries.lov.ContractHistoryMtdLOVImpl getContractHistoryMtdLOV()
  {
    return (sni.irct.model.queries.lov.ContractHistoryMtdLOVImpl) findViewObject("ContractHistoryMtdLOV");
  }

  /**
   * To add a new row in FrtClsMappingTRVO
   * This method is called by 'addFrtClsRow()' in ContractBean.java
   */
  public void createFreightClsRow()
  {
    String lMethodName = "createFreightClsRow()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    FrtClsMappingTRVOImpl frtClsTVO = getFrtClsMappingTRVO();
    FrtClsMappingTRVORowImpl frtClsTvoRow =
      (FrtClsMappingTRVORowImpl) frtClsTVO.createRow();

    ContractTRVOImpl ctrTvo = getContractTRVO();
    ContractTRVORowImpl ctrcTRVORow =
      (ContractTRVORowImpl) ctrTvo.getCurrentRow();
    String ctrcId = ctrcTRVORow.getCtrcId();

    frtClsTvoRow.setSeqVal(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ));
    frtClsTvoRow.setSelectedRow(false);
    //frtClsTvoRow.setSeqVal(new Timestamp(DateTimeUtil.singleton().getCurrentJboDateWithTime()));
    if (ctrcId != null)
    {
      try
      {
        frtClsTvoRow.setObjId(new Number(ctrcId));
      }
      catch (SQLException sqle)
      {
        if (_logger.isLoggable(Level.SEVERE))
        {
          _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                       sqle.getMessage());
        }
      }
    }
    frtClsTVO.insertRow(frtClsTvoRow);
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * To add a new row in ContractXrefTRVO
   * This method is called by 'addxcontract()' in ContractBean.java
   * @param inputExtID
   */
  public void createXContractRow(String inputExtID, String pCompanyId)
  {
    String lMethodName = "createXContractRow()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    ContractXrefTRVOImpl ctrXTvo = getContractXrefTRVO();
    ContractXrefTRVORowImpl xctrcnewRow =
      (ContractXrefTRVORowImpl) ctrXTvo.createRow();


    RatingCompanyROVOImpl rcROVO = getRCompanyROVO();
    rcROVO.setBindCompanyID(pCompanyId);
    rcROVO.executeQuery();

    RatingCompanyROVORowImpl rcRow =
      (RatingCompanyROVORowImpl) rcROVO.first();

    xctrcnewRow.setNewRowState(Row.STATUS_NEW);
    xctrcnewRow.setCtrcXrefId(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ));
    xctrcnewRow.setExtlId(inputExtID);
    xctrcnewRow.setAudMaxChrgAmt(rcRow.getAudMaxChrgAmt());
    xctrcnewRow.setAudMinChrgAmt(rcRow.getAudMinChrgAmt());
    xctrcnewRow.setCrcyCd(rcRow.getCrcyCd());
    xctrcnewRow.setIsAuditVisible(false);
    xctrcnewRow.setAudFlg(new Number(0));
    ctrXTvo.insertRow(xctrcnewRow);
    ctrXTvo.setCurrentRow(xctrcnewRow);

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  public void setPubNotesFlag(boolean pIsPUBX)
  {
    ContractReferenceTRVOImpl ctrcreftvo = getContractReferenceTRVO();
    ContractReferenceTRVORowImpl ctrcRefTvoRow =
      (ContractReferenceTRVORowImpl) ctrcreftvo.getCurrentRow();

    if (pIsPUBX)
    {
      ctrcRefTvoRow.setPubnoteflag(pIsPUBX);
    }
    else
    {
      ctrcRefTvoRow.setPubnoteflag(pIsPUBX);
    }
    ctrcreftvo.setCurrentRow(ctrcRefTvoRow);
  }

  /**
   * To add a new row in CTRC_REF Table
   * @param ctrcid
   */
  public void saveCtrcReferences(Number ctrcid)
  {
    String lMethodName = "saveCtrcReferences(Number ctrcid)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    /* Adding a new row for contract reference into CTRC_REF table*/
    ContractReferenceTRVOImpl ctrcreftvo = getContractReferenceTRVO();
    RowSetIterator rks = ctrcreftvo.createRowSetIterator(null);

    while (rks.hasNext())
    {
      ContractReferenceTRVORowImpl ctrcRefTvoRow =
        (ContractReferenceTRVORowImpl) rks.next();
      addCtrcRefRow(ctrcid, ctrcRefTvoRow);
    }

    rks.closeRowSetIterator();
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  public boolean addCtrcRefRow(Number ctrcid,
                               ContractReferenceTRVORowImpl ctrcRefTvoRow)
  {
    String lMethodName =
      "addCtrcRefRow(Number, ContractReferenceTRVORowImpl)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    boolean isValid = false;
    ContractReferenceVOImpl ctrcref = getContractReferenceVO();
    Number noteid = null;

    if (IRCTRateCompanyConstants.ADD_CTRC_REF_MODE.equals(ctrcRefTvoRow.getrowMode()))
    {
      ContractReferenceVORowImpl newctrcRefrow =
        (ContractReferenceVORowImpl) ctrcref.createRow();

      noteid = modPubNoteForCtrcRef(ctrcRefTvoRow);
      newctrcRefrow.setCtrcRefId(ctrcRefTvoRow.getCtrcRefId());
      newctrcRefrow.setObjId(ctrcid);

      newctrcRefrow.setCtrcId(ctrcRefTvoRow.getCtrcId());
      newctrcRefrow.setBusId(ctrcRefTvoRow.getBusId());
      newctrcRefrow.setCpyId(ctrcRefTvoRow.getCpyId());
      newctrcRefrow.setObjCd(ctrcRefTvoRow.getObjCd());
      newctrcRefrow.setObjCtrcId(ctrcid);
      newctrcRefrow.setRefRuleCd(ctrcRefTvoRow.getRefRuleCd());
      newctrcRefrow.setPblshDrctvCd(ctrcRefTvoRow.getPblshDrctvCd());
      newctrcRefrow.setPrcdnNum(ctrcRefTvoRow.getPrcdnNum());
      newctrcRefrow.setAudFlg(ctrcRefTvoRow.getAudFlg());
      String affl = ctrcRefTvoRow.getAffCtrcInd();
      if ("1".equals(affl))
      {
        newctrcRefrow.setAffCtrcInd(new oracle.jbo.domain.Number(1));
      }
      else
      {
        newctrcRefrow.setAffCtrcInd(new oracle.jbo.domain.Number(0));
      }

      newctrcRefrow.setNoteId(noteid);
      newctrcRefrow.setCtrcRefEffDt(ctrcRefTvoRow.getCtrcRefEffDt());
      newctrcRefrow.setCtrcRefExprDt(ctrcRefTvoRow.getCtrcRefExpDt());

      ctrcref.insertRow(newctrcRefrow);

      /* To create a new row in IPRT_TSK table*/
      saveImportJobContractRef(ctrcRefTvoRow, ctrcid, "Create");
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return isValid;
  }

  public void inactivateContract(String pCtrcId)
  {
    String lMethodName = "inactivateContract";
    _logger.entering(CLAZZ_NAME, lMethodName);

    ContractVOImpl ctrcVO = getContractVO();
    ctrcVO.setBindCtrcId(pCtrcId);
    ctrcVO.executeQuery();
    if (ctrcVO.hasNext())
    {
      ContractVORowImpl ctrcCurrentRow =
        (ContractVORowImpl) ctrcVO.first();

      ctrcCurrentRow.setStaCd("INAC");
      saveImportJobContract("InActivate");
      performDatabaseCommit();
    }
    // ask the tree to refresh itself
    setUpRatingCompanyForUser(null, null);

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * To save Contract Notes in IRCT_NOTE table
   * @param pNotes
   */
  public Number saveIrctNotes(String pNotes)
  {
    String lMethodName = "saveCtrcNotes(String pNotes)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    /* Adding a new row for contract notes into IRCT_NOTE table*/
    Number pNoteSeq =
      getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ);
    CtrcNoteVOImpl notevo = getCtrcNoteVO();
    CtrcNoteVORowImpl notenewRow = (CtrcNoteVORowImpl) notevo.createRow();
    notenewRow.setNoteId(pNoteSeq);
    notenewRow.setAscCmpntNam("IRCT");
    notenewRow.setNoteTxt(new ClobDomain(pNotes));
    //notenewRow.validate();

    notevo.insertRow(notenewRow);
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return pNoteSeq;
  }

  /**
   * To edit Contract Notes in IRCT_NOTE table
   * @param pNotes
   */
  public void editIrctNotes(Number noteId, String pNotes)
  {
    String lMethodName = "editIrctNotes(Number noteId, String pNotes)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    CtrcNoteVOImpl notevo = getCtrcNoteVO();
    notevo.setBindCtrcNoteId(noteId);
    notevo.executeQuery();

    RowSetIterator rks = notevo.createRowSetIterator(null);
    while (rks.hasNext())
    {
      CtrcNoteVORowImpl noteRow = (CtrcNoteVORowImpl) rks.next();
      noteRow.setNoteTxt(new ClobDomain(pNotes));
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Upon creat, delete, modify a row in CTRC_XREF table,
   * this method will create a new row in IPRT_TSK table
   * @param pCtrcXRefTvoRow
   * @param pCtrcid
   * @param pCompanyId
   * @param pTaskType
   */
  public void saveImportJobXCtrcRef(ContractXrefTRVORowImpl pCtrcXRefTvoRow,
                                    Number pCtrcid, String pCompanyId,
                                    String pExtlId, String pTaskType)
  {
    String lMethodName = "saveImportJobXCtrcRef";
    _logger.entering(CLAZZ_NAME, lMethodName);

    /* Adding a new row for contract reference into IPRT_TSK table*/
    ImportTaskVOImpl importTaskVO = getImportTaskVO();
    ImportTaskVORowImpl newiprttskrow =
      (ImportTaskVORowImpl) importTaskVO.createRow();
    String busId = getBusinessID();

    Number pimportSeq =
      getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ);
    long seq = pimportSeq.longValue();
    String parmval = null;

    newiprttskrow.setIprtTskId(new DBSequence(seq));
    newiprttskrow.setObjId(pCtrcXRefTvoRow.getCtrcXrefId());
    newiprttskrow.setCtrcId(pCtrcid);
    newiprttskrow.setBusId(busId);
    newiprttskrow.setCpyId(pCompanyId);
    newiprttskrow.setObjCd("XREF");
    newiprttskrow.setAsnToVal(null);

    parmval = pExtlId.toString();
    newiprttskrow.setParmVal(new ClobDomain(parmval));

    if ("Create".equals(pTaskType) || "Delete".equals(pTaskType))
    {
      if ("Create".equals(pTaskType))
      {
        newiprttskrow.setTskCd(new oracle.jbo.domain.Number(IRCTModelConstants.CREATE_CONTRACT_XREF_IMPORT_TASK_CODE));
      }
      else if ("Delete".equals(pTaskType))
      {
        newiprttskrow.setTskCd(new oracle.jbo.domain.Number(IRCTModelConstants.DELETE_CONTRACT_XREF_IMPORT_TASK_CODE));
      }
    }
    else if ("Update".equals(pTaskType))
    {
      newiprttskrow.setTskCd(new oracle.jbo.domain.Number(IRCTModelConstants.UPDATE_CONTRACT_XREF_IMPORT_TASK_CODE));
    }
    if ((pCtrcXRefTvoRow.getAudMaxChrgAmt() != null) &&
        (pCtrcXRefTvoRow.getAudMinChrgAmt() != null))
    {
      parmval += ",";
      parmval += pCtrcXRefTvoRow.getAudMinChrgAmt().toString();
      parmval += ",";
      parmval += pCtrcXRefTvoRow.getAudMaxChrgAmt().toString();
      parmval += ",";
      if (pCtrcXRefTvoRow.getCrcyCd() != null)
      {
        parmval += pCtrcXRefTvoRow.getCrcyCd().toString();
      }

      newiprttskrow.setParmVal(new ClobDomain(parmval));
    }

    importTaskVO.insertRow(newiprttskrow);
    //performDatabaseCommit();
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  public boolean saveImportJobContract(String pTaskType)
  {
    boolean isCommitted = true;
    ContractVOImpl ctrcVO = getContractVO();
    ContractVORowImpl ctrcCurrentRow =
      (ContractVORowImpl) ctrcVO.getCurrentRow();

    ImportTaskVOImpl importTaskVO = getImportTaskVO();
    ImportTaskVORowImpl newiprttskrow =
      (ImportTaskVORowImpl) importTaskVO.createRow();

    try
    {
      Number pimportSeq =
        getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ);
      long seq = pimportSeq.longValue();

      newiprttskrow.setIprtTskId(new DBSequence(seq));
      newiprttskrow.setObjId(ctrcCurrentRow.getCtrcId());
      newiprttskrow.setCtrcId(ctrcCurrentRow.getCtrcId());
      newiprttskrow.setBusId(ctrcCurrentRow.getBusId());
      newiprttskrow.setCpyId(ctrcCurrentRow.getCpyId());
      newiprttskrow.setObjCd("CTRC");
      newiprttskrow.setAsnToVal(null);
      String parmval = null;
      String ctrcDesc = ctrcCurrentRow.getCtrcDesc().toString().trim();
      Object ctrcSecDesc = ctrcCurrentRow.getCtrcScdDesc();

      if (pTaskType.equals("Update"))
      {
        newiprttskrow.setTskCd(new oracle.jbo.domain.Number(28));
        if (ctrcSecDesc != null)
        {
          parmval = ctrcDesc + "/" + ctrcSecDesc;
          newiprttskrow.setParmVal(new ClobDomain(parmval));
        }
        else
        {
          parmval = ctrcDesc;
          newiprttskrow.setParmVal(new ClobDomain(parmval));
        }
      }
      else if (pTaskType.equals("Activate"))
      {
        newiprttskrow.setTskCd(new oracle.jbo.domain.Number(23));
      }
      else if (pTaskType.equals("InActivate"))
      {
        newiprttskrow.setTskCd(new oracle.jbo.domain.Number(16));
      }
      else if (pTaskType.equals("Delete"))
      {
        newiprttskrow.setTskCd(new oracle.jbo.domain.Number(20));
      }
      else if (pTaskType.equals("UpdateFrtCls"))
      {
        newiprttskrow.setTskCd(new oracle.jbo.domain.Number(32));
      }

      importTaskVO.insertRow(newiprttskrow);
      //isCommitted = performDatabaseCommit();
    }
    catch (Exception e)
    {
      isCommitted = false;
      if (_logger.isLoggable(Level.FINEST))
      {
        _logger.logp(Level.FINEST, CLAZZ_NAME, "saveImportJobContract",
                     "Error during adding for IPRT_TSK row", e);
      }
    }
    return isCommitted;
  }

  public String dateFormatConverter(String pDate)
  {
    String inputDate = pDate;
    try
    {
      SimpleDateFormat sdfSource = new SimpleDateFormat("yyyy-MM-dd");
      Date date = sdfSource.parse(inputDate);
      SimpleDateFormat sdfDestination = new SimpleDateFormat("MM-dd-yyyy");
      inputDate = sdfDestination.format(date);
    }
    catch (ParseException pe)
    {
      _logger.logp(Level.FINEST, CLAZZ_NAME,
                   "dateFormatConverter(String pDate)",
                   "Error during dateFormatConverter", pe);
    }
    return inputDate;
  }

  /**
   * Upon creat, delete, modify a row in CTRC_REF table,
   * this method will create a new row in IPRT_TSK table
   * @param pCtrcRefTvoRow
   * @param pCtrcid
   */
  public boolean saveImportJobContractRef(ContractReferenceTRVORowImpl pCtrcRefTvoRow,
                                          Number pCtrcid, String pTaskType)
  {
    boolean isCommitted = true;
    String lMethodName =
      "saveImportJobContractRef(ContractReferenceTRVORowImpl pCtrcRefTvoRow," +
      "Number pCtrcid)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    try
    {
      /* Adding a new row for contract reference into IPRT_TSK table*/
      ImportTaskVOImpl importTaskVO = getImportTaskVO();
      ImportTaskVORowImpl newiprttskrow =
        (ImportTaskVORowImpl) importTaskVO.createRow();

      DBSequence pimportSeq =
        new DBSequence(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ));

      newiprttskrow.setIprtTskId(pimportSeq);
      newiprttskrow.setObjId(pCtrcid);
      newiprttskrow.setCtrcId(pCtrcid);
      newiprttskrow.setBusId(pCtrcRefTvoRow.getBusId());
      newiprttskrow.setCpyId(pCtrcRefTvoRow.getCpyId());
      newiprttskrow.setObjCd("CREF");
      newiprttskrow.setAsnToVal(null);

      StringBuffer parmval = new StringBuffer();

      parmval.append(pCtrcRefTvoRow.getCtrcId());
      parmval.append(",");
      parmval.append(pCtrcRefTvoRow.getRefRuleCd());
      parmval.append(",");
      parmval.append(pCtrcRefTvoRow.getPrcdnNum());
      parmval.append(",");
      parmval.append(pCtrcRefTvoRow.getCtrcRefId());
      parmval.append(",");
      parmval.append(pCtrcRefTvoRow.getCpyId());
      parmval.append(",");

      if (pCtrcRefTvoRow.getCtrcRefEffDt() != null)
      {
        parmval.append(DateTimeUtil.singleton().formatDateTime(pCtrcRefTvoRow.getCtrcRefEffDt(),
                                                               "MM/dd/yyyy",
                                                               DateTimeUtil.DEFAULT_TIMEZONE));
      }
      parmval.append(",");

      if (pCtrcRefTvoRow.getCtrcRefExpDt() != null)
      {
        parmval.append(DateTimeUtil.singleton().formatDateTime(pCtrcRefTvoRow.getCtrcRefExpDt(),
                                                               "MM/dd/yyyy",
                                                               DateTimeUtil.DEFAULT_TIMEZONE));
      }
      parmval.append(",");
      parmval.append(pCtrcRefTvoRow.getCpyId());

      newiprttskrow.setParmVal(new ClobDomain(parmval.toString()));

      if ("Create".equals(pTaskType))
      {
        newiprttskrow.setTskCd(new oracle.jbo.domain.Number(IRCTModelConstants.CREATE_CONTRACT_REFERENCE_IMPORT_TASK_CODE));
      }
      else if ("Update".equals(pTaskType))
      {
        newiprttskrow.setTskCd(new oracle.jbo.domain.Number(IRCTModelConstants.UPDATE_CONTRACT_REFERENCE_IMPORT_TASK_CODE));
      }
      else if ("Delete".equals(pTaskType))
      {
        newiprttskrow.setTskCd(new oracle.jbo.domain.Number(IRCTModelConstants.DELETE_CONTRACT_REFERENCE_IMPORT_TASK_CODE));
      }

      importTaskVO.insertRow(newiprttskrow);
    }
    catch (Exception e)
    {
      if (_logger.isLoggable(Level.FINEST))
      {
        _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                     e.getMessage());
      }
    }

    //isCommitted = performDatabaseCommit();
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return isCommitted;
  }

  /**
   * To Save the Contract data from Add Contract Screen
   * This method is called by 'saveContract(ActionEvent actionEvent)'
   * in ContractBean.java
   * @param pCompanyId
   */
  public void saveContractInfo(String pCompanyId)
  {
    String lMethodName = "saveContractInfo(String pCompanyId)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    ContractTRVOImpl ctrTvo = getContractTRVO();
    ContractTRVORowImpl ctrcCurrentRow =
      (ContractTRVORowImpl) ctrTvo.getCurrentRow();

    String busId = getBusinessID();
    String ctrcdesc = ctrcCurrentRow.getCtrcDesc();
    String ctrcsecdesc = ctrcCurrentRow.getCtrcScdDesc();
    ContractVOImpl ctrcVO = getContractVO();

    ContractDupChkROVOImpl ctrcDupChkROVO = getContractDupChkROVO();
    ctrcDupChkROVO.setBindBusID(busId);
    ctrcDupChkROVO.setBindCpyID(pCompanyId);
    ctrcDupChkROVO.setBindCtrcDesc(StringUtils.upperCase(ctrcdesc));
    ctrcDupChkROVO.setBindCtrcScdDesc(StringUtils.upperCase(ctrcsecdesc));
    ctrcDupChkROVO.executeQuery();

    if (ctrcDupChkROVO.getRowCount() == 0)
    {

      String ctrccd = ctrcCurrentRow.getCtrcCd();
      Number ctrcsigned = new oracle.jbo.domain.Number(0);
      ctrcsigned = ctrcCurrentRow.getSignedCtrcInd();
      String ctrchistory = ctrcCurrentRow.getHstMthdCd();
      Number dispHstInd = new oracle.jbo.domain.Number(0);
      dispHstInd = ctrcCurrentRow.getDispHstInd();
      Number dfltfrtcls = ctrcCurrentRow.getDfltFrtClaNum();
      String notes = String.valueOf(ctrcCurrentRow.getInternalNottes());

      ContractVORowImpl ctrcnewRow =
        (ContractVORowImpl) ctrcVO.createRow();

      Number noteid = new oracle.jbo.domain.Number(0);

      Number pCtrcSeq =
        getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ);

      //      if (StringUtils.isNotEmpty(notes))
      //      {
      noteid = saveIrctNotes(notes);
      //  }
      /* Adding a new row for contract into CTRC table*/

      ctrcnewRow.setCtrcId(pCtrcSeq);
      ctrcnewRow.setBusId(busId);
      ctrcnewRow.setCpyId(pCompanyId);
      ctrcnewRow.setStaCd("ACTV");
      ctrcnewRow.setAudFlg(new oracle.jbo.domain.Number(0));
      ctrcnewRow.setDfltFrtClaNum(dfltfrtcls);
      ctrcnewRow.setCtrcDesc(ctrcdesc);
      ctrcnewRow.setCtrcScdDesc(ctrcsecdesc);
      if ("Affiliate".equals(ctrccd))
      {
        ctrcnewRow.setCtrcCd("AFFL");
      }
      else if ("Standard".equals(ctrccd))
      {
        ctrcnewRow.setCtrcCd("STD");
      }
      else if ("Non-Standard".equals(ctrccd))
      {
        ctrcnewRow.setCtrcCd("NSTD");
      }
      ctrcnewRow.setNoteId(noteid);
      ctrcnewRow.setHstMthdCd(ctrchistory);

      if (ctrcsigned == null)
      {
        ctrcnewRow.setSignedCtrcInd(new oracle.jbo.domain.Number(0));
      }
      else
      {
        ctrcnewRow.setSignedCtrcInd(ctrcsigned);
      }
      if (dispHstInd == null)
      {
        ctrcnewRow.setDispHstInd(new oracle.jbo.domain.Number(0));
      }
      else
      {
        ctrcnewRow.setDispHstInd(dispHstInd);
      }
      ctrcVO.insertRow(ctrcnewRow);

      Number usrPrefId =
        getIRCTRateCompanyServiceHelper().getUsrPrefId(getLoggedInUserID());
      UserContractsVOImpl existingUserCtrcsVo = getUserContractsVO();
      existingUserCtrcsVo.setBindUsrPrefId(usrPrefId);
      existingUserCtrcsVo.executeQuery();

      UserContractsVORowImpl r =
        (UserContractsVORowImpl) existingUserCtrcsVo.createRow();

      r.setUsrPrefId(usrPrefId);
      r.setCtrcId(pCtrcSeq);

      /*To save Contract Reference info*/
      saveCtrcReferences(pCtrcSeq);
      /*To save Contract External Reference info*/
      saveContractXRef(pCtrcSeq, pCompanyId);
      /*To save Freight Class Mapping info*/
      saveFrtClsMapForCtrc(pCtrcSeq, pCompanyId);


      performDatabaseCommit();
      setUpRatingCompanyForUser(null, null);
    }
    else
    {
      raiseValidationException(IRCTRateCompanyConstants.CANNOT_SAVE_DUPLICATE_EXISTS,
                               new Object[]
          { });
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * To add a new row in CTRC_XREF Table
   * @param pCtrcId
   * @param pCompanyId
   */
  public void saveContractXRef(Number pCtrcId, String pCompanyId)
  {
    String lMethodName =
      "saveContractXRef(Number pCtrcId, String pCompanyId)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    ContractXrefTRVOImpl ctrXTvo = getContractXrefTRVO();

    RowSetIterator rks = ctrXTvo.createRowSetIterator(null);
    while (rks.hasNext())
    {
      ContractXrefTRVORowImpl ctrcxTvoRow =
        (ContractXrefTRVORowImpl) rks.next();
      addCtrcXRefRow(pCtrcId, pCompanyId, ctrcxTvoRow);
    }

    rks.closeRowSetIterator();
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  public void addCtrcXRefRow(Number pCtrcId, String pCompanyId,
                             ContractXrefTRVORowImpl ctrcxTvoRow)
  {
    String lMethodName =
      "addCtrcXRefRow(Number, String,ContractXrefTRVORowImpl)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    String busId = getBusinessID();
    ContractXrefVOImpl ctrcxref = getContractXrefVO();
    if (ctrcxTvoRow.getCreDttm() == null)
    {
      ContractXrefVORowImpl newctrcxRefrow =
        (ContractXrefVORowImpl) ctrcxref.createRow();

      Number pCtrcXSeq =
        getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ);
      ctrcxTvoRow.setCtrcXrefId(pCtrcXSeq);
      newctrcxRefrow.setCtrcXrefId(new oracle.jbo.domain.Number(pCtrcXSeq));
      newctrcxRefrow.setCtrcId(pCtrcId);
      newctrcxRefrow.setExtlId(ctrcxTvoRow.getExtlId());
      newctrcxRefrow.setBusId(busId);
      newctrcxRefrow.setCpyId(pCompanyId);
      newctrcxRefrow.setAudMinChrgAmt(ctrcxTvoRow.getAudMinChrgAmt());
      newctrcxRefrow.setAudMaxChrgAmt(ctrcxTvoRow.getAudMaxChrgAmt());
      newctrcxRefrow.setAudFlg(ctrcxTvoRow.getAudFlg());
      newctrcxRefrow.setCrcyCd(ctrcxTvoRow.getCrcyCd());
      newctrcxRefrow.setLtlInd(new oracle.jbo.domain.Number(0));

      ctrcxref.insertRow(newctrcxRefrow);

      saveImportJobXCtrcRef(ctrcxTvoRow, pCtrcId, pCompanyId,
                            ctrcxTvoRow.getExtlId().toString(), "Create");
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * To add a new row in LTL_FRT_CLA_MAP Table
   * @param pCtrcId
   * @param pCompanyId
   */
  public void saveFrtClsMapForCtrc(Number pCtrcId, String pCompanyId)
  {
    String lMethodName =
      "saveFrtClsMapForCtrc(Number pCtrcId, String pCompanyId)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    FrtClsMappingTRVOImpl freightClsTVO = getFrtClsMappingTRVO();
    RowSetIterator rks = freightClsTVO.createRowSetIterator(null);

    while (rks.hasNext())
    {
      FrtClsMappingTRVORowImpl freightClsTvoRow =
        (FrtClsMappingTRVORowImpl) rks.next();
      getIRCTRateCompanyServiceHelper().addFrtClsMapRow(pCtrcId,
                                                        pCompanyId,
                                                        freightClsTvoRow);
    }

    rks.closeRowSetIterator();
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to remove frtClsMapRow
   */
  public void deleteFrtClsMapRow()
  {
    String lMethodName = "deleteFrtClsMapRow()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    FrtClsMappingTRVOImpl freightClsTVO = getFrtClsMappingTRVO();
    RowSetIterator rks = freightClsTVO.createRowSetIterator(null);

    while (rks.hasNext())
    {
      FrtClsMappingTRVORowImpl freightClsTvoRow =
        (FrtClsMappingTRVORowImpl) rks.next();
      if (freightClsTvoRow.getSelectedRow())
      {
        freightClsTvoRow.remove();
      }
    }

    rks.closeRowSetIterator();
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  public void initParamDataGroup(java.util.Map contractTreeDataMap)
  {

    String lMethodName = "initParamDataGroup()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    long stTime = System.currentTimeMillis();

    DataGrpVOImpl dgVO = getDataGrpVO();
    oracle.jbo.domain.Number pDataGrpId =
      (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.DATA_GROUP_ID);
    //--------- It would always be a collective Engine -----------------
    oracle.jbo.domain.Number pEngId =
      (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.ENGINE_ID);
    if (pEngId == null)
    {
      pEngId =
          (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.CALLER_ENGINE_ID);
    }

    String treePath =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.CONTRACT_TREE_PATH);
    dgVO.setBind_Data_GrpID(pDataGrpId.toString());
    dgVO.setBind_Bus_ID(getBusinessID());
    dgVO.setBind_Calc_Opr_Id(null);
    dgVO.executeQuery();
    while (dgVO.hasNext())
    {
      DataGrpVORowImpl dgRow = (DataGrpVORowImpl) dgVO.next();
      dgRow.setTreePath(treePath);
    }
    _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                 " Total Time took for :" + lMethodName + "->" +
                 (System.currentTimeMillis() - stTime));
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Container's getter for SelectedServiceTypeROVO.
   * @return SelectedServiceTypeROVO
   */
  public SelectedServiceTypeROVOImpl getSelectedServiceTypeROVO()
  {
    return (SelectedServiceTypeROVOImpl) findViewObject("SelectedServiceTypeROVO");
  }

  /**
   * Container's getter for ServiceTypeROVO.
   * @return ServiceTypeROVO
   */
  public ServiceTypeROVOImpl getServiceTypeROVO()
  {
    return (ServiceTypeROVOImpl) findViewObject("ServiceTypeROVO");
  }


  /**
   * Finds all the Admin List available.
   * @return List
   */
  public List getAdminObjectList()
  {
    String lMethodName = "getAdminObjectList()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    String adminPath = null;
    List nameList = new ArrayList();

    adminPath = getOrbLookupPropertyValue(ADMIN_MANAGER);
    String parsedPath =
      adminPath.substring(0, (adminPath.indexOf(IRCTRateCompanyConstants.ADMIN_MGR)));
    //get the list of admin objects for the parsed admin path name
    nameList =
        getIRCTRateCompanyServiceHelper().recursiveSearch(nameList, parsedPath,
                                                          20);

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return nameList;
  }


  /**
   * Method to execute Query for Selected Engine Type
   * @param engValueMap
   */
  public void selectEngineType(java.util.Map engValueMap)
  {
    String lMethodName = "selectEngineType(java.util.Map)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { engValueMap });

    String engineType =
      (String) engValueMap.get(IRCTRateCompanyConstants.ENGINE_TYPE);
    String docCtntCd =
      (String) engValueMap.get(IRCTRateCompanyConstants.DOC_CTNT_CD);
    String companyID =
      (String) engValueMap.get(IRCTRateCompanyConstants.COMPANY_ID);
    String docContentCode =
      (String) engValueMap.get(IRCTRateCompanyConstants.DOC_CONTENT_CODE);
    String callerEngineId =
      (String) engValueMap.get(IRCTRateCompanyConstants.CALLER_ENGINE_ID);

    CalcOprTypVOImpl coTypVO = getCalcOprTypVO();
    coTypVO.setBind_CalcOprCd(engineType);
    coTypVO.setBind_DocCtntCd(docCtntCd);
    coTypVO.executeQuery();
    ServiceTypeROVOImpl sstROVO = getServiceTypeROVO();
    //case when engine class is dependent
    if ((IRCTRateCompanyConstants.DEPENDENT_SELECTIVE).equals(engineType) ||
        (IRCTRateCompanyConstants.SNI_OUT_OF_ROUTE).equals(engineType))
    {
      getIRCTRateCompanyServiceHelper().getFilteredServiceType(companyID,
                                                               sstROVO);
    }
    else
    {
      //case when  the engine has no caller engine id means add engine is clicked from qualification tab
      if (callerEngineId == null)

        sstROVO =
            getIRCTRateCompanyServiceHelper().getFilteredServiceType(companyID,
                                                                     sstROVO);
      else
        //case when  created  engine is base engine
        sstROVO =
            getIRCTRateCompanyServiceHelper().getFilteredServiceType(companyID,
                                                                     docContentCode,
                                                                     sstROVO);
    }
    // ----------- clean all created rows on previous selections of Engines (In case if they have subtables...) --------------

    CalcOprTypVORowImpl calTyprow =
      (CalcOprTypVORowImpl) getCalcOprTypVO().first();
    CalcOprVORowImpl coRow =
      (CalcOprVORowImpl) getCalcOprVO().getCurrentRow();

    //---------- Note Row is required if it is not Collective Engine
    if (!calTyprow.getCalcOprClaCd().equalsIgnoreCase(IRCTRateCompanyConstants.COLLECTIVE))
    {
      coRow.setBindPubTmplID(engineType);
      coRow.createNoteRow(getIrctNoteVL());
    }

    getRoundingTVO().clearCache();
    getFreightClsMappingsTRVO().clearCache();
    IRCTCommonUtil.cleanItrForEngine(coRow, calTyprow);

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  public void setCtrcRefAfflIsSelected(boolean pIsSelected)
  {
    getIRCTRateCompanyServiceHelper().setAfflIsSeletedFlag(pIsSelected);
  }

  public void setCtrcRefAfflIsVisible(boolean pIsVisible)
  {
    getIRCTRateCompanyServiceHelper().setAfflIsVisibleFlag(pIsVisible);
  }

  /**
   * Container's getter for ContractRefWithDescVO.
   * @return ContractRefWithDescVO
   */
  public ContractRefWithDescVOImpl getContractRefWithDescVO()
  {
    return (ContractRefWithDescVOImpl) findViewObject("ContractRefWithDescVO");
  }

  /**
   * This method gets invoked by clicking on 'addcontract' link on contract tree page
   *
   * in ContractBean.java
   */
  public void createContractRow(String pCompanyId)
  {
    String lMethodName = "createContractRow(String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pCompanyId });
    ContractTRVOImpl ctrTvo = getContractTRVO();
    String notes = "FUEL\n" +
      "\n" +
      "PRICING\n" +
      "\n" +
      "BILLING/ RATING\n" +
      "\n" +
      "ACCESSORIALS\n" +
      "\n" +
      "MISCELLANEOUS\n";
    // Clear cache for Contract Page related VO's
    ctrTvo.clearCache();
    getContractReferenceTRVO().clearCache();
    getContractXrefTRVO().clearCache();
    getFrtClsMappingTRVO().clearCache();
    getPubNotesTRVO().clearCache();
    getCtrcRefTRVO().clearCache();
    getContactTRVO().clearCache();

    // Create a New row for ContractTRVO
    ContractTRVORowImpl ctrcnewRow =
      (ContractTRVORowImpl) ctrTvo.createRow();
    ctrcnewRow.setNewRowState(Row.STATUS_NEW);
    ctrcnewRow.setInternalNottes(new ClobDomain(notes));
    ctrTvo.insertRow(ctrcnewRow);

    // Execute CompanyVO By company ID
    CompanyVOImpl cmpVO = (CompanyVOImpl) getCompanyVO();
    cmpVO.setBindCpyId(pCompanyId);
    cmpVO.executeQuery();
    if (cmpVO.hasNext())
    {
      CompanyVORowImpl cmprow = (CompanyVORowImpl) cmpVO.first();
      ctrcnewRow.setCompanyName(cmprow.getRatCpyDesc());
    }
  }

  public void createPubNotesRow(String pCtrcId)
  {
    String lMethodName = "createPubNotesRow(String pCtrcId)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    PubNotesTRVOImpl pubNotesTvo = getPubNotesTRVO();
    PubNotesTRVORowImpl pubNotenewRow =
      (PubNotesTRVORowImpl) pubNotesTvo.createRow();

    pubNotenewRow.setNewRowState(Row.STATUS_NEW);
    pubNotenewRow.setCtrcId(pCtrcId);

    pubNotesTvo.insertRow(pubNotenewRow);
    pubNotesTvo.setCurrentRow(pubNotenewRow);

    //    ContractReferenceTRVORowImpl ctrcRefRow =
    //      (ContractReferenceTRVORowImpl) getContractReferenceTRVO().getCurrentRow();
    //    ctrcRefRow.setPubNotesPresent(true);
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  public void createPubNotesRow(String pCtrcId, String pDocId)
  {
    String lMethodName =
      "createPubNotesRow(String pCtrcId, String pDocId)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    PubNotesTRVOImpl pubNotesTvo = getPubNotesTRVO();
    PubNotesTRVORowImpl pubNotenewRow =
      (PubNotesTRVORowImpl) pubNotesTvo.createRow();

    pubNotenewRow.setNewRowState(Row.STATUS_NEW);
    pubNotenewRow.setCtrcId(pCtrcId);
    pubNotenewRow.setDocId((pDocId));

    pubNotesTvo.insertRow(pubNotenewRow);
    pubNotesTvo.setCurrentRow(pubNotenewRow);

    ContractReferenceTRVORowImpl ctrcRefRow =
      (ContractReferenceTRVORowImpl) getContractReferenceTRVO().getCurrentRow();
    ctrcRefRow.setPubNotesPresent(true);
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Container's getter for CalcOprndVO.
   * @return CalcOprndVO
   */
  public CalcOprndVOImpl getCalcOprndVO()
  {
    return (CalcOprndVOImpl) findViewObject("CalcOprndVO");
  }

  /**
   * Container's getter for UsrPrefCpyROVO.
   * @return UsrPrefCpyROVO
   */
  public UsrPrefCpyROVOImpl getUsrPrefCpyROVO()
  {
    return (UsrPrefCpyROVOImpl) findViewObject("UsrPrefCpyROVO");
  }

  /**
   * Container's getter for UsrPrefCtrcRO1.
   * @return UsrPrefCtrcRO1
   */
  public UsrPrefCtrcROVOImpl getUsrPrefCtrcROVO()
  {
    return (UsrPrefCtrcROVOImpl) findViewObject("UsrPrefCtrcROVO");
  }

  /**
   * Container's getter for ContractROVO.
   * @return ContractROVO
   */
  public ContractROVOImpl getContractROVO()
  {
    return (ContractROVOImpl) findViewObject("ContractROVO");
  }

  /**
   * Container's getter for CtrcForRatCpyVL.
   * @return CtrcForRatCpyVL
   */
  public ViewLinkImpl getCtrcForRatCpyVL()
  {
    return (ViewLinkImpl) findViewLink("CtrcForRatCpyVL");
  }

  /**
   * Container's getter for BaseEngineROVO.
   * @return BaseEngineROVO
   */
  public BaseEngineROVOImpl getBaseEngineROVO()
  {
    return (BaseEngineROVOImpl) findViewObject("BaseEngineROVO");
  }

  /**
   * Container's getter for AddRateEntryTRVO.
   * @return AddRateEntryTRVO
   */
  public AddRateEntryTRVOImpl getAddRateEntryTRVO()
  {
    return (AddRateEntryTRVOImpl) findViewObject("AddRateEntryTRVO");
  }

  /**
   * Container's getter for ValidateContractReferenceROVO.
   * @return ValidateContractReferenceROVO
   */
  public ValidateContractReferenceROVOImpl getValidateContractReferenceROVO()
  {
    return (ValidateContractReferenceROVOImpl) findViewObject("ValidateContractReferenceROVO");
  }


  /**
   * Container's getter for PubNotesTRVO.
   * @return PubNotesTRVO
   */
  public PubNotesTRVOImpl getPubNotesTRVO()
  {
    return (PubNotesTRVOImpl) findViewObject("PubNotesTRVO");
  }


  public void createRowInCtrcRefTRVO()
  {
    getIRCTRateCompanyServiceHelper().addAllRowsInCtrcRef();
  }

  public void modifyRowInCtrcRefTRVO()
  {
    getIRCTRateCompanyServiceHelper().addModifiedRowsInCtrcRef();
  }

  public void modRowInConttRefTRVO()
  {
    getIRCTRateCompanyServiceHelper().addModifiedRowsInContractReference();
  }

  public void createCtrcTRVORows(String pCtrcId)
  {
    getIRCTRateCompanyServiceHelper().copyCtrcTRVORow(pCtrcId);
  }

  /**
   * This method gets invoked by clicking on 'editcontract' link on Contract tree
   * @param pCtrcId
   */
  public void createCtrcRefRows(String pCtrcId)
  {
    getIRCTRateCompanyServiceHelper().copyCtrcRefTRVORow(pCtrcId);
  }

  public void createCtrcXRefRows(String pCtrcId)
  {
    getIRCTRateCompanyServiceHelper().copyCtrcXRefTRVORow(pCtrcId);
  }

  public void createFrtClsRows(String pCtrcId)
  {
    getIRCTRateCompanyServiceHelper().copyFrtClsMapTRVORow(pCtrcId);
  }

  public void getContactInfoRow()
  {
    getIRCTRateCompanyServiceHelper().getContactRows(getCurrentCtrcId());
  }

  private String getCurrentCtrcId()
  {
    ContractVORowImpl ctrcCurrentRow =
      (ContractVORowImpl) getContractVO().getCurrentRow();
    return (ctrcCurrentRow.getCtrcId().toString());
  }

  public void deleteCtrcRow(String pCtrcId)
  {
    getIRCTRateCompanyServiceHelper().deleteContractRow(pCtrcId);
    setUpRatingCompanyForUser(null, null);
  }

  public void saveEditContract()
  {
    getIRCTRateCompanyServiceHelper().saveEditViewContract();
  }

  /**
   * Container's getter for CtrcRefTRVO.
   * @return CtrcRefTRVO
   */
  public CtrcRefTRVOImpl getCtrcRefTRVO()
  {
    return (CtrcRefTRVOImpl) findViewObject("CtrcRefTRVO");
  }


  /**
   * Container's getter for ContractRefWithDesc1.
   * @return ContractRefWithDesc1
   */
  public ContractRefWithDescVOImpl getContractRefWithDesc1()
  {
    return (ContractRefWithDescVOImpl) findViewObject("ContractRefWithDesc1");
  }

  /**
   * Container's getter for ContractRefWithDescVL.
   * @return ContractRefWithDescVL
   */
  public ContractRefWithDescVOImpl getContractRefWithDescVL()
  {
    return (ContractRefWithDescVOImpl) findViewObject("ContractRefWithDescVL");
  }

  /**
   * Container's getter for ContractRefForCalcOprVL.
   * @return ContractRefForCalcOprVL
   */
  public ViewLinkImpl getContractRefForCalcOprVL()
  {
    return (ViewLinkImpl) findViewLink("ContractRefForCalcOprVL");
  }


  /**
   * Container's getter for RateEntryBandYTRVO.
   * @return RateEntryBandYTRVO
   */
  public RateEntryBandYTRVOImpl getRateEntryBandYTRVO()
  {
    return (RateEntryBandYTRVOImpl) findViewObject("RateEntryBandYTRVO");
  }

  /**
   * Method to init add document flow
   * @param hm
   */
  public void initDocument(Map hm)
  {
    String lMethodName = "initDocument(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    long stTime = System.currentTimeMillis();
    Number ctrcId = (Number) hm.get(IRCTRateCompanyConstants.CTRC_ID);
    String ctrcName = (String) hm.get(IRCTRateCompanyConstants.CTRC_NAME);
    Number docId = (Number) hm.get(IRCTRateCompanyConstants.DOC_ID);
    String cpyId = (String) hm.get(IRCTRateCompanyConstants.CPY_ID);
    String busId = (String) hm.get(IRCTRateCompanyConstants.BUS_ID);
    String treePath =
      (String) hm.get(IRCTRateCompanyConstants.CONTRACT_TREE_PATH);

    Number initValue = new Number(0);
    //Added to Clear the Cache for Doc Tmpl Transient VO
    DocTmplForDfltTRVOImpl docTmplTrans = getDocTmplForDfltTRVO();
    docTmplTrans.clearCache();
    //
    DocVOImpl vo = getDocVO();

    if (docId == null)
    {
      vo.executeEmptyRowSet();
      DocVORowImpl voRow = (DocVORowImpl) vo.createRow();
      voRow.setCtrcId(ctrcId);
      voRow.setCtrcName(ctrcName);
      voRow.setCpyId(cpyId);
      voRow.setBusId(busId);
      voRow.setTreePath(treePath);
      docId =
          getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ);
      voRow.setDocId(docId);
      voRow.setDocMode(IRCTRateCompanyConstants.CREATE);

      //setting non-null values fo rmandatory VO attributes
      //This is done as we use EO based VO in front end
      voRow.setDocTypId(initValue);
      voRow.setDistPkgId(initValue);
      voRow.setDocStaId(initValue);
      voRow.setAudFlg(initValue);
      voRow.setDueDt(new oracle.jbo.domain.Date());
      voRow.setPblcNam(ctrcName);
      voRow.setHdrPblcnTmplId(initValue);
      voRow.setFtrPblcnTmplId(initValue);
      voRow.setPblshTotMiInd(initValue);
      voRow.setPblshTlChrgInd(initValue);
      voRow.setDistQtyRndInd(initValue);
      voRow.setCaptrStpDistInd(initValue);
      voRow.setExclCndnxbrdrFlg(initValue);
      voRow.setExclMexMiFlg(initValue);

      vo.insertRow(voRow);
      if ("DEFAULT TRANSIT".equals(ctrcName))
      {
        voRow.setDocContentCode(IRCTRateCompanyConstants.DOCUMENT_TYPE_TNST);
      }
      ContractReferenceTRVOImpl ctrcRefTRVO = getContractReferenceTRVO();
      ctrcRefTRVO.clearCache();
    }
    else
    {
      vo.setBindCtrcId(ctrcId.toString());
      vo.setBindDocId(docId.toString());
      vo.executeQuery();

      if (vo.hasNext())
      {
        DocVORowImpl voRow = (DocVORowImpl) vo.next();
        voRow.setTreePath(treePath);
        DocStaROVOImpl docStaVO = getDocStaROVO();
        docStaVO.setBindDocStaId(voRow.getDocStaId().toString());
        docStaVO.executeQuery();

        if (docStaVO.hasNext())
        {
          DocStaROVORowImpl docStaVORow =
            (DocStaROVORowImpl) docStaVO.next();

          if ("1".equals(docStaVORow.getUpdFlg().toString()))
          {
            voRow.setUsgTypUpdFlg(true);
          }
          else
          {
            voRow.setUsgTypUpdFlg(false);
          }

          if ("1".equals(docStaVORow.getUpdEffDtFlg().toString()))
          {
            voRow.setUpdEffDtFlg(true);
          }
          else
          {
            voRow.setUpdEffDtFlg(false);
          }

          if ("1".equals(docStaVORow.getUpdExprDtFlg().toString()))
          {
            voRow.setUpdExprDtFlg(true);
          }
          else
          {
            voRow.setUpdExprDtFlg(false);
          }

        }

        voRow.setDigsAdvDistVal(populateDistAdvOptionRow(voRow.getDistPack(),
                                                         voRow.getDistVers(),
                                                         voRow.getDigsAdvDistVal(),
                                                         "Edit"));


      }

      fetchContractReferencesForDoc(ctrcId, docId);
    }
    //FIXME
    _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                 " Total Time took for :" + lMethodName + "->" +
                 (System.currentTimeMillis() - stTime));
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   *Calls upon the backend CORBA functionality to paste items in the ContractTree
   * @param pCopiedItem -- that which is to be copied
   * @param pPasteUnderItem -- that item to which the copiedItem needs to be placed under
   * @param pIncludeRates -- whether rates need to be included or not
   * @param pCompanyId -- the company id for which the copy paste is gonna be done
   */
  public void pasteItemUnder(RCTContractItem pCopiedItem,
                             RCTContractItem pPasteUnderItem,
                             boolean pIncludeRates, String pCompanyId)
  {
    String methodName = "pasteItemUnder()";

    _logger.entering(CLAZZ_NAME, methodName, new Object[]
        { pCopiedItem, pPasteUnderItem, pIncludeRates });

    RatingAdminManager ratingAdminManager = new RatingAdminManager();

    if (pCopiedItem != null && pPasteUnderItem != null)
    {
      RCTUserInfo usrInfo = getRCTUserInfo(pCompanyId);

      try
      {
        ratingAdminManager.pasteItemUnder(pCopiedItem, pPasteUnderItem,
                                          pIncludeRates, usrInfo);
      }
      catch (IRCTSystemException e)
      {

        if (_logger.isLoggable(Level.FINEST))
        {
          _logger.logp(Level.FINEST, CLAZZ_NAME, methodName,
                       e.getMessage(), e);

          _logger.log(Level.FINEST, "copiedItem is " + pCopiedItem);
          _logger.log(Level.FINEST,
                      "pasteUnderItem is " + pPasteUnderItem);
          _logger.log(Level.FINEST, "includeRates is " + pIncludeRates);
          _logger.log(Level.FINEST, "usrInfo is " + usrInfo);
        }

        String errorMessage =
          IRCTPropertyUtils.getIRCTMessagesPropertyValue(e.getMessage());

        errorMessage =
            (errorMessage == null)? "Unknown error while copying - error id " +
            e.getMessage(): errorMessage;

        throw new JboException(errorMessage);
      }
      catch (IRCTValidationException e)
      {

        if (_logger.isLoggable(Level.INFO))
        {
          _logger.logp(Level.FINEST, CLAZZ_NAME, methodName,
                       e.getMessage(), e);

          _logger.log(Level.FINEST, "copiedItem is " + pCopiedItem);
          _logger.log(Level.FINEST,
                      "pasteUnderItem is " + pPasteUnderItem);
          _logger.log(Level.FINEST, "includeRates is " + pIncludeRates);
          _logger.log(Level.FINEST, "usrInfo is " + usrInfo);
        }

        String errorMessage =
          IRCTPropertyUtils.getIRCTMessagesPropertyValue(e.getMessage());

        errorMessage =
            (errorMessage == null)? "Unknown error while copying - error id " +
            e.getMessage(): errorMessage;

        throw new JboException(errorMessage);
      }
    }
    _logger.exiting(CLAZZ_NAME, methodName);
  }


  /**
   * Container's getter for RateEntryBandXTR1.
   * @return RateEntryBandXTR1
   */
  public RateEntryBandXTRVOImpl getRateEntryBandXTRVO()
  {
    return (RateEntryBandXTRVOImpl) findViewObject("RateEntryBandXTRVO");
  }

  private RCTUserInfo getRCTUserInfo(String pCpyId)
  {
    RCTUserInfo uInfo =
      (RCTUserInfo) LWOUtils.createLWO(RCTUserInfo.class.getName());

    uInfo.setUserID(getLoggedInUserID());
    uInfo.setBusinessID(getBusinessID());
    uInfo.setCompanyID(pCpyId);
    return uInfo;
  }

  /**
   * Method to save document
   */
  public boolean saveDocument()
  {
    String lMethodName = "saveDocument()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    DocVOImpl vo = getDocVO();
    DocVORowImpl voRow = (DocVORowImpl) vo.getCurrentRow();
    boolean updResult = false;


    if (StringUtils.equals(voRow.getCaptrStpDistInd().toString(), "1"))
    {
      RTDistancePackageOptionsRule rule =
        new RTDistancePackageOptionsRule(voRow.getDistVers(),
                                         voRow.getDistPack(),
                                         voRow.getDistCalcType());
      if (!rule.isStopMiles())
      {
        addWarningMessage(IRCTModelConstants.CPT_MILE_CANT_SEL,
                          new Object[]
            { });
        return false;
      }
    }

    if (!IRCTRateCompanyConstants.CREATE.equals(voRow.getDocMode()))
    {
      updResult = saveEditDocument(vo);
    }
    else
    {
      updResult = saveCreateDocument(vo);
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return updResult;
  }

  private boolean saveEditDocument(DocVOImpl vo)
  {
    String lMethodName = "saveEditDocument(DocVOImpl)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    boolean result = false;
    Number ctrcId = null;
    Integer updFlg = null;
    Integer updEffDtFlg = null;
    Integer updExpDtFlg = null;
    Integer imptFlg = null;
    String imptCd = null;
    SimpleDateFormat sdf =
      new SimpleDateFormat(DateTimeUtil.SNI_DATE_TIME_FORMAT);

    String docCtntCd = null;
    String hstMthdCd = null;
    String docCd = null;
    String docType = null;
    int dtChkFlg = 0;
    oracle.jbo.domain.Date prevEffDt = null;
    Date prevDocExpDt = null;
    long noteID = 0;

    DocVORowImpl voRow = (DocVORowImpl) vo.getCurrentRow();
    Number docId = voRow.getDocId();
    docCd = voRow.getDocType();

    DocForPubROVOImpl docROVO = getDocForPubROVO();
    docROVO.setBindDocId(docId);
    docROVO.executeQuery();
    if (docROVO.getRowCount() > 0)
    {
      DocForPubROVORowImpl docROVORow =
        (DocForPubROVORowImpl) docROVO.first();
      prevEffDt = docROVORow.getEffDt();
    }
    //prevEffDt = voRow.getEffDt();

    ctrcId = voRow.getCtrcId();
    docCtntCd = voRow.getDocContentCode();

    ContractROVOImpl ctrcVO = getContractROVO();
    ctrcVO.clearCache();
    ctrcVO.setBindBusinessId(voRow.getBusId());
    ctrcVO.setBindContractID(ctrcId.toString());
    ctrcVO.executeQuery();

    if (ctrcVO.hasNext())
    {
      ContractROVORowImpl ctrcVORow = (ContractROVORowImpl) ctrcVO.next();

      if (!IRCTRateCompanyConstants.ACTIVE.equals(ctrcVORow.getStatus()))
      {
        addWarningMessage(IRCTModelConstants.NO_CTRC_ACTV_FOR_DOC,
                          new Object[]
            { });
        return false;
      }

      hstMthdCd = ctrcVORow.getHist();
    }

    DocStaROVOImpl docStaVO = getDocStaROVO();
    docStaVO.setBindDocStaId(voRow.getDocStaId().toString());
    docStaVO.executeQuery();

    if (docStaVO.hasNext())
    {
      DocStaROVORowImpl docStaVORow = (DocStaROVORowImpl) docStaVO.next();
      updFlg = docStaVORow.getUpdFlg();
      updEffDtFlg = docStaVORow.getUpdEffDtFlg();
      updExpDtFlg = docStaVORow.getUpdExprDtFlg();
      imptFlg = docStaVORow.getIprtFlg();
      imptCd = docStaVORow.getIprtCd();

      if (updFlg.intValue() != 1 && updEffDtFlg.intValue() != 1 &&
          updExpDtFlg.intValue() != 1)
      {
        addWarningMessage(IRCTModelConstants.DOC_NO_UPDT_STA, new Object[]
            { });
        return false;
      }
    }

    if (voRow.getExprDt() != null)
    {
      result = documentDateCheck(voRow.getEffDt(), voRow.getExprDt());
      if (!result)
        return result;
    }
    else if (voRow.getExprDt() == null && updFlg == 1 && updExpDtFlg == 1)
    {
      Calendar cal = Calendar.getInstance();
      cal.setTime(voRow.getEffDt().getValue());

      if (IRCTModelConstants.QUOT.equals(docCd))
      {
        cal.add(Calendar.DATE, IRCTModelConstants.DEFAULT_DOC_EXP_DAYS);
      }
      else
      {
        cal.add(Calendar.DATE,
                2 * IRCTModelConstants.DEFAULT_DOC_EXP_DAYS);
      }
      voRow.setExprDt(DateTimeUtil.singleton().parseToJboDate(sdf.format(cal.getTime()),
                                                              DateTimeUtil.SNI_DATE_TIME_FORMAT,
                                                              DateTimeUtil.DEFAULT_TIMEZONE));
    }

    DocTypROVOImpl docTypeVO = getDocTypROVO();
    docTypeVO.clearCache();
    docTypeVO.setBindDocCtntCd(docCtntCd);
    docTypeVO.setBindHstMthdCd(hstMthdCd);
    docType =
        voRow.getDocType() == null? voRow.getDocTypePart(): voRow.getDocType();
    docTypeVO.setBindDocCd(docType);
    docTypeVO.setBindReqCreFlg(null);
    docTypeVO.executeQuery();

    if (docTypeVO.hasNext())
    {
      DocTypROVORowImpl docTypeVORow =
        (DocTypROVORowImpl) docTypeVO.next();
      dtChkFlg = docTypeVORow.getDtChkFlg().intValue();
      docCd = docTypeVORow.getDocCd();

      result =
          validateDocDate(voRow, dtChkFlg, docCtntCd, hstMthdCd, docCd);

      if (!result)
      {
        return result;
      }
    }

    ImportTaskVOImpl importTaskVO = getImportTaskVO();
    ImportTaskVORowImpl importTaskVORow =
      (ImportTaskVORowImpl) importTaskVO.createRow();

    importTaskVORow.setBusId(voRow.getBusId());
    importTaskVORow.setCpyId(voRow.getCpyId());
    importTaskVORow.setCtrcId(voRow.getCtrcId());
    importTaskVORow.setObjCd(IRCTModelConstants.DOCU);
    importTaskVORow.setObjId(voRow.getDocId());
    importTaskVORow.setTskCd(new Number(IRCTModelConstants.UPDATE_DOCUMENT_DATES_IMPORT_TASK_CODE));
    importTaskVORow.setIprtTskId(new DBSequence(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ)));

    StringBuffer sb = new StringBuffer();
    sb.append(voRow.getDocContentCode());
    sb.append(IRCTModelConstants.PARA_DELIMITER);
    sb.append(imptCd);
    sb.append(IRCTModelConstants.PARA_DELIMITER);
    sb.append(DateTimeUtil.singleton().formatDateTime(voRow.getEffDt(),
                                                      "MM/dd/yyyy",
                                                      DateTimeUtil.DEFAULT_TIMEZONE));
    sb.append(IRCTModelConstants.PARA_DELIMITER);
    if (voRow.getExprDt() != null)
    {
      sb.append(DateTimeUtil.singleton().formatDateTime(voRow.getExprDt(),
                                                        "MM/dd/yyyy",
                                                        DateTimeUtil.DEFAULT_TIMEZONE));
    }
    importTaskVORow.setParmVal(new ClobDomain(sb.toString()));

    importTaskVO.insertRow(importTaskVORow);


    voRow.setLstUpldReqDttm(new Timestamp(System.currentTimeMillis()));

    if (((updFlg == 1) ||
         IRCTRateCompanyConstants.CRTP.equals(voRow.getDocStaCd()) ||
         IRCTRateCompanyConstants.CRTG.equals(voRow.getDocStaCd()) ||
         IRCTRateCompanyConstants.CRTR.equals(voRow.getDocStaCd()) ||
         IRCTRateCompanyConstants.CRTT.equals(voRow.getDocStaCd())) &&
        (voRow.getNoteId() == null ||
         voRow.getNoteId().equals(new Number(0))))
    {
      IrctNoteVOImpl noteVO = getIrctNoteInsVO();
      noteVO.clearCache();
      IrctNoteVORowImpl noteVORow = (IrctNoteVORowImpl) noteVO.createRow();
      noteID =
          getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ).longValue();
      noteVORow.setNoteId(new Number(noteID));
      noteVORow.setNoteTxt(voRow.getNoteTxt());
      noteVORow.setAscCmpntNam("IRCT");

      noteVO.insertRow(noteVORow);

      voRow.setNoteId(new Number(noteID));
    }
    else if ((updFlg == 1) ||
             (IRCTRateCompanyConstants.CRTP.equals(voRow.getDocStaCd()) ||
              IRCTRateCompanyConstants.CRTG.equals(voRow.getDocStaCd()) ||
              IRCTRateCompanyConstants.CRTR.equals(voRow.getDocStaCd()) ||
              IRCTRateCompanyConstants.CRTT.equals(voRow.getDocStaCd())) &&
             voRow.getNoteId() != null)

    {
      IrctNoteVOImpl noteVO = getIrctNoteInsVO();
      noteVO.setBindNoteId(voRow.getNoteId());
      noteVO.executeQuery();

      while (noteVO.hasNext())
      {
        IrctNoteVORowImpl noteVORow = (IrctNoteVORowImpl) noteVO.next();
        noteVORow.setNoteTxt(voRow.getNoteTxt());
      }
    }


    result = setDistanceOptions(voRow);

    if (((RateServerConstants.BATCH_TYPE_PUBLICATION.equals(voRow.getDocType())) ||
         (IRCTModelConstants.QUOT.equals(voRow.getDocType()))) &&
        updEffDtFlg == 1 && voRow.getEffDt() != null)
    {
      if (IRCTRateCompanyConstants.ACTIVE.equals(voRow.getDocStaCd()))
      {
        DocEffDtCheckROVOImpl docEffDtVO = getDocEffDtCheckROVO();
        docEffDtVO.setBindCtrcId(ctrcId.toString());
        docEffDtVO.setBindDocCd(docCd);
        docEffDtVO.setBindDocCtntCd(docCtntCd);
        docEffDtVO.setBindDocId(voRow.getDocId().toString());
        docEffDtVO.setBindHstMthdCd(hstMthdCd);
        docEffDtVO.executeQuery();

        if (docEffDtVO.hasNext())
        {
          DocEffDtCheckROVORowImpl docEffDtVORow =
            (DocEffDtCheckROVORowImpl) docEffDtVO.next();
          prevDocExpDt = docEffDtVORow.getExprDt();
          //priyanka changed for modified query.
          DocVOImpl prevDocVO = getPrevDocVO();
          prevDocVO.setBindDocId(docEffDtVORow.getDocId().toString());
          prevDocVO.setBindCtrcId(docEffDtVORow.getCtrcId().toString());
          prevDocVO.executeQuery();

          if (prevDocVO.hasNext())
          {
            DocVORowImpl prevDocVORow = (DocVORowImpl) prevDocVO.next();
            prevDocVORow.setExprDt(voRow.getEffDt());

            ImportTaskVOImpl iprtTskPrevDocVO = getImportTaskVO();
            ImportTaskVORowImpl iprtTskPrevDocVORow =
              (ImportTaskVORowImpl) iprtTskPrevDocVO.createRow();

            iprtTskPrevDocVORow.setBusId(voRow.getBusId());
            iprtTskPrevDocVORow.setCpyId(voRow.getCpyId());
            iprtTskPrevDocVORow.setCtrcId(voRow.getCtrcId());
            iprtTskPrevDocVORow.setObjCd(IRCTModelConstants.DOCU);
            iprtTskPrevDocVORow.setObjId(prevDocVORow.getDocId());
            iprtTskPrevDocVORow.setTskCd(new Number(IRCTModelConstants.UPDATE_DOCUMENT_DATES_IMPORT_TASK_CODE));
            iprtTskPrevDocVORow.setIprtTskId(new DBSequence(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ)));

            StringBuffer sb2 = new StringBuffer();
            sb2.append(voRow.getDocContentCode());
            sb2.append(IRCTModelConstants.PARA_DELIMITER);
            sb2.append(imptCd);
            sb2.append(IRCTModelConstants.PARA_DELIMITER);
            sb2.append(DateTimeUtil.singleton().formatDateTime(prevDocVORow.getEffDt(),
                                                               "MM/dd/yyyy",
                                                               DateTimeUtil.DEFAULT_TIMEZONE));
            sb2.append(IRCTModelConstants.PARA_DELIMITER);
            if (voRow.getEffDt() != null)
            {
              sb2.append(DateTimeUtil.singleton().formatDateTime(voRow.getEffDt(),
                                                                 "MM/dd/yyyy",
                                                                 DateTimeUtil.DEFAULT_TIMEZONE));
            }
            iprtTskPrevDocVORow.setParmVal(new ClobDomain(sb2.toString()));

            iprtTskPrevDocVO.insertRow(iprtTskPrevDocVORow);
            prevDocVORow.setLstUpldReqDttm(new Timestamp(DateTimeUtil.singleton().getCurrentUtilDateWithTime()));
          }
        }
      }

      // If the effective date changed then adjust the corresponding
      // rate's effective dates
      if (prevEffDt != null && prevEffDt.compareTo(voRow.getEffDt()) != 0)
      {
        CalcOprndVOImpl calcOprndVO = getCalcOprndVO();
        calcOprndVO.setBindDocId(docId);
        calcOprndVO.setBindEffDt(prevEffDt);
        calcOprndVO.setBindOprGrpId(null);
        calcOprndVO.setBindOprId(null);
        calcOprndVO.setBindRvsOprId(null);
        calcOprndVO.executeQuery();

        while (calcOprndVO.hasNext())
        {
          CalcOprndVORowImpl calcOprndVORow =
            (CalcOprndVORowImpl) calcOprndVO.next();
          calcOprndVORow.setEffDt(voRow.getEffDt().dateValue());
        }
      }
    }
    this.performDatabaseCommit();
    //Active Document should be promoted, when expiration date is modified
    if (IRCTRateCompanyConstants.ACTIVE.equals(voRow.getDocStaCd()) &&
        voRow.getUpdExprDtFlg().booleanValue() &&
        voRow.getExprDt() != null)
    {
      getIRCTRateCompanyServiceHelper().promoteDocumentFrExprDate(voRow);
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return result;
  }

  /**
   * Container's getter for DistGeoPkgROVO.
   * @return DistGeoPkgROVO
   */
  public DistGeoPkgROVOImpl getDistGeoPkgROVO()
  {
    return (DistGeoPkgROVOImpl) findViewObject("DistGeoPkgROVO");
  }

  private boolean saveCreateDocument(DocVOImpl vo)
  {
    String lMethodName = "saveCreateDocument(DocVOImpl)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    long noteID = 0;
    boolean result = false;
    Number initValue = new Number(0);
    SimpleDateFormat sdf =
      new SimpleDateFormat(DateTimeUtil.SNI_DATE_TIME_FORMAT);
    String ctrcName = null;
    Number ctrcId = null;
    String docCtntCd = null;
    String hstMthdCd = null;
    String docType = null;
    String docCd = null;
    int dtChkFlg = 0;

    Number docTypId = null;
    Number docStaId = null;
    oracle.jbo.domain.Date dueDate = null;
    oracle.jbo.domain.Date exprDate = null;

    DocVORowImpl voRow = (DocVORowImpl) vo.getCurrentRow();
    ctrcId = voRow.getCtrcId();

    if (voRow.getDistVers() == null)
    {
      addWarningMessage(IRCTRateCompanyConstants.MISSING_DIST_VERS,
                        new Object[]
          { });
      return false;
    }

    if (voRow.getDistCalcType() == null)
    {
      addWarningMessage(IRCTRateCompanyConstants.MISSING_DIST_CALC_TYPE,
                        new Object[]
          { });
      return false;
    }

    ContractROVOImpl ctrcVO = getContractROVO();
    ctrcVO.clearCache();
    ctrcVO.setBindBusinessId(voRow.getBusId());
    ctrcVO.setBindContractID(ctrcId.toString());
    ctrcVO.executeQuery();

    if (ctrcVO.hasNext())
    {
      ContractROVORowImpl ctrcVORow = (ContractROVORowImpl) ctrcVO.next();
      ctrcName = ctrcVORow.getName();

      if (!IRCTRateCompanyConstants.ACTIVE.equals(ctrcVORow.getStatus()))
      {
        addWarningMessage(IRCTModelConstants.NO_CTRC_ACTV_FOR_DOC,
                          new Object[]
            { });
        return false;
      }

      DocTypROVOImpl docTypeVO = getDocTypROVO();
      docTypeVO.clearCache();
      docCtntCd = voRow.getDocContentCode();
      docTypeVO.setBindDocCtntCd(docCtntCd);
      hstMthdCd = ctrcVORow.getHist();
      docTypeVO.setBindHstMthdCd(hstMthdCd);

      docType =
          voRow.getDocType() == null? voRow.getDocTypePart(): voRow.getDocType();

      docTypeVO.setBindDocCd(docType);
      docTypeVO.setBindReqCreFlg(new Number(1));
      docTypeVO.executeQuery();

      if (docTypeVO.hasNext())
      {
        DocTypROVORowImpl docTypeVORow =
          (DocTypROVORowImpl) docTypeVO.next();
        dtChkFlg = docTypeVORow.getDtChkFlg().intValue();
        docCd = docTypeVORow.getDocCd();
        docTypId = docTypeVORow.getDocTypId();
        docStaId = docTypeVORow.getInitDocStaId();

        DocStaROVOImpl docStaVO = getDocStaROVO();
        docStaVO.setBindDocStaId(docStaId.toString());
        docStaVO.executeQuery();

        while (docStaVO.hasNext())
        {
          DocStaROVORowImpl docStaVORow =
            (DocStaROVORowImpl) docStaVO.next();
          Integer intCreFlg = docStaVORow.getReqCreFlg();

          if (intCreFlg != null && intCreFlg.intValue() != 1)
          {
            addWarningMessage(IRCTModelConstants.NO_CREATE_DOCUMENT,
                              new Object[]
                { });
            return false;
          }
        }

        if (voRow.getEffDt() != null)
        {
          dueDate = voRow.getEffDt();
        }

        if (voRow.getExprDt() != null)
        {
          exprDate = voRow.getExprDt();
          result = documentDateCheck(voRow.getEffDt(), voRow.getExprDt());

          if (!result)
          {
            return result;
          }
        }
        else
        {
          Calendar cal = Calendar.getInstance();
          cal.setTime(voRow.getEffDt().getValue());

          if (IRCTModelConstants.QUOT.equals(docCd))
          {
            cal.add(Calendar.DATE,
                    IRCTModelConstants.DEFAULT_DOC_EXP_DAYS);
          }
          else
          {
            cal.add(Calendar.DATE,
                    2 * IRCTModelConstants.DEFAULT_DOC_EXP_DAYS);
          }
          exprDate =
              DateTimeUtil.singleton().parseToJboDate(sdf.format(cal.getTime()),
                                                      DateTimeUtil.SNI_DATE_TIME_FORMAT,
                                                      DateTimeUtil.DEFAULT_TIMEZONE);
        }
      }

      if (IRCTModelConstants.PRPL.equals(docType))
      {
        DocExistsROVOImpl docExistsVO = getDocExistsROVO();
        docExistsVO.setBindCtrcId(ctrcId.toString());
        docExistsVO.setBindDocCtntCd(docCtntCd);
        docExistsVO.setBindHstMthdCd(hstMthdCd);
        docExistsVO.executeQuery();

        if (docExistsVO.hasNext())
        {
          addWarningMessage(IRCTModelConstants.ACTV_DOC_PRESENT,
                            new Object[]
              { });
          return false;
        }
      }

      result =
          validateDocDate(voRow, dtChkFlg, docCtntCd, hstMthdCd, docCd);

      if (!result)
      {
        return result;
      }
    }

    voRow.setDocTypId(docTypId);
    voRow.setDocStaId(docStaId);
    voRow.setDueDt(dueDate);
    voRow.setExprDt(exprDate);
    voRow.setAudFlg(initValue);

    if (ctrcName.length() <= 50)
    {
      voRow.setPblcNam(ctrcName);
    }
    else
    {
      voRow.setPblcNam(ctrcName.substring(0, 49));
    }

    IrctNoteVOImpl noteVO = getIrctNoteInsVO();
    noteVO.clearCache();
    IrctNoteVORowImpl noteVORow = (IrctNoteVORowImpl) noteVO.createRow();
    noteID =
        getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ).longValue();
    noteVORow.setNoteId(new Number(noteID));
    noteVORow.setNoteTxt(voRow.getNoteTxt());
    noteVORow.setAscCmpntNam("IRCT");

    noteVO.insertRow(noteVORow);

    voRow.setNoteId(new Number(noteID));

    result = setDistanceOptions(voRow);

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return result;
  }

  /**
   * Container's getter for DocTypROVO.
   * @return DocTypROVO
   */
  public DocTypROVOImpl getDocTypROVO()
  {
    return (DocTypROVOImpl) findViewObject("DocTypROVO");
  }

  private boolean setDistanceOptions(DocVORowImpl docVORow)
  {
    String lMethodName = "setDistanceOptions(DocVORowImpl)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    String distVers = docVORow.getDistVers();
    DistGeoPkgROVOImpl distGeoPkgVO = getDistGeoPkgROVO();
    distGeoPkgVO.clearCache();
    distGeoPkgVO.setBindGeoPkgCd(docVORow.getDistPack());
    if (IRCTRateCompanyConstants.GREEN_BAND_OFF.equals(distVers))
    {
      distVers = IRCTRateCompanyConstants.GB18GBOFF;
    }
    distGeoPkgVO.setBindPkgVersCd(distVers);
    distGeoPkgVO.setBindDistCalcMthdCd(docVORow.getDistCalcType());
    distGeoPkgVO.executeQuery();
    if (distGeoPkgVO.hasNext())
    {
      DistGeoPkgROVORowImpl distGeoPkgVORow =
        (DistGeoPkgROVORowImpl) distGeoPkgVO.next();
      docVORow.setDistPkgId(distGeoPkgVORow.getGeoPkgId());
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);

    return true;
  }

  /**
   * Container's getter for IrctNoteInsVO.
   * @return IrctNoteInsVO
   */
  public IrctNoteVOImpl getIrctNoteInsVO()
  {
    return (IrctNoteVOImpl) findViewObject("IrctNoteInsVO");
  }


  /**
   * Container's getter for AuditForEngine.
   * @return AuditForEngine
   */
  public ViewLinkImpl getAuditForEngine()
  {
    return (ViewLinkImpl) findViewLink("AuditForEngine");
  }


  /**
   * Update the Engine Desc based on Business Rule
   * @return
   */
  public void updateDescFrEngine()
  {
    String lMethodName = "updateDescFrEngine()";

    _logger.entering(CLAZZ_NAME, lMethodName);

    CalcOprTypVORowImpl calTyprow =
      (CalcOprTypVORowImpl) getCalcOprTypVO().first();
    CalcOprVORowImpl coRow = (CalcOprVORowImpl) getCalcOprVO().first();
    StringBuffer engineDesc = new StringBuffer("");

    //---------- EngType Code + DataTyp
    engineDesc = engineDesc.append(calTyprow.getCalcOprCd());

    if (coRow.getDocCtntSubCd() != null)
    {
      engineDesc = engineDesc.append("-");
      engineDesc = engineDesc.append(coRow.getDocCtntSubCd());
    }

    //---------- Origin Type
    if (coRow.getOriIxCd() != null)
    {
      oracle.jbo.RowSet orgTypeSet = coRow.getRatingOriginGeoLOVVA();
      SNIListOfValuesVORowImpl orgTypeRow =
        (SNIListOfValuesVORowImpl) orgTypeSet.first();

      Object[] keyValue = new Object[2];
      keyValue[0] = orgTypeRow.getDmnId();
      keyValue[1] = coRow.getOriIxCd();
      orgTypeRow =
          (SNIListOfValuesVORowImpl) orgTypeSet.getRow(new Key(keyValue));
      engineDesc = engineDesc.append("-");
      engineDesc =
          engineDesc.append(IRCTCommonUtil.GeoCityConversion(orgTypeRow.getDmnValCd()));

      if (coRow.getOriCmrZoneFlg() != null &&
          coRow.getOriCmrZoneFlg().longValue() == 1)
      {
        engineDesc = engineDesc.append("(G)");
      }

    }
    //---------- Stop Type
    if (coRow.getStpIxCd() != null)
    {
      oracle.jbo.RowSet stpTypeSet = coRow.getRatingStopsGeoLOVVA();
      SNIListOfValuesVORowImpl stpTypeRow =
        (SNIListOfValuesVORowImpl) stpTypeSet.first();

      Object[] keyValue = new Object[2];
      keyValue[0] = stpTypeRow.getDmnId();
      keyValue[1] = coRow.getStpIxCd();
      stpTypeRow =
          (SNIListOfValuesVORowImpl) stpTypeSet.getRow(new Key(keyValue));
      engineDesc = engineDesc.append("-");
      engineDesc =
          engineDesc.append(IRCTCommonUtil.GeoCityConversion(stpTypeRow.getDmnValCd()));
      //      engineDesc = engineDesc.append(stpTypeRow.getDmnValCd());

    }
    //---------- Destination Type
    if (coRow.getDesIxCd() != null)
    {
      oracle.jbo.RowSet desTypeSet = coRow.getRatingDestinationGeoLOVVA();
      SNIListOfValuesVORowImpl desTypeRow =
        (SNIListOfValuesVORowImpl) desTypeSet.first();

      Object[] keyValue = new Object[2];
      keyValue[0] = desTypeRow.getDmnId();
      keyValue[1] = coRow.getDesIxCd();
      desTypeRow =
          (SNIListOfValuesVORowImpl) desTypeSet.getRow(new Key(keyValue));
      engineDesc = engineDesc.append("-");
      engineDesc =
          engineDesc.append(IRCTCommonUtil.GeoCityConversion(desTypeRow.getDmnValCd()));

      if (coRow.getDesCmrZoneFlg() != null &&
          coRow.getDesCmrZoneFlg().longValue() == 1)
      {
        engineDesc = engineDesc.append("(G)");
      }

    }

    //---------- Tariff Reference
    if (coRow.getTrfId() != null)
    {
      oracle.jbo.RowSet tariffSet = coRow.getTariffTypesForEngineLOVVA();
      Object[] keyValue = new Object[1];
      keyValue[0] = coRow.getTrfId();
      TariffTypesForEngineLOVRowImpl tariffRow =
        (TariffTypesForEngineLOVRowImpl) tariffSet.getRow(new Key(keyValue));
      engineDesc = engineDesc.append("-");
      engineDesc = engineDesc.append(tariffRow.getTrfNam());

    }
    //---------- Contract Reference
    RowIterator ctrDescItr = coRow.getContractRefWithDesc();
    if (ctrDescItr != null)
    {
      if (ctrDescItr.first() != null)
      {

        ContractRefWithDescVORowImpl ctrDescRow =
          (ContractRefWithDescVORowImpl) ctrDescItr.first();
        engineDesc = engineDesc.append("-");
        engineDesc.append(ctrDescRow.getCtrcDesc());
      }
    }
    //---------- Lookup Day

    if (coRow.getLkupDayTypId() != null)
    {

      oracle.jbo.RowSet dayTypeSet = coRow.getRatingEngineDayTypeLOVVA();
      SNIListOfValuesVORowImpl lookDayRow =
        (SNIListOfValuesVORowImpl) dayTypeSet.first();
      Object[] keyValue = new Object[2];
      keyValue[0] = lookDayRow.getDmnId();
      keyValue[1] = coRow.getLkupDayTypId();

      Row[] rows = dayTypeSet.findByKey(new Key(keyValue), -1);

      engineDesc = engineDesc.append("-");
      engineDesc =
          engineDesc.append(((SNIListOfValuesVORowImpl) rows[0]).getLongVal());
    }
    //---------- Transit
    if (coRow.getTrnstCd() != null)
    {
      engineDesc = engineDesc.append("-");
      engineDesc.append(coRow.getTrnstCd());

    }
    //---------- Routing Guide
    if (coRow.getRteGdeCd() != null)
    {
      engineDesc = engineDesc.append("-");
      engineDesc.append(coRow.getRteGdeCd());
    }

    //---- whenever it's count equal to 50, it will return the control.....
    if (engineDesc.length() >= 50)
    {
      // String finalEngineDesc = engineDesc.toString().substring(0, 50);
      coRow.setCalcOprDesc(engineDesc.toString());
    }
    else
    {
      coRow.setCalcOprDesc(engineDesc.toString());
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Container's getter for CompanyVO.
   * @return CompanyVO
   */
  public ViewObjectImpl getCompanyVO()
  {
    return (ViewObjectImpl) findViewObject("CompanyVO");
  }

  /**
   * Container's getter for RateEntryResponseTRVO.
   * @return RateEntryResponseTRVO
   */
  public RateEntryResponseTRVOImpl getRateEntryResponseTRVO()
  {
    return (RateEntryResponseTRVOImpl) findViewObject("RateEntryResponseTRVO");
  }

  public void checkAuditExist(String auditID)
  {
    AuditVOImpl auditVO = getAuditVO();
    auditVO.setBindAudId(auditID);
    auditVO.setBindDocId(null);
    auditVO.setBindObjId(null);
    auditVO.executeQuery();
  }

  /**
   * This method is the initializer method for addAudit page.
   */
  public void initAddDocAudit()
  {
    String lMethodName = "initAddDocAudit()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    DocVORowImpl docVORow = (DocVORowImpl) getDocVO().getCurrentRow();

    AuditVOImpl auditVO = getAuditVO();
    auditVO.setBindDocId(docVORow.getDocId());
    auditVO.setBindObjId(docVORow.getDocId());
    auditVO.setBindAudId(null);
    auditVO.executeQuery();

    if (!auditVO.hasNext())
    {
      AuditVORowImpl auditVORow = (AuditVORowImpl) auditVO.createRow();
      DBSequence auditID =
        new DBSequence(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ));

      auditVORow.setAudId(auditID);
      auditVORow.setAudDesc("");

      auditVORow.setBusId(docVORow.getBusId());
      auditVORow.setCpyId(docVORow.getCpyId());
      auditVORow.setDocId(docVORow.getDocId());
      auditVORow.setObjId(docVORow.getDocId());
      auditVORow.setObjCd(IRCTModelConstants.DOCU);
      auditVORow.setEffDttm(null);
      auditVORow.setExprDttm(null);

      auditVO.insertRow(auditVORow);
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  public void saveAuditInfo()
  {
    String lMethodName = "saveAuditInfo()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    AuditTRVOImpl auditTRVO = getAuditTRVO();
    RowSetIterator rks = auditTRVO.createRowSetIterator(null);
    AuditVOImpl audVO1 = getAuditVO();

    while (rks.hasNext())
    {
      AuditTRVORowImpl auditTRVORow = (AuditTRVORowImpl) rks.next();
      String audDesc = auditTRVORow.getAudDesc();
      if (StringUtils.isNotBlank(audDesc))
      {
        String auditID = auditTRVORow.getAudId().toString();
        audVO1.setBindAudId(auditID);
        audVO1.setBindObjId(auditTRVORow.getObjId());
        audVO1.setBindDocId(null);
        audVO1.executeQuery();

        while (audVO1.hasNext())
        {
          AuditVORowImpl auditRow = (AuditVORowImpl) audVO1.next();

          if (auditRow.getAudId().toString().equals(auditID))
          {
            auditRow.remove();
            break;
          }
        }
        if (!auditTRVORow.getDelFlg().booleanValue())
        {
          AuditVORowImpl auditRow = (AuditVORowImpl) audVO1.createRow();
          auditRow.setAudDesc(auditTRVORow.getAudDesc());
          auditRow.setBusId(auditTRVORow.getBusId());
          auditRow.setCpyId(auditTRVORow.getCpyId());
          auditRow.setEffDttm(auditTRVORow.getEffDttm());
          auditRow.setExprDttm(auditTRVORow.getExpDttm());
          auditRow.setObjCd(auditTRVORow.getObjCd());
          auditRow.setObjId(auditTRVORow.getObjId());
          auditRow.setDocId(auditTRVORow.getDocId());
          auditRow.setAudId(new DBSequence(auditTRVORow.getAudId()));

          audVO1.insertRow(auditRow);
        }
      }
    }
    rks.closeRowSetIterator();

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  public void deleteAuditRecord()
  {
    String lMethodName = "deleteAuditRecord()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    AuditTRVOImpl auditVO = getAuditTRVO();
    AuditTRVORowImpl auditVORow =
      (AuditTRVORowImpl) auditVO.getCurrentRow();
    auditVORow.setDelFlg(true);

    if (IRCTRateCompanyConstants.CTRC.equals(auditVORow.getObjCd()))
    {
      ContractTRVORowImpl ctrcTRVORow =
        (ContractTRVORowImpl) getContractTRVO().getCurrentRow();

      ctrcTRVORow.setAudDesc(null);
      ctrcTRVORow.setAudFlg(new Number(0));
    }
    else if (IRCTRateCompanyConstants.CONTRACT_REFERENCE.equals(auditVORow.getObjCd()))
    {
      ContractReferenceTRVORowImpl ctrcRefTRVORow =
        (ContractReferenceTRVORowImpl) getContractReferenceTRVO().getCurrentRow();

      ctrcRefTRVORow.setAudFlg(new Number(0));
    }
    else if (IRCTRateCompanyConstants.CONTRACT_XREFERENCE.equals(auditVORow.getObjCd()))
    {
      ContractXrefTRVORowImpl ctrcXRefTRVORow =
        (ContractXrefTRVORowImpl) getContractXrefTRVO().getCurrentRow();

      ctrcXRefTRVORow.setAudFlg(new Number(0));
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to save document audit.
   */
  public void saveDocAudit(boolean bCommit)
  {
    String lMethodName = "saveDocAudit(boolean)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    AuditVOImpl audVO = getAuditVO();
    AuditVORowImpl audVORow = (AuditVORowImpl) audVO.first();

    DocVOImpl docVO = getDocVO();
    DocVORowImpl docVORow = (DocVORowImpl) docVO.getCurrentRow();
    docVORow.setAudDesc(audVORow.getAudDesc());
    docVORow.setAudFlg(new Number(1));

    if (bCommit)
    {
      getDBTransaction().commit();
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Container's getter for DocAudRO1.
   * @return DocAudRO1
   */
  public DocAudROVOImpl getDocAudROVO()
  {
    return (DocAudROVOImpl) findViewObject("DocAudROVO");
  }

  /**
   * Method to initialize the document change history page
   */
  public void initDocChangeHistory()
  {
    String lMethodName = "initDocChangeHistory()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    DocVORowImpl docVORow = (DocVORowImpl) getDocVO().getCurrentRow();

    DocAudROVOImpl docAudVO = getDocAudROVO();
    docAudVO.setBindDocId(docVORow.getDocId());
    docAudVO.executeQuery();
    int count = docAudVO.getRowCount();
    if (count != 1)
    {
      docAudVO.last();
      docAudVO.next();
      DocAudROVORowImpl dgRow = (DocAudROVORowImpl) docAudVO.createRow();
      dgRow.setDocStaCd(IRCTRateCompanyConstants.CRTP);
      dgRow.setAudInsDttm(docVORow.getCreDttm().getValue());
      dgRow.setAudInsUsrId(docVORow.getCreUsrId());
      docAudVO.insertRow(dgRow);
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Method to initialize the Publication SetUp page
   */
  public void initPublicationSetup()
  {
    String lMethodName = "initPublicationSetup()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    DocVOImpl docVo = getDocVO();
    DocVORowImpl docVORow = (DocVORowImpl) docVo.getCurrentRow();
    DocTmplVOImpl docTmplVo = getDocTmplVO();
    DocTmplForDfltTRVOImpl docTmplTransVO = getDocTmplForDfltTRVO();

    if (!docTmplVo.isExecuted())
    {
      docTmplVo.setBindDocID(docVORow.getDocId());
      docTmplVo.executeQuery();

    }
    if (docTmplTransVO.getRowCount() == 0)
    {
      RowSetIterator iter = docTmplVo.createRowSetIterator(null);
      while (iter.hasNext())
      {
        DocTmplVORowImpl docTmplRow = (DocTmplVORowImpl) iter.next();
        DocTmplForDfltTRVORowImpl docTmplTransRow =
          (DocTmplForDfltTRVORowImpl) docTmplTransVO.createRow();
        docTmplTransVO.last();
        docTmplTransVO.next();
        docTmplTransRow.setPblcnDesc(docTmplRow.getPblcnDesc());
        docTmplTransRow.setPblcnTmplId(docTmplRow.getPblcnTmplId());
        docTmplTransRow.setPblcnFmtCd(docTmplRow.getPblcnFmtCd());
        docTmplTransRow.setSeqNum(docTmplRow.getSeqNum());
        docTmplTransRow.setDocTmplId(docTmplRow.getSeqNum());
        docTmplTransRow.setContPrtId(docTmplRow.getContPrtInd());
        docTmplTransVO.insertRow(docTmplTransRow);
      }

      iter.closeRowSetIterator();

      initOrderOfPrecedence();
    }


    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to Restore the values from MDS to Publication SetUp page
   */
  public void restorePublicationSetup()
  {
    //Code to Restore the Defult value
    String lMethodName = "restorePublicationSetup()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    DocumentForPubTRVOImpl docdftVo = getDocumentForPubTRVO();
    DocVOImpl docVo = getDocVO();
    DocTmplForDfltTRVOImpl docTmplDfltVo = getDocTmplForDfltTRVO();
    if (docTmplDfltVo.getRowCount() > 0)
      docTmplDfltVo.clearCache();

    String[] docNameArr =
      SNISearchCustomizer.getAllSavedSearchNames(docdftVo);
    String[] docTmplNameArr =
      SNISearchCustomizer.getAllSavedSearchNames(docTmplDfltVo);

    if (docNameArr != null && docNameArr.length > 0)
    {

      DocumentForPubTRVORowImpl docdtRow =
        (DocumentForPubTRVORowImpl) docdftVo.createRow();
      try
      {
        SNISearchCustomizer.applySearchPreference(docNameArr[0], docdftVo,
                                                  docdtRow);
      }
      catch (Exception ex)
      {
        if (_logger.isLoggable(Level.FINEST))
        {
          _logger.logp(Level.FINE, CLAZZ_NAME, lMethodName,
                       "Error while applySearchPreference() for Document , Key -" +
                       docNameArr[0], ex);
        }
      }
      docdftVo.insertRow(docdtRow);
      DocVORowImpl docRow = (DocVORowImpl) docVo.getCurrentRow();
      docRow.setDfltTmplDesc(docdtRow.getDfltTmplDesc());
      docRow.setDfltTmplBDesc(docdtRow.getDfltTmplBDesc());
      docRow.setHdrPblcnTmplId(docdtRow.getHdrPblcnTmplId());
      docRow.setFtrPblcnTmplId(docdtRow.getFtrPblcnTmplId());
      docRow.setPblshTlChrgInd(docdtRow.getPblshTlChrgInd());
      docRow.setPblshTotMiInd(docdtRow.getPblshTotMiInd());

    }

    if (docTmplNameArr != null && docTmplNameArr.length > 0)
    {
      for (String searchKey: docTmplNameArr)
      {
        docTmplDfltVo.last();
        docTmplDfltVo.next();
        DocTmplForDfltTRVORowImpl docTmplDfltRow =
          (DocTmplForDfltTRVORowImpl) docTmplDfltVo.createRow();
        try
        {
          SNISearchCustomizer.applySearchPreference(searchKey,
                                                    docTmplDfltVo,
                                                    docTmplDfltRow);

        }
        catch (Exception ex)
        {
          if (_logger.isLoggable(Level.FINEST))
          {
            _logger.logp(Level.FINE, CLAZZ_NAME, lMethodName,
                         "Error while applySearchPreference() for Doc Tmpl , Key -" +
                         searchKey, ex);
          }
        }
        docTmplDfltVo.insertRow(docTmplDfltRow);
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to clear thePublication SetUp page
   */
  public void clearPublicationSetup(boolean pScreenName)
  {
    String lMethodName = "clearPublicationSetup()";
    _logger.entering(CLAZZ_NAME, lMethodName);


    if (pScreenName)
    {
      DocVOImpl docVo = getDocVO();
      DocTmplForDfltTRVOImpl documentTmplVo = getDocTmplForDfltTRVO();
      if (docVo.getRowCount() > 0)
      {
        DocVORowImpl docRow = (DocVORowImpl) docVo.getCurrentRow();
        docRow.setDfltTmplBDesc(null);
        docRow.setDfltTmplDesc(null);
        docRow.setFtrPblcnTmplId(new Number(0));
        docRow.setHdrPblcnTmplId(new Number(0));
        docRow.setPblshTlChrgInd(new Number(0));
        docRow.setPblshTotMiInd(new Number(0));
      }

      RowIterator rowIt = documentTmplVo.createRowSetIterator(null);
      if (documentTmplVo.getRowCount() > 0)
      {

        documentTmplVo.reset();
        while (rowIt.hasNext())
        {
          rowIt.next();
          rowIt.removeCurrentRow();
        }
      }
    }
    else
    {
      RatePblcnTmplForGrpCdTRVOImpl pbltrVo =
        getRatePblcnTmplForGrpCdTRVO();
      PblcnBusTmplGrpROVOImpl busTmplVO = getPblcnBusTmplGrpROVO();
      PublicationGENTmplROVOImpl genTmplVo = getPublicationGENTmplROVO();
      PublicationLGLTmplROVOImpl lglTmplVo = getPublicationLGLTmplROVO();
      PublicationFSRTmplROVOImpl fsrTmplVo = getPublicationFSRTmplROVO();
      PublicationHFTmplROVOImpl hfTmplVo = getPublicationHFTmplROVO();
      //      PblcnBusTmplGrpROVORowImpl busiDRow =
      //        (PblcnBusTmplGrpROVORowImpl) busTmplVO.first();

      if (busTmplVO.getRowCount() > 0)
        busTmplVO.clearCache();

      //  busiDRow.setBusId(null);

      if (pbltrVo.getRowCount() > 0)
        pbltrVo.executeEmptyRowSet();
      RatePblcnTmplForGrpCdTRVORowImpl grpCodeRow =
        (RatePblcnTmplForGrpCdTRVORowImpl) pbltrVo.first();
      grpCodeRow.setGenTempChk("false");
      grpCodeRow.setFuelSurTempChk("false");
      grpCodeRow.setLeaglTxtTempChk("false");
      grpCodeRow.setHdFtTempChk("false");
      if (genTmplVo.getRowCount() > 0)
        genTmplVo.clearCache();
      if (lglTmplVo.getRowCount() > 0)
        lglTmplVo.executeEmptyRowSet();
      if (fsrTmplVo.getRowCount() > 0)
        fsrTmplVo.clearCache();
      if (hfTmplVo.getRowCount() > 0)
        hfTmplVo.clearCache();
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to validate thePublication Set up Screen
   */
  public void validatePublicationSetUp()
  {
    String lMethodName = "validatePublicationSetUp()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    DocVOImpl docVo = getDocVO();
    DocTmplForDfltTRVOImpl docTmplTransVo = getDocTmplForDfltTRVO();
    DocVORowImpl docVORow = (DocVORowImpl) docVo.getCurrentRow();
    DocTmplVOImpl docTmplVo = getDocTmplVO();

    OrderOfPrecTRVOImpl ordPrecTRVO = getOrderOfPrecTRVO();
    if (docVo.getRowCount() > 0)
    {
      if (!(docVORow.getDfltTmplBDesc() != null &&
            docVORow.getDfltTmplDesc() != null &&
            docVORow.getHdrPblcnTmplId() != null &&
            docVORow.getHdrPblcnTmplId().intValue() != 0 &&
            docVORow.getFtrPblcnTmplId() != null &&
            docVORow.getFtrPblcnTmplId().intValue() != 0 &&
            docTmplTransVo.getRowCount() > 0))
      {
        addWarningMessage(IRCTModelConstants.PUBLICATION_TEMPLATE_NULL,
                          new Object[]
            { });
      }
      docTmplVo.setBindDocID(docVORow.getDocId());
      docTmplVo.executeQuery();

    }
    //Validation to check unique seq no
    if (docTmplTransVo.getRowCount() > 0)
    {
      HashSet set = new HashSet();
      RowSetIterator docTmplIter =
        docTmplTransVo.createRowSetIterator(null);
      while (docTmplIter.hasNext())
      {
        DocTmplForDfltTRVORowImpl docTmplTransRow =
          (DocTmplForDfltTRVORowImpl) docTmplIter.next();
        boolean val = set.add(docTmplTransRow.getSeqNum());
        if (val == false)
        {
          addWarningMessage(IRCTModelConstants.SEQ_NUM_NOT_UNIQUE,
                            new Object[]
              { });
          return;
        }

      }
    }
    //
    //Adding validation for Order of precedence
    if (docTmplTransVo.getRowCount() > 0)
    {
      RowSetIterator iter = docTmplTransVo.createRowSetIterator(null);
      while (iter.hasNext())
      {
        DocTmplForDfltTRVORowImpl docTmpRow =
          (DocTmplForDfltTRVORowImpl) iter.next();
        docTmpRow.getPblcnTmplId();
        if (docTmpRow.getPblcnTmplId().intValue() == 1580)
        {
          if (ordPrecTRVO.getRowCount() == 0)
          {
            addWarningMessage(IRCTModelConstants.ORD_PREC_NOT_SELECTED,
                              new Object[]
                { });
          }
        }
      }
    }
    //Added to set the status check as true
    RowSetIterator docTmplTransIter =
      docTmplTransVo.createRowSetIterator(null);
    while (docTmplTransIter.hasNext())
    {
      DocTmplForDfltTRVORowImpl docTmplTransRow =
        (DocTmplForDfltTRVORowImpl) docTmplTransIter.next();
      docTmplTransRow.setStatusCheck(true);
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);

  }


  /**
   * Method to initialize the Add publication template page
   */
  public void initAddPublicatinTemplate()
  {
    String lMethodName = "initAddPublicatinTemplate()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    RatePblcnTmplForGrpCdTRVOImpl pbltrVo = getRatePblcnTmplForGrpCdTRVO();
    PblcnBusTmplGrpTRVOImpl pbBusTempdfltTrVO = getPblcnBusTmplGrpTRVO();

    PublicationGENTmplROVOImpl genTmplVo = getPublicationGENTmplROVO();
    PublicationGENTmplTRVOImpl genDfltTmplVo = getPublicationGENTmplTRVO();
    //
    PublicationLGLTmplTRVOImpl lglDfltTmplVo = getPublicationLGLTmplTRVO();
    PublicationLGLTmplROVOImpl lglTmplVo = getPublicationLGLTmplROVO();

    PublicationFSRTmplTRVOImpl fsrDfltTmplVo = getPublicationFSRTmplTRVO();
    PublicationFSRTmplROVOImpl fsrTmplVo = getPublicationFSRTmplROVO();
    PublicationHFTmplTRVOImpl hfDfltTmplVo = getPublicationHFTmplTRVO();
    PublicationHFTmplROVOImpl hfTmplVo = getPublicationHFTmplROVO();

    if (pbBusTempdfltTrVO.getRowCount() > 0)
      pbBusTempdfltTrVO.clearCache();
    if (pbltrVo.getRowCount() > 0)
      pbltrVo.clearCache();
    if (genDfltTmplVo.getRowCount() > 0)
      genDfltTmplVo.clearCache();

    if (lglDfltTmplVo.getRowCount() > 0)
      lglDfltTmplVo.executeEmptyRowSet();
    if (fsrDfltTmplVo.getRowCount() > 0)
      fsrDfltTmplVo.clearCache();
    if (hfDfltTmplVo.getRowCount() > 0)
      hfDfltTmplVo.clearCache();

    String[] busTmplArr =
      SNISearchCustomizer.getAllSavedSearchNames(pbBusTempdfltTrVO);
    String[] grpCdNameArr =
      SNISearchCustomizer.getAllSavedSearchNames(pbltrVo);
    String[] genTmplNameArr =
      SNISearchCustomizer.getAllSavedSearchNames(genDfltTmplVo);
    String[] legalArr =
      SNISearchCustomizer.getAllSavedSearchNames(lglDfltTmplVo);
    String[] fsrArr =
      SNISearchCustomizer.getAllSavedSearchNames(fsrDfltTmplVo);
    String[] hfArr =
      SNISearchCustomizer.getAllSavedSearchNames(hfDfltTmplVo);

    //Populating Bussiness Unit
    if (busTmplArr != null && busTmplArr.length > 0)
    {

      PblcnBusTmplGrpTRVORowImpl busTmplDfltTrVORow =
        (PblcnBusTmplGrpTRVORowImpl) pbBusTempdfltTrVO.createRow();
      try
      {
        SNISearchCustomizer.applySearchPreference(busTmplArr[0],
                                                  pbBusTempdfltTrVO,
                                                  busTmplDfltTrVORow);


      }
      catch (Exception ex)
      {
        if (_logger.isLoggable(Level.FINEST))
        {
          _logger.logp(Level.FINE, CLAZZ_NAME, lMethodName,
                       "Error while applySearchPreference() for Busness ID , Key -" +
                       busTmplArr[0], ex);
        }
      }
      pbBusTempdfltTrVO.insertRow(busTmplDfltTrVORow);
      executePublicationTemplate(busTmplDfltTrVORow.getBusId());
    }
    else
    {
      PblcnBusTmplGrpTRVORowImpl busTmpTrVORow =
        (PblcnBusTmplGrpTRVORowImpl) pbBusTempdfltTrVO.createRow();
      busTmpTrVORow.setBusId("ALL");
      pbBusTempdfltTrVO.insertRow(busTmpTrVORow);
      String tempValue = "ALL";
      executePublicationTemplate(tempValue);
    }

    //Populating Group Code
    if (grpCdNameArr != null && grpCdNameArr.length > 0)
    {

      RatePblcnTmplForGrpCdTRVORowImpl grpCdInfoRow =
        (RatePblcnTmplForGrpCdTRVORowImpl) pbltrVo.createRow();
      try
      {
        SNISearchCustomizer.applySearchPreference(grpCdNameArr[0], pbltrVo,
                                                  grpCdInfoRow);

      }
      catch (Exception ex)
      {
        if (_logger.isLoggable(Level.FINEST))
        {
          _logger.logp(Level.FINE, CLAZZ_NAME, lMethodName,
                       "Error while applySearchPreference() for Group Code , Key -" +
                       grpCdNameArr[0], ex);
        }
      }
      pbltrVo.insertRow(grpCdInfoRow);
    }
    else
    {
      pbltrVo.insertRow(pbltrVo.createRow());
    }

    //for Genrric Tempalte
    ArrayList docgenTmplIdList = new ArrayList();
    ArrayList docFsrTmplIdList = new ArrayList();
    ArrayList docLglTmplIdList = new ArrayList();
    ArrayList docHfTmplIdList = new ArrayList();
    if (genTmplNameArr != null && genTmplNameArr.length > 0)
    {
      for (String searchKey: genTmplNameArr)
      {
        PublicationGENTmplTRVORowImpl genDfltTmplRow =
          (PublicationGENTmplTRVORowImpl) genDfltTmplVo.createRow();

        if (_logger.isLoggable(Level.FINEST))
        {
          _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                       "searchKey : " + searchKey);
        }
        try
        {
          SNISearchCustomizer.applySearchPreference(searchKey,
                                                    genDfltTmplVo,
                                                    genDfltTmplRow);
          docgenTmplIdList.add(genDfltTmplRow.getPblcnTmplId());
        }
        catch (Exception ex)
        {
          if (_logger.isLoggable(Level.FINEST))
          {
            _logger.logp(Level.FINE, CLAZZ_NAME, lMethodName,
                         "Error while applySearchPreference() for Genric Temaplate , Key -" +
                         searchKey, ex);
          }
        }
      }

      RowIterator genTmplIt = genTmplVo.createRowSetIterator(null);
      while (genTmplIt.hasNext())
      {
        PublicationGENTmplROVORowImpl genTmplRow =
          (PublicationGENTmplROVORowImpl) genTmplIt.next();
        BigDecimal genId = genTmplRow.getPblcnTmplId();
        if (docgenTmplIdList.contains(genId))
        {
          genTmplRow.setGenChkBox("true");
        }
      }
    }

    //For LEgal
    if (legalArr != null && legalArr.length > 0)
    {
      for (String searchKey: legalArr)
      {
        PublicationLGLTmplTRVORowImpl lglDfltTmplRow =
          (PublicationLGLTmplTRVORowImpl) lglDfltTmplVo.createRow();
        try
        {
          SNISearchCustomizer.applySearchPreference(searchKey,
                                                    lglDfltTmplVo,
                                                    lglDfltTmplRow);
          docLglTmplIdList.add(lglDfltTmplRow.getPblcnTmplId());
        }
        catch (Exception ex)
        {
          if (_logger.isLoggable(Level.FINEST))
          {
            _logger.logp(Level.FINE, CLAZZ_NAME, lMethodName,
                         "Error while applySearchPreference() for Legal Temp , Key -" +
                         searchKey, ex);
          }
        }

      }
      RowIterator lglTmplIt = lglTmplVo.createRowSetIterator(null);
      while (lglTmplIt.hasNext())
      {
        PublicationLGLTmplROVORowImpl lglTmplRow =
          (PublicationLGLTmplROVORowImpl) lglTmplIt.next();
        BigDecimal lglId = lglTmplRow.getPblcnTmplId();
        if (docLglTmplIdList.contains(lglId))
        {
          lglTmplRow.setCheckBox("true");
        }
      }

    }
    //For FSR Template
    if (fsrArr != null && fsrArr.length > 0)
    {
      for (String searchKey: fsrArr)
      {
        PublicationFSRTmplROVORowImpl fsrDfltTmplRow =
          (PublicationFSRTmplROVORowImpl) fsrTmplVo.createRow();
        try
        {
          SNISearchCustomizer.applySearchPreference(searchKey,
                                                    fsrDfltTmplVo,
                                                    fsrDfltTmplRow);
          docFsrTmplIdList.add(fsrDfltTmplRow.getPblcnTmplId());
        }
        catch (Exception ex)
        {
          if (_logger.isLoggable(Level.FINEST))
          {
            _logger.logp(Level.FINE, CLAZZ_NAME, lMethodName,
                         "Error while applySearchPreference() for FSR Temaplate , Key -" +
                         searchKey, ex);
          }
        }
      }

      RowIterator fsrTmplIt = fsrTmplVo.createRowSetIterator(null);
      while (fsrTmplIt.hasNext())
      {
        PublicationFSRTmplROVORowImpl fsrTmplRow =
          (PublicationFSRTmplROVORowImpl) fsrTmplIt.next();
        BigDecimal fsrId = fsrTmplRow.getPblcnTmplId();
        if (docFsrTmplIdList.contains(fsrId))
        {
          fsrTmplRow.setFsrChKBox("true");
        }
      }
    }
    //For HF Template

    if (hfArr != null && hfArr.length > 0)
    {
      for (String searchKey: hfArr)
      {
        PublicationHFTmplROVORowImpl hfDfltTmplRow =
          (PublicationHFTmplROVORowImpl) hfTmplVo.createRow();
        try
        {
          SNISearchCustomizer.applySearchPreference(searchKey,
                                                    hfDfltTmplVo,
                                                    hfDfltTmplRow);
          docHfTmplIdList.add(hfDfltTmplRow.getPblcnTmplId());
        }
        catch (Exception ex)
        {
          if (_logger.isLoggable(Level.FINEST))
          {
            _logger.logp(Level.FINE, CLAZZ_NAME, lMethodName,
                         "Error while applySearchPreference() for FSR Temaplate , Key -" +
                         searchKey, ex);
          }
        }
      }

      RowIterator hfTmplIt = hfTmplVo.createRowSetIterator(null);
      while (hfTmplIt.hasNext())
      {
        PublicationHFTmplROVORowImpl hfTmplRow =
          (PublicationHFTmplROVORowImpl) hfTmplIt.next();
        BigDecimal hfId = hfTmplRow.getPblcnTmplId();
        if (docHfTmplIdList.contains(hfId))
        {
          hfTmplRow.setHFChkBox("true");
        }
      }

    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Method to excute the differnt template on basis of Bus id
   */
  public void executePublicationTemplate(String busId)
  {
    String lMethodName = "executePublicationTemplate()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    PublicationGENTmplROVOImpl genTmpVo = getPublicationGENTmplROVO();
    genTmpVo.reset();
    genTmpVo.setBindBusID(busId);
    genTmpVo.executeQuery();

    //Legal
    PublicationLGLTmplROVOImpl lglTmpVo = getPublicationLGLTmplROVO();
    lglTmpVo.reset();
    lglTmpVo.setBindBusID(busId);
    lglTmpVo.executeQuery();

    //HF
    PublicationHFTmplROVOImpl hfTmpVo = getPublicationHFTmplROVO();
    hfTmpVo.reset();
    hfTmpVo.setBindBusID(busId);
    hfTmpVo.executeQuery();

    //FSR
    PublicationFSRTmplROVOImpl fsrTmpVo = getPublicationFSRTmplROVO();
    fsrTmpVo.reset();
    fsrTmpVo.setBindBusID(busId);
    fsrTmpVo.executeQuery();
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Method to Add the rows for Blank Row Template
   */
  public void publicationBlankRow(Number pSeqNo, Number pRowCount)
  {
    String lMethodName = "publicationBlankRow()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    if (pRowCount == null)
      pRowCount = new Number(1);
    DocVORowImpl docVORow = (DocVORowImpl) getDocVO().getCurrentRow();
    //DocTmplVOImpl docTmplVo = getDocTmplVO();
    DocTmplForDfltTRVOImpl docTmplVo = getDocTmplForDfltTRVO();
    int docTmplId = 1;
    int seqNo = 1;
    //    int newSeqNo = 0;
    RowIterator rowIt = docTmplVo.createRowSetIterator(null);
    List docTmplIdList = new ArrayList();
    // RowIterator doctmplRowIt = docTmplVo.createRowSetIterator(null);
    while (rowIt.hasNext())
    {
      DocTmplForDfltTRVORowImpl docTmplRow =
        (DocTmplForDfltTRVORowImpl) rowIt.next();
      docTmplIdList.add(docTmplRow.getDocTmplId().intValue());
      // int checkSequNo = docTmplRow.getSeqNum().intValue();
      //  docTmplRow.setSeqNum(new Number(seqNo));
      //      if (checkSequNo == pSeqNo.intValue())
      //      {
      //        seqNo = seqNo + pRowCount.intValue();
      //      }
      //      seqNo++;
    }
    Collections.sort(docTmplIdList);
    docTmplId = docTmplIdList.get(docTmplIdList.size() - 1) + 1;
    rowIt.reset();
    while (rowIt.hasNext())
    {
      DocTmplForDfltTRVORowImpl docTmplRow =
        (DocTmplForDfltTRVORowImpl) rowIt.next();
      docTmplRow.setSeqNum(new Number(seqNo));
      int chkSequNo = docTmplRow.getDocTmplId().intValue();
      if (chkSequNo == pSeqNo.intValue())
      {
        docTmplVo.setCurrentRowAtRangeIndex(rowIt.getCurrentRowIndex());
        for (int i = 0; i < pRowCount.intValue(); i++)
        {
          docTmplVo.next();
          DocTmplForDfltTRVORowImpl dbtmplrow =
            (DocTmplForDfltTRVORowImpl) docTmplVo.createRow();
          dbtmplrow.setPblcnTmplId(docTmplRow.getPblcnTmplId());
          // dbtmplrow.setSeqNum(new Number(seqNo));
          dbtmplrow.setPblcnDesc("Blank Row");
          dbtmplrow.setDocId(docVORow.getDocId());
          dbtmplrow.setContPrtId(new Number(1));
          dbtmplrow.setCpyId(docTmplRow.getCpyId());
          dbtmplrow.setBusId(docTmplRow.getBusId());
          dbtmplrow.setDocTmplId(new Number(docTmplId));
          docTmplVo.insertRow(dbtmplrow);
          //  seqNo++;
          docTmplId++;

        }
      }
      seqNo++;
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Method to populate the template in Publication Setup Screen
   */
  public void populatePublicationTemplate()
  {
    String lMethodName = "executePublicationTemplate()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    Number docId = new Number(1);
    DocVORowImpl docVORow = (DocVORowImpl) getDocVO().getCurrentRow();
    PublicationGENTmplROVOImpl genTmpVo = getPublicationGENTmplROVO();
    PublicationLGLTmplROVOImpl lglTmpVo = getPublicationLGLTmplROVO();
    PublicationFSRTmplROVOImpl fsrTmpVo = getPublicationFSRTmplROVO();
    PublicationHFTmplROVOImpl hfTmpVo = getPublicationHFTmplROVO();
    RatePblcnTmplForGrpCdTRVORowImpl grpvo =
      (RatePblcnTmplForGrpCdTRVORowImpl) getRatePblcnTmplForGrpCdTRVO().getCurrentRow();
    //  DocTmplVOImpl docTmplVo = getDocTmplVO();
    DocTmplForDfltTRVOImpl docTmplVo = getDocTmplForDfltTRVO();
    int seq = 1;
    int docTmplId = 1;
    int contPrt = 1;
    if (docVORow.getDocId() != null)
    {
      docId = docVORow.getDocId();
    }
    RowSetIterator docTmplItr = docTmplVo.createRowSetIterator(null);
    //Added Array list to add the PubTmplID
    ArrayList pubTmplIdList = new ArrayList();
    List seqNumList = new ArrayList();
    List docTmplIdList = new ArrayList();
    while (docTmplItr.hasNext())
    {
      DocTmplForDfltTRVORowImpl docTmplrow =
        (DocTmplForDfltTRVORowImpl) docTmplItr.next();
      pubTmplIdList.add(docTmplrow.getPblcnTmplId());
      seqNumList.add(docTmplrow.getSeqNum().intValue());
      docTmplIdList.add(docTmplrow.getDocTmplId().intValue());
    }
    //Array List END
    Collections.sort(seqNumList);
    Collections.sort(docTmplIdList);
    if (docTmplVo.getRowCount() > 0)
    {
      int size = seqNumList.size();
      seq = seqNumList.get(size - 1) + 1;
      int docTmplIdSize = docTmplIdList.size();
      docTmplId = docTmplIdList.get(docTmplIdSize - 1) + 1;
    }
    if ("true".equals(grpvo.getGenTempChk()))
    {
      RowSetIterator genItr = genTmpVo.createRowSetIterator(null);
      docTmplVo.last();

      while (genItr.hasNext())
      {
        PublicationGENTmplROVORowImpl genTempRow =
          (PublicationGENTmplROVORowImpl) genItr.next();
        String chvalue = genTempRow.getGenChkBox();
        boolean insert = true;
        if ("true".equals(chvalue))
        {
          //Adding validation for duplication row of Exibit A
          int pblcnId = genTempRow.getPblcnTmplId().intValue();
          if (pblcnId == 1)
          {
            if (pubTmplIdList.contains(new BigDecimal(pblcnId)))
            {
              insert = false;
            }
          }
          if (pblcnId == 2)
          {
            if (pubTmplIdList.contains(new BigDecimal(pblcnId)))
            {
              insert = false;
            }
          }
          //End
          if (insert)
          {
            String pblDesc = genTempRow.getPblcnDesc();
            BigDecimal pblID = genTempRow.getPblcnTmplId();
            docTmplVo.next();
            DocTmplForDfltTRVORowImpl dpblcnrow =
              (DocTmplForDfltTRVORowImpl) docTmplVo.createRow();
            dpblcnrow.setPblcnTmplId(pblID);
            dpblcnrow.setSeqNum(new Number(seq));
            dpblcnrow.setDocTmplId(new Number(docTmplId));
            dpblcnrow.setPblcnDesc(pblDesc);
            dpblcnrow.setDocId(docId);
            dpblcnrow.setContPrtId(new Number(contPrt));
            dpblcnrow.setCpyId(docVORow.getCpyId());
            dpblcnrow.setBusId(docVORow.getBusId());
            docTmplVo.insertRow(dpblcnrow);
            seq++;
            docTmplId++;
          }

        }

      }
    }
    //FSR Template
    if ("true".equals(grpvo.getFuelSurTempChk()))
    {
      RowSetIterator fsrItr = fsrTmpVo.createRowSetIterator(null);
      while (fsrItr.hasNext())
      {
        PublicationFSRTmplROVORowImpl fsrTempRow =
          (PublicationFSRTmplROVORowImpl) fsrItr.next();
        String chvalue = fsrTempRow.getFsrChKBox();
        if ("true".equals(chvalue))
        {
          String pblDesc = fsrTempRow.getPblcnDesc();
          BigDecimal pblID = fsrTempRow.getPblcnTmplId();
          //   docTmplVo.last();
          docTmplVo.next();
          DocTmplForDfltTRVORowImpl dpblcnrow =
            (DocTmplForDfltTRVORowImpl) docTmplVo.createRow();
          dpblcnrow.setPblcnTmplId(pblID);
          dpblcnrow.setSeqNum(new Number(seq));
          dpblcnrow.setDocTmplId(new Number(docTmplId));
          dpblcnrow.setPblcnDesc(pblDesc);
          dpblcnrow.setDocId(docId);
          dpblcnrow.setContPrtId(new Number(contPrt));
          dpblcnrow.setCpyId(docVORow.getCpyId());
          dpblcnrow.setBusId(docVORow.getBusId());
          docTmplVo.insertRow(dpblcnrow);
          seq++;
          docTmplId++;
        }
      }
    }
    //Legal template
    if ("true".equals(grpvo.getLeaglTxtTempChk()))
    {
      RowSetIterator lglItr = lglTmpVo.createRowSetIterator(null);
      while (lglItr.hasNext())
      {
        boolean insert = true;
        PublicationLGLTmplROVORowImpl lglTempRow =
          (PublicationLGLTmplROVORowImpl) lglItr.next();
        String chkvalue = lglTempRow.getCheckBox();
        //Validation for Duplication of Order of Precedence
        if ("true".equals(chkvalue))
        {
          String pblDesc = lglTempRow.getPblcnDesc();
          int pblcnId = lglTempRow.getPblcnTmplId().intValue();
          if (pblcnId == 1580)
          {
            if (pubTmplIdList.contains(new BigDecimal(pblcnId)))
            {
              insert = false;
            }
          }
          if (insert)
          {
            docTmplVo.next();
            BigDecimal pblID = lglTempRow.getPblcnTmplId();
            DocTmplForDfltTRVORowImpl dpblcnrow =
              (DocTmplForDfltTRVORowImpl) docTmplVo.createRow();
            dpblcnrow.setPblcnTmplId(pblID);
            dpblcnrow.setSeqNum(new Number(seq));
            dpblcnrow.setDocTmplId(new Number(docTmplId));
            dpblcnrow.setPblcnDesc(pblDesc);
            dpblcnrow.setContPrtId(new Number(contPrt));
            dpblcnrow.setDocId(docId);
            dpblcnrow.setCpyId(docVORow.getCpyId());
            dpblcnrow.setBusId(docVORow.getBusId());
            docTmplVo.insertRow(dpblcnrow);
            seq++;
            docTmplId++;
          }
        }

      }
    }

    //Header and footer template
    if ("true".equals(grpvo.getHdFtTempChk()))
    {
      RowSetIterator hfItr = hfTmpVo.createRowSetIterator(null);
      while (hfItr.hasNext())
      {
        PublicationHFTmplROVORowImpl hfTempRow =
          (PublicationHFTmplROVORowImpl) hfItr.next();
        String hfChkvalue = hfTempRow.getHFChkBox();
        if ("true".equals(hfChkvalue))
        {
          String pblDesc = hfTempRow.getPblcnDesc();
          BigDecimal pblID = hfTempRow.getPblcnTmplId();
          docTmplVo.next();
          DocTmplForDfltTRVORowImpl dpblcnrow =
            (DocTmplForDfltTRVORowImpl) docTmplVo.createRow();
          dpblcnrow.setPblcnTmplId(pblID);
          dpblcnrow.setSeqNum(new Number(seq));
          dpblcnrow.setDocTmplId(new Number(docTmplId));
          dpblcnrow.setPblcnDesc(pblDesc);
          dpblcnrow.setContPrtId(new Number(contPrt));
          dpblcnrow.setDocId(docId);
          dpblcnrow.setCpyId(docVORow.getCpyId());
          dpblcnrow.setBusId(docVORow.getBusId());
          docTmplVo.insertRow(dpblcnrow);
          seq++;
          docTmplId++;
        }
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Stores the user selected defaults to MDS

   */
  public void savePublicationTemplateDefaultsToMDS()
  {
    String lMethodName = "savePublicationTemplateDefaultsToMDS()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    getIRCTRateCompanyServiceHelper().savePublicationTempalteToMDS();

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  public void savePublicationSetUpDefaultsToMDS()
  {
    String lMethodName = "savePublicationSetUpDefaultsToMDS()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    getIRCTRateCompanyServiceHelper().savePublicationSetUpToMDS();

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to initialize the Initiate Publication page
   */
  public void initInitiatePublication()
  {
    String lMethodName = "initInitiatePublication()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    //Check For status
    DocTmplForDfltTRVOImpl docTmplTrans = getDocTmplForDfltTRVO();
    DocVORowImpl docRow = (DocVORowImpl) getDocVO().getCurrentRow();
    DocForPubROVOImpl docBbVo = getDocForPubROVO();
    docBbVo.setBindDocId(docRow.getDocId());
    docBbVo.executeQuery();
    DocForPubROVORowImpl docDbRow = (DocForPubROVORowImpl) docBbVo.first();
    DocTmplVOImpl docTmplVo = getDocTmplVO();
    docTmplVo.setBindDocID(docRow.getDocId());
    docTmplVo.executeQuery();
    if (docTmplVo.getRowCount() == 0)
    {
      addWarningMessage(IRCTModelConstants.PUB_SETUP_NOT_COMPLETE,
                        new Object[]
          { });
      return;
    }

    else if (!(StringUtils.equals(docDbRow.getDfltTmplDesc(),
                                  docRow.getDfltTmplDesc())) ||
             !(StringUtils.equals(docDbRow.getDfltTmplBDesc(),
                                  docRow.getDfltTmplBDesc())) ||
             !(docDbRow.getFtrPblcnTmplId().equals(docRow.getFtrPblcnTmplId())) ||
             !(docDbRow.getHdrPblcnTmplId().equals(docRow.getHdrPblcnTmplId())) ||
             !(docDbRow.getPblshTlChrgInd().equals(docRow.getPblshTlChrgInd())) ||
             !(docDbRow.getPblshTotMiInd().equals(docRow.getPblshTotMiInd())))
    {
      addWarningMessage(IRCTModelConstants.DOC_NOT_SAVED_INITPUB,
                        new Object[]
          { });
      return;
    }
    else
    {
      RowIterator rowItr = docTmplTrans.createRowSetIterator(null);
      while (rowItr.hasNext())
      {
        DocTmplForDfltTRVORowImpl docTmplTransRow =
          (DocTmplForDfltTRVORowImpl) rowItr.next();
        if (docTmplTransRow.getStatusCheck())
        {
          addWarningMessage(IRCTModelConstants.DOC_NOT_SAVED_INITPUB,
                            new Object[]
              { });
          return;
        }
      }

    }
    //setting Default values for Initiate Publication Page
    InitiatePublicationTRVOImpl initPubVo = getInitiatePublicationTRVO();
    InitiatePublicationTRVORowImpl initRow =
      (InitiatePublicationTRVORowImpl) initPubVo.createRow();
    DocVORowImpl docrow = (DocVORowImpl) getDocVO().getCurrentRow();

    initRow.setBatchDesc(docrow.getCtrcName().concat(" ").concat(docrow.getEffDt().toString()));
    initPubVo.insertRow(initRow);
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to populate the template in Publication Setup Screen
   */
  public void publishInitiatePublication()
  {
    String lMethodName = "publishInitiatePublication";
    _logger.entering(CLAZZ_NAME, lMethodName);

    InitiatePublicationTRVOImpl pubVo = getInitiatePublicationTRVO();
    InitiatePublicationTRVORowImpl initPubrow =
      (InitiatePublicationTRVORowImpl) pubVo.first();
    if (initPubrow.getBatchDesc().length() > 50)
    {
      addWarningMessage(IRCTModelConstants.BATCH_DESC_LENGTH_INVALID,
                        new Object[]
          { });
      return;
    }
    DocVORowImpl docrow = (DocVORowImpl) getDocVO().getCurrentRow();
    BatchSummaryForPubVOImpl btchVo = getBatchSummaryForPubVO();
    BatchSummaryForPubVORowImpl btchRow =
      (BatchSummaryForPubVORowImpl) btchVo.createRow();

    DBSequence btchId =
      new DBSequence(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ));
    btchRow.setBtchSumId(btchId);
    btchRow.setCpyId(IRCTRateCompanyConstants.NO_COMPANY);
    btchRow.setBusId(docrow.getBusId());
    btchRow.setObjId(docrow.getDocId());
    btchRow.setBtchDesc(initPubrow.getBatchDesc());
    btchRow.setStaCd("UPLD");
    btchRow.setTotRecCt(new Number(0));
    performDatabaseCommit();
    BtchDtlVOImpl btchDtlVo = getBtchDtlVO();
    btchDtlVo.executeEmptyRowSet();
    BtchDtlVORowImpl btchDtlRow = (BtchDtlVORowImpl) btchDtlVo.createRow();
    String pubType = initPubrow.getPubType();
    String paperOrnt = initPubrow.getPageOrnt();
    String paperSize = initPubrow.getPaperSize();
    String mgrInit = initPubrow.getPurcMgrInit();
    String userInit = initPubrow.getPubUserInit();

    if (mgrInit == null)
    {
      mgrInit = " ";
    }
    if (userInit == null)
    {
      userInit = " ";
    }
    String prcdataTxt =
      mgrInit.concat(",").concat(userInit).concat(",").concat(pubType).concat(",").concat(paperOrnt).concat(",").concat(paperSize);
    btchDtlRow.setBtchSumId(btchId);
    btchDtlRow.setBtchDtlSeqNum(new Number(1));
    btchDtlRow.setStaCd("WAIT");
    btchDtlRow.setErrNum(new Number(0));
    btchDtlRow.setParmCnt(new Number(0));
    btchDtlRow.setPrcsDtaTxt(prcdataTxt);
    btchDtlVo.insertRow(btchDtlRow);
    performDatabaseCommit();
    btchVo.closeRowSet();
    btchVo.setBindBtchSumId(btchId);
    btchVo.executeQuery();
    BatchSummaryForPubVORowImpl upbtchRow =
      (BatchSummaryForPubVORowImpl) btchVo.first();
    upbtchRow.setStaCd("QUED");
    upbtchRow.setTotRecCt(new Number(1));
    upbtchRow.setXferEndDttm(new Timestamp(DateTimeUtil.singleton().getCurrentUtilDateWithTime()));
    performDatabaseCommit();
    addInformationMessage(IRCTModelConstants.PUBLICATION_SUCC_PUBLISHED,
                          new Object[]
        { });


  }

  /**
   * Method to validate the seq no in order of prec screen
   */
  public void saveOrderOfPrec()
  {
    String lMethodName = "saveOrderOfPrec";
    _logger.entering(CLAZZ_NAME, lMethodName);

    OrderOfPrecTRVOImpl ordPrecTRVO = getOrderOfPrecTRVO();

    if (ordPrecTRVO.getRowCount() > 0)
    {
      HashSet set = new HashSet();
      RowSetIterator ordPrecIter = ordPrecTRVO.createRowSetIterator(null);
      while (ordPrecIter.hasNext())
      {
        OrderOfPrecTRVORowImpl ordPrecRow =
          (OrderOfPrecTRVORowImpl) ordPrecIter.next();
        boolean val = set.add(ordPrecRow.getSeqNum().intValue());
        if (val == false)
        {
          addWarningMessage(IRCTModelConstants.SEQ_NUM_NOT_UNIQUE,
                            new Object[]
              { });
          ordPrecIter.closeRowSetIterator();
          return;
        }

      }
      ordPrecIter.closeRowSetIterator();

    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to remove the Selected rows from Publication Set up and Order of prec Screens
   */
  public void removeDocPublicationRows(String pScreen)
  {
    String lMethodName = "removeDocPublicationRows";
    _logger.entering(CLAZZ_NAME, lMethodName);

    if (pScreen.equals(IRCTRateCompanyConstants.DOC_PUB_DOC_TMPL))
    {
      DocTmplForDfltTRVOImpl docTmplVO = getDocTmplForDfltTRVO();
      int seqNo = 1;
      for (int i = 0; i < docTmplVO.getRowCount(); i++)
      {
        //docTmplVO.next();
        DocTmplForDfltTRVORowImpl docTmplRow =
          (DocTmplForDfltTRVORowImpl) docTmplVO.getRowAtRangeIndex(i);
        docTmplRow.setSeqNum(new Number(seqNo));
        if (StringUtils.equals("true", docTmplRow.getSelectedCheck()))
        {
          docTmplVO.setCurrentRowAtRangeIndex(i);
          docTmplVO.removeCurrentRow();
          i--;
        }
        else
        {
          seqNo++;
        }
      }
    }


    _logger.exiting(CLAZZ_NAME, lMethodName);

  }

  /**
   * Method to remove the Selected rows from Publication Set up and Order of prec Screens
   */
  public void cancelOrderOfPrecedence()
  {
    String lMethodName = "cancelOrderOfPrecedence";
    _logger.entering(CLAZZ_NAME, lMethodName);

    initOrderOfPrecedence();

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to get Order of Precedence ON CLICK OF RETRIEVE eNGINE
   */
  public void initOrderOfPrecedence()
  {
    String lMethodName = "initOrderOfPrecedence";
    _logger.entering(CLAZZ_NAME, lMethodName);
    DocVORowImpl docrow = (DocVORowImpl) getDocVO().getCurrentRow();
    if (docrow.getDocId() == null)
    {
      addWarningMessage(IRCTModelConstants.DOC_NOT_SAVED_ORDPREC,
                        new Object[]
          { });
      return;
    }
    Map engTypeMap = getIRCTRateCompanyServiceHelper().getOrderOfPrecLOV();


    OrderOfPrecTRVOImpl ordPrecTRVO = getOrderOfPrecTRVO();
    ordPrecTRVO.clearCache();

    DocRateOrdStrcVOImpl ordPrecVO = getDocRateOrdStrcVO();
    ordPrecVO.setBindDocId(docrow.getDocId());
    ordPrecVO.executeQuery();

    RowSetIterator ordIter = ordPrecVO.createRowSetIterator(null);
    if (ordPrecVO.getRowCount() > 0)
    {
      while (ordIter.hasNext())
      {
        DocRateOrdStrcVORowImpl orderOfPrecRow =
          (DocRateOrdStrcVORowImpl) ordIter.next();

        //orderOfPrecRow.getOriIxCd();
        orderOfPrecRow.getPblcnEngSeqNum();
        String engType =
          engTypeMap.get(orderOfPrecRow.getOriIxCd()).toString().concat("/").concat(engTypeMap.get(orderOfPrecRow.getDesIxCd()).toString());
        orderOfPrecRow.setEngineType(engType);
        //Added to insert data into TRVO
        OrderOfPrecTRVORowImpl ordPrecTRVORow =
          (OrderOfPrecTRVORowImpl) ordPrecTRVO.createRow();
        ordPrecTRVO.last();
        ordPrecTRVO.next();
        ordPrecTRVORow.setOriginCd(orderOfPrecRow.getOriIxCd());
        ordPrecTRVORow.setDestCd(orderOfPrecRow.getDesIxCd());
        ordPrecTRVORow.setDocId(orderOfPrecRow.getDocId());
        ordPrecTRVORow.setSeqNum(orderOfPrecRow.getPblcnEngSeqNum());
        ordPrecTRVORow.setDocTmplSeqNum(orderOfPrecRow.getDocTmplSeqNum());
        ordPrecTRVORow.setEngineType(engType);
        ordPrecTRVO.insertRow(ordPrecTRVORow);

      }
    }
    ordIter.closeRowSetIterator();
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to get Order of Precedence ON CLICK OF RETRIEVE eNGINE
   */
  public void getOrderOfPrecedence()
  {
    String lMethodName = "getOrderOfPrecedence";
    _logger.entering(CLAZZ_NAME, lMethodName);
    String engType = null;
    DocVORowImpl docrow = (DocVORowImpl) getDocVO().getCurrentRow();
    DocTmplForDfltTRVORowImpl docTmplRow =
      (DocTmplForDfltTRVORowImpl) getDocTmplForDfltTRVO().getCurrentRow();

    Number docId = docrow.getDocId();

    OrderOfPrecTRVOImpl ordPrecTRVO = getOrderOfPrecTRVO();

    ordPrecTRVO.clearCache();

    try
    {
      RCTUserInfo user =
        getIRCTRateCompanyServiceHelper().populateRCTUserInfoObject(docrow.getBusId(),
                                                                    docrow.getCpyId(),
                                                                    getLoggedInUserID());
      RatingAdminManager mgr = new RatingAdminManager();
      List ordPrec = new ArrayList();
      ordPrec = mgr.getOrdOfPrecedenceFromCalcOpr(docId.longValue(), user);
      Iterator it = ordPrec.iterator();
      while (it.hasNext())
      {
        //RCTRateImpl rate = (RCTRateImpl) it.next();
        RCTOrdOfPrecedenceImpl orderPre =
          (RCTOrdOfPrecedenceImpl) it.next();
        //Added
        Map engTypeMap =
          getIRCTRateCompanyServiceHelper().getOrderOfPrecLOV();
        //End
        if (orderPre.getIsDuplicate())
        {
          engType =
              engTypeMap.get(orderPre.getOrigIXCode()).toString().concat("/").concat(engTypeMap.get(orderPre.getDestIXCode()).toString()).concat("(dup)");
          //orderPre.getOrigIXDesc().concat("/").concat(orderPre.getDestIXDesc()).concat("(dup)");
        }
        else
        {
          engType =
              engTypeMap.get(orderPre.getOrigIXCode()).toString().concat("/").concat(engTypeMap.get(orderPre.getDestIXCode()).toString());
          //orderPre.getOrigIXDesc().concat("/").concat(orderPre.getDestIXDesc());
        }

        OrderOfPrecTRVORowImpl ordPrecTRVORow =
          (OrderOfPrecTRVORowImpl) ordPrecTRVO.createRow();
        ordPrecTRVO.last();
        ordPrecTRVO.next();
        ordPrecTRVORow.setDocId(docId);
        ordPrecTRVORow.setOriginCd(orderPre.getOrigIXCode());
        ordPrecTRVORow.setDestCd(orderPre.getDestIXCode());

        ordPrecTRVORow.setSeqNum(new Number(orderPre.getPrecedence()));
        ordPrecTRVORow.setDocTmplSeqNum(docTmplRow.getSeqNum());
        ordPrecTRVORow.setEngineType(engType);
        ordPrecTRVO.insertRow(ordPrecTRVORow);

      }
    }
    catch (Exception ex)
    {
      String errMsg =
        "Exception while getOrdOfPrecedenceFromCalcOpr CORBA Call" +
        StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                "FAILED_TO_WORK_WITH_REMOTE_CORBA_FORPUDESC",
                                null);
      handleException(ex, errMsg, null);
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Container's getter for ContractContactInfoVO.
   * @return ContractContactInfoVO
   */
  public ContractContactInfoVOImpl getContractContactInfoVO()
  {
    return (ContractContactInfoVOImpl) findViewObject("ContractContactInfoVO");
  }

  /**
   * Container's getter for ContactTRVO.
   * @return ContactTRVO
   */
  public ContactTRVOImpl getContactTRVO()
  {
    return (ContactTRVOImpl) findViewObject("ContactTRVO");
  }

  /**
   * Method to check data validity
   * @param effDt
   * @param exprDt
   */
  private boolean documentDateCheck(oracle.jbo.domain.Date effDt,
                                    oracle.jbo.domain.Date exprDt)
  {
    String lMethodName =
      "documentDateCheck(oracle.jbo.domain.Date, oracle.jbo.domain.Date)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    boolean result = true;

    if (effDt.compareTo(exprDt) > 0)
    {
      addWarningMessage(IRCTModelConstants.EFF_DT_LT_EXP_DT, new Object[]
          { });
      return false;
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return result;
  }

  /**
   * Container's getter for DocExistsROVO.
   * @return DocExistsROVO
   */
  public DocExistsROVOImpl getDocExistsROVO()
  {
    return (DocExistsROVOImpl) findViewObject("DocExistsROVO");
  }

  /**
   * Method to validateDocDate
   * @param docVORow
   * @return
   */
  public boolean validateDocDate(DocVORowImpl docVORow, int dtChkFlg,
                                 String docCtntCd, String hstMthdCd,
                                 String docCd)
  {
    String lMethodName =
      "validateDocDate(DocVORowImpl, int, String, String, Strking)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    boolean result = true;
    Date effDt = null;
    oracle.jbo.domain.Date docEffDt = docVORow.getEffDt();

    String docId =
      docVORow.getDocId() == null? null: docVORow.getDocId().toString();

    if (dtChkFlg == 1)
    {
      DocEffDtCheckLTROVOImpl docEffDtLTVO = getDocEffDtCheckLTROVO();
      docEffDtLTVO.setBindCtrcId(docVORow.getCtrcId().toString());
      docEffDtLTVO.setBindDocCtntCd(docCtntCd);
      docEffDtLTVO.setBindHstMthdCd(hstMthdCd);
      docEffDtLTVO.setBindDocId(docId);

      if (IRCTPubConstants.PUB_BATCH_TYPE.equals(docCd))
      {
        docEffDtLTVO.setBindDocCd(IRCTModelConstants.PRPL + "," +
                                  RateServerConstants.PUB_BATCH_TYPE);
      }
      else
      {
        docEffDtLTVO.setBindDocCd(RateServerConstants.PUB_BATCH_TYPE);
      }
      docEffDtLTVO.executeQuery();

      if (docEffDtLTVO.hasNext())
      {
        DocEffDtCheckLTROVORowImpl docEffDtVORow =
          (DocEffDtCheckLTROVORowImpl) docEffDtLTVO.next();
        effDt = docEffDtVORow.getDocaEffDt();

        if ((docEffDt.dateValue()).compareTo(effDt) >= 0)
        {
          addWarningMessage(IRCTModelConstants.EFF_DT_LT_PREV_DOC,
                            new Object[]
              { });
          return false;
        }
      }

      if (result)
      {
        DocEffDtCheckROVOImpl docEffDtVO = getDocEffDtCheckROVO();
        docEffDtVO.setBindCtrcId(docVORow.getCtrcId().toString());
        docEffDtVO.setBindDocCtntCd(docCtntCd);
        docEffDtVO.setBindHstMthdCd(hstMthdCd);
        docEffDtVO.setBindDocId(docId);

        if (IRCTPubConstants.PUB_BATCH_TYPE.equals(docCd))
        {
          docEffDtVO.setBindDocCd(IRCTModelConstants.PRPL + "," +
                                  RateServerConstants.PUB_BATCH_TYPE);
        }
        else
        {
          docEffDtVO.setBindDocCd(RateServerConstants.PUB_BATCH_TYPE);
        }
        docEffDtVO.executeQuery();

        if (docEffDtVO.hasNext())
        {
          DocEffDtCheckROVORowImpl docEffDtVORow =
            (DocEffDtCheckROVORowImpl) docEffDtVO.next();
          effDt = docEffDtVORow.getDocaEffDt();

          if ((docEffDt.dateValue()).compareTo(effDt) <= 0)
          {
            addWarningMessage(IRCTModelConstants.EFF_DT_GT_PREV_DOC,
                              new Object[]
                { });
            return false;
          }
        }
      }
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);

    return result;
  }

  /**
   * Container's getter for DocEffDtCheckROVO.
   * @return DocEffDtCheckROVO
   */
  public DocEffDtCheckROVOImpl getDocEffDtCheckROVO()
  {
    return (DocEffDtCheckROVOImpl) findViewObject("DocEffDtCheckROVO");
  }

  /**
   * Container's getter for ValidateDateOverlapROVO.
   * @return ValidateDateOverlapROVO
   */
  public ValidateDateOverlapROVOImpl getValidateDateOverlapROVO()
  {
    return (ValidateDateOverlapROVOImpl) findViewObject("ValidateDateOverlapROVO");
  }

  /**
   * Container's getter for CtrcNoteVO.
   * @return CtrcNoteVO
   */
  public CtrcNoteVOImpl getCtrcNoteVO()
  {
    return (CtrcNoteVOImpl) findViewObject("CtrcNoteVO");
  }

  /**
   * Container's getter for DocStaROVO.
   * @return DocStaROVO
   */
  public DocStaROVOImpl getDocStaROVO()
  {
    return (DocStaROVOImpl) findViewObject("DocStaROVO");
  }

  /**
   * Container's getter for PrevDocVO.
   * @return PrevDocVO
   */
  public DocVOImpl getPrevDocVO()
  {
    return (DocVOImpl) findViewObject("PrevDocVO");
  }


  /**
   *Initializer method for the addNewQualification
   * @param contractTreeDataMap
   */

  public String addNewQualification(java.util.Map contractTreeDataMap)
  {
    String lMethodName = "addNewQualification(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { contractTreeDataMap });
    long stTime = System.currentTimeMillis();
    QualificationVOImpl qVO = getQualificationVO();

    oracle.jbo.domain.Number pDocId =
      (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.DOC_ID);

    String pCpyId =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.CPY_ID);

    String pBusId =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.BUS_ID);

    String treePath =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.CONTRACT_TREE_PATH);

    QualificationVORowImpl qualRow =
      (QualificationVORowImpl) qVO.createRow();

    qualRow =
        getIRCTRateCompanyServiceHelper().addNewQualification(qualRow,
                                                              pDocId,
                                                              pCpyId,
                                                              pBusId,
                                                              treePath);

    //Added

    qualRow.setDisplayAddFlg(true);
    //Enf
    qVO.insertRowAtRangeIndex(0, qualRow);
    qVO.setCurrentRow(qualRow);

    if (qualRow.getIrctNote2().getRowCount() == 0)
    {
      qualRow.createNoteRow(getIrctNoteVL1());
    }

    AuditVOImpl auditVO = getAuditVO();
    auditVO.setBindObjId(qualRow.getQualId());
    auditVO.setBindAudId(null);
    auditVO.setBindDocId(null);
    auditVO.executeQuery();
    //FIXME
    _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                 " Total Time took for :" + lMethodName + "->" +
                 (System.currentTimeMillis() - stTime));
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return IRCTRateCompanyConstants.ADD_SCREEN;
  }


  /**
   * Container's getter for DocumentROVO.
   * @return DocumentROVO
   */
  public DocumentROVOImpl getDocumentROVO()
  {
    return (DocumentROVOImpl) findViewObject("DocumentROVO");
  }

  /**
   * Container's getter for DocForCtrcVL1.
   * @return DocForCtrcVL1
   */
  public ViewLinkImpl getDocForCtrcVL1()
  {
    return (ViewLinkImpl) findViewLink("DocForCtrcVL1");
  }

  /**
   * Container's getter for RatePblcnTmplROVO.
   * @return RatePblcnTmplROVO
   */
  public RatePblcnTmplROVOImpl getRatePblcnTmplROVO()
  {
    return (RatePblcnTmplROVOImpl) findViewObject("RatePblcnTmplROVO");
  }

  /**
   * Container's getter for RatePblcnTmplHFROVO.
   * @return RatePblcnTmplHFROVO
   */
  public RatePblcnTmplHFROVOImpl getRatePblcnTmplHFROVO()
  {
    return (RatePblcnTmplHFROVOImpl) findViewObject("RatePblcnTmplHFROVO");
  }

  /**
   * Container's getter for PblcnBusTmplGrpRO1.
   * @return PblcnBusTmplGrpRO1
   */
  public PblcnBusTmplGrpROVOImpl getPblcnBusTmplGrpROVO()
  {
    return (PblcnBusTmplGrpROVOImpl) findViewObject("PblcnBusTmplGrpROVO");
  }

  /**
   * This method is used to add new contract refrences on Add/Edit/view document screen
   * @return PblcnBusTmplGrpRO1
   */
  public void addContractReferences(List pcontractIds,
                                    String pobjContractId,
                                    String pobjDocId)
  {
    String lMethodName = "addContractReferences(List, String, String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pobjContractId, pobjDocId });

    ContractVORowImpl lovRow = null;
    ClobDomain pubNotes = null;
    Number noteId = null;

    ContractReferenceTRVOImpl ctrcreftvo = getContractReferenceTRVO();
    if (pcontractIds.size() > 0)
    {
      String busId = getBusinessID();
      String first_contract_id = (String) pcontractIds.get(0);
      String ctrcdesc = null;
      String ctrcStatus = null;
      boolean inActvCtrcPresent = false;
      ContractReferenceTRVORowImpl newrow = null;
      Iterator it = pcontractIds.iterator();

      while (it.hasNext())
      {
        String contract_id = it.next();
        boolean bCtrcFound = false;

        ctrcreftvo.reset();

        if (pobjContractId.equals(contract_id))
        {
          bCtrcFound = true;
        }

        if (!bCtrcFound)
        {
          while (ctrcreftvo.hasNext()) //check if the contract selected by user is not already present in the the contract reference
          {
            newrow = (ContractReferenceTRVORowImpl) ctrcreftvo.next();
            if (newrow.getCtrcId().equals(contract_id) ||
                newrow.getObjCtrcId().equals(contract_id))
            {
              bCtrcFound =
                  true; //if contract is found, no need to add it again
              break;
            }
          }
        }

        if (!bCtrcFound) //if contract not found, create a new row and add it
        {
          ContractVOImpl ctrcVO = getContractVO();
          ctrcVO.setBindCtrcId(contract_id);
          ctrcVO.setBindBusId(null);
          ctrcVO.setBindCpyId(null);
          ctrcVO.setBindCtrcDesc(null);
          ctrcVO.setBindCtrcSecDesc(null);
          ctrcVO.executeQuery();

          if (ctrcVO.hasNext())
          {
            lovRow = (ContractVORowImpl) ctrcVO.next();
            ctrcdesc = lovRow.getCtrcDesc().toString();
            ctrcStatus = lovRow.getStaCd();

            if (IRCTRateCompanyConstants.ACTIVE.equals(ctrcStatus))
            {
              newrow =
                  (ContractReferenceTRVORowImpl) ctrcreftvo.createRow();
              noteId = lovRow.getNoteId();

              if (noteId != null)
              {
                IrctNoteVOImpl noteVO = getIrctNoteVO();
                noteVO.setBindNoteId(noteId);
                noteVO.executeQuery();

                if (noteVO.hasNext())
                {
                  IrctNoteVORowImpl noteVORow =
                    (IrctNoteVORowImpl) noteVO.next();
                  pubNotes = noteVORow.getNoteTxt();
                  newrow.setPubNotes(pubNotes);
                }
              }
            }
            else
            {
              newrow = null;
              inActvCtrcPresent = true;
            }
          }

          if (newrow != null)
          {
            try //set values in new contract reference row
            {
              newrow.setCtrcRefId(new Number(contract_id));
              newrow.setCtrcId(new Number(contract_id));
              newrow.setBusId(busId);
              newrow.setCpyId(getCompanyIDFromContract(first_contract_id));
              if (pobjDocId != null)
              {
                newrow.setObjId(new Number(pobjDocId));
              }
              newrow.setObjCd(IRCTModelConstants.DOCU);
              newrow.setDescription(ctrcdesc);
              newrow.setIsAuditVisible(false);
              if (pobjContractId != null)
              {
                newrow.setObjCtrcId(new Number(pobjContractId));
              }

              DocVOImpl docVO = getDocVO();
              DocVORowImpl docVORow = (DocVORowImpl) docVO.getCurrentRow();
              if (docVORow.getEffDt() != null)
              {
                newrow.setCtrcRefEffDt(docVORow.getEffDt());
              }
              if (docVORow.getExprDt() != null)
              {
                newrow.setCtrcRefExpDt(docVORow.getExprDt());
              }

              //setting the iterator to last so that new record gets added at the last of the tableast
              Row lastRow = ctrcreftvo.last();
              if (lastRow != null)
              {
                //insert new row at the end and make it current
                int indx = ctrcreftvo.getRangeIndexOf(lastRow) + 1;
                ctrcreftvo.insertRowAtRangeIndex(indx, newrow);
                ctrcreftvo.setCurrentRow(newrow);
              }
              else
              { // empty Rowset
                ctrcreftvo.insertRow(newrow);
              }
            }
            catch (SQLException sqle)
            {
              if (_logger.isLoggable(Level.FINEST))
              {
                _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                             "JBO_NUMBER_ERROR", sqle);
              }
            }
          }
        }
      }

      if (inActvCtrcPresent)
      {
        try
        {
          throw new JboWarning(Class.forName(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES),
                               IRCTRateCompanyConstants.INACV_CTRC_NO_ADD,
                               new Object[]
              { });
        }
        catch (ClassNotFoundException cnfe)
        {
          if (_logger.isLoggable(Level.SEVERE))
          {
            _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                         cnfe.getMessage());
          }
        }
      }

    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  private void fetchContractReferencesForDoc(Number ctrcId, Number docId)
  {
    String lMethodName = "fetchContractReferencesForDoc(Number, Number)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    String ctrcDesc = null;
    ClobDomain pubNotes = null;
    Number noteId = null;

    PubNotesTRVOImpl pubnotetvo = getPubNotesTRVO();

    ContractReferenceVOImpl ctrcRefVO = getContractReferenceVO();
    ctrcRefVO.setBindObjId(docId.toString());
    ctrcRefVO.setBindObjCtrcId(ctrcId);
    ctrcRefVO.setBindCtrcId(null);
    ctrcRefVO.setBindObjCd(null);
    ctrcRefVO.setBindCtrcRefId(null);
    ctrcRefVO.executeQuery();

    ContractReferenceTRVOImpl ctrcRefTRVO = getContractReferenceTRVO();
    ctrcRefTRVO.clearCache();

    while (ctrcRefVO.hasNext())
    {
      ContractReferenceVORowImpl ctrcRefVORow =
        (ContractReferenceVORowImpl) ctrcRefVO.next();

      ContractReferenceTRVORowImpl ctrcRefTRVORow =
        (ContractReferenceTRVORowImpl) ctrcRefTRVO.createRow();

      // -- Start of the code change to get the Pub Notes details display and flow to work fine --
      ContractVOImpl ctrcVO = getContractVO();
      ctrcVO.setBindCtrcId(ctrcRefVORow.getCtrcId().toString());
      ctrcVO.executeQuery();
      if (ctrcVO.hasNext())
      {
        ContractVORowImpl ctrcVORow = (ContractVORowImpl) ctrcVO.next();
        ctrcDesc = ctrcVORow.getCtrcDesc();
      }

      noteId = ctrcRefVORow.getNoteId();

      if (noteId != null)
      {
        ctrcRefTRVORow.setPubNotesPresent(true);
        CtrcNoteVOImpl noteVO = getCtrcNoteVO();
        noteVO.setBindCtrcNoteId(noteId);
        noteVO.executeQuery();

        if (noteVO.hasNext())
        {
          CtrcNoteVORowImpl noteVORow = (CtrcNoteVORowImpl) noteVO.next();
          pubNotes = noteVORow.getNoteTxt();

          PubNotesTRVORowImpl pubRow =
            (PubNotesTRVORowImpl) pubnotetvo.createRow();
          pubRow.setCtrcId(ctrcRefVORow.getCtrcId().toString());
          pubRow.setDocId(ctrcRefVORow.getObjId().toString());
          pubRow.setNoteTxt(pubNotes);
          pubnotetvo.insertRow(pubRow);
        }
      }
      else
      {
        ctrcRefTRVORow.setPubNotesPresent(false);
      }

      if (IRCTRateCompanyConstants.PBTX.equals(ctrcRefVORow.getPblshDrctvCd()))
      {
        ctrcRefTRVORow.setPubnoteflag(Boolean.TRUE);
      }
      else
      {
        ctrcRefTRVORow.setPubnoteflag(Boolean.FALSE);
      }

      // -- End of the code change to get the Pub Notes details display and flow to work fine --

      ctrcRefTRVORow.setBusId(ctrcRefVORow.getBusId());
      ctrcRefTRVORow.setCpyId(ctrcRefVORow.getCpyId());
      ctrcRefTRVORow.setCtrcRefId(ctrcRefVORow.getCtrcRefId());
      ctrcRefTRVORow.setObjId(ctrcRefVORow.getObjId());
      ctrcRefTRVORow.setCtrcId(ctrcRefVORow.getCtrcId());
      ctrcRefTRVORow.setObjCd(ctrcRefVORow.getObjCd());
      ctrcRefTRVORow.setRefRuleCd(ctrcRefVORow.getRefRuleCd());
      ctrcRefTRVORow.setPrcdnNum(ctrcRefVORow.getPrcdnNum());
      ctrcRefTRVORow.setAudFlg(ctrcRefVORow.getAudFlg());
      ctrcRefTRVORow.setObjCtrcId(ctrcRefVORow.getObjCtrcId());
      ctrcRefTRVORow.setPblshDrctvCd(ctrcRefVORow.getPblshDrctvCd());
      ctrcRefTRVORow.setAffCtrcInd(String.valueOf(ctrcRefVORow.getAffCtrcInd()));
      ctrcRefTRVORow.setCtrcRefEffDt(ctrcRefVORow.getCtrcRefEffDt());
      ctrcRefTRVORow.setCtrcRefExpDt(ctrcRefVORow.getCtrcRefExprDt());
      ctrcRefTRVORow.setNoteId(noteId);
      ctrcRefTRVORow.setPubNotes(pubNotes);
      ctrcRefTRVORow.setDescription(ctrcDesc);
      ctrcRefTRVORow.setIsAuditVisible(true);

      ctrcRefTRVO.insertRow(ctrcRefTRVORow);
    }

    ctrcRefTRVO.setSortBy("PrcdnNum");
    ctrcRefTRVO.setQueryMode(ViewObject.QUERY_MODE_SCAN_VIEW_ROWS);
    ctrcRefTRVO.executeQuery();

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Container's getter for RatePblcnTmplForGrpCdTR1.
   * @return RatePblcnTmplForGrpCdTR1
   */
  public RatePblcnTmplForGrpCdTRVOImpl getRatePblcnTmplForGrpCdTRVO()
  {
    return (RatePblcnTmplForGrpCdTRVOImpl) findViewObject("RatePblcnTmplForGrpCdTRVO");
  }

  /**
   * Container's getter for RatePblcnTmplForGENRO1.
   * @return RatePblcnTmplForGENRO1
   */
  public PublicationGENTmplROVOImpl getRatePblcnTmplForGENROVO()
  {
    return (PublicationGENTmplROVOImpl) findViewObject("RatePblcnTmplForGENROVO");
  }


  /**
   * Container's getter for PublicationFSRTmplROVO.
   * @return PublicationFSRTmplROVO
   */
  public PublicationFSRTmplROVOImpl getPublicationFSRTmplROVO()
  {
    return (PublicationFSRTmplROVOImpl) findViewObject("PublicationFSRTmplROVO");
  }

  /**
   * Container's getter for PublicationHFTmplROVO.
   * @return PublicationHFTmplROVO
   */
  public PublicationHFTmplROVOImpl getPublicationHFTmplROVO()
  {
    return (PublicationHFTmplROVOImpl) findViewObject("PublicationHFTmplROVO");
  }

  /**
   * Container's getter for PublicationLGLTmplROVO.
   * @return PublicationLGLTmplROVO
   */
  public PublicationLGLTmplROVOImpl getPublicationLGLTmplROVO()
  {
    return (PublicationLGLTmplROVOImpl) findViewObject("PublicationLGLTmplROVO");
  }


  public void setSelectedBusinessID(String pSelectedBusinessID)
  {
    String methodName = "setSelectedBusinessID(String)";
    _logger.entering(CLAZZ_NAME, methodName, pSelectedBusinessID);

    // set the selected BusinessID into BusinessTransientViewObject
    BusinessGroupTRVOImpl businessGroupTRVO = getBusinessGroupTRVO();
    BusinessGroupTRVORowImpl businessGroupRow = null;
    if (businessGroupTRVO.getRowCount() == 0)
    {
      businessGroupRow =
          (BusinessGroupTRVORowImpl) businessGroupTRVO.createRow();
      businessGroupTRVO.insertRow(businessGroupRow);

    }
    else
    {
      businessGroupRow =
          (BusinessGroupTRVORowImpl) businessGroupTRVO.getCurrentRow();

    }
    businessGroupRow.setBusinessId(pSelectedBusinessID);
    _logger.exiting(CLAZZ_NAME, methodName);
  }


  /**
   * Container's getter for DocTmplVO.
   * @return DocTmplVO
   */
  public DocTmplVOImpl getDocTmplVO()
  {
    return (DocTmplVOImpl) findViewObject("DocTmplVO");
  }

  /**
   * Container's getter for PublicationGENTmplROVO.
   * @return PublicationGENTmplROVO
   */
  public PublicationGENTmplROVOImpl getPublicationGENTmplROVO()
  {
    return (PublicationGENTmplROVOImpl) findViewObject("PublicationGENTmplROVO");
  }

  /**
   * Container's getter for CtrcDocVO.
   * @return CtrcDocVO
   */
  public ViewObjectImpl getCtrcDocVO()
  {
    return (ViewObjectImpl) findViewObject("CtrcDocVO");
  }


  /**
   * adds the default transit contract for the given company within a given business group
   * changing the signature to return the id of the contract created
   * setting accessor to private
   * @param pCpyId
   * @param pBusId
   * @return the ctrc_id of the default transit contract created
   */
  public Number addDefaultTrnContract(String pCpyId, String pBusId)
  {
    ContractVOImpl contractVO = getContractVO();
    ContractVORowImpl ctrcnewRow =
      (ContractVORowImpl) contractVO.createRow();

    /* Adding a new row for contract into CTRC table*/
    Number pCtrcSeq =
      getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ);

    ctrcnewRow.setCtrcId(pCtrcSeq);
    ctrcnewRow.setBusId(pBusId);
    ctrcnewRow.setCpyId(pCpyId);
    ctrcnewRow.setStaCd("ACTV");
    ctrcnewRow.setAudFlg(new oracle.jbo.domain.Number(0));
    ctrcnewRow.setDfltFrtClaNum(new oracle.jbo.domain.Number(0));
    ctrcnewRow.setCtrcDesc("DEFAULT TRANSIT");
    ctrcnewRow.setCtrcScdDesc(null);
    ctrcnewRow.setCtrcCd("STD");
    ctrcnewRow.setNoteId(new oracle.jbo.domain.Number(0));
    ctrcnewRow.setHstMthdCd("NHST");
    ctrcnewRow.setSignedCtrcInd(new oracle.jbo.domain.Number(0));
    ctrcnewRow.setDispHstInd(new oracle.jbo.domain.Number(0));

    contractVO.insertRow(ctrcnewRow);
    boolean isAdded = performDatabaseCommit();

    if (isAdded)
    {
      ContractXrefVOImpl ctrcXRefVO = getContractXrefVO();
      ContractXrefVORowImpl newctrcxRefrow =
        (ContractXrefVORowImpl) ctrcXRefVO.createRow();

      Number pCtrcXSeq =
        getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ);
      newctrcxRefrow.setCtrcXrefId(new oracle.jbo.domain.Number(pCtrcXSeq));
      newctrcxRefrow.setCtrcId(pCtrcSeq);
      newctrcxRefrow.setExtlId("Default Transit");
      newctrcxRefrow.setBusId(pBusId);
      newctrcxRefrow.setCpyId(pCpyId);
      newctrcxRefrow.setAudMinChrgAmt(new oracle.jbo.domain.Number(0));
      newctrcxRefrow.setAudMaxChrgAmt(new oracle.jbo.domain.Number(0));
      newctrcxRefrow.setAudFlg(new oracle.jbo.domain.Number(0));
      newctrcxRefrow.setCrcyCd(null);
      newctrcxRefrow.setLtlInd(new oracle.jbo.domain.Number(0));

      ctrcXRefVO.insertRow(newctrcxRefrow);

      ImportTaskVOImpl importTaskVO = getImportTaskVO();
      ImportTaskVORowImpl newiprttskrow =
        (ImportTaskVORowImpl) importTaskVO.createRow();


      Number pimportSeq =
        getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ);
      long seq = pimportSeq.longValue();
      String parmval = null;

      newiprttskrow.setIprtTskId(new DBSequence(seq));
      newiprttskrow.setObjId(pCtrcXSeq);
      newiprttskrow.setCtrcId(pCtrcSeq);
      newiprttskrow.setBusId(pBusId);
      newiprttskrow.setCpyId(pCpyId);
      newiprttskrow.setObjCd("XREF");
      newiprttskrow.setAsnToVal(null);
      newiprttskrow.setTskCd(new oracle.jbo.domain.Number(IRCTModelConstants.CREATE_CONTRACT_XREF_IMPORT_TASK_CODE));
      parmval =
          "DefaultTransit" + "," + new oracle.jbo.domain.Number(0).toString() +
          "," + new oracle.jbo.domain.Number(0).toString() + ",";
      newiprttskrow.setParmVal(new ClobDomain(parmval));
      importTaskVO.insertRow(newiprttskrow);
      boolean isdfltxrefadded = performDatabaseCommit();
      if (isdfltxrefadded)
      {
        /*add default transit contract */
        Number usrPrefId =
          getIRCTRateCompanyServiceHelper().getUsrPrefId(getLoggedInUserID());
        UserContractsVOImpl existingUserCtrcsVo = getUserContractsVO();
        existingUserCtrcsVo.setBindUsrPrefId(usrPrefId);
        existingUserCtrcsVo.executeQuery();

        UserContractsVORowImpl r =
          (UserContractsVORowImpl) existingUserCtrcsVo.createRow();

        r.setUsrPrefId(usrPrefId);
        r.setCtrcId(pCtrcSeq);
        performDatabaseCommit();
        setUpRatingCompanyForUser(null, null);
      }
    }
    return pCtrcSeq;
  }

  /**
   * Container's getter for DefaultTransitContractCountROVO.
   * @return DefaultTransitContractCountROVO
   */
  public DefaultTransitContractCountROVOImpl getDefaultTransitContractCountROVO()
  {
    return (DefaultTransitContractCountROVOImpl) findViewObject("DefaultTransitContractCountROVO");
  }

  /**
   * This method will check whether a 'Default Transit' contract exists for the given company and business id
   * If none exists - it will first create the contract, then add the information to the usr_ctrc table
   * If one does exist then a warning is thrown
   * @param pCpyId
   * @param pBusId
   */
  public void checkAndAddDefaultTransitContract(String pCpyId,
                                                String pBusId)
  {
    String methodName = "checkAndAddDefaultTransitContract()";

    _logger.entering(CLAZZ_NAME, methodName, new Object[]
        { pCpyId, pBusId });

    if (StringUtils.isNotBlank(pCpyId) && StringUtils.isNotBlank(pBusId))
    { // does a default transit contract exist
      if (doesDefaultTransitContractExist(pCpyId, pBusId))
      { // it does - thro a duplicate warning message
        addWarningMessage(IRCTRateCompanyConstants.CANNOT_SAVE_DUPLICATE_EXISTS,
                          new Object[]
            { });
      }
      else
      {
        // it dont exist
        // add-create the record in the CTRC table
        addDefaultTrnContract(pCpyId, pBusId);
      }
    }
    _logger.exiting(CLAZZ_NAME, methodName);
  }

  /**
   * Checks whether a Default Transit Contract does indeed exist for the said company and business group
   * @param pCpyId
   * @param pBusId
   * @return true if it does exist, false otherwise
   */
  private boolean doesDefaultTransitContractExist(String pCpyId,
                                                  String pBusId)
  {
    boolean exists = false;
    if (StringUtils.isNotBlank(pCpyId) && StringUtils.isNotBlank(pBusId))
    {
      DefaultTransitContractCountROVOImpl theView =
        getDefaultTransitContractCountROVO();
      theView.setBindBusId(pBusId);
      theView.setBindCpyId(pCpyId);

      theView.executeQuery();
      //      RowSetIterator iter = theView.createRowSetIterator(null);
      //      iter.reset();

      if (theView.getRowCount() > 0)
      {
        DefaultTransitContractCountROVORowImpl theRow =
          (DefaultTransitContractCountROVORowImpl) theView.first();

        BigDecimal theCount = theRow.getNum();
        exists = (theCount.intValue() > 0)? true: false;

      }

      //      iter.closeRowSetIterator();
    }
    return exists;
  }


  /**
   * Container's getter for DocumentForPubTRVO.
   * @return DocumentForPubTRVO
   */
  public DocumentForPubTRVOImpl getDocumentForPubTRVO()
  {
    return (DocumentForPubTRVOImpl) findViewObject("DocumentForPubTRVO");
  }

  /**
   * Container's getter for DocTmplForDfltTRVO.
   * @return DocTmplForDfltTRVO
   */
  public DocTmplForDfltTRVOImpl getDocTmplForDfltTRVO()
  {
    return (DocTmplForDfltTRVOImpl) findViewObject("DocTmplForDfltTRVO");
  }

  /**
   * Container's getter for DocTmplFinalVO.
   * @return DocTmplFinalVO
   */
  public DocTmplVOImpl getDocTmplFinalVO()
  {
    return (DocTmplVOImpl) findViewObject("DocTmplFinalVO");
  }

  public void updateDocumentDetails(long documentId, String initatedUser)
  {
    String methodName = "updateDocumentDetails(long, String)";
    _logger.entering(CLAZZ_NAME, methodName);
    String ctrcId = null;
    DocVOImpl docVO = getDocVO();
    docVO.setBindDocId(String.valueOf(documentId));
    //priyanka changed for modified query for DocVO.
    if (this.getDocVO().getCurrentRow() != null &&
        this.getDocVO().getCurrentRow().getAttribute("DocId").toString().equals(String.valueOf(documentId)))
      ctrcId =
          this.getDocVO().getCurrentRow().getAttribute("CtrcId").toString();
    else
    {
      DocForPubROVOImpl documentVo = this.getDocForPubROVO();
      documentVo.setBindDocId(new Number(documentId));
      documentVo.executeQuery();
      if (documentVo.first() != null)
        ctrcId = documentVo.first().getAttribute("CtrcId").toString();
    }
    docVO.setBindCtrcId(ctrcId);
    docVO.executeQuery();
    while (docVO.hasNext())
    {
      DocVORowImpl docRow = (DocVORowImpl) docVO.next();
      docRow.setUpdUsrId(initatedUser);
    }
    getDBTransaction().commit();
    _logger.exiting(CLAZZ_NAME, methodName);
  }


  /**
   * Container's getter for PublicationFSRTmplTR1.
   * @return PublicationFSRTmplTR1
   */
  public PublicationFSRTmplTRVOImpl getPublicationFSRTmplTRVO()
  {
    return (PublicationFSRTmplTRVOImpl) findViewObject("PublicationFSRTmplTRVO");
  }

  /**
   * Container's getter for PublicationLGLTmplTRVO.
   * @return PublicationLGLTmplTRVO
   */
  public PublicationLGLTmplTRVOImpl getPublicationLGLTmplTRVO()
  {
    return (PublicationLGLTmplTRVOImpl) findViewObject("PublicationLGLTmplTRVO");
  }

  /**
   * Container's getter for PublicationHFTmplTRVO.
   * @return PublicationHFTmplTRVO
   */
  public PublicationHFTmplTRVOImpl getPublicationHFTmplTRVO()
  {
    return (PublicationHFTmplTRVOImpl) findViewObject("PublicationHFTmplTRVO");
  }

  /**
   * Container's getter for PublicationGENTmplTRVO.
   * @return PublicationGENTmplTRVO
   */
  public PublicationGENTmplTRVOImpl getPublicationGENTmplTRVO()
  {
    return (PublicationGENTmplTRVOImpl) findViewObject("PublicationGENTmplTRVO");
  }

  /**
   * Container's getter for PblcnBusTmplGrpTRVO.
   * @return PblcnBusTmplGrpTRVO
   */
  public PblcnBusTmplGrpTRVOImpl getPblcnBusTmplGrpTRVO()
  {
    return (PblcnBusTmplGrpTRVOImpl) findViewObject("PblcnBusTmplGrpTRVO");
  }

  /**
   * Container's getter for PageOrientLOV1.
   * @return PageOrientLOV1
   */
  public PageOrientLOVVOImpl getPageOrientLOV1()
  {
    return (PageOrientLOVVOImpl) findViewObject("PageOrientLOV1");
  }

  /**
   * Container's getter for PubTypeLOV1.
   * @return PubTypeLOV1
   */
  public PubTypeLOVVOImpl getPubTypeLOV1()
  {
    return (PubTypeLOVVOImpl) findViewObject("PubTypeLOV1");
  }

  /**
   * Container's getter for PaperSizeLO1.
   * @return PaperSizeLO1
   */
  public PaperSizeLOVOImpl getPaperSizeLO1()
  {
    return (PaperSizeLOVOImpl) findViewObject("PaperSizeLO1");
  }

  /**
   * Container's getter for InitiatePublicationTRVO.
   * @return InitiatePublicationTRVO
   */
  public InitiatePublicationTRVOImpl getInitiatePublicationTRVO()
  {
    return (InitiatePublicationTRVOImpl) findViewObject("InitiatePublicationTRVO");
  }


  /**
   * Container's getter for BusinessGroupTRVO.
   * @return BusinessGroupTRVO
   */
  public BusinessGroupTRVOImpl getBusinessGroupTRVO()
  {
    return (BusinessGroupTRVOImpl) findViewObject("BusinessGroupTRVO");
  }

  public void checkPublicationStatus()
  {
    String methodName = "checkPublicationStatus()";
    _logger.entering(CLAZZ_NAME, methodName);

    CheckPublicationHelper checkPublicationHelper =
      new CheckPublicationHelper();
    checkPublicationHelper.checkSubmittedJobStatus(this);

    _logger.exiting(CLAZZ_NAME, methodName);
  }

  /**
   * Container's getter for BtchDtl.
   * @return BtchDtl
   */
  public BtchDtlVOImpl getBtchDtl()
  {
    return (BtchDtlVOImpl) findViewObject("BtchDtl");
  }

  /**
   * Container's getter for BtchSumForBtchDtlVL.
   * @return BtchSumForBtchDtlVL
   */
  public ViewLinkImpl getBtchSumForBtchDtlVL()
  {
    return (ViewLinkImpl) findViewLink("BtchSumForBtchDtlVL");
  }


  /**
   * Container's getter for DocumentPromoteROVO.
   * @return DocumentPromoteROVO
   */
  public DocumentPromoteROVOImpl getDocumentPromoteROVO()
  {
    return (DocumentPromoteROVOImpl) findViewObject("DocumentPromoteROVO");
  }


  /**
   * Container's getter for RCTContractReferenceROVO.
   * @return RCTContractReferenceROVO
   */
  public RCTContractReferenceROVOImpl getRCTContractReferenceROVO()
  {
    return (RCTContractReferenceROVOImpl) findViewObject("RCTContractReferenceROVO");
  }

  /**
   * Container's getter for RCTDocumentTemplateROVO.
   * @return RCTDocumentTemplateROVO
   */
  public RCTDocumentTemplateROVOImpl getRCTDocumentTemplateROVO()
  {
    return (RCTDocumentTemplateROVOImpl) findViewObject("RCTDocumentTemplateROVO");
  }


  /**
   *to set the input values for the initDocumentPromote(contractTreeDataMap)
   * @param contractTreeDataMap
   * @return SortedMap
   */

  public java.util.SortedMap initDocumentPromote(java.util.Map contractTreeDataMap)
  {

    String lMethodName = "initDocumentPromote(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { contractTreeDataMap });

    oracle.jbo.domain.Number pDocId =
      (oracle.jbo.domain.Number) contractTreeDataMap.get(IRCTRateCompanyConstants.DOC_ID);
    String path =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.CONTRACT_TREE_PATH);

    DocumentPromoteROVOImpl dPROVO = getDocumentPromoteROVO();
    dPROVO.setBIND_DOCID(pDocId);
    dPROVO.executeQuery();

    DocumentPromoteROVORowImpl dPRow =
      (DocumentPromoteROVORowImpl) dPROVO.first();
    dPRow.setTREE_PATH(path);

    DocStatusActionROVOImpl dSAROVO = getDocStatusActionROVO();
    dSAROVO.setBindDocStaId(dPRow.getDocDocstaid());
    dSAROVO.setBindDocStdActId(null);
    dSAROVO.setBindDocStaActnCd(null);
    dSAROVO.setBindIntrActnFlg(new Number(0));
    dSAROVO.executeQuery();

    SortedMap proDocTypes = new TreeMap();

    while (dSAROVO.hasNext())
    {
      DocStatusActionROVORowImpl row =
        (DocStatusActionROVORowImpl) dSAROVO.next();
      Row rows[] =
        row.getDocStatusActionLOVVA().getFilteredRows(IRCTRateCompanyConstants.DMN_VAL_CD,
                                                      row.getDocStaActnCd());

      List valueList = new ArrayList();

      valueList.add(0, ((SNIListOfValuesVORowImpl) rows[0]).getLongVal());
      valueList.add(1, row.getDocStaActnId().toString());

      proDocTypes.put(row.getDocStaActnCd(), valueList);
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return proDocTypes;
  }

  /**
   * @param pProDocTypMap
   * @param pSelectedStatus
   */
  public void postConditionFrPromoteDoc(java.util.SortedMap pProDocTypMap,
                                        String pSelectedStatus)
  {
    String lMethodName =
      "postConditionFrPromoteDoc(java.util.SortedMap, String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pProDocTypMap, pSelectedStatus });

    List valueList =
      ((SortedMap) pProDocTypMap).get(pSelectedStatus);

    DocumentPromoteROVORowImpl dPRow =
      (DocumentPromoteROVORowImpl) getDocumentPromoteROVO().first();

    RCTDocumentTemplateROVORowImpl rctDocTempRow =
      (RCTDocumentTemplateROVORowImpl) getRCTDocumentTemplateROVO().first();

    RCTUserInfo rctUserInfo =
      getIRCTRateCompanyServiceHelper().populateRCTUserInfoObject(dPRow.getBusId(),
                                                                  dPRow.getCpyId(),
                                                                  getLoggedInUserID());

    if (StringUtils.equals(dPRow.getDocStaCd(),
                           IRCTRateCompanyConstants.CRTP) &&
        dPRow.getEffDt() != null && dPRow.getExprDt() != null &&
        dPRow.getEffDt().compareTo(dPRow.getExprDt()) > 0)
    {
      raiseValidationException(IRCTModelConstants.PRM_INV_DT, null);
      return;
    }

    if (dPRow.getNewEffectDate() != null)
    {
      // Call the method used for setting the effective date as entered by the user.rctAuditObj.
      dPRow = getIRCTRateCompanyServiceHelper().setNewEffectiveDate(dPRow);

      if (dPRow == null)
      {
        _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                     StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                             "62590", null), "");

        raiseValidationException(StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                                         "62590", null),
                                 null);
        return;
      }
    }

    RCTDocument rctDoc =
      (RCTDocument) LWOUtils.createLWO(RCTDocument.class.getName());

    rctDoc.setBusinessID(dPRow.getBusId());
    rctDoc.setCaptureStopDistance(dPRow.getCaptureStopDistanceBoolean());
    rctDoc.setCompanyID(dPRow.getCpyId());
    rctDoc.setContractID(dPRow.getCtrcId().longValue());

    rctDoc.setContractorIdentifier(IRCTCommonUtil.setNotNullStringValue(dPRow.getCtrcrTxt()));

    rctDoc.setUsageCode(IRCTCommonUtil.setNotNullStringValue(dPRow.getDocCtntUsgCd()));

    RCTCreateUpdate rctCrtUpdtObj =
      (RCTCreateUpdate) LWOUtils.createLWO(RCTCreateUpdate.class.getName());
    //rctCrtUpdtObj.setUpdateUser(IRCTCommonUtil.setNotNullStringValue(dPRow.getUpdUsrId()));

    if (dPRow.getCreDttm() != null)
    {
      rctCrtUpdtObj.setCreateDate(new java.util.Date((dPRow.getCreDttm()).getTime()));
    }

    rctCrtUpdtObj.setCreateUser(IRCTCommonUtil.setNotNullStringValue(dPRow.getCreUsrId()));
    if (dPRow.getUpdDttm() != null)
    {
      rctCrtUpdtObj.setUpdateDate(new java.util.Date());
    }
    rctCrtUpdtObj.setUpdateUser(IRCTCommonUtil.setNotNullStringValue(getLoggedInUserID()));

    rctDoc.setCreateUpdateInfo(rctCrtUpdtObj);

    rctDoc.setCurrencyConvRule(IRCTCommonUtil.setNotNullStringValue(dPRow.getCrcyCnvRuleCd()));

    if (dPRow.getCusRplyDt() != null)
    {
      rctDoc.setCustomerReplyDate(new java.util.Date((dPRow.getCusRplyDt()).getTime()));
    }

    rctDoc.setDefaultExhibitAPubTemplateDesc(IRCTCommonUtil.setNotNullStringValue(dPRow.getDfltTmplDesc()));
    rctDoc.setDefaultExhibitBPubTemplateDesc(IRCTCommonUtil.setNotNullStringValue(dPRow.getDfltTmplBDesc()));

    RCTDocumentTypeROVOImpl RCTDocTypeVO = getRCTDocumentTypeROVO();
    RCTDocTypeVO.setBIND_DOC_TYP_ID(dPRow.getDstaDoctypid());
    RCTDocTypeVO.executeQuery();
    RCTDocumentTypeROVORowImpl RCTDocTypeRow =
      (RCTDocumentTypeROVORowImpl) RCTDocTypeVO.first();

    RCTDocumentType rctDocTypObj =
      (RCTDocumentType) LWOUtils.createLWO(RCTDocumentType.class.getName());

    rctDocTypObj.setCode(RCTDocTypeRow.getDocCd());
    rctDocTypObj.setCreatable(RCTDocTypeRow.getReqCreFlgBoolean());
    rctDocTypObj.setCreateUpdateInfo(rctCrtUpdtObj);
    rctDocTypObj.setDataTypeCode(RCTDocTypeRow.getDocCtntCd());
    rctDocTypObj.setDateCheckDocumentStatusID(RCTDocTypeRow.getDtChkStaBoolean());
    rctDocTypObj.setDateCheckFlag(RCTDocTypeRow.getDtChkFlgBoolean());
    rctDocTypObj.setDocumentTypeID(IRCTCommonUtil.setNotNullNumberValue(RCTDocTypeRow.getDocTypId()).longValue());
    rctDocTypObj.setHistoryMethodCode(RCTDocTypeRow.getHstMthdCd());
    rctDocTypObj.setInitialStatusID(IRCTCommonUtil.setNotNullNumberValue(RCTDocTypeRow.getInitDocStaId()).longValue());

    rctDoc.setDocumentTypeInfo(rctDocTypObj);

    getRCTDocumentStatusROVO().setBIND_DOC_STA_ID(dPRow.getDocDocstaid());
    getRCTDocumentStatusROVO().executeQuery();
    RCTDocumentStatusROVORowImpl rctDocStatusRow =
      (RCTDocumentStatusROVORowImpl) getRCTDocumentStatusROVO().first();

    RCTDocumentStatus rctDocStatusObj =
      (RCTDocumentStatus) LWOUtils.createLWO(RCTDocumentStatus.class.getName());
    rctDocStatusObj.setCode(rctDocStatusRow.getDocStaCd());
    rctDocStatusObj.setCreateUpdateInfo(rctCrtUpdtObj);
    rctDocStatusObj.setCreateable(rctDocStatusRow.getReqCreBoolean());
    rctDocStatusObj.setDeleteable(rctDocStatusRow.getDelBoolean());
    rctDocStatusObj.setDocEffDtUpdateable(rctDocStatusRow.getUpdEffDtBoolean());
    rctDocStatusObj.setDocExpDtUpdateable(rctDocStatusRow.getUpdExprDtBoolean());
    rctDocStatusObj.setDocumentTypeID(IRCTCommonUtil.setNotNullNumberValue(rctDocStatusRow.getDocTypId()).longValue());
    rctDocStatusObj.setFilterDocument(rctDocStatusRow.getDocFltrBoolean());
    rctDocStatusObj.setImportCode(IRCTCommonUtil.setNotNullStringValue(rctDocStatusRow.getIprtCd()));
    rctDocStatusObj.setImportable(rctDocStatusRow.getIprtBoolean());
    rctDocStatusObj.setStatusID(IRCTCommonUtil.setNotNullNumberValue(rctDocStatusRow.getDocStaId()).longValue());
    rctDocStatusObj.setUpdateable(rctDocStatusRow.getUpdBoolean());
    rctDocStatusObj.setchangesOnly(rctDocStatusRow.getRateTreChgBoolean());
    rctDocStatusObj.setPromotable(rctDocStatusRow.getPromBoolean()); //-----was missing
    rctDoc.setCurrentStatus(rctDocStatusObj);

    RCTDocumentTemplate rctDocTempObj =
      (RCTDocumentTemplate) LWOUtils.createLWO(RCTDocumentTemplate.class.getName());

    if (rctDocTempRow != null)
    {
      rctDocTempObj.setBusinessID(rctDocTempRow.getBusId());
      rctDocTempObj.setCompanyID(rctDocTempRow.getCpyId());
      rctDocTempObj.setIsContinuousPrint(rctDocTempRow.getIsContinuousPrint());
      rctDocTempObj.setPublicationFormat(rctDocTempRow.getPblcnFmtCd());
      rctDocTempObj.setSequenceNumber(rctDocTempRow.getSeqNum().shortValue());
      rctDocTempObj.setTemplateGroupCode(IRCTCommonUtil.setNotNullStringValue(rctDocTempRow.getTmplGrpCd()));
      rctDocTempObj.setTemplateId(rctDocTempRow.getPblcnTmplId().longValue());
      rctDocTempObj.setTemplatePrcsCode(rctDocTempRow.getTmplPrcsCd());
    }

    rctDoc.addDocTemplate(rctDocTempObj);

    RCTAudit auditObj =
      (RCTAudit) LWOUtils.createLWO(RCTAudit.class.getName());

    rctDoc.setAuditInfo(auditObj);

    rctDoc.setDocumentID(dPRow.getDocId().longValue());

    rctDoc.setRoundDistance(dPRow.getDistQtyRndBoolean());
    rctDoc.setSourceLocationInfo(IRCTCommonUtil.setNotNullStringValue(dPRow.getSrcLocInfoTxt()));

    rctDoc.setPkgAdvancedOption(IRCTCommonUtil.setNotNullStringValue("")); // -- need clarification...
    if (dPRow.getDueDt() != null)
    {
      rctDoc.setDueDate(new java.util.Date((dPRow.getDueDt()).getTime()));
    }
    if (dPRow.getEffDt() != null)
    {
      rctDoc.setEffectiveDate(new java.util.Date((dPRow.getEffDt()).getTime()));
    }

    rctDoc.setExcludeCANBX(dPRow.getExclCndnxbrdrBoolean());
    rctDoc.setExcludeMXMiles(dPRow.getExclMexMiBoolean());
    if (dPRow.getExprDt() != null)
    {
      rctDoc.setExpirationDate(new java.util.Date(dPRow.getExprDt().getTime()));
    }
    if (dPRow.getFrstPblshDttm() != null)
    {
      rctDoc.setFirstPublishedDateTime(new java.util.Date(dPRow.getFrstPblshDttm().getTime()));
    }

    rctDoc.setFirstPublishedUser(IRCTCommonUtil.setNotNullStringValue(dPRow.getFrstPblshUsrNam()));
    rctDoc.setFooterId(dPRow.getFtrPblcnTmplId().longValue());

    rctDoc.setHeaderId(dPRow.getHdrPblcnTmplId().longValue());
    if (dPRow.getLastPblshDttm() != null)
    {
      rctDoc.setLastPublishedDateTime(new java.util.Date((dPRow.getLastPblshDttm()).getTime()));
    }

    rctDoc.setLastPublishedUser(IRCTCommonUtil.setNotNullStringValue(dPRow.getLastPblshUsrNam()));
    if (dPRow.getLstUpldDttm() != null)
    {
      rctDoc.setLastUploadDateTime(new java.util.Date((dPRow.getLstUpldDttm()).getTime()));
    }
    if (dPRow.getLstUpldReqDttm() != null)
    {
      rctDoc.setLastUploadRequestDateTime(new java.util.Date((dPRow.getLstUpldReqDttm()).getTime()));
    }

    rctDoc.setMileagePackageID(dPRow.getDistPkgId().longValue());

    rctDoc.setNotes(dPRow.getInoteNoteTxtStr());
    if (dPRow.getInoteNoteId() != null)
    {
      rctDoc.setNotesID(dPRow.getInoteNoteId().longValue());
    }

    rctDoc.setAudit(dPRow.getAuditBoolean());

    rctDoc.setProvision(IRCTCommonUtil.setNotNullStringValue(dPRow.getProvNoteStr()));
    if (dPRow.getProvNoteId() != null)
    {
      rctDoc.setProvisionNotesID(dPRow.getProvNoteId().longValue());
    }
    if (dPRow.getPblcDt() != null)
    {
      rctDoc.setPublishDate(new java.util.Date((dPRow.getPblcDt()).getTime()));
    }

    rctDoc.setPublishName(IRCTCommonUtil.setNotNullStringValue(dPRow.getPblcNam()));
    rctDoc.setPublishTotMiles(dPRow.getPublishTotMilesBoolean());
    rctDoc.setPublishTruckLdCharges(dPRow.getPublishTruckLdChargesBoolean());

    Object[] keyValue = new Object[1];
    keyValue[0] =
        getIRCTRateCompanyServiceHelper().toJBONumber(valueList.get(1));


    DocStatusActionROVOImpl dSAROVO = getDocStatusActionROVO();
    dSAROVO.cancelQuery();
    dSAROVO.clearCache();
    dSAROVO.setBindDocStaId(null);
    dSAROVO.setBindDocStaActnCd(null);
    dSAROVO.setBindIntrActnFlg(new Number(0));

    Row[] rows = dSAROVO.findByKey(new Key(keyValue), -1);

    DocStatusActionROVORowImpl dsActnRow =
      (DocStatusActionROVORowImpl) rows[0];

    RCTAction rctActionObj =
      (RCTAction) LWOUtils.createLWO(RCTAction.class.getName());

    rctActionObj.setActionID(dsActnRow.getDocStaActnId().longValue());
    rctActionObj.setCode(dsActnRow.getDocStaActnCd());
    rctActionObj.setCreateUpdateInfo(rctCrtUpdtObj);
    rctActionObj.setNewDocumentTypeID(IRCTCommonUtil.setNotNullNumberValue(dsActnRow.getNewDocTypId()).longValue());
    if (dPRow.getNewEffectDate() != null)
    {
      rctActionObj.setNewEffectiveDate(new java.util.Date((dPRow.getNewEffectDate()).getTime()));
    }

    if (dsActnRow.getNewDocStaId() != null)
    {
      rctActionObj.setNewStatusID(IRCTCommonUtil.setNotNullNumberValue(dsActnRow.getNewDocStaId()).longValue());
    }
    if (dsActnRow.getNxtDocStaId() != null)
    {
      rctActionObj.setNextStatusID(IRCTCommonUtil.setNotNullNumberValue(dsActnRow.getNxtDocStaId()).longValue());
    }

    rctActionObj.setStatusID(IRCTCommonUtil.setNotNullNumberValue(dsActnRow.getDocStaId()).longValue());

    RatingAdminManager rAdminMgrObj = new RatingAdminManager();

    try
    {
      rAdminMgrObj.promoteDocument(rctDoc, rctActionObj, rctUserInfo);
    }
    catch (IRCTValidationException validationException)
    {
      ValidationExceptionLWO next =
        (ValidationExceptionLWO) validationException.getValidationErrors().iterator().next();
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                   StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                           next.msgID, null),
                   validationException.getMessage());
      raiseValidationException(StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                                       next.msgID, null),
                               null);
    }
    catch (Exception ex)
    {
      String errMsg =
        "Exception while promoteDocument" + StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                                                    "FAILED_TO_WORK_WITH_REMOTE_CORBA_POSTCONDITIONFRPROMOTEDOC",
                                                                    null);
      handleException(ex, errMsg, null);
    }

    this.getDocumentROVO().executeQuery();
    Number n = dPRow.getDocId();
    Key k = new Key(new Object[]
        { n });

    Row[] docRow = this.getDocumentROVO().findByKey(k, 1);
    if (docRow.length > 0)
    {
      RowSet r =
        (RowSet) (((DocumentROVORowImpl) docRow[0]).getQualifications());
      r.executeQuery();
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Container's getter for DocRateOrdStrcVO.
   * @return DocRateOrdStrcVO
   */
  public DocRateOrdStrcVOImpl getDocRateOrdStrcVO()
  {
    return (DocRateOrdStrcVOImpl) findViewObject("DocRateOrdStrcVO");
  }

  /**
   * This method populate the selected distance advance options
   * in Stops Tab Advance Distance Options text area
   */
  public String populateDistAdvOptionRow(String pPkg, String pVer,
                                         String pSelectedAdvOption,
                                         String pScreen)
  {
    String advOption = null;
    DistAdvanceOptionTRVOImpl distAdvTVO = getDistAdvanceOptionTRVO();
    if (StringUtils.equals(pScreen, "Change"))
    {
      if (distAdvTVO.getRowCount() > 0)
        distAdvTVO.clearCache();
    }
    Map optionsMap =
      getDistanceAdvanceOptionsFromDIG(pPkg, pVer);
    //Added
    Map> userSettingsMap =
      (Map>) optionsMap.get("UserSettings");
    Map serverSettingsMap =
      (Map) optionsMap.get("ServerSettings");
    Map defaultSettingsMap =
      (Map) optionsMap.get("DefaultSettings");

    //If any of the  list contain values urning values we are going to display the result.
    if (optionsMap == null || optionsMap.size() == 0 ||
        (serverSettingsMap.size() == 0 && userSettingsMap.size() == 0 &&
         defaultSettingsMap.size() == 0))
    {
      advOption = "";
    }
    else
    {
      StringBuffer advDistOption = new StringBuffer();
      advDistOption.append("Default: ");
      for (String key: serverSettingsMap.keySet())
      {
        advDistOption.append(key);
        advDistOption.append("=");
        advDistOption.append(serverSettingsMap.get(key));
      }
      if (StringUtils.isNotBlank(advDistOption.toString()))
      {
        if (StringUtils.isNotBlank(pSelectedAdvOption))
        {
          if (pSelectedAdvOption.indexOf("OvrdRestrictions") > -1)
          {
            advDistOption = new StringBuffer();
            advDistOption.append("Advanced:");
            advDistOption.append(pSelectedAdvOption);
          }
          else
          {
            advDistOption.append(IRCTRateCompanyConstants.RATE_LOOKUP_PIPE_OPERATOR);
            if (pSelectedAdvOption.indexOf("Advance") == -1)
              advDistOption.append("Advanced:");
            advDistOption.append(pSelectedAdvOption);
          }
        }
        advOption = advDistOption.toString();
      }
    }
    return advOption;
  }

  /**
   * This method retreives the distance advance options from DIG using
   * package name and version. This method will be invoked by clicking 'Advance Options'
   * button in Lookup Rate - Stops tab
   * @param pPkg
   * @param pVer
   */
  public String getDistanceAdvanceOptions(String pPkg, String pVer)
  {
    String lMethodName = "getDistanceAdvanceOptions(String,String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pPkg, pVer });
    String errrMsg = null;
    try
    {
      DistAdvanceOptionTRVOImpl distAdvTVO = getDistAdvanceOptionTRVO();

      if (distAdvTVO.getRowCount() == 0)
      {
        Map optionsMap =
          getDistanceAdvanceOptionsFromDIG(pPkg, pVer);

        Map> userSettings =
          (Map>) optionsMap.get("UserSettings");
        Map serverSettingsMap =
          (Map) optionsMap.get("ServerSettings");
        Map defaultSettingsMap =
          (Map) optionsMap.get("DefaultSettings");
        //If any of the  list contain values urning values we are going to display the result.
        if (optionsMap == null || optionsMap.size() == 0 ||
            (serverSettingsMap.size() == 0 && userSettings.size() == 0 &&
             defaultSettingsMap.size() == 0))
        {
          errrMsg =
              IRCTRateCompanyConstants.LOOKUP_RATE_NOT_SUPPORT_ADV_DIST_OPTIONS;
          return errrMsg;
        }


        // Populate UserSettins
        for (String key: userSettings.keySet())
        {
          DistAdvanceOptionTRVORowImpl advTVORow =
            (DistAdvanceOptionTRVORowImpl) distAdvTVO.createRow();
          List optionList = new ArrayList();
          if (defaultSettingsMap.containsKey(key) &&
              userSettings.containsKey(key))
          {
            optionList.add(defaultSettingsMap.get(key) +
                           IRCTRateCompanyConstants.RATE_LOOKUP_DEFAULT_CODE);
          }
          if (userSettings.containsKey(key))
          {
            optionList.addAll((List) userSettings.get(key));
          }


          advTVORow.setOptionObj(optionList);
          advTVORow.setFeatureName(key);
          distAdvTVO.insertRow(advTVORow);
        }
        // Populate Server Settings
        //        for (String key: serverSettingsMap.keySet())
        //        {
        //          DistAdvanceOptionTRVORowImpl advTVORow =
        //            (DistAdvanceOptionTRVORowImpl) distAdvTVO.createRow();
        //          List optionList = new ArrayList();
        //          if (defaultSettingsMap.containsKey(key) &&
        //              serverSettingsMap.containsKey(key))
        //          {
        //            optionList.add(defaultSettingsMap.get(key) +
        //                           IRCTRateCompanyConstants.RATE_LOOKUP_DEFAULT_CODE);
        //          }
        //          //serverSettingsMap is alway giving OvrdRestriction as True
        //
        ////          if (serverSettingsMap.containsKey(key))
        //          //          {
        //          //            // StringBuffer serSettingMap= serverSettingsMap.get(key);
        //          //            optionList.add((String) serverSettingsMap.get(key));
        //          //          }
        //          advTVORow.setOptionObj(optionList);
        //          advTVORow.setFeatureName(key);
        //          distAdvTVO.insertRow(advTVORow);
        //        }
      }


    }
    catch (Exception ex)
    {
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                   " Exception while Retrieving Distance Advance options from DIG ",
                   ex);
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return errrMsg;
  }

  /**
   * This method populate the selected distance advance options
   * in Stops Tab Advance Distance Options text area
   */
  public void populateDocDistanceAdvanceOptions(String pAdvOption)
  {
    String lMethodName = "populateDocDistanceAdvanceOptions()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    DocVOImpl docVO = getDocVO();
    RowSetIterator docRowItr = docVO.createRowSetIterator(null);
    DocVORowImpl docRow = (DocVORowImpl) docRowItr.first();

    String advOption =
      populateDistAdvOptionRow(docRow.getDistPack(), docRow.getDistVers(),
                               pAdvOption, "SAVE");
    docRow.setDigsAdvDistVal(advOption);
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  private Map getDistanceAdvanceOptionsFromDIG(String pPkg,
                                                               String pVer)
  {
    String lMethodName =
      "getDistanceAdvanceOptionsFromDIG(String, String)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    if (StringUtils.isNotBlank(pPkg) && StringUtils.isNotBlank(pVer))
    {
      //Added to change the Pkg Ver to latest in case of Current
      if (StringUtils.equals(pPkg, "PCMU") &&
          StringUtils.equals(pVer, "Current"))
      {
        DistancePkgVersionLOVImpl pkgVerLov = getDistancePkgVersionLOV();
        pkgVerLov.setBindDistPkgName(pPkg);
        pkgVerLov.executeQuery();
        pkgVerLov.last();
        pkgVerLov.previous();
        DistancePkgVersionLOVRowImpl pkgVerLovRowNew =
          (DistancePkgVersionLOVRowImpl) pkgVerLov.getCurrentRow();
        pVer = pkgVerLovRowNew.getPkgVersCd();
      }
      //end
      try
      {
        DistanceOptionsRule distRule =
          new DistanceOptionsRule(pPkg.trim(), pVer.trim());
        return distRule.getOptions();
      }
      catch (Exception e)
      {
        if (_logger.isLoggable(Level.SEVERE))
        {
          _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                       e.getMessage());
        }
      }

    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return null;
  }

  /**
   * Method to create the roe in data Treshold TRVO
   */
  public void populateDataThreshold()
  {

    RateCompanyThresholdTRVOImpl thresholdTRVO =
      getRateCompanyThresholdTRVO();
    thresholdTRVO.insertRow(thresholdTRVO.createRow());
    RateCompanyThresholdVOImpl thresholdVO = getRateCompanyThresholdVO();
    thresholdVO.executeEmptyRowSet();

  }

  /**
   * Method to populate the default data Threshold
   */
  public void getDataThreshold()
  {
    RateCompanyThresholdTRVOImpl thresholdTRVO =
      getRateCompanyThresholdTRVO();

    RateCompanyThresholdTRVORowImpl thresholdRow =
      (RateCompanyThresholdTRVORowImpl) thresholdTRVO.getCurrentRow();
    RateCompanyThresholdVOImpl thresholdVO = getRateCompanyThresholdVO();
    thresholdVO.setBindCompanyID(thresholdRow.getCompanyId());
    thresholdVO.setBindCurrencyCd(thresholdRow.getCurrency());
    thresholdVO.setBindDocType(thresholdRow.getDocDataType());
    thresholdVO.setBindThreshold(thresholdRow.getThresholdType());
    thresholdVO.setBindUomId(thresholdRow.getUomType());
    thresholdVO.executeQuery();

  }

  /**
   *
   * @return
   */
  public String getSelectedAdvDistanceOptions()
  {
    String lMethodName = "getSelectedAdvDistanceOptions()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    DistAdvanceOptionTRVOImpl distAdvTVO = getDistAdvanceOptionTRVO();
    StringBuffer advDistOptions = new StringBuffer();
    StringBuffer defaultDistAdvOptions = new StringBuffer();
    StringBuffer advOpt = new StringBuffer();
    RowSetIterator distAdvItr = distAdvTVO.createRowSetIterator(null);

    while (distAdvItr.hasNext())
    {
      DistAdvanceOptionTRVORowImpl distAdvRow =
        (DistAdvanceOptionTRVORowImpl) distAdvItr.next();
      if (StringUtils.isNotBlank(distAdvRow.getOptionValue()))
      {
        String optionValue = distAdvRow.getOptionValue();
        if (optionValue.contains(IRCTRateCompanyConstants.RATE_LOOKUP_DEFAULT_CODE))
        {
          if (distAdvRow.getFeatureName().contains(IRCTRateCompanyConstants.OVER_RIDE_RESTRICTIONS))
          {
            StringTokenizer tokenizer =
              new StringTokenizer(optionValue, "(");

            defaultDistAdvOptions.append(IRCTRateCompanyConstants.RATE_LOOKUP_DEFAULT_STRING);
            defaultDistAdvOptions.append(distAdvRow.getFeatureName() +
                                         IRCTRateCompanyConstants.RATE_LOOKUP_EQUAL_OPERATOR);
            defaultDistAdvOptions.append(tokenizer.nextToken());

          }

        }
        else
        {
          advDistOptions.append(distAdvRow.getFeatureName() +
                                IRCTRateCompanyConstants.RATE_LOOKUP_EQUAL_OPERATOR +
                                distAdvRow.getOptionValue() +
                                IRCTRateCompanyConstants.RATE_LOOKUP_PIPE_OPERATOR);

        }
      }
    }

    if (StringUtils.isNotBlank(defaultDistAdvOptions.toString()))
    {
      advOpt.append(defaultDistAdvOptions.toString());
      advOpt.append(IRCTRateCompanyConstants.NEW_LINE);
    }
    if (StringUtils.isNotBlank(advDistOptions.toString()))
    {
      advOpt.append(advDistOptions.toString().substring(0,
                                                        advDistOptions.toString().length() -
                                                        1));
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return advOpt.toString();
  }

  /**
   * Container's getter for BtchRslt1.
   * @return BtchRslt1
   */
  public BtchRsltVOImpl getBtchRsltVO()
  {
    return (BtchRsltVOImpl) findViewObject("BtchRsltVO");
  }

  /**
   * Container's getter for OrderOfPrecGeoLOV1.
   * @return OrderOfPrecGeoLOV1
   */
  public OrderOfPrecGeoLOVImpl getOrderOfPrecGeoLOV()
  {
    return (OrderOfPrecGeoLOVImpl) findViewObject("OrderOfPrecGeoLOV");
  }


  /**
   * Container's getter for RCTDocumentTypeROVO.
   * @return RCTDocumentTypeROVO
   */
  public RCTDocumentTypeROVOImpl getRCTDocumentTypeROVO()
  {
    return (RCTDocumentTypeROVOImpl) findViewObject("RCTDocumentTypeROVO");
  }

  /**
   * Container's getter for RCTDocumentStatusROVO.
   * @return RCTDocumentStatusROVO
   */
  public RCTDocumentStatusROVOImpl getRCTDocumentStatusROVO()
  {
    return (RCTDocumentStatusROVOImpl) findViewObject("RCTDocumentStatusROVO");
  }


  /**
   * Container's getter for RateEntryTRVO.
   * @return RateEntryTRVO
   */
  public RateEntryTRVOImpl getRateEntryTRVO()
  {
    return (RateEntryTRVOImpl) findViewObject("RateEntryTRVO");
  }


  /**
   * Container's getter for RouteStopTRVO.
   * @return RouteStopTRVO
   */
  public RouteStopTRVOImpl getRouteStopTRVO()
  {
    return (RouteStopTRVOImpl) findViewObject("RouteStopTRVO");
  }


  /**
   * Container's getter for RateEntryForRouteStopVL1.
   * @return RateEntryForRouteStopVL1
   */
  public ViewLinkImpl getRateEntryForRouteStopVL1()
  {
    return (ViewLinkImpl) findViewLink("RateEntryForRouteStopVL1");
  }


  /**
   * Container's getter for Contract1.
   * @return Contract1
   */
  public ContractVOImpl getContract1()
  {
    return (ContractVOImpl) findViewObject("Contract1");
  }

  /**
   * Container's getter for Doc1.
   * @return Doc1
   */
  public DocVOImpl getDoc1()
  {
    return (DocVOImpl) findViewObject("Doc1");
  }

  /**
   * Container's getter for CalcOpr1.
   * @return CalcOpr1
   */
  public CalcOprVOImpl getCalcOpr1()
  {
    return (CalcOprVOImpl) findViewObject("CalcOpr1");
  }

  /**
   * Container's getter for CalcOpr2.
   * @return CalcOpr2
   */
  public CalcOprVOImpl getCalcOpr2()
  {
    return (CalcOprVOImpl) findViewObject("CalcOpr2");
  }

  /**
   * Container's getter for CalcOprnd1.
   * @return CalcOprnd1
   */
  public CalcOprndVOImpl getCalcOprnd1()
  {
    return (CalcOprndVOImpl) findViewObject("CalcOprnd1");
  }

  /**
   * Container's getter for CalcOprndGrpForCalcOprBaseVL.
   * @return CalcOprndGrpForCalcOprBaseVL
   */
  public ViewLinkImpl getCalcOprndGrpForCalcOprBaseVL()
  {
    return (ViewLinkImpl) findViewLink("CalcOprndGrpForCalcOprBaseVL");
  }

  /**
   * Container's getter for CalcOprndGrpForCalcOprBaseVL1.
   * @return CalcOprndGrpForCalcOprBaseVL1
   */
  public ViewLinkImpl getCalcOprndGrpForCalcOprBaseVL1()
  {
    return (ViewLinkImpl) findViewLink("CalcOprndGrpForCalcOprBaseVL1");
  }

  /**
   * Container's getter for DataGrp2.
   * @return DataGrp2
   */
  public DataGrpVOImpl getDataGrp2()
  {
    return (DataGrpVOImpl) findViewObject("DataGrp2");
  }

  /**
   * Container's getter for CalcOprnd2.
   * @return CalcOprnd2
   */
  public CalcOprndVOImpl getCalcOprnd2()
  {
    return (CalcOprndVOImpl) findViewObject("CalcOprnd2");
  }

  /**
   * Container's getter for CalcOprndForCalcOprndGrpBaseVL.
   * @return CalcOprndForCalcOprndGrpBaseVL
   */
  public ViewLinkImpl getCalcOprndForCalcOprndGrpBaseVL()
  {
    return (ViewLinkImpl) findViewLink("CalcOprndForCalcOprndGrpBaseVL");
  }

  /**
   * Container's getter for CalcOpr3.
   * @return CalcOpr3
   */
  public CalcOprVOImpl getCalcOpr3()
  {
    return (CalcOprVOImpl) findViewObject("CalcOpr3");
  }

  /**
   * Container's getter for Audit1.
   * @return Audit1
   */
  public AuditVOImpl getAudit1()
  {
    return (AuditVOImpl) findViewObject("Audit1");
  }

  /**
   * Container's getter for AudForCalcOprBaseVL.
   * @return AudForCalcOprBaseVL
   */
  public ViewLinkImpl getAudForCalcOprBaseVL()
  {
    return (ViewLinkImpl) findViewLink("AudForCalcOprBaseVL");
  }

  /**
   * Method to delete contract nodes
   */
  public void deleteContractTreeNodes(Map contractTreeDataMap)
  {
    String lMethodName = "deleteContractTreeNodes(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    String busId =
      (String) contractTreeDataMap.get(IRCTRateCompanyConstants.BUS_ID);

    //Data Group
    if (contractTreeDataMap.get(IRCTRateCompanyConstants.DATA_GROUP_ID) !=
        null)
    {
      Number dataGrpId =
        (Number) contractTreeDataMap.get(IRCTRateCompanyConstants.DATA_GROUP_ID);

      DataGrpVOImpl dataGrpVO = getDataGrpVO();
      dataGrpVO.setBind_Bus_ID(busId);
      dataGrpVO.setBind_Data_GrpID(dataGrpId.toString());
      dataGrpVO.setBind_Calc_Opr_Id(null);
      dataGrpVO.executeQuery();

      while (dataGrpVO.hasNext())
      {
        DataGrpVORowImpl dataGrpVORow =
          (DataGrpVORowImpl) dataGrpVO.next();
        dataGrpVORow.remove();
      }
    }
    //base engine
    else if (contractTreeDataMap.get(IRCTRateCompanyConstants.ENGINE_ID) !=
             null)
    {
      Number engineId =
        (Number) contractTreeDataMap.get(IRCTRateCompanyConstants.ENGINE_ID);

      Number qualId =
        (Number) contractTreeDataMap.get(IRCTRateCompanyConstants.QUAL_ID);
      removeCollectiveEngine(new Number[]
          { engineId }, busId, qualId);
    }
    //collective engine
    else if (contractTreeDataMap.get(IRCTRateCompanyConstants.CALLER_ENGINE_ID) !=
             null)
    {
      Number callerEngId =
        (Number) contractTreeDataMap.get(IRCTRateCompanyConstants.CALLER_ENGINE_ID);

      Number qualId =
        (Number) contractTreeDataMap.get(IRCTRateCompanyConstants.QUAL_ID);
      removeCollectiveEngine(new Number[]
          { callerEngId }, busId, qualId);
    }
    //qualification
    else if (contractTreeDataMap.get(IRCTRateCompanyConstants.QUAL_ID) !=
             null)
    {
      Number qualId =
        (Number) contractTreeDataMap.get(IRCTRateCompanyConstants.QUAL_ID);

      CalcOprVOImpl calcOprVO = getCalcOprVO();
      calcOprVO.setBind_BUS_ID(busId);
      calcOprVO.setBindQualId(qualId);
      calcOprVO.setBindCalcOprId(null);
      calcOprVO.setBindPrntCalcOprId(null);
      calcOprVO.executeQuery();

      if (calcOprVO.getRowCount() > 0)
      {
        Number[] engineIds = new Number[calcOprVO.getRowCount()];
        int i = 0;
        while (calcOprVO.hasNext())
        {
          CalcOprVORowImpl calcOprVORow =
            (CalcOprVORowImpl) calcOprVO.next();
          engineIds[i++] = calcOprVORow.getCalcOprId();
        }

        removeCollectiveEngine(engineIds, busId, qualId);
      }

      QualificationVOImpl qualVO = getQualificationVO();
      qualVO.setBind_BUS_ID(busId);
      qualVO.setBindQualId(qualId);
      qualVO.executeQuery();

      while (qualVO.hasNext())
      {
        QualificationVORowImpl qualVORow =
          (QualificationVORowImpl) qualVO.next();
        qualVORow.remove();
      }
    }
    //document
    else if (contractTreeDataMap.get(IRCTRateCompanyConstants.DOC_ID) !=
             null)
    {
      Number docId =
        (Number) contractTreeDataMap.get(IRCTRateCompanyConstants.DOC_ID);
      Number ctrcId =
        (Number) contractTreeDataMap.get(IRCTRateCompanyConstants.CTRC_ID);
      String cpyId =
        (String) contractTreeDataMap.get(IRCTRateCompanyConstants.CPY_ID);
      String ctrcStatus = null;
      Number docStaId = null;
      String docDelFlg = null;
      String docCtntCd = null;
      String docStatus = null;
      oracle.jbo.domain.Date docEffDt = null;
      oracle.jbo.domain.Date docExpDt = null;

      String docImptFlg = null;
      String docImptCd = null;

      ContractROVOImpl ctrcVO = getContractROVO();
      ctrcVO.setBindBusinessId(busId);
      ctrcVO.setBindContractID(ctrcId.toString());
      ctrcVO.setBindUsrID(null);
      ctrcVO.executeQuery();

      while (ctrcVO.hasNext())
      {
        ContractROVORowImpl ctrcVORow =
          (ContractROVORowImpl) ctrcVO.next();
        ctrcStatus = ctrcVORow.getStatus();
      }

      if (IRCTRateCompanyConstants.INACTIVE.equals(ctrcStatus))
      {
        addWarningMessage(IRCTRateCompanyConstants.DOC_CONTRACT_INACTIVE,
                          new Object[]
            { });
        return;
      }

      docStaId =
          (Number) contractTreeDataMap.get(IRCTRateCompanyConstants.DOC_STATUS_ID);

      DocStaROVOImpl docStaVO = getDocStaROVO();
      docStaVO.setBindDocStaId(docStaId.toString());
      docStaVO.executeQuery();

      while (docStaVO.hasNext())
      {
        DocStaROVORowImpl docStaVORow =
          (DocStaROVORowImpl) docStaVO.next();
        docDelFlg = String.valueOf(docStaVORow.getDelFlg());
        docImptFlg = String.valueOf(docStaVORow.getIprtFlg());
        docImptCd = docStaVORow.getIprtCd();
      }

      if ("0".equals(docDelFlg))
      {
        addWarningMessage(IRCTRateCompanyConstants.DOC_NO_DEL_STA,
                          new Object[]
            { });
        return;
      }

      QualVOImpl qualVO = getQualVO();
      qualVO.setBindDocId(docId);
      qualVO.executeQuery();

      while (qualVO.hasNext())
      {
        QualVORowImpl qualVORow = (QualVORowImpl) qualVO.next();
        Number qualId = qualVORow.getQualId();

        if (contractTreeDataMap.get(IRCTRateCompanyConstants.QUAL_ID) !=
            null)
        {
          contractTreeDataMap.remove(IRCTRateCompanyConstants.QUAL_ID);
        }
        contractTreeDataMap.put(IRCTRateCompanyConstants.QUAL_ID, qualId);

        deleteContractTreeNodes(contractTreeDataMap);
      }

      DocVOImpl docVO = getDocVO();
      docVO.setBindDocId(docId.toString());
      //priyanka changed for modified query for DocVO.
      docVO.setBindCtrcId(ctrcId.toString());
      docVO.executeQuery();

      while (docVO.hasNext())
      {
        DocVORowImpl docVORow = (DocVORowImpl) docVO.next();
        docEffDt = docVORow.getEffDt();
        docExpDt = docVORow.getExprDt();
        docVORow.remove();
      }

      if ("1".equals(docImptFlg))
      {
        ImportTaskVOImpl imptTskVO = getImportTaskVO();
        ImportTaskVORowImpl imptTskVORow =
          (ImportTaskVORowImpl) imptTskVO.createRow();
        SequenceImpl seqNum =
          new SequenceImpl(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ,
                           getDBTransaction());
        if (seqNum != null)
        {
          imptTskVORow.setIprtTskId(new DBSequence(seqNum.getSequenceNumber()));
        }

        imptTskVORow.setBusId(busId);
        imptTskVORow.setCpyId(cpyId);
        imptTskVORow.setCtrcId(ctrcId);
        imptTskVORow.setObjId(docId);
        imptTskVORow.setObjCd(IRCTModelConstants.DOCU);
        imptTskVORow.setTskCd(new Number(IRCTModelConstants.UNLOAD_DOCUMENT_IMPORT_TASK_CODE));

        StringBuffer sb = new StringBuffer();
        docCtntCd =
            (String) contractTreeDataMap.get(IRCTRateCompanyConstants.DOC_CONTENT_CODE);
        docStatus =
            (String) contractTreeDataMap.get(IRCTRateCompanyConstants.DOC_STATUS);
        sb.append(docCtntCd);
        sb.append(IRCTModelConstants.PARA_DELIMITER);
        sb.append(docImptCd);
        imptTskVORow.setParmVal(new ClobDomain(sb.toString()));

        imptTskVO.insertRow(imptTskVORow);
      }
    }


    performDatabaseCommit();

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  private void removeCollectiveEngine(Number[] collEngineIdArr,
                                      String busId, Number qualId)
  {
    String lMethodName = "removeCollectiveEngine(Map)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    for (int i = 0; i < collEngineIdArr.length; i++)
    {
      Number callerEngId = collEngineIdArr[i];
      CalcOprVOImpl collEngineVO = getCalcOprVO();
      collEngineVO.setBind_BUS_ID(busId);
      collEngineVO.setBindCalcOprId(callerEngId);
      collEngineVO.setBindQualId(qualId);
      collEngineVO.setBindPrntCalcOprId(null);

      collEngineVO.executeQuery();

      while (collEngineVO.hasNext())
      {
        CalcOprVORowImpl collEngVORow =
          (CalcOprVORowImpl) collEngineVO.next();
        Number prntCalcOprId = collEngVORow.getCalcOprId();
        collEngVORow.remove();

        CalcOprVOImpl baseEngineVO = getCalcOpr1();
        baseEngineVO.setBind_BUS_ID(busId);
        baseEngineVO.setBindPrntCalcOprId(prntCalcOprId);
        baseEngineVO.setBindCalcOprId(null);
        baseEngineVO.setBindQualId(qualId);
        baseEngineVO.executeQuery();

        if (baseEngineVO.getRowCount() > 0)
        {
          Number[] baseEngineIdArr =
            new Number[baseEngineVO.getRowCount()];
          int j = 0;
          while (baseEngineVO.hasNext())
          {
            CalcOprVORowImpl baseEngineVORow =
              (CalcOprVORowImpl) baseEngineVO.next();
            baseEngineIdArr[j++] = baseEngineVORow.getCalcOprId();
          }
          removeCollectiveEngine(baseEngineIdArr, busId, qualId);
        }
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Container's getter for DistAdvanceOptionTR1.
   * @return DistAdvanceOptionTR1
   */
  public DistAdvanceOptionTRVOImpl getDistAdvanceOptionTRVO()
  {
    return (DistAdvanceOptionTRVOImpl) findViewObject("DistAdvanceOptionTRVO");
  }


  /**
   * This method is a replacement for QualDesc CORBA call
   * @return
   */
  public void computeQualDescAndPrec(String pRecalPrec)
  {
    String lMethodName = "computeQualDescAndPrec(String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { pRecalPrec });

    QualificationVOImpl qVO = getQualificationVO();
    QualificationVORowImpl qRow =
      (QualificationVORowImpl) qVO.getCurrentRow();
    QualSetGroupVOImpl qsgVO = getQualSetGroupVL();
    QualItemMasterVOImpl qimVO = getQualItemMasterVO();
    boolean recalPrecedence = Boolean.parseBoolean(pRecalPrec);

    boolean addedToBackEnd = true;

    RowSetIterator rs = qsgVO.createRowSetIterator(null);
    while (rs.hasNext())
    {
      QualSetGroupVORowImpl qsgRow = (QualSetGroupVORowImpl) rs.next();
      if (qsgRow.getNewRowState() == Row.STATUS_NEW ||
          qsgRow.getNewRowState() == Row.STATUS_INITIALIZED)
      {
        addedToBackEnd = false;
        break;

      }
    }
    rs.reset();

    List qualSets = new ArrayList();
    while (rs.hasNext())
    {
      QualSetGroupVORowImpl qsgRow = (QualSetGroupVORowImpl) rs.next();

      RCTDocumentQualificationSetImpl wrapped =
        new RCTDocumentQualificationSetImpl();
      RCTCreateUpdateImpl mCreateUpdateInfo = new RCTCreateUpdateImpl();

      mCreateUpdateInfo.setCreateDate(new java.util.Date(qsgRow.getCreDttm().getTime()));
      mCreateUpdateInfo.setUpdateDate(new java.util.Date(qsgRow.getUpdDttm().getTime()));
      mCreateUpdateInfo.setCreateUser(qRow.getCreUsrId());
      mCreateUpdateInfo.setUpdateUser(qRow.getUpdUsrId());
      wrapped.setBusinessID(qRow.getBusId());
      wrapped.setCompanyID(qRow.getCpyId());
      wrapped.setDocumentID(qRow.getDocId().longValue());
      wrapped.setQualTypeCode(qsgRow.getQualCd());
      wrapped.setStatusCode(IRCTRateCompanyConstants.NO_STATUS);
      wrapped.setQualificationID(qRow.getQualId().longValue());
      wrapped.setQualificationSetID(qsgRow.getQualSetGrpId().longValue());
      wrapped.setCreateUpdateInfo(mCreateUpdateInfo);

      RowIterator rItr = qsgRow.getQualSetGroupItem();

      while (rItr.hasNext())
      {
        QualSetGroupItemVORowImpl qsgiRow =
          (QualSetGroupItemVORowImpl) rItr.next();
        long qualItemMasterId = qsgiRow.getQualItmMstrId().longValue();

        RCTQualificationItem rctQualItm =
          (RCTQualificationItem) LWOUtils.createLWO(RCTQualificationItem.class.getName());

        rctQualItm.setQualTypeCode(qsgRow.getQualCd());
        rctQualItm.setQualItemMasterID(qualItemMasterId);

        qimVO.setBindQualItmMstrId(qualItemMasterId);
        qimVO.executeQuery();

        QualItemMasterVORowImpl qimVORow = null;
        if (qimVO.hasNext())
        {
          qimVORow = (QualItemMasterVORowImpl) qimVO.next();
        }

        if (qimVORow != null)
        {
          if (qimVORow.getQualItmMstrDesc() != null)
          {
            rctQualItm.setDescription(qimVORow.getQualItmMstrDesc());
          }
          Number precNumber = qimVORow.getQualItmPrcdnNum();
          if (precNumber != null && precNumber.intValue() != 0)
          {
            rctQualItm.getPrecedence().setData(precNumber.intValue());
          }
          else
          {
            rctQualItm.getPrecedence().setIsNull(true);
          }
        }
        else
        {
          rctQualItm.setDescription("");
          rctQualItm.getPrecedence().setIsNull(true);
        }

        rctQualItm.setOperator(qsgiRow.getOprCd());
        wrapped.addQualificationItem(rctQualItm);
      }

      RCTDocumentQualificationSetRow aSetRow =
        new RCTDocumentQualificationSetRow(wrapped);

      if (qsgRow.getDetails() != null)
      {
        aSetRow.setDetails(qsgRow.getDetails());
      }

      aSetRow.setQualificationType(qsgRow.getQualCd());
      aSetRow.setStatus(IRCTRateCompanyConstants.ACTIVE);
      aSetRow.setRowAddedToBackend(addedToBackEnd); //--- Important
      qualSets.add(aSetRow.getWrappedObject());
    }
    RatingAdminManager rManager = new RatingAdminManager();

    RCTNullableLong pPrec =
      (RCTNullableLong) LWOUtils.createLWO(RCTNullableLong.class.getName());

    //    A holder needs to be used to pass the value of description by reference
    StringHolder pDescription = new StringHolder();
    if (qRow.getQualDesc() == null)
    {
      pDescription.value = "";
    }
    else
    {
      pDescription.value = qRow.getQualDesc();
    }


    RCTUserInfo mRCTUserInfo =
      (RCTUserInfo) LWOUtils.createLWO(RCTUserInfo.class.getName());

    mRCTUserInfo.setBusinessID(qRow.getBusId());
    mRCTUserInfo.setCompanyID(qRow.getCpyId());
    mRCTUserInfo.setUserID(qRow.getUpdUsrId());

    try
    {

      rManager.computeQualDescAndPrec(qualSets, pPrec, pDescription,
                                      recalPrecedence, mRCTUserInfo);
      String finalQualDesc = pDescription.value;
      if (StringUtils.isNotBlank(finalQualDesc))
      {
        qRow.setQualDesc(finalQualDesc);
      }
      if (recalPrecedence && (pPrec.getData() != 0))
      {
        qRow.setPrcdnNum(toJBONumber(pPrec.getData()));
      }
    }
    catch (IRCTSystemException e)
    {
      if (_logger.isLoggable(Level.FINEST))
      {
        _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                     StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                             "FAILED_TO_WORK_WITH_REMOTE_CORBA_FORPUDESC",
                                             null), e.getMessage());
      }
    }
    catch (IRCTValidationException validationException)
    {
      ValidationExceptionLWO next =
        (ValidationExceptionLWO) validationException.getValidationErrors().iterator().next();

      if (_logger.isLoggable(Level.FINEST))
      {

        _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                     StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                             next.msgID, null),
                     validationException.getMessage());
      }

      raiseValidationException(StringManager.getString(IRCTRateCompanyConstants.IRCT_MESSAGE_RESOURCES,
                                                       next.msgID, null),
                               null);
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    //End of changes for R6.6
  }


  /**
   * Container's getter for RateCompanyThresholdTR1.
   * @return RateCompanyThresholdTR1
   */
  public RateCompanyThresholdTRVOImpl getRateCompanyThresholdTRVO()
  {
    return (RateCompanyThresholdTRVOImpl) findViewObject("RateCompanyThresholdTRVO");
  }

  public void getAllCtrcRows()
  {
    ContractVOImpl contractVO = getContractVO();
    contractVO.getQuery();
    contractVO.executeQuery();
  }

  /**
   * Container's getter for BtchRslt1.
   * @return BtchRslt1
   *
   * */
  public BtchRsltVOImpl getBtchRslt1()
  {
    return (BtchRsltVOImpl) findViewObject("BtchRslt1");
  }

  /**
   * Container's getter for BatchCdLOV.
   * @return BatchCdLOV
   */
  public SNIListOfValuesVOImpl getBatchCdLOV()
  {
    return (SNIListOfValuesVOImpl) findViewObject("BatchCdLOV");
  }

  public void execBatchSummaryVOByBatchCd(ArrayList pBatchCds)
  {
    String methodName = "execBatchSummaryVOByBatchCd(ArrayList)";
    _logger.entering(CLAZZ_NAME, methodName);
    if (pBatchCds != null)
    {
      BatchSummaryVOImpl batchSummaryVO = getBatchSummaryVO();
      ViewCriteria vc =
        batchSummaryVO.getViewCriteria("BatchSummaryVOCriteria");
      batchSummaryVO.clearCache();
      batchSummaryVO.reset();
      batchSummaryVO.resetCriteria(vc);
      batchSummaryVO.executeEmptyRowSet();
      batchSummaryVO.executeQuery();
    }
    _logger.exiting(CLAZZ_NAME, methodName);
  }

  public List initializeProcessingStatus(String pBatchCd)
  {
    String methodName = "initializeProcessingStatus(String)";
    _logger.entering(CLAZZ_NAME, methodName);
    ArrayList btchCds = new ArrayList();
    btchCds.add(pBatchCd);
    execBatchSummaryVOByBatchCd(btchCds);
    _logger.exiting(CLAZZ_NAME, methodName);
    return btchCds;
  }

  /**
   * Container's getter for CalcOprndForCalcOprndGrpBaseVL1.
   * @return CalcOprndForCalcOprndGrpBaseVL1
   */
  public ViewLinkImpl getCalcOprndForCalcOprndGrpBaseVL1()
  {
    return (ViewLinkImpl) findViewLink("CalcOprndForCalcOprndGrpBaseVL1");
  }

  /**
   * Container's getter for CalcTrnst1.
   * @return CalcTrnst1
   */
  public ViewObjectImpl getCalcTrnst1()
  {
    return (ViewObjectImpl) findViewObject("CalcTrnst1");
  }

  /**
   * Container's getter for CalcOprnd3.
   * @return CalcOprnd3
   */
  public CalcOprndVOImpl getCalcOprnd3()
  {
    return (CalcOprndVOImpl) findViewObject("CalcOprnd3");
  }

  /**
   * Container's getter for CalcTrnst2.
   * @return CalcTrnst2
   */
  public ViewObjectImpl getCalcTrnst2()
  {
    return (ViewObjectImpl) findViewObject("CalcTrnst2");
  }

  /**
   * Container's getter for Xfk1calcTrnstLink1.
   * @return Xfk1calcTrnstLink1
   */
  public ViewLinkImpl getXfk1calcTrnstLink1()
  {
    return (ViewLinkImpl) findViewLink("Xfk1calcTrnstLink1");
  }

  /**
   * Container's getter for CalcOpr4.
   * @return CalcOpr4
   */
  public CalcOprVOImpl getCalcOpr4()
  {
    return (CalcOprVOImpl) findViewObject("CalcOpr4");
  }

  /**
   * Container's getter for DataGrp3.
   * @return DataGrp3
   */
  public DataGrpVOImpl getDataGrp3()
  {
    return (DataGrpVOImpl) findViewObject("DataGrp3");
  }

  /**
   * Container's getter for CalcOpr5.
   * @return CalcOpr5
   */
  public CalcOprVOImpl getCalcOpr5()
  {
    return (CalcOprVOImpl) findViewObject("CalcOpr5");
  }

  /**
   * Container's getter for DataGrp4.
   * @return DataGrp4
   */
  public DataGrpVOImpl getDataGrp4()
  {
    return (DataGrpVOImpl) findViewObject("DataGrp4");
  }

  /**
   * Container's getter for Xfk1calcOprndGrpLink.
   * @return Xfk1calcOprndGrpLink
   */
  public ViewLinkImpl getXfk1calcOprndGrpLink()
  {
    return (ViewLinkImpl) findViewLink("Xfk1calcOprndGrpLink");
  }

  /**
   * Container's getter for DataGrp5.
   * @return DataGrp5
   */
  public DataGrpVOImpl getDataGrp5()
  {
    return (DataGrpVOImpl) findViewObject("DataGrp5");
  }

  /**
   * Container's getter for CalcOprnd4.
   * @return CalcOprnd4
   */
  public CalcOprndVOImpl getCalcOprnd4()
  {
    return (CalcOprndVOImpl) findViewObject("CalcOprnd4");
  }

  /**
   * Container's getter for Xfk2calcOprndLink.
   * @return Xfk2calcOprndLink
   */
  public ViewLinkImpl getXfk2calcOprndLink()
  {
    return (ViewLinkImpl) findViewLink("Xfk2calcOprndLink");
  }

  /**
   * Container's getter for DataGroup.
   * @return DataGroup
   */
  public DataGrpVOImpl getDataGroup()
  {
    return (DataGrpVOImpl) findViewObject("DataGroup");
  }

  /**
   * Container's getter for Xfk1calcOprndGrpLink1.
   * @return Xfk1calcOprndGrpLink1
   */
  public ViewLinkImpl getXfk1calcOprndGrpLink1()
  {
    return (ViewLinkImpl) findViewLink("Xfk1calcOprndGrpLink1");
  }

  /**
   * Container's getter for Qual1.
   * @return Qual1
   */
  public QualVOImpl getQual1()
  {
    return (QualVOImpl) findViewObject("Qual1");
  }

  /**
   * Container's getter for Audit2.
   * @return Audit2
   */
  public AuditVOImpl getAudit2()
  {
    return (AuditVOImpl) findViewObject("Audit2");
  }

  /**
   * Container's getter for AudForQualVL.
   * @return AudForQualVL
   */
  public ViewLinkImpl getAudForQualVL()
  {
    return (ViewLinkImpl) findViewLink("AudForQualVL");
  }

  /**
   * Container's getter for Doc2.
   * @return Doc2
   */
  public DocVOImpl getDoc2()
  {
    return (DocVOImpl) findViewObject("Doc2");
  }

  /**
   * Container's getter for ContractReference1.
   * @return ContractReference1
   */
  public ContractReferenceVOImpl getContractReference1()
  {
    return (ContractReferenceVOImpl) findViewObject("ContractReference1");
  }

  /**
   * Container's getter for CtrcRefForDoc.
   * @return CtrcRefForDoc
   */
  public ViewLinkImpl getCtrcRefForDoc()
  {
    return (ViewLinkImpl) findViewLink("CtrcRefForDoc");
  }

  /**
   * Container's getter for Doc3.
   * @return Doc3
   */
  public DocVOImpl getDoc3()
  {
    return (DocVOImpl) findViewObject("Doc3");
  }

  /**
   * Container's getter for Audit3.
   * @return Audit3
   */
  public AuditVOImpl getAudit3()
  {
    return (AuditVOImpl) findViewObject("Audit3");
  }

  /**
   * Container's getter for AudForDocVL.
   * @return AudForDocVL
   */
  public ViewLinkImpl getAudForDocVL()
  {
    return (ViewLinkImpl) findViewLink("AudForDocVL");
  }

  /**
   * Container's getter for Doc4.
   * @return Doc4
   */
  public DocVOImpl getDoc4()
  {
    return (DocVOImpl) findViewObject("Doc4");
  }

  /**
   * Container's getter for IrctNote1.
   * @return IrctNote1
   */
  public IrctNoteVOImpl getIrctNote1()
  {
    return (IrctNoteVOImpl) findViewObject("IrctNote1");
  }

  /**
   * Container's getter for NotesForDocVL.
   * @return NotesForDocVL
   */
  public ViewLinkImpl getNotesForDocVL()
  {
    return (ViewLinkImpl) findViewLink("NotesForDocVL");
  }

  /**
   * Container's getter for Doc5.
   * @return Doc5
   */
  public DocVOImpl getDoc5()
  {
    return (DocVOImpl) findViewObject("Doc5");
  }

  /**
   * Container's getter for DocTmpl1.
   * @return DocTmpl1
   */
  public DocTmplVOImpl getDocTmpl1()
  {
    return (DocTmplVOImpl) findViewObject("DocTmpl1");
  }

  /**
   * Container's getter for DocTmplForDocVL.
   * @return DocTmplForDocVL
   */
  public ViewLinkImpl getDocTmplForDocVL()
  {
    return (ViewLinkImpl) findViewLink("DocTmplForDocVL");
  }

  /**
   * Container's getter for DocTmpl2.
   * @return DocTmpl2
   */
  public DocTmplVOImpl getDocTmpl2()
  {
    return (DocTmplVOImpl) findViewObject("DocTmpl2");
  }

  /**
   * Container's getter for DocRateOrdStrc1.
   * @return DocRateOrdStrc1
   */
  public DocRateOrdStrcVOImpl getDocRateOrdStrc1()
  {
    return (DocRateOrdStrcVOImpl) findViewObject("DocRateOrdStrc1");
  }

  /**
   * Container's getter for DocRateOrdStrcForDocTmpl.
   * @return DocRateOrdStrcForDocTmpl
   */
  public ViewLinkImpl getDocRateOrdStrcForDocTmpl()
  {
    return (ViewLinkImpl) findViewLink("DocRateOrdStrcForDocTmpl");
  }

  /**
   * Container's getter for QualVO.
   * @return QualVO
   */
  public QualVOImpl getQualVO()
  {
    return (QualVOImpl) findViewObject("QualVO");
  }

  public void undoAllRates(Number pCalcOprndGrpId, Number docId)
  {
    String methodName = "undoAllRates";
    _logger.entering(CLAZZ_NAME, methodName);

    undoRatesRemoveAdded(pCalcOprndGrpId, docId);
    undoRatesRestoreUpdated(pCalcOprndGrpId, docId);
    _logger.exiting(CLAZZ_NAME, methodName);
  }

  public void undoRatesRemoveAdded(Number pCalcOprndGrpId, Number docId)
  {
    String methodName = "undoDeleteRates";
    _logger.entering(CLAZZ_NAME, methodName);

    CalcOprndVOImpl calcOprndVo = getCalcOprndVO();
    calcOprndVo.setBindOprGrpId(pCalcOprndGrpId);
    calcOprndVo.setBindRvsOprId(new Number(0));
    calcOprndVo.setBindDocId(docId);
    calcOprndVo.setBindEffDt(null);
    calcOprndVo.setBindOprId(null);
    calcOprndVo.executeQuery();

    int rowcount = calcOprndVo.getRowCount();
    if (rowcount > 0)
    {
      for (int i = 0; i < rowcount; i++)
      {
        CalcOprndVORowImpl calcRow =
          (CalcOprndVORowImpl) calcOprndVo.first();
        String calcOprId = calcRow.getCalcOprndId().toString();
        deleteCalcTrnstRow(calcOprId);
        calcRow.remove();
      }
      performDatabaseCommit();
    }
    _logger.exiting(CLAZZ_NAME, methodName);
  }

  private void deleteCalcTrnstRow(String pCalcOprndId)
  {
    String methodName = "deleteCalcTrnstRow";
    _logger.entering(CLAZZ_NAME, methodName);

    CalcTrnstVOImpl calctrnstVO = (CalcTrnstVOImpl) getCalcTrnst1();
    calctrnstVO.setBindCalcOprId(pCalcOprndId);
    calctrnstVO.executeQuery();

    int rowcount = calctrnstVO.getRowCount();
    if (rowcount > 0)
    {
      for (int i = 0; i < rowcount; i++)
      {
        CalcTrnstVORowImpl calcTrnstRow =
          (CalcTrnstVORowImpl) calctrnstVO.first();
        calcTrnstRow.remove();
      }
      performDatabaseCommit();
    }
    _logger.exiting(CLAZZ_NAME, methodName);
  }

  public void undoRatesRestoreUpdated(Number pCalcOprndGrpId, Number docId)
  {
    String methodName = "undoModifyRates";
    _logger.entering(CLAZZ_NAME, methodName);

    CalcOprndVOImpl calcOprndVo = getCalcOprndVO();
    calcOprndVo.setBindOprGrpId(pCalcOprndGrpId);
    calcOprndVo.setBindDocId(docId);
    calcOprndVo.setBindEffDt(null);
    calcOprndVo.setBindOprId(null);
    calcOprndVo.setBindRvsOprId(null);
    calcOprndVo.executeQuery();

    int rowcount = calcOprndVo.getRowCount();
    if (rowcount > 0)
    {
      for (int i = 0; i < rowcount; i++)
      {
        CalcOprndVORowImpl calcOprndRow =
          (CalcOprndVORowImpl) calcOprndVo.first();
        Object calcOprParentId = calcOprndRow.getRvsOprndId();
        List oldvalues = new ArrayList();
        List oldattribs = new ArrayList();

        Key k = new Key(new Object[]
            { calcOprParentId });
        CalcOprndVORowImpl parentRow =
          (CalcOprndVORowImpl) calcOprndVo.findByKey(k, 1)[0];
        Object[] parentvalues = parentRow.getAttributeValues();
        String[] parentattrbs = parentRow.getAttributeNames();

        for (String attrib: parentattrbs)
        {
          oldattribs.add(attrib);
        }
        for (Object obj: parentvalues)
        {
          oldvalues.add(obj);
        }
        calcOprndRow.setAttributeValues(oldattribs, oldvalues);
        performDatabaseCommit();
      }
    }
    _logger.exiting(CLAZZ_NAME, methodName);
  }


  public String transformTrnsQual(String pTrnsQual)
  {
    QualItemMasterROVOImpl qualItemMasterROVO = getQualItemMasterROVO();
    qualItemMasterROVO.setBindQualItemVal(pTrnsQual);
    qualItemMasterROVO.setBindQualDesc(null);
    qualItemMasterROVO.setBindQualCd(null);
    qualItemMasterROVO.executeQuery();
    String qualDesc = null;
    while (qualItemMasterROVO.hasNext())
    {
      QualItemMasterROVORowImpl qualItemRow =
        (QualItemMasterROVORowImpl) qualItemMasterROVO.next();
      qualDesc = qualItemRow.getQualItmMstrDesc();
      break;
    }
    return qualDesc;
  }

  /**
   * Container's getter for QualItemMasterROVO.
   * @return QualItemMasterROVO
   */
  public QualItemMasterROVOImpl getQualItemMasterROVO()
  {
    return (QualItemMasterROVOImpl) findViewObject("QualItemMasterROVO");
  }

  /**
   * Container's getter for CalcOprTRVO.
   * @return CalcOprTRVO
   */
  public CalcOprTRVOImpl getCalcOprTRVO()
  {
    return (CalcOprTRVOImpl) findViewObject("CalcOprTRVO");
  }

  /**
   * Container's getter for RatingUOMVA.
   * @return RatingUOMVA
   */
  public SNIListOfValuesVOImpl getRatingUOMVA()
  {
    return (SNIListOfValuesVOImpl) findViewObject("RatingUOMVA");
  }

  /**
   * Container's getter for CtrcStatusLOV.
   * @return CtrcStatusLOV
   */
  public CtrcStatusLOVImpl getCtrcStatusLOV()
  {
    return (CtrcStatusLOVImpl) findViewObject("CtrcStatusLOV");
  }

  /**
   * Container's getter for CtrcTypeLOV.
   * @return CtrcTypeLOV
   */
  public CtrcTypeLOVImpl getCtrcTypeLOV()
  {
    return (CtrcTypeLOVImpl) findViewObject("CtrcTypeLOV");
  }

  public void getCpyNameForAddCtrc(String pCompanyId)
  {
    CompanyVOImpl cmpVO = (CompanyVOImpl) getCompanyVO();
    cmpVO.setBindCpyId(pCompanyId);
    cmpVO.executeQuery();
  }

  /**
   * added by pdosi for qualgroup add.
   */
  public void initQualGroup()
  {
    QualGroupVORowImpl qualGroupRow =
      (QualGroupVORowImpl) this.getQualGroupVO().createRow();
    DBSequence db =
      new DBSequence(getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ));
    qualGroupRow.setQualGrpId(db);
    qualGroupRow.setBusId(getBusinessID());
    qualGroupRow.setCpyId(null);
    getQualGroupVO().insertRow(qualGroupRow);
    getQualGroupVO().setCurrentRow(qualGroupRow);
  }

  public void viewDfltTrnCtrcRow(String pCpyId, String pBusId,
                                 String pCtrcId)
  {
    String lMethodName =
      "viewDfltTrnCtrcRow(String pCpyId, String pBusId)";
    _logger.entering(CLAZZ_NAME, lMethodName);
    ContractVOImpl contractVO = getContractVO();
    ContractXrefVOImpl contractXRefVO = getContractXrefVO();
    contractVO.setBindBusId(pBusId);
    contractVO.setBindCpyId(pCpyId);
    contractVO.setBindCtrcDesc(null);
    //contractVO.setBindCtrcDesc("DEFAULT TRANSIT");
    contractVO.setBindCtrcId(pCtrcId);
    contractVO.setBindCtrcSecDesc(null);
    contractVO.executeQuery();
    Number noteId = null;
    if (contractVO.hasNext())
    {
      ContractVORowImpl ctrcrow = (ContractVORowImpl) contractVO.first();
      contractVO.setCurrentRow(ctrcrow);
      noteId = ctrcrow.getNoteId();
    }
    contractXRefVO.setBindBusId(pBusId);
    contractXRefVO.setBindCpyId(pCpyId);
    //contractXRefVO.setBindExtlId("Default Transit");
    contractXRefVO.setBindExtlId(null);
    contractXRefVO.setBindCtrcXRefId(null);
    contractXRefVO.setBindCtrcId(pCtrcId);
    contractXRefVO.executeQuery();
    if (contractXRefVO.hasNext())
    {
      ContractXrefVORowImpl ctrcXRefCurRow =
        (ContractXrefVORowImpl) contractXRefVO.first();
      contractXRefVO.setCurrentRow(ctrcXRefCurRow);
    }

    ContractReferenceVOImpl ctrcRefVO = getContractReferenceVO();
    ctrcRefVO.setBindCtrcId(null);
    ctrcRefVO.setBindCtrcRefId(null);
    ctrcRefVO.setBindObjCd(null);
    ctrcRefVO.setBindObjId(pCtrcId);
    ctrcRefVO.setBindObjCtrcId(null);
    ctrcRefVO.executeQuery();

    LtlFrtClaMapVOImpl frtClsMapVO = getLtlFrtClaMapVO();
    frtClsMapVO.setBindObjId(pCtrcId);
    frtClsMapVO.setBindHighNum(null);
    frtClsMapVO.setBindLowNum(null);
    frtClsMapVO.setBindMapNum(null);
    frtClsMapVO.executeQuery();

    AuditVOImpl audVO = getAuditVO();
    audVO.setBindAudId(null);
    try
    {
      audVO.setBindObjId(new Number(pCtrcId));
    }
    catch (SQLException sqle)
    {
      if (_logger.isLoggable(Level.FINEST))
      {
        _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                     sqle.getMessage());
      }
    }
    audVO.setBindDocId(null);
    audVO.executeQuery();

    CtrcNoteVOImpl ctrcNoteVO = getCtrcNoteVO();
    ctrcNoteVO.setBindCtrcNoteId(noteId);
    ctrcNoteVO.executeQuery();


    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Container's getter for BtchDtlCtnt.
   * @return BtchDtlCtnt
   */
  public BtchDtlCtntVOImpl getBtchDtlCtnt()
  {
    return (BtchDtlCtntVOImpl) findViewObject("BtchDtlCtnt");
  }


  /**
   * Container's getter for GeoGroupROVO.
   * @return GeoGroupROVO
   */
  public GeoGroupROVOImpl getGeoGroupROVO()
  {
    return (GeoGroupROVOImpl) findViewObject("GeoGroupROVO");
  }

  /**
   * Container's getter for QualGrpItemsROVO.
   * @return QualGrpItemsROVO
   */
  public QualGrpItemsROVOImpl getQualGrpItemsROVO()
  {
    return (QualGrpItemsROVOImpl) findViewObject("QualGrpItemsROVO");
  }

  /**
   * Container's getter for CtrcRefNoteVO.
   * @return CtrcRefNoteVO
   */
  public CtrcNoteVOImpl getCtrcRefNoteVO()
  {
    return (CtrcNoteVOImpl) findViewObject("CtrcRefNoteVO");
  }


  /**
   * Method to validate contract reference date
   * @return
   */
  public String validateCtrcRefDate()
  {
    String lMethodName = "validateCtrcRefDate()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    String errMsg = null;
    Date effDtDb = null;
    Date expDtDb = null;
    oracle.jbo.domain.Date effDt = null;
    oracle.jbo.domain.Date expDt = null;
    Number ctrcIdPg = null;
    Number objctrcIdPg = null;
    String startPg = null;
    String endPg = null;
    String endDb = null;

    ContractReferenceTRVOImpl ctrcRefVO = getContractReferenceTRVO();
    RowSetIterator rs = ctrcRefVO.createRowSetIterator(null);

    while (rs.hasNext())
    {
      ContractReferenceTRVORowImpl ctrcRefVORow =
        (ContractReferenceTRVORowImpl) rs.next();
      ctrcIdPg = ctrcRefVORow.getCtrcId();
      objctrcIdPg = ctrcRefVORow.getObjCtrcId();
      effDt = ctrcRefVORow.getCtrcRefEffDt();
      expDt = ctrcRefVORow.getCtrcRefExpDt();

      ValidateDateOverlapROVOImpl vCtrcVo = getValidateDateOverlapROVO();
      vCtrcVo.setBindCtrcId(ctrcIdPg);
      vCtrcVo.setBindObjctrcid(objctrcIdPg);
      vCtrcVo.executeQuery();

      while (vCtrcVo.hasNext())
      {
        ValidateDateOverlapROVORowImpl row =
          (ValidateDateOverlapROVORowImpl) vCtrcVo.next();

        effDtDb = row.getCtrcRefEffDt();
        String startDb = effDtDb == null? "": effDtDb.toString();
        expDtDb = row.getCtrcRefExprDt();
        if (expDtDb == null)
        {
          errMsg = IRCTRateCompanyConstants.CTRC_WITH_NO_EXP_DATE;
        }
        else
        {
          endDb = expDtDb == null? "": expDtDb.toString();
          if ((effDt == null) || (expDt.compareTo(effDt) < 0))
          {
            errMsg = IRCTRateCompanyConstants.EXP_DATE_GT_EFF_DT;
          }
          else
          {
            startPg = effDt.toString();
            endPg = expDt.toString();
            String format = "yyyy-MM-dd";
            java.util.Date startPgDt =
              DateTimeUtil.singleton().parse(startPg, format,
                                             TimeZone.getDefault());
            java.util.Date endPgDt =
              DateTimeUtil.singleton().parse(endPg, format,
                                             TimeZone.getDefault());
            java.util.Date startDbDt =
              DateTimeUtil.singleton().parse(startDb, format,
                                             TimeZone.getDefault());
            java.util.Date endDbDt =
              DateTimeUtil.singleton().parse(endDb, format,
                                             TimeZone.getDefault());
            if (((DateTimeUtil.singleton().inRangeInclusive(effDtDb,
                                                            expDtDb,
                                                            DateTimeUtil.singleton().parse(effDt.toString(),
                                                                                           format,
                                                                                           DateTimeUtil.DEFAULT_TIMEZONE))) ||
                 (DateTimeUtil.singleton().inRangeInclusive(effDtDb,
                                                            expDtDb,
                                                            DateTimeUtil.singleton().parse(expDt.toString(),
                                                                                           format,
                                                                                           DateTimeUtil.DEFAULT_TIMEZONE))) ||
                 (startPgDt.before(startDbDt) && endPgDt.after(endDbDt)) ||
                 (startPgDt.before(startDbDt) && endPgDt.after(endDbDt))))
            {
              errMsg = IRCTRateCompanyConstants.DATE_CTRC_OVLP;
            }
          }
        }
      }
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return errMsg;
  }

  /**
   * Method to determine appropriate audit vo row
   * @param criteria
   * @param currObjId
   * @return
   */
  public List getAuditRow(String criteria, String currObjId)
  {
    String lMethodName = "getAuditRow(String, String)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    AuditTRVORowImpl audTRVORow = null;
    AuditTRVOImpl audTRVO = getAuditTRVO();
    List list = new ArrayList();

    boolean recFound = false;
    RowSetIterator rsAudItr = audTRVO.createRowSetIterator(null);
    while (rsAudItr.hasNext())
    {
      audTRVORow = (AuditTRVORowImpl) rsAudItr.next();
      if (currObjId.equals(audTRVORow.getObjId().toString()) &&
          criteria.equals(audTRVORow.getObjCd()))
      {
        if (!audTRVORow.getDelFlg().booleanValue())
        {
          list.add(audTRVORow);
        }
        recFound = true;
        break;
      }
    }

    if (!recFound)
    {
      AuditROVOImpl vo = getAuditROVO();
      AuditROVORowImpl audVORow = null;
      vo.setBindAudId(null);
      vo.setBindDocId(null);
      vo.setBindObjId(currObjId);
      vo.executeQuery();

      if (vo.hasNext())
      {
        audVORow = (AuditROVORowImpl) vo.next();
        audTRVORow = (AuditTRVORowImpl) audTRVO.createRow();
        audTRVORow.setAudId(audVORow.getAudId());
        audTRVORow.setObjId(audVORow.getObjId());
        audTRVORow.setObjCd(audVORow.getObjCd());
        audTRVORow.setBusId(audVORow.getBusId());
        audTRVORow.setCpyId(audVORow.getCpyId());
        audTRVORow.setAudDesc(audVORow.getAudDesc());
        audTRVORow.setDocId(audVORow.getDocId());
        audTRVORow.setCreUsrId(audVORow.getCreUsrId());
        audTRVORow.setCreDttm(audVORow.getCreDttm());
        audTRVORow.setUpdUsrId(audVORow.getUpdUsrId());
        audTRVORow.setUpdDttm(audVORow.getUpdDttm());
        audTRVORow.setEffDttm(audVORow.getEffDttm());
        audTRVORow.setExpDttm(audVORow.getExprDttm());
        audTRVORow.setVersNum(audVORow.getVersNum());
        audTRVO.insertRow(audTRVORow);
        list.add(audTRVORow);
      }
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);

    return list;
  }

  /**
   * Container's getter for AuditRecCheckVO.
   * @return AuditRecCheckVO
   */
  public AuditVOImpl getAuditRecCheckVO()
  {
    return (AuditVOImpl) findViewObject("AuditRecCheckVO");
  }

  public boolean hasCircularRef(String pTCtrcId, List pRefCtrcIdList)
  {
    String lMethodName = "hasCircularRef(String, List)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    boolean hasCircularRef = false;
    String pCtrcId;
    List childRefList1 = new ArrayList();
    List childRefList2 = new ArrayList();

    for (int c = 0; c < pRefCtrcIdList.size(); c++)
    {
      childRefList1.add(pRefCtrcIdList.get(c));
    }

    hasCircularRef = circularRef_IsTargetId(pTCtrcId, childRefList1);

    if (!hasCircularRef)
    {
      for (int j = 0; j < childRefList1.size(); j++)
      {
        pCtrcId = (String) childRefList1.get(j);
        childRefList2 = circularRef_ChildCtrcRef(pCtrcId);
        hasCircularRef = circularRef_IsTargetId(pTCtrcId, childRefList2);
        if (hasCircularRef)
        {
          return hasCircularRef;
        }
        if (childRefList2.size() > 0)
        {
          for (int i = 0; i < childRefList2.size(); i++)
          {
            childRefList1.add(childRefList2.get(i));
          }
        }
      }
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return hasCircularRef;
  }

  private boolean circularRef_IsTargetId(Object pTCtrcId,
                                         List refCtrcIdList)
  {
    String lMethodName = "circularRef_IsTargetId(Object, List)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    boolean isTargetId = false;
    isTargetId = refCtrcIdList.contains(pTCtrcId);
    //    int index = Collections.binarySearch(refCtrcIdList, pTCtrcId);

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return isTargetId;
  }

  private List circularRef_ChildCtrcRef(String pCtrcId)
  {
    String lMethodName = "circularRef_ChildCtrcRef(String)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    List childRefList = new ArrayList();
    ValidateContractReferenceROVOImpl vo =
      getValidateContractReferenceROVO();
    vo.setBindObjCtrcId(pCtrcId);
    vo.executeQuery();
    while (vo.hasNext())
    {
      ValidateContractReferenceROVORowImpl distinctCtrcIdsRow =
        (ValidateContractReferenceROVORowImpl) vo.next();
      Object ctrcId = distinctCtrcIdsRow.getCtrcId();
      childRefList.add(String.valueOf(ctrcId));
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return childRefList;
  }

  /**
   * Container's getter for DocForPubROVO.
   * @return DocForPubROVO
   */
  public DocForPubROVOImpl getDocForPubROVO()
  {
    return (DocForPubROVOImpl) findViewObject("DocForPubROVO");
  }

  /**
   * Container's getter for OrderOfPrecTR1.
   * @return OrderOfPrecTR1
   */
  public OrderOfPrecTRVOImpl getOrderOfPrecTRVO()
  {
    return (OrderOfPrecTRVOImpl) findViewObject("OrderOfPrecTRVO");
  }

  /**
   * Container's getter for QualPrecedAndDescROVO.
   * @return QualPrecedAndDescROVO
   */
  public QualPrecedAndDescROVOImpl getQualPrecedAndDescROVO()
  {
    return (QualPrecedAndDescROVOImpl) findViewObject("QualPrecedAndDescROVO");
  }


  /**
   * Method to remove CtrcRef rows
   */
  public void removeCtrcRef(String ctrcRefId)
  {
    String lMethodName = "removeCtrcRef(String)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    ContractReferenceVOImpl ctrcRefVO = getContractReferenceVO();
    ctrcRefVO.reset();

    while (ctrcRefVO.hasNext())
    {
      ContractReferenceVORowImpl ctrcRefVORow =
        (ContractReferenceVORowImpl) ctrcRefVO.next();

      if (ctrcRefVORow.getCtrcRefId().equals(ctrcRefId))
      {
        getIRCTRateCompanyServiceHelper().deleteCtrcRefAuditRow(ctrcRefId,
                                                                new Number(1));
        if (ctrcRefVORow.getNoteId() != null)
        {
          deleteIrctNotes(ctrcRefVORow.getNoteId());
        }
        ctrcRefVORow.remove();

        ContractReferenceTRVOImpl ctrcRefTRVO = getContractReferenceTRVO();
        RowSetIterator rsCtrcRefItr =
          ctrcRefTRVO.createRowSetIterator(null);

        while (rsCtrcRefItr.hasNext())
        {
          ContractReferenceTRVORowImpl ctrcRefTRVORow =
            (ContractReferenceTRVORowImpl) rsCtrcRefItr.next();
          if (ctrcRefTRVORow.getCtrcRefId().equals(ctrcRefId))
          {
            saveImportJobContractRef(ctrcRefTRVORow,
                                     ctrcRefTRVORow.getObjCtrcId(),
                                     "Delete");
          }
        }
      }
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to remove CtrcXRef rows
   */
  public void removeCtrcXRef(String ctrcXRefId)
  {
    String lMethodName = "removeCtrcXRef(String)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    ContractXrefVOImpl ctrcXRefVO = getContractXrefVO();
    ctrcXRefVO.reset();

    while (ctrcXRefVO.hasNext())
    {
      ContractXrefVORowImpl ctrcXRefVORow =
        (ContractXrefVORowImpl) ctrcXRefVO.next();

      if (ctrcXRefVORow.getCtrcXrefId().equals(ctrcXRefId))
      {
        getIRCTRateCompanyServiceHelper().deleteCtrcXRefAuditRow(ctrcXRefId,
                                                                 new Number(1));
        ctrcXRefVORow.remove();

        ContractXrefTRVOImpl ctrcXRefTRVO = getContractXrefTRVO();
        RowSetIterator rsCtrcXRefItr =
          ctrcXRefTRVO.createRowSetIterator(null);

        while (rsCtrcXRefItr.hasNext())
        {
          ContractXrefTRVORowImpl ctrcXRefTRVORow =
            (ContractXrefTRVORowImpl) rsCtrcXRefItr.next();
          if (ctrcXRefTRVORow.getCtrcXrefId().equals(ctrcXRefId))
          {
            saveImportJobXCtrcRef(ctrcXRefTRVORow,
                                  ctrcXRefTRVORow.getCtrcId(),
                                  ctrcXRefTRVORow.getCpyId(),
                                  ctrcXRefTRVORow.getExtlId().toString(),
                                  "Delete");
          }
        }
      }
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Container's getter for AuditTRVO.
   * @return AuditTRVO
   */
  public AuditTRVOImpl getAuditTRVO()
  {
    return (AuditTRVOImpl) findViewObject("AuditTRVO");
  }

  /**
   * Container's getter for ContractAuditVO.
   * @return ContractAuditVO
   */
  public ContractAuditVOImpl getContractAuditVO()
  {
    return (ContractAuditVOImpl) findViewObject("ContractAuditVO");
  }

  /**
   * Container's getter for ContractRefAuditVO.
   * @return ContractRefAuditVO
   */
  public ContractRefAuditVOImpl getContractRefAuditVO()
  {
    return (ContractRefAuditVOImpl) findViewObject("ContractRefAuditVO");
  }

  /**
   * Container's getter for ContractXrefAuditVO.
   * @return ContractXrefAuditVO
   */
  public ContractXrefAuditVOImpl getContractXrefAuditVO()
  {
    return (ContractXrefAuditVOImpl) findViewObject("ContractXrefAuditVO");
  }


  /**
   * Container's getter for AuditRO1.
   * @return AuditRO1
   */
  public AuditROVOImpl getAuditRO1()
  {
    return (AuditROVOImpl) findViewObject("AuditRO1");
  }

  /**
   * Container's getter for AuditROVO.
   * @return AuditROVO
   */
  public AuditROVOImpl getAuditROVO()
  {
    return (AuditROVOImpl) findViewObject("AuditROVO");
  }

  /**
   * Method to delete audit record in document
   */
  public void deleteDocAuditRow(boolean bCommit)
  {
    String lMethodName = "deleteDocAuditRow(boolean)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    AuditVOImpl auditVO = getAuditVO();
    AuditVORowImpl auditVORow = (AuditVORowImpl) auditVO.getCurrentRow();
    auditVORow.remove();

    DocVORowImpl docRow = (DocVORowImpl) getDocVO().getCurrentRow();
    docRow.setAudDesc(null);
    docRow.setAudFlg(new Number(0));

    if (bCommit)
    {
      getDBTransaction().commit();
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to delete newly added audit record in document on click of cancel
   */
  public void cancelDocAuditRow()
  {
    String lMethodName = "deleteDocAuditRow()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    AuditVOImpl auditVO = getAuditVO();
    AuditVORowImpl auditVORow = (AuditVORowImpl) auditVO.getCurrentRow();

    if (auditVORow.getAudDesc() == null ||
        auditVORow.getAudDesc().length() == 0)
    {
      auditVORow.remove();
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to save contract audit row
   */
  public void saveCtrcAuditRow()
  {
    String lMethodName = "saveCtrcAuditRow()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    AuditTRVORowImpl auditTRVORow =
      (AuditTRVORowImpl) getAuditTRVO().getCurrentRow();

    if (IRCTRateCompanyConstants.CTRC.equals(auditTRVORow.getObjCd()))
    {
      ContractTRVORowImpl ctrcTRVORow =
        (ContractTRVORowImpl) getContractTRVO().getCurrentRow();

      ctrcTRVORow.setAudDesc(auditTRVORow.getAudDesc());
      ctrcTRVORow.setAudFlg(new Number(1));
    }
    else if (IRCTRateCompanyConstants.CONTRACT_REFERENCE.equals(auditTRVORow.getObjCd()))
    {
      ContractReferenceTRVORowImpl ctrcRefTRVORow =
        (ContractReferenceTRVORowImpl) getContractReferenceTRVO().getCurrentRow();

      ctrcRefTRVORow.setAudFlg(new Number(1));
    }
    else if (IRCTRateCompanyConstants.CONTRACT_XREFERENCE.equals(auditTRVORow.getObjCd()))
    {
      ContractXrefTRVORowImpl ctrcXRefTRVORow =
        (ContractXrefTRVORowImpl) getContractXrefTRVO().getCurrentRow();

      ctrcXRefTRVORow.setAudFlg(new Number(1));
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to add/modify/delete pub note row for a contract reference row
   * @param ctrcRefTvoRow
   * @return
   */
  public Number modPubNoteForCtrcRef(ContractReferenceTRVORowImpl ctrcRefTvoRow)
  {
    String lMethodName =
      "modPubNoteForCtrcRef(ContractReferenceTRVORowImpl)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    Number noteId = null;
    PubNotesTRVOImpl pubnotetvo = getPubNotesTRVO();
    RowSetIterator rs = pubnotetvo.createRowSetIterator(null);
    Number ctrcId = ctrcRefTvoRow.getCtrcId();
    PubNotesTRVORowImpl pubnoteRow = null;

    while (rs.hasNext())
    {
      PubNotesTRVORowImpl pubNoteTRVORow = (PubNotesTRVORowImpl) rs.next();

      if (pubNoteTRVORow.getCtrcId().toString().equals(ctrcId.toString()) &&
          ctrcRefTvoRow.getPubnoteflag() != null &&
          ctrcRefTvoRow.getPubnoteflag())
      {
        pubnoteRow = pubNoteTRVORow;
      }
    }

    if (pubnoteRow != null)
    {
      if (IRCTRateCompanyConstants.PBTX.equals(ctrcRefTvoRow.getPblshDrctvCd()) &&
          ctrcRefTvoRow.getNoteId() == null)
      {
        String pubnotes = String.valueOf(pubnoteRow.getNoteTxt());
        noteId = saveIrctNotes(pubnotes);
      }
      else if (IRCTRateCompanyConstants.PBTX.equals(ctrcRefTvoRow.getPblshDrctvCd()) &&
               ctrcRefTvoRow.getNoteId() != null)
      {
        modifyIrctNotes(ctrcRefTvoRow.getNoteId(),
                        String.valueOf(pubnoteRow.getNoteTxt()));
        noteId = ctrcRefTvoRow.getNoteId();
      }
      else
      {
        pubnoteRow.remove();
        deleteIrctNotes(ctrcRefTvoRow.getNoteId());
        noteId = null;
      }
    }
    else if (ctrcRefTvoRow.getNoteId() != null)
    {
      deleteIrctNotes(ctrcRefTvoRow.getNoteId());
      noteId = null;
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);

    return noteId;
  }

  /**
   * Methdo to delete Irct note row
   * @param noteId
   */
  public void deleteIrctNotes(Number noteId)
  {
    String lMethodName = "deleteIrctNotes(Number)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    CtrcNoteVOImpl noteVO = getCtrcNoteVO();
    noteVO.setBindCtrcNoteId(noteId);
    noteVO.executeQuery();

    if (noteVO.hasNext())
    {
      CtrcNoteVORowImpl noteVORow = (CtrcNoteVORowImpl) noteVO.next();
      if (noteId.equals(noteVORow.getNoteId()))
      {
        noteVORow.remove();
      }
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Methdo to modify Irct note row
   * @param noteId
   * @param pubNotes
   */
  public void modifyIrctNotes(Number noteId, String pubNotes)
  {
    String lMethodName = "modifyIrctNotes(Number, String)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    CtrcNoteVOImpl noteVO = getCtrcNoteVO();
    noteVO.setBindCtrcNoteId(noteId);
    noteVO.executeQuery();

    if (noteVO.hasNext())
    {
      CtrcNoteVORowImpl noteVORow = (CtrcNoteVORowImpl) noteVO.next();
      if (noteId.equals(noteVORow.getNoteId()))
      {
        noteVORow.setNoteTxt(new ClobDomain(pubNotes));
      }
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Container's getter for DocEffDtCheckLTROVO.
   * @return DocEffDtCheckLTROVO
   */
  public DocEffDtCheckLTROVOImpl getDocEffDtCheckLTROVO()
  {
    return (DocEffDtCheckLTROVOImpl) findViewObject("DocEffDtCheckLTROVO");
  }

  public void docQuoteCheck(String dataType)
  {
    String lMethodName = "docQuoteCheck()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    DocVORowImpl docVORow = (DocVORowImpl) getDocVO().getCurrentRow();
    Number ctrcId = docVORow.getCtrcId();

    ActvQuotChkROVOImpl actQuotChkVO = getActvQuotChkROVO();
    actQuotChkVO.setBindCtrcId(ctrcId);
    actQuotChkVO.setBindDocCtntCd(dataType);
    actQuotChkVO.setBindDocStaCd("ACTQ");
    actQuotChkVO.executeQuery();

    if (!(actQuotChkVO.hasNext()))
    {
      ActvQuotChkROVOImpl actQuotChkVO2 = getActvQuotChkROVO();
      actQuotChkVO2.setBindCtrcId(ctrcId);
      actQuotChkVO2.setBindDocCtntCd(dataType);
      actQuotChkVO2.setBindDocStaCd("ACTV,ACTE");
      actQuotChkVO2.executeQuery();
    }
  }

  /**
   * Method to set active quote doc defaults
   * @param dataType
   */
  public void setActiveQuotDocDefaults(String dataType)
  {
    String lMethodName = "setActiveQuotDocDefaults()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    DocVORowImpl docVORow = (DocVORowImpl) getDocVO().getCurrentRow();
    Number ctrcId = docVORow.getCtrcId();

    ActvQuotChkROVOImpl actQuotChkVO = getActvQuotChkROVO();
    actQuotChkVO.setBindCtrcId(ctrcId);
    actQuotChkVO.setBindDocCtntCd(dataType);
    actQuotChkVO.setBindDocStaCd("ACTQ");
    actQuotChkVO.executeQuery();

    if (actQuotChkVO.hasNext())
    {
      ActvQuotChkROVORowImpl actvQuotChkRow =
        (ActvQuotChkROVORowImpl) actQuotChkVO.next();
      docVORow.setDistPack(actvQuotChkRow.getDistPack());
      docVORow.setDistVers(actvQuotChkRow.getDistVers());
      docVORow.setDistCalcType(actvQuotChkRow.getDistCalcType());
      docVORow.setExclCndnxbrdrFlg(actvQuotChkRow.getExclCndnxbrdrFlg());
      docVORow.setExclMexMiFlg(actvQuotChkRow.getExclMexMiFlg());
      docVORow.setDistPkgId(actvQuotChkRow.getDistPkgId());
    }
    else
    {

      ActvQuotChkROVOImpl actQuotChkVO2 = getActvQuotChkROVO();
      actQuotChkVO2.setBindCtrcId(ctrcId);
      actQuotChkVO2.setBindDocCtntCd(dataType);
      actQuotChkVO2.setBindDocStaCd("ACTV,ACTE");
      actQuotChkVO2.executeQuery();

      if (!actQuotChkVO2.hasNext())
      {
        addWarningMessage(IRCTRateCompanyConstants.ACTV_DC_W_SAME_DOC_DATA_TYPE_NO_FOUND,
                          new Object[]
            { });

        ActvQuotChkROVOImpl actQuotChkVO1 = getActvQuotChkROVO();
        actQuotChkVO1.setBindCtrcId(ctrcId);
        actQuotChkVO1.setBindDocCtntCd(null);
        actQuotChkVO1.setBindDocStaCd("ACTV,ACTE");
        actQuotChkVO1.executeQuery();

        if (actQuotChkVO1.hasNext())
        {
          ActvQuotChkROVORowImpl actvQuotChkRow =
            (ActvQuotChkROVORowImpl) actQuotChkVO1.next();
          docVORow.setDistPack(actvQuotChkRow.getDistPack());
          docVORow.setDistVers(actvQuotChkRow.getDistVers());
          docVORow.setDistCalcType(actvQuotChkRow.getDistCalcType());
          docVORow.setExclCndnxbrdrFlg(actvQuotChkRow.getExclCndnxbrdrFlg());
          docVORow.setExclMexMiFlg(actvQuotChkRow.getExclMexMiFlg());
          docVORow.setDistPkgId(actvQuotChkRow.getDistPkgId());
        }
      }
      else
      {
        ActvQuotChkROVORowImpl actvQuotChkRow =
          (ActvQuotChkROVORowImpl) actQuotChkVO2.next();
        docVORow.setDistPack(actvQuotChkRow.getDistPack());
        docVORow.setDistVers(actvQuotChkRow.getDistVers());
        docVORow.setDistCalcType(actvQuotChkRow.getDistCalcType());
        docVORow.setExclCndnxbrdrFlg(actvQuotChkRow.getExclCndnxbrdrFlg());
        docVORow.setExclMexMiFlg(actvQuotChkRow.getExclMexMiFlg());
        docVORow.setDistPkgId(actvQuotChkRow.getDistPkgId());
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Container's getter for ActvQuotChkROVO.
   * @return ActvQuotChkROVO
   */
  public ActvQuotChkROVOImpl getActvQuotChkROVO()
  {
    return (ActvQuotChkROVOImpl) findViewObject("ActvQuotChkROVO");
  }


  //Method to save data group

  public String saveDataGroup()
  {
    String lMethodName = "saveDataGroup()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    DataGrpVOImpl dgVO = getDataGrpVO();
    DataGrpVORowImpl dgRow = (DataGrpVORowImpl) dgVO.getCurrentRow();
    long noteID = 0;
    if (StringUtils.equals(dgRow.getStaCd(), "ACTV"))
    {
      dgRow.setRvsCd("CHG");
    }
    //Note
    if (dgRow.getNoteId().longValue() == 0 || dgRow.getNoteId() == null)
    {
      RowIterator rowItr = dgRow.getIrctNote1();
      IrctNoteVORowImpl row = (IrctNoteVORowImpl) rowItr.createRow();
      noteID =
          getNextSequenceNumber(IRCTRateCompanyConstants.SNIRATE_IRCT_SEQ).longValue();

      row.setNoteId(new oracle.jbo.domain.Number(noteID));
      row.setAscCmpntNam(IRCTRateCompanyConstants.IRCT);
      rowItr.insertRow(row);
    }


    //Didnt make Update date and user as Histoty column as in same screen we are using 2 diff VO so if other vo change, update date time will not change
    Date updateDate =
      DateTimeUtil.singleton().getCurrentUtilDateWithTime();
    dgRow.setUpdDttm(new Timestamp(updateDate));
    dgRow.setUpdUsrId(getLoggedInUserID());
    performDatabaseCommit();

    _logger.exiting(CLAZZ_NAME, lMethodName);

    return IRCTRateCompanyConstants.BACKTOCONTRACTTREE;
  }

  /**
   * Container's getter for CompanyIdByDescLOV.
   * @return CompanyIdByDescLOV
   */
  public CompanyIdByDescLOVImpl getCompanyIdByDescLOV()
  {
    return (CompanyIdByDescLOVImpl) findViewObject("CompanyIdByDescLOV");
  }

  /**
   * Container's getter for UomTypROVO.
   * @return UomTypROVO
   */
  public UomTypROVOImpl getUomTypROVO()
  {
    return (UomTypROVOImpl) findViewObject("UomTypROVO");
  }


  /**
   * Container's getter for ServiceTypeCnvrsnROVO.
   * @return ServiceTypeCnvrsnROVO
   */
  public ServiceTypeCnvrsnROVOImpl getServiceTypeCnvrsnROVO()
  {
    return (ServiceTypeCnvrsnROVOImpl) findViewObject("ServiceTypeCnvrsnROVO");
  }

  /**
   *
   * @param ContractId
   * @return
   */
  public String getCompanyIdBYContractId(Long ContractId)
  {
    String lMethodName = "getCompanyIdBYContractId()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    ContractVOImpl contract = getContractVO();
    contract.setBindCtrcId(ContractId.toString());
    contract.executeQuery();
    if (contract.first() != null)
    {
      _logger.exiting(CLAZZ_NAME, lMethodName);
      return (String) contract.first().getAttribute("CpyId");
    }
    else
    {
      _logger.exiting(CLAZZ_NAME, lMethodName);
      return null;
    }
  }

  /**
   * Method to get geo group cpy id LOV VA
   * @return
   */
  public RowSet getGeoGroupCpyIdLOVVA()
  {
    String lMethodName = "getGeoGroupCpyIdLOVVA()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    GeoSpecGrpTRVORowImpl geoSpecGroupTRVORow =
      (GeoSpecGrpTRVORowImpl) getGeoSpecGrpTVO().getCurrentRow();

    _logger.exiting(CLAZZ_NAME, lMethodName);

    return geoSpecGroupTRVORow.getGeoGrpCmpLOVVA();
  }

  /**
   * Method to get qualification group cpy id LOV VA
   * @return
   */
  public RowSet getQualGroupCpyIdLOVVA()
  {
    String lMethodName = "getQualGroupCpyIdLOVVA()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    QualGroupVORowImpl qualGroupVORow =
      (QualGroupVORowImpl) getQualGroupVO().getCurrentRow();

    _logger.exiting(CLAZZ_NAME, lMethodName);

    return qualGroupVORow.getCompanyIdLOVVA();
  }

  /**
   * Method to get qualification item cpy id LOV VA
   * @return
   */
  public RowSet getQualItemCpyIdLOVVA()
  {
    String lMethodName = "getQualItemCpyIdLOVVA()";
    _logger.entering(CLAZZ_NAME, lMethodName);

    QualItemMasterVORowImpl qualItemMasterVORow =
      (QualItemMasterVORowImpl) getQualItemMasterVO().getCurrentRow();

    _logger.exiting(CLAZZ_NAME, lMethodName);

    return qualItemMasterVORow.getCompanyIdLOVVA();
  }

  /**
   * Method to handle the value change Listner for Band Value X (Engine Screen)
   * @return
   */
  public void bandValueChngLstnr(String vluCngEvnt)
  {
    String lMethodName = "bandValueChngLstnr(String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { vluCngEvnt });

    CalcOprVORowImpl coRow =
      (CalcOprVORowImpl) getCalcOprVO().getCurrentRow();
    RowSet setUOMX = coRow.getRateBandUOMXLOVVA();
    RowSet setX = coRow.getRateBandTypeXLOVVA();
    if (vluCngEvnt != null)
    {
      SNIListOfValuesVORowImpl row =
        (SNIListOfValuesVORowImpl) setX.getRowAtRangeIndex(Integer.parseInt(vluCngEvnt));
      setUOMX.setNamedWhereClauseParam(IRCTRateCompanyConstants.BIND_PARENT_VAL_CD,
                                       row.getDmnValCd());
      setUOMX.setNamedWhereClauseParam(IRCTRateCompanyConstants.BIND_PARENT_DOMAIN_NM,
                                       coRow.getRateBandTypeXLOVVA().getNamedWhereClauseParam(IRCTRateCompanyConstants.BIND_DOMAIN_NM));
    }
    else
    {
      SNIListOfValuesVORowImpl row =
        (SNIListOfValuesVORowImpl) setX.getCurrentRow();
      setUOMX.setNamedWhereClauseParam(IRCTRateCompanyConstants.BIND_PARENT_VAL_CD,
                                       row.getDmnValCd().toString());
      setUOMX.setNamedWhereClauseParam(IRCTRateCompanyConstants.BIND_PARENT_DOMAIN_NM,
                                       coRow.getRateBandTypeXLOVVA().getNamedWhereClauseParam(IRCTRateCompanyConstants.BIND_DOMAIN_NM));
    }
    setUOMX.executeQuery();

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to handle the value change Listner for Band Value Y (Engine Screen)
   * @return
   */
  public void bandValueYValueChngLstn(String vluCngEvnt)
  {
    String lMethodName = "bandValueYValueChngLstn(String)";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { vluCngEvnt });

    CalcOprVORowImpl coRow =
      (CalcOprVORowImpl) getCalcOprVO().getCurrentRow();
    RowSet setUOMY = coRow.getRateBandUOMYLOVVA();
    RowSet setY = coRow.getRateBandTypeYLOVVA();
    if (vluCngEvnt != null)
    {
      SNIListOfValuesVORowImpl row =
        (SNIListOfValuesVORowImpl) setY.getRowAtRangeIndex(Integer.parseInt(vluCngEvnt));
      setUOMY.setNamedWhereClauseParam(IRCTRateCompanyConstants.BIND_PARENT_VAL_CD,
                                       row.getDmnValCd());
      setUOMY.setNamedWhereClauseParam(IRCTRateCompanyConstants.BIND_PARENT_DOMAIN_NM,
                                       coRow.getRateBandTypeYLOVVA().getNamedWhereClauseParam(IRCTRateCompanyConstants.BIND_DOMAIN_NM));
    }
    else
    {
      SNIListOfValuesVORowImpl row =
        (SNIListOfValuesVORowImpl) setY.getCurrentRow();
      setUOMY.setNamedWhereClauseParam(IRCTRateCompanyConstants.BIND_PARENT_VAL_CD,
                                       row.getDmnValCd().toString());
      setUOMY.setNamedWhereClauseParam(IRCTRateCompanyConstants.BIND_PARENT_DOMAIN_NM,
                                       coRow.getRateBandTypeYLOVVA().getNamedWhereClauseParam(IRCTRateCompanyConstants.BIND_DOMAIN_NM));
    }
    setUOMY.executeQuery();

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   *  this method creates new Row for Equivalency (Engine Screen)
   * @return void
   */
  public void createEqvUomRow(Number pRowCount)
  {
    String lMethodName = "createEqvUomRow()";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { });

    CalcOprVORowImpl coRow =
      (CalcOprVORowImpl) getCalcOprVO().getCurrentRow();
    for (int i = 0; i < pRowCount.intValue(); i++)
    {
      coRow.createEqvUomCnvVLRow();
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   *  this method creates new Row for Freight Class Mappings  (Engine Screen)
   * @return
   */
  public void createFlClsMapSelVLRow(Number pRowCount)
  {
    String lMethodName = "createFlClsMapSelVLRow()";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { });
    int frtClassId = 0;
    if (getFreightClsMappingsTRVO().getRowCount() > 0)
    {
      FreightClsMappingsTRVORowImpl flsRow =
        (FreightClsMappingsTRVORowImpl) getFreightClsMappingsTRVO().getRowAtRangeIndex(getFreightClsMappingsTRVO().getRowCount() -
                                                                                       1);
      frtClassId = flsRow.getFrtClassId().intValue();
    }
    CalcOprVORowImpl coRow =
      (CalcOprVORowImpl) getCalcOprVO().getCurrentRow();

    for (int i = 0; i < pRowCount.intValue(); i++)
    {
      coRow.createFlClsMapSelVLRow(getFreightClsMappingsTRVO(), frtClassId,
                                   i);
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   *  this method creates new Row for Rounding Selective(Engine Screen)
   * @return
   */
  public void createRndRuleVLRow(Number pRowCount)
  {
    String lMethodName = "createRndRuleVLRow()";
    _logger.entering(CLAZZ_NAME, lMethodName, new Object[]
        { });

    CalcOprVORowImpl coRow = (CalcOprVORowImpl) getCalcOprVO().last();
    for (int i = 0; i < pRowCount.intValue(); i++)
    {
      coRow.createRndRuleVLRow(getRoundingTVO());
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Container's getter for ServiceTypeLOV.
   * @return ServiceTypeLOV
   */
  public ServiceTypeLOVImpl getServiceTypeLOV()
  {
    return (ServiceTypeLOVImpl) findViewObject("ServiceTypeLOV");
  }

  public List getServiceTypeValue(String cpyId)
  {
    String lMethodName = "getServiceTypeValue()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    List serviceLst = new ArrayList();

    ServiceTypeLOVImpl srvLOV = getServiceTypeLOV();

    srvLOV.setBindCompanyID(cpyId);
    srvLOV.executeQuery();

    while (srvLOV.hasNext())
    {
      ServiceTypeLOVRowImpl srvRow = (ServiceTypeLOVRowImpl) srvLOV.next();
      serviceLst.add(srvRow.getSrvCd());
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return serviceLst;
  }

  /* Container's getter for FreightClsMappingsTRVO.
  * @return FreightClsMappingsTRVO
  */

  public FreightClsMappingsTRVOImpl getFreightClsMappingsTRVO()
  {
    return (FreightClsMappingsTRVOImpl) findViewObject("FreightClsMappingsTRVO");
  }


  /**
   * Method to remove selected EQUIVALENCY SEELCTIVE rows (Engine Screen).
   * @param keySet
   */
  public void delEqlSelRows(List keySet)
  {
    String lMethodName = "delEqlSelRows(List)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    EqvUomCnvVOImpl tVO = getEqvUomCnvVL();
    Key rowKey = null;

    for (int i = 0; i < keySet.size(); i++)
    {
      rowKey = (Key) keySet.get(i);
      EqvUomCnvVORowImpl tVORow = (EqvUomCnvVORowImpl) tVO.getRow(rowKey);
      tVO.setCurrentRow(tVORow);
      tVO.removeCurrentRow();
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  /**
   * Method to remove selected FREIGHT CLASS MAPPINGS  rows (Engine Screen).
   * @param keySet
   */
  public void delFlClsMapRows(List keySet)
  {
    String lMethodName = "delFlClsMapRows(List)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    FreightClsMappingsTRVOImpl tVO = getFreightClsMappingsTRVO();
    Key rowKey = null;

    for (int i = 0; i < keySet.size(); i++)
    {
      rowKey = (Key) keySet.get(i);
      FreightClsMappingsTRVORowImpl tVORow =
        (FreightClsMappingsTRVORowImpl) tVO.getRow(rowKey);
      tVO.setCurrentRow(tVORow);
      tVO.removeCurrentRow();
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Method to remove selected ROUNDING SELECTIVE rows (Engine Screen).
   * @param keySet
   */
  public void delRoundSelRows(List keySet)
  {
    String lMethodName = "delRoundSelRows(List)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    RoundingTRVOImpl tVO = getRoundingTVO();
    Key rowKey = null;

    for (int i = 0; i < keySet.size(); i++)
    {
      rowKey = (Key) keySet.get(i);
      RoundingTRVORowImpl tVORow =
        (RoundingTRVORowImpl) tVO.getRow(rowKey);
      tVO.setCurrentRow(tVORow);
      tVO.removeCurrentRow();
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
  }


  /**
   * Container's getter for CtrcXRefRO1.
   * @return CtrcXRefRO1
   */
  public CtrcXRefROVOImpl getCtrcXRefROVO()
  {
    return (CtrcXRefROVOImpl) findViewObject("CtrcXRefROVO");
  }

  /**
   * Method to validate external reference
   * @param extlId
   * @param cpyId
   * @return
   */
  public boolean validateCtrcXRef(String extlId, String cpyId)
  {
    String lMethodName = "validateCtrcXRef(String)";
    _logger.entering(CLAZZ_NAME, lMethodName);

    CtrcXRefROVOImpl ctrcXRefROVO = getCtrcXRefROVO();
    ctrcXRefROVO.setBindExtlId(extlId);
    ctrcXRefROVO.setBindCpyId(cpyId);
    ctrcXRefROVO.executeQuery();

    if (ctrcXRefROVO.hasNext())
    {
      return false;
    }

    _logger.exiting(CLAZZ_NAME, lMethodName);
    return true;
  }

  /**
   * Container's getter for ServiceTypeChkRO1.
   * @return ServiceTypeChkRO1
   */
  public ServiceTypeChkROVOImpl getServiceTypeChkRO1()
  {
    return (ServiceTypeChkROVOImpl) findViewObject("ServiceTypeChkRO1");
  }

  public void deleteValidationOnSrvTyp(String cpyId, String srvCd)
  {
    String lMethodName = "deleteValidationOnSrvTyp( String, String)";
    _logger.entering(CLAZZ_NAME, lMethodName);


    ServiceTypeChkROVOImpl srvTypVO = getServiceTypeChkRO1();
    if (cpyId != null && srvCd != null)
    {
      if (!cpyId.equalsIgnoreCase(IRCTRateCompanyConstants.NO_COMPANY))
      {
        srvTypVO.setBindCpyID(cpyId);
        srvTypVO.setBindDocCntSubCD(srvCd);
      }
      else
      {

        srvTypVO.setBindDocCntSubCD(srvCd);
      }
      srvTypVO.executeQuery();
      ServiceTypeChkROVORowImpl srvTypRow =
        (ServiceTypeChkROVORowImpl) srvTypVO.first();
      int cnt = srvTypRow.getCnt().intValue();
      if (cnt > 0)
      {
        String errorMsg =
          StringManager.getString(IRCTRateCompanyConstants.UI_MESSAGEBUNDLE_NAME,
                                  IRCTRateCompanyConstants.SRV_DELETE_ERR_MSG,
                                  null);
        throw new JboException(errorMsg);
      }
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
  }

  public TimeZone getLoggedInUserTimeZone()
  {
    String lMethodName = "getLoggedInUserTimeZone()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    UserPrefTRVOImpl userPrefTRVO = getUserPrefTRVO();
    TimeZone timeZone = TimeZone.getTimeZone("US/Central");
    String[] usrPrefSearchArr =
      SNISearchCustomizer.getAllSavedSearchNames(userPrefTRVO);
    UserPrefTRVORowImpl usrPrefVORow = null;
    if (usrPrefSearchArr != null && usrPrefSearchArr.length > 0)
    {
      usrPrefVORow = (UserPrefTRVORowImpl) userPrefTRVO.createRow();
      try
      {
        SNISearchCustomizer.applySearchPreference(usrPrefSearchArr[0],
                                                  userPrefTRVO,
                                                  usrPrefVORow);
        timeZone = TimeZone.getTimeZone(usrPrefVORow.getTimeZoneId());
      }
      catch (Exception ex)
      {
        if (_logger.isLoggable(Level.FINEST))
        {
          _logger.logp(Level.FINE, CLAZZ_NAME, lMethodName,
                       "Error while applySearchPreference() for USer Pref , Key -" +
                       usrPrefSearchArr[0], ex);
        }
      }

    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return timeZone;
  }

  /**
   * This method gets invoked by clicking on Save button in User Preference screen
   * @return
   */
  public String saveUserPreferenceData()
  {
    String lMethodName = "saveUserPreferenceData()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    String errMsg = null;
    UserPreferenceVOImpl usrPrefVO = getUserPreferenceVO();
    UserPrefTRVOImpl userPrefTRVO = getUserPrefTRVO();
    try
    {
      if (usrPrefVO.getRowCount() > 0)
      {
        UserPreferenceVORowImpl usrPrefVORow =
          (UserPreferenceVORowImpl) usrPrefVO.first();
        UserPrefTRVORowImpl userPrefTRVORow =
          (UserPrefTRVORowImpl) userPrefTRVO.createRow();
        userPrefTRVORow.setTimeZoneId(usrPrefVORow.getTimeZoneID());
        SNISearchCustomizer.saveSearchPreference(IRCTRateCompanyConstants.MDS_USR_PREF_SEARCH_NAM,
                                                 userPrefTRVO,
                                                 userPrefTRVORow);
        performDatabaseCommit();
      }
    }
    catch (Exception ex)
    {
      errMsg = "USR_PREF_MDS_SAVE_FAILURE_MSG";
      _logger.logp(Level.FINEST, CLAZZ_NAME, lMethodName,
                   "Error While Saving User Pre Defaults", ex);
    }
    _logger.exiting(CLAZZ_NAME, lMethodName);
    return errMsg;
  }

  /**
   * Container's getter for DocumentTreeTrackingCheckROVO.
   * @return DocumentTreeTrackingCheckROVO
   */
  public DocumentROVOImpl getDocumentTreeTrackingCheckROVO()
  {
    return (DocumentROVOImpl) findViewObject("DocumentTreeTrackingCheckROVO");
  }

  public AttributeList getSrvTypCpyList()
  {
    return getIRCTRateCompanyServiceHelper().getSrvTypCpyList();
  }

  public AttributeList getDataThreshCpyList()
  {
    return getIRCTRateCompanyServiceHelper().getDataThreshCpyList();
  }

  /**
   * Container's getter for RCompanyROVO.
   * @return RCompanyROVO
   */
  public RatingCompanyROVOImpl getRCompanyROVO()
  {
    return (RatingCompanyROVOImpl) findViewObject("RCompanyROVO");
  }

  /**
   * Container's getter for AuditforDocCtrcRefTRVO.
   * @return AuditforDocCtrcRefTRVO
   */
  public AuditforDocCtrcRefTRVOImpl getAuditforDocCtrcRefTRVO()
  {
    return (AuditforDocCtrcRefTRVOImpl) findViewObject("AuditforDocCtrcRefTRVO");
  }

  /**
   * Container's getter for ContractDupChkROVO.
   * @return ContractDupChkROVO
   */
  public ContractDupChkROVOImpl getContractDupChkROVO()
  {
    return (ContractDupChkROVOImpl) findViewObject("ContractDupChkROVO");
  }

  /**
   * Method to rollback transaction
   */
  public void rollbackTransaction()
  {
    getIRCTRateCompanyServiceHelper().rollbackDocTrx();
  }

  /**
   * Container's getter for QualGrpItemsROVO1.
   * @return QualGrpItemsROVO1
   */
  public QualGrpItemsROVOImpl getQualGrpItemsROVO1()
  {
    return (QualGrpItemsROVOImpl) findViewObject("QualGrpItemsROVO1");
  }

  /**
   * Container's getter for DistancePackageCalcType.
   * @return DistancePackageCalcType
   */
  public SNIListOfValuesVOImpl getDistancePackageCalcType()
  {
    return (SNIListOfValuesVOImpl) findViewObject("DistancePackageCalcType");
  }

  /**
   * Container's getter for QualificationTypeConversionVO.
   * @return QualificationTypeConversionVO
   */
  public SNIListOfValuesVOImpl getQualificationTypeConversionVO()
  {
    return (SNIListOfValuesVOImpl) findViewObject("QualificationTypeConversionVO");
  }

  /**
   * Container's getter for RatingOperatorVA.
   * @return RatingOperatorVA
   */
  public SNIListOfValuesVOImpl getRatingOperatorVA()
  {
    return (SNIListOfValuesVOImpl) findViewObject("RatingOperatorVA");
  }

  /**
   * Container's getter for SortOptResultLOV1.
   * @return SortOptResultLOV1
   */
  public ViewObjectImpl getSortOptResultLOV1()
  {
    return (ViewObjectImpl) findViewObject("SortOptResultLOV1");
  }


  /**
   * Container's getter for BatchSummaryForPubVO.
   * @return BatchSummaryForPubVO
   */
  public BatchSummaryForPubVOImpl getBatchSummaryForPubVO()
  {
    return (BatchSummaryForPubVOImpl) findViewObject("BatchSummaryForPubVO");
  }


  /**
   * Container's getter for UserPrefTRVO.
   * @return UserPrefTRVO
   */
  public UserPrefTRVOImpl getUserPrefTRVO()
  {
    return (UserPrefTRVOImpl) findViewObject("UserPrefTRVO");
  }

  /**
   * Container's getter for DocStaValidationROVO.
   * @return DocStaValidationROVO
   */
  public DocStaValidationROVOImpl getDocStaValidationROVO()
  {
    return (DocStaValidationROVOImpl) findViewObject("DocStaValidationROVO");
  }

  public void checkDocStaValidation(String ctrcid)
  {
    DocStaValidationROVOImpl docstavo = getDocStaValidationROVO();
    docstavo.setpctrcid(ctrcid);
    docstavo.executeQuery();
    docstavo.getQuery();
  }

  /**
   * Container's getter for DocStatusActionROVO.
   * @return DocStatusActionROVO
   */
  public DocStatusActionROVOImpl getDocStatusActionROVO()
  {
    return (DocStatusActionROVOImpl) findViewObject("DocStatusActionROVO");
  }

  /**
   *
   * @param companyId
   * @return
   */

  public Boolean checkConcurrentUploads(String companyId)
  {
    String lMethodName = "checkConcurrentUploads()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    return getIRCTRateCompanyServiceHelper().checkConcurrentUploadsHelper(companyId);

  }

  /**
   * Container's getter for BtchDtlCountROVO.
   * @return BtchDtlCountROVO
   */
  public BtchDtlCountROVOImpl getBtchDtlCountROVO()
  {
    return (BtchDtlCountROVOImpl) findViewObject("BtchDtlCountROVO");
  }

  /**
   *
   * @return
   */
  public Map getUserPreference(String pBusinessId)
  {
    final String methodName = "getUserDataFromApplicationModule(String)";
    _logger.entering(CLAZZ_NAME, methodName);

    Map userData = new Hashtable();

    userData.put(IRCTRateCompanyConstants.BUSINESS_ID, pBusinessId);

    String vpdCompanyId = getCompanyId(pBusinessId);
    if (StringUtils.isNotBlank(vpdCompanyId))
    {
      userData.put(IRCTRateCompanyConstants.VPD_COMPANY_ID, vpdCompanyId);
      userData.put(IRCTRateCompanyConstants.COMPANY_ID,
                   vpdCompanyId + "," +
                   IRCTRateCompanyConstants.NO_COMPANY);
    }

    String ratingAdminCompanyId = getLoggedInUserCompanies(pBusinessId);
    if (StringUtils.isNotBlank(ratingAdminCompanyId))
    {
      userData.put(IRCTRateCompanyConstants.RATING_ADMIN_COMPANY_ID,
                   ratingAdminCompanyId);
    }

    TimeZone timeZoneId = getLoggedInUserTimeZone();
    if (StringUtils.isNotBlank(ratingAdminCompanyId))
    {
      userData.put(IRCTRateCompanyConstants.LOGGED_USR_TIMEZONE_ID,
                   timeZoneId);
    }

    _logger.exiting(CLAZZ_NAME, methodName);
    return userData;
  }

  /**
   * This method  checks whether UOM Map is already available or not.
   * If not available , It creates RatingUOMMap and stores in in memory cache
   * otherwise, It returns from In Memory cache.
   *
   * @return
   */
  public Map getRatingUOMMap()
  {
    Map uomMap =
      SNILOVUOMCache.singleton().getRatingUOMMap();
    if (uomMap == null || uomMap.size() == 0)
    {
      uomMap = populateRatingUOMMap();
      SNILOVUOMCache.singleton().setRatingUOMMap(uomMap);
    }
    return uomMap;
  }

  /**
   *
   * @return
   */
  public Map getRatingUOMShtValMap()
  {
    Map uomMap =
      SNILOVUOMCache.singleton().getRatingUOMShtValMap();
    if (uomMap == null || uomMap.size() == 0)
    {
      uomMap = populateRatingUOMShtValMap();
      SNILOVUOMCache.singleton().setRatingUOMShtValMap(uomMap);
    }
    return uomMap;
  }

  /**
   * Container's getter for RateTRVO.
   * @return RateTRVO
   */
  public RateTRVOImpl getRateTRVO()
  {
    return (RateTRVOImpl) findViewObject("RateTRVO");
  }

  /**
   * Container's getter for DocumentStatusLOVVA.
   * @return DocumentStatusLOVVA
   */
  public SNIListOfValuesVOImpl getDocumentStatusLOVVA()
  {
    return (SNIListOfValuesVOImpl) findViewObject("DocumentStatusLOVVA");
  }

  /**
   * This method prepares list of key, value pair of Document Status Code and
   * Description values using SNILOV Values.
   */
  public Map getDocumentStatusMap()
  {
    Map docStatusMap =
      SNILOVUOMCache.singleton().getDocStatusMap();
    if (docStatusMap == null || docStatusMap.size() == 0)
    {
      docStatusMap = new HashMap();
      SNIListOfValuesVOImpl docstatusLOV = getDocumentStatusLOVVA();
      docstatusLOV.executeQuery();

      while (docstatusLOV.hasNext())
      {
        SNIListOfValuesVORowImpl lovRow =
          (SNIListOfValuesVORowImpl) docstatusLOV.next();
        docStatusMap.put(lovRow.getDmnValCd(), lovRow.getLongVal());
      }
      SNILOVUOMCache.singleton().setDocStatusMap(docStatusMap);
    }
    return docStatusMap;
  }

  public String getContenttype(String pBatchSumId)
  {
    BatchSumDetailsROVOImpl btchVO = getBatchSumDetailsROVO();
    String contentType = null;
    btchVO.setBindBtchSumId(pBatchSumId);
    btchVO.executeQuery();
    if (btchVO.hasNext())
    {
      BatchSumDetailsROVORowImpl btchSumRow =
        (BatchSumDetailsROVORowImpl) btchVO.next();
      contentType = btchSumRow.getPblshCtntTypCd();
    }
    return contentType;
  }

  /**
   * Container's getter for BatchSumDetailsROVO.
   * @return BatchSumDetailsROVO
   */
  public BatchSumDetailsROVOImpl getBatchSumDetailsROVO()
  {
    return (BatchSumDetailsROVOImpl) findViewObject("BatchSumDetailsROVO");
  }


  /**
   * Container's getter for BtchSummaryVO.
   * @return BtchSummaryVO
   */
  public ViewObjectImpl getBtchSummaryVO()
  {
    return (ViewObjectImpl) findViewObject("BtchSummaryVO");
  }

  /**
   * This method prepares list of key, value pair of Document Type Code and
   * Description values using SNILOV Values.
   */
  public Map getDocumentDataTypesMap()
  {
    Map docTypeMap =
      SNILOVUOMCache.singleton().getDocDataTypeMap();
    if (docTypeMap == null || docTypeMap.size() == 0)
    {
      docTypeMap = new HashMap();
      SNIListOfValuesVOImpl doctypeLOV = getDocContentLOVVA();
      doctypeLOV.executeQuery();

      while (doctypeLOV.hasNext())
      {
        SNIListOfValuesVORowImpl lovRow =
          (SNIListOfValuesVORowImpl) doctypeLOV.next();
        docTypeMap.put(lovRow.getDmnValCd(), lovRow.getLongVal());
      }
      SNILOVUOMCache.singleton().setDocDataTypeMap(docTypeMap);
    }

    return docTypeMap;
  }


  /**
   * Container's getter for DocContentLOVVA.
   * @return DocContentLOVVA
   */
  public SNIListOfValuesVOImpl getDocContentLOVVA()
  {
    return (SNIListOfValuesVOImpl) findViewObject("DocContentLOVVA");
  }

  /**
   * Container's getter for BtchSumForBtchDtlCtntVL.
   * @return BtchSumForBtchDtlCtntVL
   */
  public ViewLinkImpl getBtchSumForBtchDtlCtntVL()
  {
    return (ViewLinkImpl) findViewLink("BtchSumForBtchDtlCtntVL");
  }

  /**
   * This method prepares list of key, value pair of Distance Package Type Code and
   * Description values using SNILOV Values.
   */
  public Map getDistancePackTypesMap()
  {
    Map distTypeMap =
      SNILOVUOMCache.singleton().getDistPackMap();
    if (distTypeMap == null || distTypeMap.size() == 0)
    {
      distTypeMap = new HashMap();
      DistancePkgLOVImpl distTypeLOV = getDistancePkgLOV();
      distTypeLOV.executeQuery();
      RowSetIterator distPkgLOVIterator =
        distTypeLOV.createRowSetIterator(null);
      while (distPkgLOVIterator.hasNext())
      {
        DistancePkgLOVRowImpl lovRow =
          (DistancePkgLOVRowImpl) distPkgLOVIterator.next();
        distTypeMap.put(lovRow.getGeoPkgCd(), lovRow.getLegNam());
      }
      SNILOVUOMCache.singleton().setDistPackMap(distTypeMap);
    }
    return distTypeMap;
  }


  /**
   * This method prepares list of key, value pair of Distance Package Calc Type and
   * Description values using SNILOV Values.
   */
  public Map getDistancePackCalcTypesMap()
  {
    Map distCalcTypeMap =
      SNILOVUOMCache.singleton().getDistCalcTypeMap();
    if (distCalcTypeMap == null || distCalcTypeMap.size() == 0)
    {
      distCalcTypeMap = new HashMap();
      SNIListOfValuesVOImpl doctypeLOV = getDistancePackageCalcType();
      doctypeLOV.executeQuery();

      while (doctypeLOV.hasNext())
      {
        SNIListOfValuesVORowImpl lovRow =
          (SNIListOfValuesVORowImpl) doctypeLOV.next();
        distCalcTypeMap.put(lovRow.getDmnValCd(), lovRow.getLongVal());
      }
      SNILOVUOMCache.singleton().setDocDataTypeMap(distCalcTypeMap);
    }
    return distCalcTypeMap;
  }

  /**
   * This method prepares list of key, value pair of Qualification type and
   * Description values using SNILOV Values.
   */

  public Map getQualTypeConversionMap()
  {
    Map qualTypeConverMap =
      SNILOVUOMCache.singleton().getQualTypeConverMap();
    if (qualTypeConverMap == null || qualTypeConverMap.size() == 0)
    {
      qualTypeConverMap = new HashMap();
      SNIListOfValuesVOImpl qualTypeLOV =
        getQualificationTypeConversionVO();
      qualTypeLOV.executeQuery();

      while (qualTypeLOV.hasNext())
      {
        SNIListOfValuesVORowImpl lovRow =
          (SNIListOfValuesVORowImpl) qualTypeLOV.next();
        qualTypeConverMap.put(lovRow.getDmnValCd(), lovRow.getLongVal());
      }
      SNILOVUOMCache.singleton().setQualTypeConverMap(qualTypeConverMap);
    }
    return qualTypeConverMap;
  }

  public void clearContractSearchParams()
  {
    String lMethodName = "clearContractSearchParams()";
    _logger.entering(CLAZZ_NAME, lMethodName);
    ContractSearchROVOImpl contractSearchVO = this.getContractSearchROVO();
    contractSearchVO.setCtrcDescVar(null);
    contractSearchVO.setCtrcScdDescVar(null);
    contractSearchVO.setExtIdVar(null);
    _logger.entering(CLAZZ_NAME, lMethodName);

  }

  public void setRouteStopsDisplay()
  {
    RateEntryTRVORowImpl rateEntryRow =
      (RateEntryTRVORowImpl) getRateEntryTRVO().getCurrentRow();
    RouteStopTRVORowImpl stopsRow =
      (RouteStopTRVORowImpl) getRateEntryForRouteStopVL1().getDestination().first();
    if (stopsRow != null)
      rateEntryRow.setDisplayRouteStop(Boolean.TRUE);
    else
      rateEntryRow.setDisplayRouteStop(Boolean.FALSE);
  }

  /**
   *This method returns the list of Company's by business ID.
   *This data is being used by PWB
   */


}

Designed by Posicionamiento Web | Bloggerized by GosuBlogger | Blue Business Blogger