<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    keep moving!

    We must not cease from exploration. And the end of all our exploring will be to arrive where we began and to know the place for the first time.
    隨筆 - 37, 文章 - 2, 評論 - 3, 引用 - 0
    數據加載中……

    數據文件比較

    def dbDefInfo = new XmlParser().parse(new File(".\\DbDef.xml"))
    def file1Path = ".\\fullConfig1.xml"
    def file2Path = ".\\fullConfig2.xml"

    println "~~~~~~~~~~~~~~~~~~~~~~~~~~  $file1Path to $file2Path   ~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n"
    compareXml(new File(file1Path),new File(file2Path),dbDefInfo)
    println "\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~   $file2Path to $file1Path   ~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n"
    compareXml(new File(file2Path),new File(file1Path),dbDefInfo)


    println 'fineshed'

    def compareXml(file1,file2,dbDef){
        def tablelist1 = new XmlParser().parse(file1)
        def tablelist2 = new XmlParser().parse(file2)

        tablelist1.DBTABLE.each {dbtable1 ->
            for(dbRecord in dbtable1.DBRECORD){
                def otherDbRecord = findDbRecord(dbtable1,dbRecord,tablelist2,dbDef)
                compareDbRecord(dbRecord,otherDbRecord)
             }
        }
    }

    def findDbRecord(dbtable1,dbRecord,tablelist2,dbDef){
        def tableDef = dbDef.Table.find {"${it.@Name}" == "${dbtable1.@name}"}
        if (tableDef == null){
            println "${dbtable1.@name} is not exist in dbdef" ;
            return null;
        }
        def priKeyMap = getPriKeyInfo(tableDef)
        def prikeyInfo = priKeyMap["${dbtable1.@name}"]
        def rdnMap = [:]

        dbRecord.FIELD.findAll{prikeyInfo.contains("${it.@name}")}.each{rdnMap.put("${it.@name}","${it.@value}")}
        def dbtable2 =

        tablelist2.DBTABLE.find{"${it.@name}" == "${dbtable1.@name}"}

        if(dbtable2 == null)
            return null
        else
            return dbtable2.DBRECORD.find{dbRecord2 ->
                def field2s = dbRecord2.FIELD.findAll{rdnMap.containsKey("${it.@name}") && rdnMap.get("${it.@name}") == "${it.@value}"}
                field2s.size() == rdnMap.size()
                }
    }

    def compareDbRecord(dbRecord1,dbRecord2){

        if (dbRecord2==null){
            printDbRecord(dbRecord1,dbRecord2)
            return;
        }

        def sign1 = dbRecord1.FIELD.find{filed1 ->
            dbRecord2.FIELD.find{filed2 ->
                "${filed1.@name}"=="${filed2.@name}"?"${filed1.@value}"!="${filed2.@value}":false
            }
        }

        def sign2 = dbRecord2.FIELD.find{filed1 ->
        dbRecord1.FIELD.find{filed2 ->
                "${filed1.@name}"=="${filed2.@name}"?"${filed1.@value}"!="${filed2.@value}":false
        }
    }
        if (sign1  || sign2)
        {
            printDbRecord(dbRecord1,dbRecord2)
        }
    }

    def printDbRecord(dbRecord1,dbRecord2){
        dbRecord1.FIELD.each{field ->
        field.attributes().each{print "$it.key $it.value "}
        }
        println ''
        if (dbRecord2!=null)
            dbRecord2.FIELD.each{field ->
            field.attributes().each{print "$it.key $it.value "}
        }
        println '\n'
    }

    def getPriKeyInfo(tableDef){
     def priKeyMap = [:]
     for(priKey in tableDef.PriKey){
      def tableName = "${priKey.@Name}"[0..("${priKey.@Name}".lastIndexOf("_PK")-1)]
      priKeyMap.put(tableName,priKey.PKI.collect{"${it.@Field}"})
     }
     return priKeyMap
    }

    posted on 2008-10-02 17:10 大石頭 閱讀(293) 評論(0)  編輯  收藏 所屬分類: Groovy

    主站蜘蛛池模板: 久久免费动漫品精老司机| 久久久久亚洲国产| 又黄又大的激情视频在线观看免费视频社区在线 | 一级成人a毛片免费播放| 亚洲中文字幕无码永久在线| 一级做a爱过程免费视频高清| 国产一级特黄高清免费大片| 国产亚洲精品精品精品| 国产福利免费观看| 日韩免费在线中文字幕| 亚洲一级片免费看| 美女被cao网站免费看在线看| 亚洲第一中文字幕| 亚洲成人在线免费观看| 亚洲国产成人精品激情| 在线免费视频一区| 一个人看的www免费在线视频| 亚洲精品国产精品乱码不卡√| 日韩免费无码一区二区三区| 亚洲成人高清在线观看| 好男人视频社区精品免费| 污污视频免费观看网站| 亚洲精品无码专区久久久| 久久久久免费看成人影片| 亚洲午夜一区二区三区| www亚洲一级视频com| 久久免费精品视频| 亚洲最大无码中文字幕| 国产精品亚洲产品一区二区三区 | 亚洲精品免费在线观看| 91成年人免费视频| 美女裸免费观看网站| 亚洲精品国精品久久99热一| 国产v精品成人免费视频400条| 狠狠入ady亚洲精品| 亚洲色中文字幕无码AV| 波多野结衣免费在线| 免费国产黄网站在线观看动图| 亚洲AV无码成人精品区在线观看| 久久不见久久见中文字幕免费| 免费大片av手机看片|