COGS_SGA

import os,fnmatch
import os.path
from os.path import isfile, join

DimDict = {"COG_SGA":"UD4"}
#list of locations to duplicate the insert statements
strLocNameList = "'HFM_COG_SGA_J_D','HFM_COG_SGA_A_M'"

#strLocNameList = "'HFM_AR_AGING_BMSG_J_D','HFM_AR_AGING_BSSG_J_D','HFM_BS_BMSG_J_D','HFM_BS_BSSG_J_D','HFM_DEF_REV_BMSG_J_D','HFM_DEF_REV_BSSG_J_D','HFM_REV_BMSG_J_D','HFM_REV_BSSG_J_D'"


def writeToFile(strPath, strFile, strBuf, strFlag):
    strFilePath = strPath + "/" + strFile
    objFile = open(strFilePath, strFlag)
    objFile.write(strBuf + "\n")
    objFile.close()    
    return "ok"

    
strOutboxPath = fdmContext["OUTBOXDIR"] + "/"
strInboxPath = fdmContext["INBOXDIR"]

dirStruct = strInboxPath + "/" + "Staging" + "/"

nDataKey = 0
strDATAKEYSQL = "SELECT MAX(DATAKEY) as DATAKEYVAL from tDATAMAP"
rsDataKey = fdmAPI.executeQuery (strDATAKEYSQL, [])
strDatakey = "1"
strRecCount = 0
while (rsDataKey.next()):
    strDatakey = rsDataKey.getString("DATAKEYVAL")

nDataKey = long(float(strDatakey))
XXX = writeToFile(strOutboxPath,"TEST.log",strDATAKEYSQL,"w")
XXX = writeToFile(strOutboxPath,"TEST.log",str(nDataKey),"a")

for file in os.listdir(dirStruct):
    if isfile(dirStruct+file):
        strFileName = str(file)
        firstPos = strFileName.find("_")
        secondPos = strFileName.find("_",firstPos+1)
        ThirdPos = strFileName.find("_",secondPos+1)
        FouthPos = strFileName.find("_",ThirdPos+1)
        lengthstr = len(strFileName)-4
        strDimName = strFileName[FouthPos+1:lengthstr]

        isDimExists = 0
        strLocID = 1
        if DimDict.has_key(strDimName):
            strDimName = DimDict[strDimName]
            #strLocKeyList = "15"
            #retrieve the partition key list from the partition names
            strLocKey = "Select listagg(partitionkey,',') within group (order by partitionkey) as LOCKEY  from TPOVPARTITION where partname IN ( " + str(strLocNameList) + ")"
            XXX = writeToFile(strOutboxPath,"TEST.log",strLocKey,"a")
            rsA2 = fdmAPI.executeQuery(strLocKey, [])
            if rsA2.next():
                strLocKeyList = rsA2.getString("LOCKEY")
            fdmAPI.closeConnection() 
            
            strLocKeyArray = strLocKeyList.split(",")
            if os.path.isfile(join(dirStruct,file)):
                objdataFile = open(dirStruct+file,'r')
                LineContent = objdataFile.readlines()
                XXX = writeToFile(strOutboxPath,"TEST.log","-----------------------Script Begning Preparing the list to update the source Keys's--------------------------------","w")
                Count = 1
                strAllSrcKey = ""
                strAllMaps = ""
                DeleteList = ""
                strTableCommand = "INTO TDATAMAP (PARTITIONKEY,DIMNAME,SRCKEY,TARGKEY,DATAKEY,TDATAMAPTYPE,system_generated_flag) VALUES \n"
                for strLocID in strLocKeyArray:
                    strAllSrcKey = ""
                    strAllMaps = ""
                    DeleteList = ""
                    for strlines in LineContent:
                        if strlines.find(",") > 0:
                            strSrcKey = strlines.split(",")[0].strip().upper()
                            strTgtKey = strlines.split(",")[1].strip().upper()
                            if len(DeleteList) > 0:
                                DeleteList = DeleteList + ",'" + strSrcKey + "'"
                            else:
                                DeleteList = "'" + strSrcKey + "'"
                            if Count == 1:
                                strAllSrcKey = "'" + strSrcKey + "'"
                                strAllMaps = strTableCommand + " (" + str(strLocID) + ",'" + strDimName + "' , '" +  strSrcKey  + "' , '" + strTgtKey.strip() + "'," + str(nDataKey) + ", 'ERP','N') \n"
                            else:
                                strAllSrcKey = strAllSrcKey + ",'" + strSrcKey + "'" 
                                strAllMaps = strAllMaps + strTableCommand + " (" + str(strLocID) + ",'" + strDimName + "' , '" +  strSrcKey  + "' , '" + strTgtKey + "'," + str(nDataKey) + ", 'ERP','N') \n"
                            Count = Count + 1
                            strRecCount = strRecCount + 1
                            nDataKey = nDataKey + 1
                            if strRecCount == 1000 or strRecCount > 1000 :
                                StrDeleteSQL = "DELETE FROM TDATAMAP WHERE PARTITIONKEY IN ( " + str(strLocID) + " ) AND UPPER(DIMNAME) = '" + strDimName + "' AND SRCKEY IN ( " + str(DeleteList) + ")"
                                strInsertSQL = "Insert ALL" + "\n" + strAllMaps + " \n Select * from dual"
                                if len(DeleteList.strip()) > 0 :
                                    fdmAPI.executeDML(StrDeleteSQL, [], False)
                                    fdmAPI.commitTransaction()
                                fdmAPI.executeDML(strInsertSQL, [], False)
                                fdmAPI.commitTransaction()
                                fdmAPI.closeConnection()
                                DeleteList = ""
                                strAllMaps = ""
                                Count = 1
                                strRecCount = 0

                    StrDeleteSQL = "DELETE FROM TDATAMAP WHERE PARTITIONKEY IN ( " + str(strLocID) + " ) AND UPPER(DIMNAME) = '" + strDimName + "' AND SRCKEY IN ( " + str(DeleteList) + ")"
                    strInsertSQL = "Insert ALL" + "\n" + strAllMaps + " \n Select * from dual"
                    XXX = writeToFile(strOutboxPath,"TEST.log","***********************Generated SQL's*************************","a")
                    XXX = writeToFile(strOutboxPath,"TEST.log","=====================Insert SQL================================","a")
                    XXX = writeToFile(strOutboxPath,"TEST.log",strInsertSQL,"a")
                    XXX = writeToFile(strOutboxPath,"TEST.log","=====================Delete SQL================================","a")
                    XXX = writeToFile(strOutboxPath,"TEST.log",StrDeleteSQL,"a")
                    #                        Sectio to excute the generated SQL on FDMEE DB to update the mps will be enable once the SQL are varified and syntatical error free
                    if len(DeleteList.strip()) > 0 :
                        fdmAPI.executeDML(StrDeleteSQL, [], False)
                        fdmAPI.commitTransaction()
                    fdmAPI.executeDML(strInsertSQL, [], False)
                    fdmAPI.commitTransaction()
                    fdmAPI.closeConnection()
        else:
            XXX = writeToFile(strOutboxPath,"TEST.log","Given Dimension does not Exists in the Application","a")

            
            
NEW_BMSG-MGMT-BU
import os,fnmatch
import os.path
from os.path import isfile, join

DimDict = {"BILLTYPE":"UD1","MGMT_BU":"UD2","SOLUTION":"UD3","GEOGRAPHY":"UD4"}  #,"ENTITY":"ENTITY","CUSTOM1":"UD1","CUSTOM2":"UD2","CUSTOM3":"UD3","CUSTOM4":"UD4","CUSTOM5":"UD5","CUSTOM6":"UD6","ICP":"ICP"}
#list of locations to duplicate the insert statements
strLocNameList = "'HFM_DEF_REV_BMSG_J_D','HFM_REV_BMSG_J_D','HFM_AR_AGING_BMSG','HFM_BS_BMSG_J_D'"

#strLocNameList = "'HFM_AR_AGING_BMSG','HFM_AR_AGING_BSSG','HFM_BS_BMSG_J_D','HFM_BS_BSSG_J_D','HFM_DEF_REV_BMSG_J_D','HFM_DEF_REV_BSSG_J_D','HFM_REV_BMSG_J_D','HFM_REV_BSSG_J_D'"


def writeToFile(strPath, strFile, strBuf, strFlag):
    strFilePath = strPath + "/" + strFile
    objFile = open(strFilePath, strFlag)
    objFile.write(strBuf + "\n")
    objFile.close()    
    return "ok"

    
strOutboxPath = fdmContext["OUTBOXDIR"] + "/"
strInboxPath = fdmContext["INBOXDIR"]

dirStruct = strInboxPath + "/" + "Staging" + "/"

nDataKey = 0
strDATAKEYSQL = "SELECT MAX(DATAKEY) as DATAKEYVAL from tDATAMAP"
rsDataKey = fdmAPI.executeQuery (strDATAKEYSQL, [])
strDatakey = "1"
strRecCount = 0
while (rsDataKey.next()):
    strDatakey = rsDataKey.getString("DATAKEYVAL")

nDataKey = long(float(strDatakey))
XXX = writeToFile(strOutboxPath,"TEST.log",strDATAKEYSQL,"w")
XXX = writeToFile(strOutboxPath,"TEST.log",str(nDataKey),"a")

for file in os.listdir(dirStruct):
    if isfile(dirStruct+file):
        strFileName = str(file)
        firstPos = strFileName.find("_")
        secondPos = strFileName.find("_",firstPos+1)
        ThirdPos = strFileName.find("_",secondPos+1)
        FouthPos = strFileName.find("_",ThirdPos+1)
        lengthstr = len(strFileName)-4
        strDimName = strFileName[FouthPos+1:lengthstr]

        isDimExists = 0
        strLocID = 1
        if DimDict.has_key(strDimName):
            strDimName = DimDict[strDimName]
            #strLocKeyList = "15"
            #retrieve the partition key list from the partition names
            strLocKey = "Select listagg(partitionkey,',') within group (order by partitionkey) as LOCKEY  from TPOVPARTITION where partname IN ( " + str(strLocNameList) + ")"
            XXX = writeToFile(strOutboxPath,"TEST.log",strLocKey,"a")
            rsA2 = fdmAPI.executeQuery(strLocKey, [])
            if rsA2.next():
                strLocKeyList = rsA2.getString("LOCKEY")
            fdmAPI.closeConnection() 
            
            strLocKeyArray = strLocKeyList.split(",")
            if os.path.isfile(join(dirStruct,file)):
                objdataFile = open(dirStruct+file,'r')
                LineContent = objdataFile.readlines()
                XXX = writeToFile(strOutboxPath,"TEST.log","-----------------------Script Begning Preparing the list to update the source Keys's--------------------------------","w")
                Count = 1
                strAllSrcKey = ""
                strAllMaps = ""
                DeleteList = ""
                strTableCommand = "INTO TDATAMAP (PARTITIONKEY,DIMNAME,SRCKEY,TARGKEY,DATAKEY,TDATAMAPTYPE,system_generated_flag) VALUES \n"
                for strLocID in strLocKeyArray:
                    strAllSrcKey = ""
                    strAllMaps = ""
                    DeleteList = ""
                    for strlines in LineContent:
                        if strlines.find(",") > 0:
                            strSrcKey = strlines.split(",")[0].strip().upper()
                            strTgtKey = strlines.split(",")[1].strip().upper()
                            if len(DeleteList) > 0:
                                DeleteList = DeleteList + ",'" + strSrcKey + "'"
                            else:
                                DeleteList = "'" + strSrcKey + "'"
                            if Count == 1:
                                strAllSrcKey = "'" + strSrcKey + "'"
                                strAllMaps = strTableCommand + " (" + str(strLocID) + ",'" + strDimName + "' , '" +  strSrcKey  + "' , '" + strTgtKey.strip() + "'," + str(nDataKey) + ", 'ERP','N') \n"
                            else:
                                strAllSrcKey = strAllSrcKey + ",'" + strSrcKey + "'" 
                                strAllMaps = strAllMaps + strTableCommand + " (" + str(strLocID) + ",'" + strDimName + "' , '" +  strSrcKey  + "' , '" + strTgtKey + "'," + str(nDataKey) + ", 'ERP','N') \n"
                            Count = Count + 1
                            strRecCount = strRecCount + 1
                            nDataKey = nDataKey + 1
                            if strRecCount == 1000 or strRecCount > 1000 :
                                StrDeleteSQL = "DELETE FROM TDATAMAP WHERE PARTITIONKEY IN ( " + str(strLocID) + " ) AND UPPER(DIMNAME) = '" + strDimName + "' AND SRCKEY IN ( " + str(DeleteList) + ")"
                                strInsertSQL = "Insert ALL" + "\n" + strAllMaps + " \n Select * from dual"
                                if len(DeleteList.strip()) > 0 :
                                    fdmAPI.executeDML(StrDeleteSQL, [], False)
                                    fdmAPI.commitTransaction()
                                fdmAPI.executeDML(strInsertSQL, [], False)
                                fdmAPI.commitTransaction()
                                fdmAPI.closeConnection()
                                DeleteList = ""
                                strAllMaps = ""
                                Count = 1
                                strRecCount = 0

                    StrDeleteSQL = "DELETE FROM TDATAMAP WHERE PARTITIONKEY IN ( " + str(strLocID) + " ) AND UPPER(DIMNAME) = '" + strDimName + "' AND SRCKEY IN ( " + str(DeleteList) + ")"
                    strInsertSQL = "Insert ALL" + "\n" + strAllMaps + " \n Select * from dual"
                    XXX = writeToFile(strOutboxPath,"TEST.log","***********************Generated SQL's*************************","a")
                    XXX = writeToFile(strOutboxPath,"TEST.log","=====================Insert SQL================================","a")
                    XXX = writeToFile(strOutboxPath,"TEST.log",strInsertSQL,"a")
                    XXX = writeToFile(strOutboxPath,"TEST.log","=====================Delete SQL================================","a")
                    XXX = writeToFile(strOutboxPath,"TEST.log",StrDeleteSQL,"a")
                    #                        Sectio to excute the generated SQL on FDMEE DB to update the mps will be enable once the SQL are varified and syntatical error free
                    if len(DeleteList.strip()) > 0 :
                        fdmAPI.executeDML(StrDeleteSQL, [], False)
                        fdmAPI.commitTransaction()
                    fdmAPI.executeDML(strInsertSQL, [], False)
                    fdmAPI.commitTransaction()
                    fdmAPI.closeConnection()
        else:
            XXX = writeToFile(strOutboxPath,"TEST.log","Given Dimension does not Exists in the Application","a")

            
            
New_BSSG-SEGMENT
import os,fnmatch
import os.path
from os.path import isfile, join

DimDict = {"BILLTYPE":"UD1","SEGMENT":"UD2","SOLUTION":"UD3","GEOGRAPHY":"UD4"} #,"ENTITY":"ENTITY","CUSTOM1":"UD1","CUSTOM2":"UD2","CUSTOM3":"UD3","CUSTOM4":"UD4","CUSTOM5":"UD5","CUSTOM6":"UD6","ICP":"ICP"}
#list of locations to duplicate the insert statements
strLocNameList = "'HFM_AR_AGING_BSSG','HFM_BS_BSSG_J_D','HFM_DEF_REV_BSSG_J_D','HFM_REV_BSSG_J_D'"

#strLocNameList = "'HFM_AR_AGING_BMSG','HFM_AR_AGING_BSSG','HFM_BS_BMSG_J_D','HFM_BS_BSSG_J_D','HFM_DEF_REV_BMSG_J_D','HFM_DEF_REV_BSSG_J_D','HFM_REV_BMSG_J_D','HFM_REV_BSSG_J_D'"


def writeToFile(strPath, strFile, strBuf, strFlag):
    strFilePath = strPath + "/" + strFile
    objFile = open(strFilePath, strFlag)
    objFile.write(strBuf + "\n")
    objFile.close()    
    return "ok"

    
strOutboxPath = fdmContext["OUTBOXDIR"] + "/"
strInboxPath = fdmContext["INBOXDIR"]

dirStruct = strInboxPath + "/" + "Staging" + "/"

nDataKey = 0
strDATAKEYSQL = "SELECT MAX(DATAKEY) as DATAKEYVAL from tDATAMAP"
rsDataKey = fdmAPI.executeQuery (strDATAKEYSQL, [])
strDatakey = "1"
strRecCount = 0
while (rsDataKey.next()):
    strDatakey = rsDataKey.getString("DATAKEYVAL")

nDataKey = long(float(strDatakey))
XXX = writeToFile(strOutboxPath,"TEST.log",strDATAKEYSQL,"w")
XXX = writeToFile(strOutboxPath,"TEST.log",str(nDataKey),"a")

for file in os.listdir(dirStruct):
    if isfile(dirStruct+file):
        strFileName = str(file)
        firstPos = strFileName.find("_")
        secondPos = strFileName.find("_",firstPos+1)
        ThirdPos = strFileName.find("_",secondPos+1)
        FouthPos = strFileName.find("_",ThirdPos+1)
        lengthstr = len(strFileName)-4
        strDimName = strFileName[FouthPos+1:lengthstr]

        isDimExists = 0
        strLocID = 1
        if DimDict.has_key(strDimName):
            strDimName = DimDict[strDimName]
            #strLocKeyList = "15"
            #retrieve the partition key list from the partition names
            strLocKey = "Select listagg(partitionkey,',') within group (order by partitionkey) as LOCKEY  from TPOVPARTITION where partname IN ( " + str(strLocNameList) + ")"
            XXX = writeToFile(strOutboxPath,"TEST.log",strLocKey,"a")
            rsA2 = fdmAPI.executeQuery(strLocKey, [])
            if rsA2.next():
                strLocKeyList = rsA2.getString("LOCKEY")
            fdmAPI.closeConnection() 
            
            strLocKeyArray = strLocKeyList.split(",")
            if os.path.isfile(join(dirStruct,file)):
                objdataFile = open(dirStruct+file,'r')
                LineContent = objdataFile.readlines()
                XXX = writeToFile(strOutboxPath,"TEST.log","-----------------------Script Begning Preparing the list to update the source Keys's--------------------------------","w")
                Count = 1
                strAllSrcKey = ""
                strAllMaps = ""
                DeleteList = ""
                strTableCommand = "INTO TDATAMAP (PARTITIONKEY,DIMNAME,SRCKEY,TARGKEY,DATAKEY,TDATAMAPTYPE,system_generated_flag) VALUES \n"
                for strLocID in strLocKeyArray:
                    strAllSrcKey = ""
                    strAllMaps = ""
                    DeleteList = ""
                    for strlines in LineContent:
                        if strlines.find(",") > 0:
                            strSrcKey = strlines.split(",")[0].strip().upper()
                            strTgtKey = strlines.split(",")[1].strip().upper()
                            if len(DeleteList) > 0:
                                DeleteList = DeleteList + ",'" + strSrcKey + "'"
                            else:
                                DeleteList = "'" + strSrcKey + "'"
                            if Count == 1:
                                strAllSrcKey = "'" + strSrcKey + "'"
                                strAllMaps = strTableCommand + " (" + str(strLocID) + ",'" + strDimName + "' , '" +  strSrcKey  + "' , '" + strTgtKey.strip() + "'," + str(nDataKey) + ", 'ERP','N') \n"
                            else:
                                strAllSrcKey = strAllSrcKey + ",'" + strSrcKey + "'" 
                                strAllMaps = strAllMaps + strTableCommand + " (" + str(strLocID) + ",'" + strDimName + "' , '" +  strSrcKey  + "' , '" + strTgtKey + "'," + str(nDataKey) + ", 'ERP','N') \n"
                            Count = Count + 1
                            strRecCount = strRecCount + 1
                            nDataKey = nDataKey + 1
                            if strRecCount == 1000 or strRecCount > 1000 :
                                StrDeleteSQL = "DELETE FROM TDATAMAP WHERE PARTITIONKEY IN ( " + str(strLocID) + " ) AND UPPER(DIMNAME) = '" + strDimName + "' AND SRCKEY IN ( " + str(DeleteList) + ")"
                                strInsertSQL = "Insert ALL" + "\n" + strAllMaps + " \n Select * from dual"
                                if len(DeleteList.strip()) > 0 :
                                    fdmAPI.executeDML(StrDeleteSQL, [], False)
                                    fdmAPI.commitTransaction()
                                fdmAPI.executeDML(strInsertSQL, [], False)
                                fdmAPI.commitTransaction()
                                fdmAPI.closeConnection()
                                DeleteList = ""
                                strAllMaps = ""
                                Count = 1
                                strRecCount = 0

                    StrDeleteSQL = "DELETE FROM TDATAMAP WHERE PARTITIONKEY IN ( " + str(strLocID) + " ) AND UPPER(DIMNAME) = '" + strDimName + "' AND SRCKEY IN ( " + str(DeleteList) + ")"
                    strInsertSQL = "Insert ALL" + "\n" + strAllMaps + " \n Select * from dual"
                    XXX = writeToFile(strOutboxPath,"TEST.log","***********************Generated SQL's*************************","a")
                    XXX = writeToFile(strOutboxPath,"TEST.log","=====================Insert SQL================================","a")
                    XXX = writeToFile(strOutboxPath,"TEST.log",strInsertSQL,"a")
                    XXX = writeToFile(strOutboxPath,"TEST.log","=====================Delete SQL================================","a")
                    XXX = writeToFile(strOutboxPath,"TEST.log",StrDeleteSQL,"a")
                    #                        Sectio to excute the generated SQL on FDMEE DB to update the mps will be enable once the SQL are varified and syntatical error free
                    if len(DeleteList.strip()) > 0 :
                        fdmAPI.executeDML(StrDeleteSQL, [], False)
                        fdmAPI.commitTransaction()
                    fdmAPI.executeDML(strInsertSQL, [], False)
                    fdmAPI.commitTransaction()
                    fdmAPI.closeConnection()
        else:
            XXX = writeToFile(strOutboxPath,"TEST.log","Given Dimension does not Exists in the Application","a")


REV_CON_CURR
import os,fnmatch
import os.path
from os.path import isfile, join

DimDict = {"SEGMENT":"UD2","GEOGRAPHY":"UD4"} #,"ENTITY":"ENTITY","CUSTOM1":"UD1","CUSTOM2":"UD2","CUSTOM3":"UD3","CUSTOM4":"UD4","CUSTOM5":"UD5","CUSTOM6":"UD6","ICP":"ICP"}
#list of locations to duplicate the insert statements
strLocNameList = "'HFM_REV_CON_CUR'"

#strLocNameList = "'HFM_AR_AGING_BMSG','HFM_AR_AGING_BSSG','HFM_BS_BMSG_J_D','HFM_BS_BSSG_J_D','HFM_DEF_REV_BMSG_J_D','HFM_DEF_REV_BSSG_J_D','HFM_REV_BMSG_J_D','HFM_REV_BSSG_J_D'"


def writeToFile(strPath, strFile, strBuf, strFlag):
    strFilePath = strPath + "/" + strFile
    objFile = open(strFilePath, strFlag)
    objFile.write(strBuf + "\n")
    objFile.close()    
    return "ok"

    
strOutboxPath = fdmContext["OUTBOXDIR"] + "/"
strInboxPath = fdmContext["INBOXDIR"]

dirStruct = strInboxPath + "/" + "Staging" + "/"

nDataKey = 0
strDATAKEYSQL = "SELECT MAX(DATAKEY) as DATAKEYVAL from tDATAMAP"
rsDataKey = fdmAPI.executeQuery (strDATAKEYSQL, [])
strDatakey = "1"
strRecCount = 0
while (rsDataKey.next()):
    strDatakey = rsDataKey.getString("DATAKEYVAL")

nDataKey = long(float(strDatakey))
XXX = writeToFile(strOutboxPath,"TEST.log",strDATAKEYSQL,"w")
XXX = writeToFile(strOutboxPath,"TEST.log",str(nDataKey),"a")

for file in os.listdir(dirStruct):
    if isfile(dirStruct+file):
        strFileName = str(file)
        firstPos = strFileName.find("_")
        secondPos = strFileName.find("_",firstPos+1)
        ThirdPos = strFileName.find("_",secondPos+1)
        FouthPos = strFileName.find("_",ThirdPos+1)
        lengthstr = len(strFileName)-4
        strDimName = strFileName[FouthPos+1:lengthstr]

        isDimExists = 0
        strLocID = 1
        if DimDict.has_key(strDimName):
            strDimName = DimDict[strDimName]
            #strLocKeyList = "15"
            #retrieve the partition key list from the partition names
            strLocKey = "Select listagg(partitionkey,',') within group (order by partitionkey) as LOCKEY  from TPOVPARTITION where partname IN ( " + str(strLocNameList) + ")"
            XXX = writeToFile(strOutboxPath,"TEST.log",strLocKey,"a")
            rsA2 = fdmAPI.executeQuery(strLocKey, [])
            if rsA2.next():
                strLocKeyList = rsA2.getString("LOCKEY")
            fdmAPI.closeConnection() 
            
            strLocKeyArray = strLocKeyList.split(",")
            if os.path.isfile(join(dirStruct,file)):
                objdataFile = open(dirStruct+file,'r')
                LineContent = objdataFile.readlines()
                XXX = writeToFile(strOutboxPath,"TEST.log","-----------------------Script Begning Preparing the list to update the source Keys's--------------------------------","w")
                Count = 1
                strAllSrcKey = ""
                strAllMaps = ""
                DeleteList = ""
                strTableCommand = "INTO TDATAMAP (PARTITIONKEY,DIMNAME,SRCKEY,TARGKEY,DATAKEY,TDATAMAPTYPE,system_generated_flag) VALUES \n"
                for strLocID in strLocKeyArray:
                    strAllSrcKey = ""
                    strAllMaps = ""
                    DeleteList = ""
                    for strlines in LineContent:
                        if strlines.find(",") > 0:
                            strSrcKey = strlines.split(",")[0].strip().upper()
                            strTgtKey = strlines.split(",")[1].strip().upper()
                            if len(DeleteList) > 0:
                                DeleteList = DeleteList + ",'" + strSrcKey + "'"
                            else:
                                DeleteList = "'" + strSrcKey + "'"
                            if Count == 1:
                                strAllSrcKey = "'" + strSrcKey + "'"
                                strAllMaps = strTableCommand + " (" + str(strLocID) + ",'" + strDimName + "' , '" +  strSrcKey  + "' , '" + strTgtKey.strip() + "'," + str(nDataKey) + ", 'ERP','N') \n"
                            else:
                                strAllSrcKey = strAllSrcKey + ",'" + strSrcKey + "'" 
                                strAllMaps = strAllMaps + strTableCommand + " (" + str(strLocID) + ",'" + strDimName + "' , '" +  strSrcKey  + "' , '" + strTgtKey + "'," + str(nDataKey) + ", 'ERP','N') \n"
                            Count = Count + 1
                            strRecCount = strRecCount + 1
                            nDataKey = nDataKey + 1
                            if strRecCount == 1000 or strRecCount > 1000 :
                                StrDeleteSQL = "DELETE FROM TDATAMAP WHERE PARTITIONKEY IN ( " + str(strLocID) + " ) AND UPPER(DIMNAME) = '" + strDimName + "' AND SRCKEY IN ( " + str(DeleteList) + ")"
                                strInsertSQL = "Insert ALL" + "\n" + strAllMaps + " \n Select * from dual"
                                if len(DeleteList.strip()) > 0 :
                                    fdmAPI.executeDML(StrDeleteSQL, [], False)
                                    fdmAPI.commitTransaction()
                                fdmAPI.executeDML(strInsertSQL, [], False)
                                fdmAPI.commitTransaction()
                                fdmAPI.closeConnection()
                                DeleteList = ""
                                strAllMaps = ""
                                Count = 1
                                strRecCount = 0
                                
                    StrDeleteSQL = "DELETE FROM TDATAMAP WHERE PARTITIONKEY IN ( " + str(strLocID) + " ) AND UPPER(DIMNAME) = '" + strDimName + "' AND SRCKEY IN ( " + str(DeleteList) + ")"
                    strInsertSQL = "Insert ALL" + "\n" + strAllMaps + " \n Select * from dual"
                    XXX = writeToFile(strOutboxPath,"TEST.log","***********************Generated SQL's*************************","a")
                    XXX = writeToFile(strOutboxPath,"TEST.log","=====================Insert SQL================================","a")
                    XXX = writeToFile(strOutboxPath,"TEST.log",strInsertSQL,"a")
                    XXX = writeToFile(strOutboxPath,"TEST.log","=====================Delete SQL================================","a")
                    XXX = writeToFile(strOutboxPath,"TEST.log",StrDeleteSQL,"a")
                    #                        Sectio to excute the generated SQL on FDMEE DB to update the mps will be enable once the SQL are varified and syntatical error free
                    if len(DeleteList.strip()) > 0 :
                        fdmAPI.executeDML(StrDeleteSQL, [], False)
                        fdmAPI.commitTransaction()
                    fdmAPI.executeDML(strInsertSQL, [], False)
                    fdmAPI.commitTransaction()
                    fdmAPI.closeConnection()
        else:
            XXX = writeToFile(strOutboxPath,"TEST.log","Given Dimension does not Exists in the Application","a")
 

 

def  deriveCurrency(strfield, strrecord):
    return strfield[0:3]

 

def  trimAttr1(strfield, strrecord):
    #strfield = strfield.strip(" ")
    return strfield[0:20]