package gw.exportimport.resolver uses gw.api.locale.DisplayKey uses gw.api.database.IQueryBeanResult uses gw.api.util.StateJurisdictionMappingUtil uses gw.exportimport.CellData uses gw.exportimport.ColumnInfo uses gw.exportimport.ImportMetaData uses java.util.Map uses gw.api.extension.ExtensionInterfaces /** * A {@link ColumnDataResolver} used for {@link TerritoryCode}s. It will export * the resolved {@link TerritoryCode#Code} value and import it as well. */ @ReadOnly class TerritoryCodeColumnDataResolver extends AbstractColumnDataResolver { construct(aColumnInfo : ColumnInfo) { super(aColumnInfo) } override function resolveCellValue(bean : KeyableBean) : Object { var resolvedBean = resolveBean(bean) if (resolvedBean typeis TerritoryCode) { return resolvedBean == null ? null : resolvedBean.Code } return null } override function calculateCellValue(bean : KeyableBean, cellData : CellData, metaData : ImportMetaData, dependentData : Map) : String { var territoryCode = resolveBean(bean) if (not (territoryCode typeis TerritoryCode)) { createIssue(bean, cellData, metaData) } var code = territoryCode as TerritoryCode var period = (bean as EffDated).BranchUntyped as PolicyPeriod if (cellData.Data.NotBlank) { var state = dependentData["State"] as State if (state == null) { createIssue(bean, cellData, metaData, DisplayKey.get("Import.Validation.Errors.MissingDependentDataState")) } var foundCodes = ExtensionInterfaces.ITerritoryLookupQueryBuilderFactory.newInstance() .withCode(cellData.Data) .withState(StateJurisdictionMappingUtil.getJurisdictionMappingForState(state)) .withPolicyLinePatternCode(code.PolicyLinePattern.PublicID) .withEffectiveOnDate(period.EditEffectiveDate) .build().select() as IQueryBeanResult if (foundCodes.Empty) { createIssue(bean, cellData, metaData, DisplayKey.get("Import.Validation.Errors.NoTerritoryCodesFound", cellData.Data, state.DisplayName)) } return foundCodes.first().Code } return null } override function setBeanValue(bean : KeyableBean, value : String, cellData : CellData, metaData : ImportMetaData) : boolean { var territoryCode = resolveBean(bean) as TerritoryCode var previousValue = territoryCode.Code territoryCode.Code = value return previousValue != value } private function createIssue(bean : KeyableBean, cellData : CellData, metaData : ImportMetaData) { createIssue(bean, cellData, metaData, DisplayKey.get("Import.Validation.Errors.NonExistingTerritoryCodes")) } }