Vous êtes sur la page 1sur 11

import apl.TOT_RoamOut_WF.NSN_TAP_VALIDATION_SUPPORT; import apl.TOT_RoamOut_WF.

NSN_TAP_VALIDATION_LIBRARY; /** * APL Engine for validation TAP records in ROAMING-(IN/OUT) **/ map<string,any> mapOfConstrains = mapCreate( string, any ); // 69135ESPE02 /** * RETURN FILE SEQ NUMBER AND RAP SEQ NUMBER FROM INCOMING TAP */ int getSequenceNumber(list<drudr> validConfUdrList, drudr toValidTapUDRs, boolea n rap) { // 69135ESPE02 string property; if(rap) property = "rapFileSequenceNumberPlaceInASN"; else property = "fileSequenceNumberPlaceInASN"; string fileSequenceNumberPlaceInASN = getPropertyValueByName( validConfUdrLi st, property ); list<any> fileSequenceNumbers = UDR.getAllValuesForUDRsInPath( toValidTapUDR s, fileSequenceNumberPlaceInASN, P_FIELD_SEPARATOR ); int fileSeqNum = -1; if( listSize( fileSequenceNumbers ) != 0 ) strToInt( fileSeqNum, ""+convertFromASN( listGet( fileSequenceNumbers, l istSize( fileSequenceNumbers ) - 1 ) ) ); return fileSeqNum; } /** 69135ESPE02 list<int> getFileSeqNumberAndRapSeqNumber( list<drudr> validConfUdrList, drudr t oValidTapUDRs ) { list<int> toReturn = listCreate( int ); // Getting fileSequenceNumber from TAP string fileSequenceNumberPlaceInASN = getPropertyValueByName( validConfUdrLi st, "fileSequenceNumberPlaceInASN" ); list<any> fileSequenceNumbers = UDR.getAllValuesForUDRsInPath( toValidTapUDR s, fileSequenceNumberPlaceInASN, P_FIELD_SEPARATOR ); int fileSequenceNumber = -1; if( listSize( fileSequenceNumbers ) != 0 ) strToInt( fileSequenceNumber, ""+convertFromASN( listGet( fileSequenceNu mbers, listSize( fileSequenceNumbers ) - 1 ) ) ); // Getting rapFileSequenceNumber from TAP string rapFileSequenceNumberPlaceInASN = getPropertyValueByName( validConfUd rList, "rapFileSequenceNumberPlaceInASN" ); list<any> rapFileSequenceNumbers = UDR.getAllValuesForUDRsInPath( toValidTap UDRs, rapFileSequenceNumberPlaceInASN, P_FIELD_SEPARATOR );

int rapFileSequenceNumber = -1; if( listSize( rapFileSequenceNumbers ) != 0 ) strToInt( rapFileSequenceNumber, ""+convertFromASN( listGet( rapFileSequ enceNumbers, listSize( rapFileSequenceNumbers ) - 1 ) ) ); listAdd( toReturn, fileSequenceNumber ); listAdd( toReturn, rapFileSequenceNumber ); return toReturn; } */ /** * RETURN TAP VERSION AND TAP RELEASE FROM INCOMING TAP */ list<int> getTapVersionAndTapRelease( list<drudr> validConfUdrList, drudr toVali dTapUDRs ) { list<int> toReturn = listCreate( int ); // Getting tapVersion from TAP file string tapVersionPlaceInASN = getPropertyValueByName( validConfUdrList, "tap VersionPlaceInASN" ); list<any> tapVersions = UDR.getAllValuesForUDRsInPath( toValidTapUDRs, tapVe rsionPlaceInASN, P_FIELD_SEPARATOR ); int tapVersion = -1; if( listSize( tapVersions ) != 0 ) strToInt( tapVersion, ""+convertFromASN( listGet( tapVersions, listSize( tapVersions ) - 1 ) ) ); // Getting tapRelease from TAP file string tapReleasePlaceInASN = getPropertyValueByName( validConfUdrList, "tap ReleasePlaceInASN" ); list<any> tapReleases = UDR.getAllValuesForUDRsInPath( toValidTapUDRs, tapRe leasePlaceInASN, P_FIELD_SEPARATOR ); int tapRelease = -1; if( listSize( tapReleases ) != 0 ) strToInt( tapRelease, ""+convertFromASN( listGet( tapReleases, listSize( tapReleases ) - 1 ) ) ); listAdd( toReturn, tapVersion ); listAdd( toReturn, tapRelease ); return toReturn; } /** * RETURN LIST WITH TAP VERSION & RELEASE AND WITH DATA TYPES TO USE * from <Main> * <DataTypes name="... */ list<any> getInfoAboutDataTypes( list<drudr> validConfUdrList, int tapVersionFro mFile, int tapReleaseFromFile, int actuallTapVersion, int actuallTapRelease ) { list<any> toReturn = listCreate( any ); string dataTypes = ""; if( tapVersionFromFile != -1 ) {

if( tapReleaseFromFile != -1 ) { listAdd( toReturn, tapVersionFromFile ); listAdd( toReturn, tapReleaseFromFile ); dataTypes = getTapsIncludedDataTypesRefNameByTapRV( validConfUdrList , tapVersionFromFile, tapReleaseFromFile ); } else { int theLowestTapRelease = getTapsIncludedTheOldestTapReleaseByTapVer sion( validConfUdrList, tapVersionFromFile ); listAdd( toReturn, tapVersionFromFile ); listAdd( toReturn, theLowestTapRelease ); if( theLowestTapRelease > -1 ) { dataTypes = getTapsIncludedDataTypesRefNameByTapRV( validConfUdr List, tapVersionFromFile, theLowestTapRelease ); } else { dataTypes = ""; } } } else { if( tapReleaseFromFile != -1 ) { int theLowestTapVersion = getTapsIncludedTheOldestTapVersionByTapRel ease( validConfUdrList, tapReleaseFromFile ); listAdd( toReturn, theLowestTapVersion ); listAdd( toReturn, tapReleaseFromFile ); if( theLowestTapVersion > -1 ) { dataTypes = getTapsIncludedDataTypesRefNameByTapRV( validConfUdr List, theLowestTapVersion, tapReleaseFromFile ); } else { dataTypes = ""; } } } if( dataTypes != null && strTrim( dataTypes ) != "" ) { dataTypes = dataTypes; listAdd( toReturn, dataTypes ); } else { listClear( toReturn ); listAdd( toReturn, actuallTapVersion ); listAdd( toReturn, actuallTapRelease ); dataTypes = getTapsIncludedDataTypesRefNameByTapRV( validConfUdrList, ac tuallTapVersion, actuallTapRelease ); listAdd( toReturn, dataTypes );

} return toReturn; } /** * RETURN LIST OF TAP VERSION AND TAP RELEASE TO USE IN VALIDATION */ list<int> getTapVRtoUse( list<drudr> validConfUdrList, int tapVersionFromFile, i nt tapReleaseFromFile, int actuallTapVersion, int actuallTapRelease ) { list<any> listToUse = getInfoAboutDataTypes( validConfUdrList, tapVersionFro mFile, tapReleaseFromFile, actuallTapVersion, actuallTapRelease ); list<int> toReturn = listCreate( int ); int i = 0; while( i < 2 ) { int toAdd = 0; strToInt( toAdd, ""+listGet( listToUse, i ) ); listAdd( toReturn, toAdd ); i = i + 1; } return toReturn; } /** * RETURN DATA TYPES FROM CONF BY INCOMING TAP AND VALID CONFIGURATION * from <Main> * <DataTypes name=" */ string getDataTypesForTapFile( list<drudr> validConfUdrList, int tapVersionFromF ile, int tapReleaseFromFile, int actuallTapVersion, int actuallTapRelease ) { return ""+listGet( getInfoAboutDataTypes( validConfUdrList, tapVersionFromFi le, tapReleaseFromFile, actuallTapVersion, actuallTapRelease ), 2 ); } /** * TRY TO RETURNS DATATYPE BY LIST OF NAMES **/ drudr getDataType( list<drudr> fullConfForService, list<string> dataTypeName ) { int nrOfDataTypeNameI = listSize( dataTypeName ); int d = 0; drudr dataTypeConfForService = null; while( d < nrOfDataTypeNameI ) { dataTypeConfForService = getFullDataTypeConf( fullConfForService, li stGet( dataTypeName, d ) ); if( dataTypeConfForService != null ) return dataTypeConfForService; } return dataTypeConfForService; }

/** * BLOCK OF METHOD TO CACHE TO CONST OR REPEATABLE VALUES */ map<string,drudr> cachedConfs = mapCreate( string, drudr ); // 69135ESPE02 drudr getCachedConf( string confName ) { // 69135ESPE02 return mapGet( cachedConfs, confName ); } map<string,string> cacheDataTypesForTapFile = mapCreate( string, string ); // 69 135ESPE02 string getCachedDataTypesForTapFile( list<drudr> validConfUdrList, int tapVersio nFromFile, int tapReleaseFromFile, int actuallTapVersion, int actuallTapRelease ) { // 69135ESPE02 string key = "" + tapVersionFromFile + "_" + tapReleaseFromFile + "_" + actu allTapVersion + "_" + actuallTapRelease; string toReturn = mapGet( cacheDataTypesForTapFile, key ); if( toReturn == null ) { toReturn = getDataTypesForTapFile( validConfUdrList, tapVersionFromFile , tapReleaseFromFile, actuallTapVersion, actuallTapRelease ); mapSet( cacheDataTypesForTapFile, key, toReturn ); } return toReturn; } map<string,any> cachedTapsVersionToUseKeys = mapCreate( string, any ); // 69135E SPE02 list<int> getCachedTapsVersionToUseKeys( list<drudr> validConfUdrList, int tapVe rsionFromFile, int tapReleaseFromFile, int actuallTapVersion, int actuallTapRel ease ) { // 69135ESPE02 string key = "" + tapVersionFromFile + "_" + tapReleaseFromFile + "_" + actu allTapVersion + "_" + actuallTapRelease; list<int> toReturn = ( list<int> )mapGet( cachedTapsVersionToUseKeys, key ); if( toReturn == null ) { toReturn = getTapVRtoUse( validConfUdrList, tapVersionFromFile, tapRele aseFromFile, actuallTapVersion, actuallTapRelease ); mapSet( cachedTapsVersionToUseKeys, key, toReturn ); } return toReturn; } map<string,string> cacheBasicServiceDataType = mapCreate( string, string ); // 6 9135ESPE02 string getCachedBasicServiceDataType( list<drudr> validConfUdrList, string dataT ypesForCurrentTapFile, int tapVersionFromFile, int tapReleaseFromFile ) { // 691 35ESPE02 string key = "" + dataTypesForCurrentTapFile + "_" + tapVersionFromFile + "_ " + tapReleaseFromFile; string toReturn = mapGet( cacheBasicServiceDataType, key );

if( toReturn == null ) { toReturn = getBasicServiceDataType( validConfUdrList, dataTypesForCurren tTapFile, tapVersionFromFile, tapReleaseFromFile ); mapSet( cacheBasicServiceDataType, key, toReturn ); } return toReturn; } map<string,any> cachedTapVRbyDataTypeContainer = mapCreate( string, any ); // 69 135ESPE02 list<int> getCachedTapVRbyDataTypeContainer( list<drudr> validConfUdrList, stri ng basicServiceName ) { // 69135ESPE02 list<int> toReturn = ( list<int> )mapGet( cachedTapVRbyDataTypeContainer, ba sicServiceName ); if( toReturn == null ) { toReturn = getTapVRbyDataTypeContainer( validConfUdrList, basicServiceN ame ); mapSet( cachedTapVRbyDataTypeContainer, basicServiceName, toReturn ); } return toReturn; } map<string,string> cachedBasicDataTypesForTapRelVer = mapCreate( string, string ); // 69135ESPE02 string getCachedBasicDataTypesForTapRelVer( list<drudr> validConfUdrList, int ta pVersionFromFile, int tapReleaseFromFile ) { // 69135ESPE02 string key = "" + tapVersionFromFile + "_" + tapReleaseFromFile; string toReturn = mapGet( cachedBasicDataTypesForTapRelVer, key ); if( toReturn == null ) { toReturn = getTapsIncludedDataTypesRefNameByTapRV( validConfUdrList, ta pVersionFromFile, tapReleaseFromFile ); mapSet( cachedBasicDataTypesForTapRelVer, key, toReturn ); } return toReturn; } map<string,any> errorsFromValidation = mapCreate( string, any ); // 69135ESPE02 list<string> errorFields = listCreate( string ); // 69135ESPE02 map<string,drudr> cachedConfigurationForDataTypeAsUDRTest = mapCreate( string, d rudr ); // 69135ESPE02 drudr getCachedConfigurationForDataTypeTest( list<int> tapRV, string dataTypesF orCurrentTapFile, list<string> seqDataConstrains, list<drudr> validConfUdrList, int tapVersionFromFile, int tapReleaseFromFile, int actuallTapVersion, int actua llTapRelease ) { // 69135ESPE02 string key = "" + tapVersionFromFile + "_" + tapReleaseFromFile + "_" + actu

allTapVersion + "_" + actuallTapRelease + + "_" + dataTypesForCurrentTapFile; drudr toReturn = mapGet( cachedConfigurationForDataTypeAsUDRTest, key ); if( toReturn == null ) { string basicServiceName = getCachedBasicServiceDataType( validConfUdrLis t, dataTypesForCurrentTapFile, listGet( tapRV, 0 ), listGet( tapRV, 1 ) ); list<int> basicTapVerRelease = getCachedTapVRbyDataTypeContainer( validC onfUdrList, basicServiceName ); int tapVer = listGet( basicTapVerRelease, 0 ); int tapRel = listGet( basicTapVerRelease, 1 ); if( tapVer == -1 tapRel == -1 ) abort( "COLUDN'T FIND SERVICES FOR BA SIC " + basicServiceName ); string basicDataTypes = getCachedBasicDataTypesForTapRelVer( validConfUd rList, tapVer, tapRel ); list<drudr> fullConf = resolveExtDataTypesRefFromCurrentPos( seqDataCons trains, validConfUdrList, basicDataTypes, tapVer, tapRel ); toReturn = getFullDataTypeConf( fullConf, basicServiceName ); mapSet( cachedConfigurationForDataTypeAsUDRTest, key, toReturn ); } return toReturn; } map<string,any> cachedFullConfForServiceBaseOnTapReleaseAndVer = mapCreate( stri ng, any ); // 69135ESPE02 list<drudr> getCachedFullConfForServiceBaseOnTapReleaseAndVer( list<string> seqD ataConstrains, list<drudr> validConfUdrList, string dataTypesForCurrentTapFile, int tapVer, int tapRel ) { // 69135ESPE02 string key = "" + tapVer + "_" + tapRel + "_" + dataTypesForCurrentTapFile; list<drudr> toReturn = ( list<drudr> )mapGet( cachedFullConfForServiceBaseOn TapReleaseAndVer, key ); if( toReturn == null ) { toReturn = resolveExtDataTypesRefFromCurrentPos( seqDataConstrains, val idConfUdrList, dataTypesForCurrentTapFile, tapVer, tapRel ); mapSet( cachedFullConfForServiceBaseOnTapReleaseAndVer, key, toReturn ) ; } return toReturn; } /** * MAIN METHOD TO MAKE VALIDATION */ any tap3Validation(list<string>seqConstrains, list<string>seqDataConstrains, lis t<drudr> validConfUdrList, drudr toValidTapUDRs, int actuallTapVersion, int actu allTapRelease, string serviceCode, string chargedItem, boolean isStrict ) { // h eader extend 69135ESPE02

if( validConfUdrList == null listSize( validConfUdrList ) == 0 ) abort( " CONFIGURATION WASN'T READED CORRECTLY" ); // GET INFO ABOUT CURRENT TAP FILE SEQ NUMBERS /** 69135ESPE02 list<int> fileSequenceNumbers = getFileSeqNumberAndRapSeqNumber( validConfUd rList, toValidTapUDRs ); int tapFileSeqNumber = listGet( fileSequenceNumbers, 0 ); int rapFileSeqNumber = listGet( fileSequenceNumbers, 1 ); */ // Table look-up for fileSequenceNumber & rapFileSequenceNumber // put here logic connected to lookup to db // GET INFO ABOUT TAP VER AND RELEASE list<int> tapInfos = getTapVersionAndTapRelease( validConfUdrList, toValidTa pUDRs ); int tapVersionFromFile = listGet( tapInfos, 0 ); int tapReleaseFromFile = listGet( tapInfos, 1 ); //int actuallTapVersion = getActuallTapVersion( validConfUdrList ); 69135ESP E02 //int actuallTapRelease = getActuallTapRelease( validConfUdrList ); 69135ESP E02 // GETTING DATATYPES FOR CURRENT TAP FILE //string dataTypesForCurrentTapFile = getDataTypesForTapFile( validConfUdrLi st, tapVersionFromFile, tapReleaseFromFile, actuallTapVersion, actuallTapRelease ); 69135ESPE02 string dataTypesForCurrentTapFile = getCachedDataTypesForTapFile( validConfU drList, tapVersionFromFile, tapReleaseFromFile, actuallTapVersion, actuallTapRel ease ); // 69135ESPE02 if( dataTypesForCurrentTapFile == null strTrim( dataTypesForCurrentTapFil e ) == "" ) abort( "COULDN'T FIND DATA TYPES " + dataTypesForCurrentTapFile + " IN CONFIGURATION FILE." ); list<int> tapRV = getCachedTapsVersionToUseKeys( validConfUdrList, tapVersio nFromFile, tapReleaseFromFile, actuallTapVersion, actuallTapRelease ); // 69135E SPE02 //list<int> tapRV = getTapVRtoUse( validConfUdrList, tapVersionFromFile, tap ReleaseFromFile, actuallTapVersion, actuallTapRelease ); 69135ESPE02 /** 69135ESPE02 string basicServiceName = getBasicServiceDataType( validConfUdrList, dataTyp esForCurrentTapFile, listGet( tapRV, 0 ), listGet( tapRV, 1 ) ); list<int> basicTapVerRelease = getTapVRbyDataTypeContainer( validConfUdrList , basicServiceName ); int tapVer = listGet( basicTapVerRelease, 0 ); int tapRel = listGet( basicTapVerRelease, 1 ); if( tapVer == -1 tapRel == -1 ) abort( "COLUDN'T FIND SERVICES FOR BASIC " + basicServiceName ); string basicDataTypes = getTapsIncludedDataTypesRefNameByTapRV( validConfUdr List, tapVer, tapRel );

// GETS CONFIGURATION FOR COMMON VALIDATION (BASIC) list<drudr> fullConf = resolveExtDataTypesRefFromCurrentPos( validConfUdrLis t, basicDataTypes, tapVer, tapRel ); drudr dataTypeConf = getFullDataTypeConf( fullConf, basicServiceName ); */ drudr dataTypeConf = getCachedConfigurationForDataTypeTest( tapRV, dataTypes ForCurrentTapFile, seqDataConstrains, validConfUdrList, tapVersionFromFile, tapR eleaseFromFile, actuallTapVersion, actuallTapRelease ); // 69135ESPE02 //map<string,any> errors = mapCreate( string, any ); 69135ESPE02 //list<string> errorFields = listCreate( string ); 69135ESPE02 mapClear( errorsFromValidation ); // 69135ESPE02 listClear( errorFields ); // 69135ESPE02 //boolean break = execValidation( dataTypeConf, toValidTapUDRs, errors, isSt rict, validConfUdrList, -1, errorFields ); 69135ESPE02 boolean break = execValidation( dataTypeConf, toValidTapUDRs, errorsFromVali dation, isStrict, validConfUdrList, -1, errorFields ); // 69135ESPE02 //if( break ) return errors; //string serviceCode = getPropertyValueByName( validConfUdrList, "teleServic eCodePlaceInASN" ); 69135ESPE02 //string chargedItem = getPropertyValueByName( validConfUdrList, "chargedIte mPlaceInASN" ); 69135ESPE02 list<any> indicatorsForFile = UDR.getAllValuesForUDRsInPath( toValidTapUDRs, serviceCode, P_FIELD_SEPARATOR ); list<any> chargedItems = UDR.getAllValuesForUDRsInPath( toValidTapUDRs, char gedItem, P_FIELD_SEPARATOR ); int nrOfIndicators = listSize( indicatorsForFile ); int nrOfChargedItems = listSize( chargedItems ); // debug("Charged item form Validation Engine: "+nrOfChargedItems+" and ind icatorsForFile "+nrOfIndicators); int nrOfUsage = 0; if( nrOfIndicators > nrOfChargedItems ) nrOfUsage = nrOfIndicators; else nrOfUsage = nrOfChargedItems; int nrOfValidServices = 0; //list<drudr> fullConfForService = resolveExtDataTypesRefFromCurrentPos( va lidConfUdrList, dataTypesForCurrentTapFile, listGet( tapRV, 0 ), listGet( tapRV, 1 ) ); 69135ESPE02 list<drudr> fullConfForService = getCachedFullConfForServiceBaseOnTapReleas eAndVer( seqDataConstrains, validConfUdrList, dataTypesForCurrentTapFile, listGe t( tapRV, 0 ), listGet( tapRV, 1 ) ); // 69135ESPE02 string tmp2 = ""; // 69135ESPE02 drudr dataTypeConfForService = null; // 69135ESPE02 string tmp_key = ""; // 69135ESPE02 bytearray ba = null; // 69135ESPE02 mapSet( mapOfConstrains, P_SERVICE_ATTR_TAP_VER, listGet( tapRV, 0 ) ); // 6 9135ESPE02 mapSet( mapOfConstrains, P_SERVICE_ATTR_TAP_RELEASE, listGet( tapRV, 1 ) );

// 69135ESPE02 /** 69135ESPE02 while( nrOfValidServices < nrOfUsage ) { drudr dataTypeConfForService = null; if( nrOfValidServices < nrOfIndicators ) { string indicatorForCurrentServices = ""+listGet( indicatorsForFile, nrOfValidServices ); list<string> dataTypeName = getDataTypeContainer( validConfUdrList, indicatorForCurrentServices, listGet( tapRV, 0 ), listGet( tapRV, 1 ) ); dataTypeConfForService = getDataType( fullConfForService, dataTypeNa me ); } if( dataTypeConfForService == null && nrOfChargedItems > nrOfValidServic es ) { string indicatorForCurrentServices = ""+listGet( chargedItems, nrOfV alidServices ); list<string> dataTypeName = getDataTypeContainer( validConfUdrList, indicatorForCurrentServices, listGet( tapRV, 0 ), listGet( tapRV, 1 ) ); dataTypeConfForService = getDataType( fullConfForService, dataTypeNa me ); } if( dataTypeConfForService != null ) { execValidation( dataTypeConfForService, toValidTapUDRs, errors, isSt rict, validConfUdrList, -1, errorFields ); } nrOfValidServices = nrOfValidServices + 1; } return errors; */ while( nrOfValidServices < nrOfUsage ) { // replace old logic without cachin g 69135ESPE02 if( nrOfValidServices < nrOfIndicators ) { ba = (bytearray)listGet( indicatorsForFile, nrOfValidServices ); string indicatorForCurrentServices = "" + ba; tmp_key = baToStr(ba) + "_" + listGet( tapRV, 0 ) + "_" + listGet( t apRV, 1 ); dataTypeConfForService = getCachedConf(tmp_key); if(dataTypeConfForService == null) { list<string> dataTypeName = getDataTypeContainer( mapOfConstrain s, seqConstrains, validConfUdrList, indicatorForCurrentServices, listGet( tapRV, 0 ), listGet( tapRV, 1 ) ); dataTypeConfForService = getDataType( fullConfForService, dataTy peName ); if(dataTypeConfForService != null) { mapSet(cachedConfs, tmp_key, dataTypeConfForService); } }

} if( dataTypeConfForService == null && nrOfChargedItems > nrOfValidServic es ) { ba = (bytearray)listGet( chargedItems, nrOfValidServices ); string indicatorForCurrentServices = "" + ba; tmp_key = baToStr(ba) + "_" + listGet( tapRV, 0 ) + "_" + listGet( t apRV, 1 ); dataTypeConfForService = getCachedConf(tmp_key); if(dataTypeConfForService == null) { list<string> dataTypeName = getDataTypeContainer( mapOfConstrain s, seqConstrains, validConfUdrList, indicatorForCurrentServices, listGet( tapRV, 0 ), listGet( tapRV, 1 ) ); dataTypeConfForService = getDataType( fullConfForService, dataTy peName ); mapSet(cachedConfs, tmp_key, dataTypeConfForService); } } if( dataTypeConfForService != null ) { execValidation( dataTypeConfForService, toValidTapUDRs, errorsFromVa lidation, isStrict, validConfUdrList, -1, errorFields ); } nrOfValidServices = nrOfValidServices + 1; } return errorsFromValidation; }

Vous aimerez peut-être aussi