package com.java110; import static org.junit.Assert.assertTrue; import org.junit.Test; /** * Unit test for simple App. */ public class AppTest { /** * Rigorous Test :-) */ @Test public void shouldAnswerWithTrue() { String xml = "\n" + "\n" + "\t\n" + "\t\t0\n" + "\t\t1000000001201805072111632360\n" + "\t\t1\n" + "\t\t100000\n" + "\t\t1000000001\n" + "\t\t******\n" + "\t\t600405\n" + "\t\t6004050001\n" + "\t\tBUS35011\n" + "\t\tSVC80003\n" + "\t\tSVC3300620121001\n" + "\t\t20180507111632\n" + "\t\n" + "\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t100\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t8630000\n" + "\t\t\t\t\n" + "\t\t\t\t:getCustIdByExtId(8630100,,1000018854710000,$-1$)\n" + "\t\t\t\tT\n" + "\t\t\t\t$100000$\n" + "\t\t\t\tQH201800000031-1(1)\n" + "\t\t\t\t发起人名称\n" + "\t\t\t\t发起人联系电话\n" + "\t\t\t\t发起人EMAIL\n" + "\t\t\t\t原客户订单标识\n" + "\t\t\t\t客户名称\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t200\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t8630000\n" + "\t\t\t\t\n" + "\t\t\t\t20180503102650\n" + "\t\t\t\t453289158\n" + "\t\t\t\t$100000$\n" + "\t\t\t\t4010100000\n" + "\t\t\t\t新装\n" + "\t\t\t\t\n" + "\t\t\t\t提供测试报告\n" + "\t\t\t\t要求完成日期\n" + "\t\t\t\t优先级别\n" + "\t\t\t\t加急类型\n" + "\t\t\t\t割接截址时间\n" + "\t\t\t\t是否等待起租\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t300\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289158\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t\n" + "\t\t\t\t8630000\n" + "\t\t\t\t13410725\n" + "\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" + "\t\t\t\t146748949\n" + "\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" + "\t\t\t\t00103022000000000000\n" + "\t\t\t\t\n" + "\t\t\t\t2210200301100007\n" + "\t\t\t\t:getCustIdByExtId(8630100,,1000018854710000,$-1$)\n" + "\t\t\t\t\n" + "\t\t\t\t\n" + "\t\t\t\t接入类型 \n" + "\t\t\t\tMTU数值\n" + "\t\t\t\t起租/退租系数\n" + "\t\t\t\t电路类别\n" + "\t\t\t\t电路类型\n" + "\t\t\t\t付费方式\n" + "\t\t\t\t受理运营商\n" + "\t\t\t\t租用性质\n" + "\t\t\t\t租用期限\n" + "\t\t\t\t速率\n" + "\t\t\t\t电路维护等级\n" + "\t\t\t\t是否公免电路\n" + "\t\t\t\tCTYUN账号\n" + "\t\t\t\t云资源池站点\n" + "\t\t\t\t付费运营商\n" + "\t\t\t\t运营商的流水号\n" + "\t\t\t\t主调局(MAIN_ORG)\n" + "\t\t\t\t下单局\n" + "\t\t\t\t业务类型\n" + "\t\t\t\t项目编号\n" + "\t\t\t\t合同编号\n" + "\t\t\t\t公免文号\n" + "\t\t\t\t是否接入云\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t400\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289158\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t3003000\n" + "\t\t\t\t50\n" + "\t\t\t\t:getProdInstAcctIdByExtId(8630000,,148890694,$-70001$)\n" + "\t\t\t\t5XC\n" + "\t\t\t\t148890694\n" + "\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" + "\t\t\t\t\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费周期\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t3003000\n" + "\t\t\t\t50\n" + "\t\t\t\t:getProdInstAcctIdByExtId(8630000,,148890695,$-70001$)\n" + "\t\t\t\t5XC\n" + "\t\t\t\t148890695\n" + "\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" + "\t\t\t\t\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费周期\n" + "\t\t\t\t收费城市\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t500\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289158\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t8630000\n" + "\t\t\t\t1\n" + "\t\t\t\t祁生海\n" + "\t\t\t\t17797088770\n" + "\t\t\t\t:getProdInstPartyId(8630000,,146748949,1,489491,$-70001$)\n" + "\t\t\t\t489491\n" + "\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" + "\t\t\t\tEMAIL\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t8630000\n" + "\t\t\t\t6\n" + "\t\t\t\t才金花\n" + "\t\t\t\t18997072118\n" + "\t\t\t\t:getProdInstPartyId(8630000,,146748949,6,qhdkh002,$-70003$)\n" + "\t\t\t\tqhdkh002\n" + "\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" + "\t\t\t\tEMAIL\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t8630000\n" + "\t\t\t\t7\n" + "\t\t\t\t才金花\n" + "\t\t\t\t18997072118\n" + "\t\t\t\t:getProdInstPartyId(8630000,,146748949,7,qhdkh002,$-70003$)\n" + "\t\t\t\tqhdkh002\n" + "\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" + "\t\t\t\tEMAIL\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t600\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t8630100\n" + "\t\t\t\t\n" + "\t\t\t\t20180503102650\n" + "\t\t\t\t453289159\n" + "\t\t\t\t$100000$\n" + "\t\t\t\t4010100000\n" + "\t\t\t\t新装\n" + "\t\t\t\t\n" + "\t\t\t\t提供测试报告\n" + "\t\t\t\t要求完成日期\n" + "\t\t\t\t优先级别\n" + "\t\t\t\t加急类型\n" + "\t\t\t\t割接截址时间\n" + "\t\t\t\t是否等待起租\n" + "\t\t\t\t业务类型发生端\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t700\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289159\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t\n" + "\t\t\t\t8630100\n" + "\t\t\t\t93410727\n" + "\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" + "\t\t\t\t146748950\n" + "\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" + "\t\t\t\t00103022000000000001\n" + "\t\t\t\t\n" + "\t\t\t\t2210200301100007\n" + "\t\t\t\t:getCustIdByExtId(8630100,,1000018854710000,$-1$)\n" + "\t\t\t\t青海省西宁市城西区西关大街81号\n" + "\t\t\t\t\n" + "\t\t\t\t运营商\n" + "\t\t\t\t端口类型\n" + "\t\t\t\t端口速率\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t800\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289159\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t3001000\n" + "\t\t\t\t100\n" + "\t\t\t\t:getProdInstAcctIdByExtId(8630100,,148890696,$-70001$)\n" + "\t\t\t\t5XC\n" + "\t\t\t\t148890696\n" + "\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" + "\t\t\t\t\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费周期\n" + "\t\t\t\t收费城市\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t3009000\n" + "\t\t\t\t100\n" + "\t\t\t\t:getProdInstAcctIdByExtId(8630100,,148890697,$-70001$)\n" + "\t\t\t\t5XC\n" + "\t\t\t\t148890697\n" + "\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" + "\t\t\t\t\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费周期\n" + "\t\t\t\t收费城市\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t900\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289159\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t8630100\n" + "\t\t\t\t5\n" + "\t\t\t\t祁生海\n" + "\t\t\t\t 17797088770\n" + "\t\t\t\t:getProdInstPartyId(8630100,,146748950,5,489505,$-70003$)\n" + "\t\t\t\t489505\n" + "\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" + "\t\t\t\tEMAIL\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t1000\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289159\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t2008000\n" + "\t\t\t\t11\n" + "\t\t\t\t160000\n" + "\t\t\t\t0\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t一口价标识\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费形式\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t2009000\n" + "\t\t\t\t11\n" + "\t\t\t\t160000\n" + "\t\t\t\t0\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t一口价标识\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费形式\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t2002000\n" + "\t\t\t\t11\n" + "\t\t\t\t160000\n" + "\t\t\t\t0\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t一口价标识\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费形式\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t2006000\n" + "\t\t\t\t11\n" + "\t\t\t\t160000\n" + "\t\t\t\t0\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t一口价标识\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费形式\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t2005000\n" + "\t\t\t\t11\n" + "\t\t\t\t160000\n" + "\t\t\t\t0\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t一口价标识\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费形式\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t2012000\n" + "\t\t\t\t11\n" + "\t\t\t\t160000\n" + "\t\t\t\t0\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t一口价标识\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费形式\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t1100\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t8110105\n" + "\t\t\t\t\n" + "\t\t\t\t20180503102650\n" + "\t\t\t\t453289160\n" + "\t\t\t\t$100000$\n" + "\t\t\t\t4010100000\n" + "\t\t\t\t新装\n" + "\t\t\t\t\n" + "\t\t\t\t提供测试报告\n" + "\t\t\t\t要求完成日期\n" + "\t\t\t\t优先级别\n" + "\t\t\t\t加急类型\n" + "\t\t\t\t割接截址时间\n" + "\t\t\t\t是否等待起租\n" + "\t\t\t\t业务类型发生端\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t1200\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289160\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t\n" + "\t\t\t\t8110105\n" + "\t\t\t\t93410727\n" + "\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" + "\t\t\t\t146748951\n" + "\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" + "\t\t\t\t00103022000000000001\n" + "\t\t\t\t\n" + "\t\t\t\t2210200301100007\n" + "\t\t\t\t:getCustIdByExtId(8630100,,1000018854710000,$-1$)\n" + "\t\t\t\t北京市朝阳区北辰西路12号数字北京大厦C座4层IPTV播控中心\n" + "\t\t\t\t\n" + "\t\t\t\t端口类型 \n" + "\t\t\t\t运营商\n" + "\t\t\t\t端口速率\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t1300\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289160\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t3001000\n" + "\t\t\t\t100\n" + "\t\t\t\t:getProdInstAcctIdByExtId(8110105,,148890698,$-70001$)\n" + "\t\t\t\t5XC\n" + "\t\t\t\t148890698\n" + "\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" + "\t\t\t\t\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费周期\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t3009000\n" + "\t\t\t\t100\n" + "\t\t\t\t:getProdInstAcctIdByExtId(8110105,,148890699,$-70001$)\n" + "\t\t\t\t5XC\n" + "\t\t\t\t148890699\n" + "\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" + "\t\t\t\t\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费周期\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t1400\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289160\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t8110105\n" + "\t\t\t\t5\n" + "\t\t\t\t付英武\n" + "\t\t\t\t 13811985150\n" + "\t\t\t\t:getProdInstPartyId(8110105,,146748951,5,489515,$-70003$)\n" + "\t\t\t\t489515\n" + "\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" + "\t\t\t\tEMAIL\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t1500\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289160\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t2008000\n" + "\t\t\t\t11\n" + "\t\t\t\t160000\n" + "\t\t\t\t0\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t一口价标识\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费形式\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t2009000\n" + "\t\t\t\t11\n" + "\t\t\t\t160000\n" + "\t\t\t\t0\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t一口价标识\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费形式\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t2002000\n" + "\t\t\t\t11\n" + "\t\t\t\t160000\n" + "\t\t\t\t0\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t一口价标识\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费形式\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t2006000\n" + "\t\t\t\t11\n" + "\t\t\t\t160000\n" + "\t\t\t\t0\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t一口价标识\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费形式\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t2005000\n" + "\t\t\t\t11\n" + "\t\t\t\t160000\n" + "\t\t\t\t0\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t一口价标识\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费形式\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t2012000\n" + "\t\t\t\t11\n" + "\t\t\t\t160000\n" + "\t\t\t\t0\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t收费城市\n" + "\t\t\t\t一口价标识\n" + "\t\t\t\t收费运营商\n" + "\t\t\t\t收费形式\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t1600\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289158\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" + "\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" + "\t\t\t\t100000\n" + "\t\t\t\t\n" + "\t\t\t\t1400\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" + "\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" + "\t\t\t\t100000\n" + "\t\t\t\t\n" + "\t\t\t\t1500\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t1700\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t8630000\n" + "\t\t\t\t\n" + "\t\t\t\t20180503102650\n" + "\t\t\t\t453289161\n" + "\t\t\t\t$100000$\n" + "\t\t\t\t3010100000\n" + "\t\t\t\t订购\n" + "\t\t\t\t\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t1800\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289161\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t8630000\n" + "\t\t\t\t272121238\n" + "\t\t\t\t:getCustIdByExtId(8630100,,1000018854710000,$-1$)\n" + "\t\t\t\t134037637\n" + "\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" + "\t\t\t\t2210200301100007\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t1900\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289161\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" + "\t\t\t\t2100\n" + "\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" + "\t\t\t\t2101\n" + "\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" + "\t\t\t\t2102\n" + "\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" + "\t\t\t\n" + "\t\t\n" + "\t\t\n" + "\t\t\t\n" + "\t\t\t\t2000\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t453289161\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t11\n" + "\t\t\t\t3003000\n" + "\t\t\t\t208330\n" + "\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" + "\t\t\t\t208330\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t:getProdInstIdByExtId(8630000,,146748949,$-40001$)\n" + "\t\t\t\t:getProdOfferFeeIdByExtId(8630000,,272121238,146748949,$-50002$)\n" + "\t\t\t\t结出单位\n" + "\t\t\t\t一口价标志\n" + "\t\t\t\t结出金额币种\n" + "\t\t\t\t结出金额\n" + "\t\t\t\t返点比例\n" + "\t\t\t\t返点客户\n" + "\t\t\t\t返点类型\n" + "\t\t\t\tSLA加收比例\n" + "\t\t\t\t返点单位\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t11\n" + "\t\t\t\t3001000\n" + "\t\t\t\t0\n" + "\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" + "\t\t\t\t:getProdOfferFeeIdByExtId(8630000,,272121238,146748949,$-50002$)\n" + "\t\t\t\t结出单位\n" + "\t\t\t\t一口价标志\n" + "\t\t\t\t结出金额币种\n" + "\t\t\t\t结出金额\n" + "\t\t\t\t返点比例\n" + "\t\t\t\t返点客户\n" + "\t\t\t\t返点类型\n" + "\t\t\t\tSLA加收比例\n" + "\t\t\t\t返点单位\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t11\n" + "\t\t\t\t3009000\n" + "\t\t\t\t0\n" + "\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t:getProdInstIdByExtId(8630100,,146748950,$-30001$)\n" + "\t\t\t\t:getProdOfferFeeIdByExtId(8630000,,272121238,146748949,$-50002$)\n" + "\t\t\t\t结出单位\n" + "\t\t\t\t一口价标志\n" + "\t\t\t\t结出金额币种\n" + "\t\t\t\t结出金额\n" + "\t\t\t\t返点比例\n" + "\t\t\t\t返点客户\n" + "\t\t\t\t返点类型\n" + "\t\t\t\tSLA加收比例\n" + "\t\t\t\t返点单位\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t11\n" + "\t\t\t\t3001000\n" + "\t\t\t\t0\n" + "\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" + "\t\t\t\t:getProdOfferFeeIdByExtId(8630000,,272121238,146748949,$-50002$)\n" + "\t\t\t\t结出单位\n" + "\t\t\t\t一口价标志\n" + "\t\t\t\t结出金额币种\n" + "\t\t\t\t结出金额\n" + "\t\t\t\t返点比例\n" + "\t\t\t\t返点客户\n" + "\t\t\t\t返点类型\n" + "\t\t\t\tSLA加收比例\n" + "\t\t\t\t返点单位\n" + "\t\t\t\n" + "\t\t\t\n" + "\t\t\t\t11\n" + "\t\t\t\t3009000\n" + "\t\t\t\t0\n" + "\t\t\t\t:getProdOfferInstIdByExtId(8630000,,272121238,$-50001$)\n" + "\t\t\t\t0\n" + "\t\t\t\t1\n" + "\t\t\t\t0\n" + "\t\t\t\t:getProdInstIdByExtId(8110105,,146748951,$-20001$)\n" + "\t\t\t\t:getProdOfferFeeIdByExtId(8630000,,272121238,146748949,$-50002$)\n" + "\t\t\t\t结出单位\n" + "\t\t\t\t一口价标志\n" + "\t\t\t\t结出金额币种\n" + "\t\t\t\t结出金额\n" + "\t\t\t\t返点比例\n" + "\t\t\t\t返点客户\n" + "\t\t\t\t返点类型\n" + "\t\t\t\tSLA加收比例\n" + "\t\t\t\t返点单位\n" + "\t\t\t\n" + "\t\t\n" + "\t\n" + "\n"; String logic = "BUS35011 ||{BUS50001 && {3010100002|| 4040100043|| 4041000001|| 4040100027|| 3020100000|| 4040100005|| 4020100000|| 5010200000|| 5010100001}}"; System.out.println(logicCalculus(xml,logic)); } /** * 对逻辑字符串进行分析和运算 * * @param sooXml * @param keyIdentifyLogicInfo * @return * @throws */ public static boolean logicCalculus(String sooXml, String keyIdentifyLogicInfo) { final String PART_STRING_DBL_AMPERSAND = "&&"; //表示字符串:&& final String PART_STRING_DBL_VERTICAL_BAR = "||"; //表示字符串:|| final String PART_STRING_L_BIG_BRACKET = "{"; //表示字符串:{ final String PART_STRING_R_BIG_BRACKET = "}"; //表示字符串:} final String PRVT_TRUE_STR = "1"; final String PRVT_FALSE_STR = "0"; final String PRVT_OR_BLANK_STR = " || "; String keyIdentifyLogicStr = keyIdentifyLogicInfo; //动态变化的关键判断逻辑信息 while (keyIdentifyLogicStr.contains(PART_STRING_L_BIG_BRACKET) && keyIdentifyLogicStr.contains(PART_STRING_R_BIG_BRACKET) || keyIdentifyLogicStr.contains(PART_STRING_DBL_AMPERSAND) || keyIdentifyLogicStr.contains(PART_STRING_DBL_VERTICAL_BAR) || !PRVT_TRUE_STR.equals(keyIdentifyLogicStr) && !PRVT_FALSE_STR.equals(keyIdentifyLogicStr)) { int leftBigBracketPosition = 0; //最内左大括号的位置 int rightBigBracketPosition = 0; //最内右大括号的位置 String curProcessStr = keyIdentifyLogicStr; //当前要处理的字符串片断 if (keyIdentifyLogicStr.contains(PART_STRING_L_BIG_BRACKET) && keyIdentifyLogicStr.contains(PART_STRING_R_BIG_BRACKET)) { leftBigBracketPosition = keyIdentifyLogicStr.lastIndexOf(PART_STRING_L_BIG_BRACKET); rightBigBracketPosition = keyIdentifyLogicStr .indexOf(PART_STRING_R_BIG_BRACKET, leftBigBracketPosition); curProcessStr = keyIdentifyLogicStr.substring(leftBigBracketPosition + 1, rightBigBracketPosition); } String rsltLogicStr = ""; if (curProcessStr.contains(PART_STRING_DBL_VERTICAL_BAR)) { String[] orLogicStrs = curProcessStr.split("\\|\\|"); //“或”逻辑信息 int orLogicStrNum = orLogicStrs.length; String curOrLogicStr = ""; String curAndLogicStr = ""; String orLogicStr = ""; String andLogicStr = ""; boolean hasTrue = false; for (int i = 0; i < orLogicStrNum; i++) { curOrLogicStr = orLogicStrs[i]; if (null != curOrLogicStr) { curOrLogicStr = curOrLogicStr.trim(); } if (null == curOrLogicStr || "".equals(curOrLogicStr)) { System.out.println("字段配置错误,两个||之间不能没有信息"); return false; } orLogicStr = PRVT_FALSE_STR; if (curOrLogicStr.contains(PART_STRING_DBL_AMPERSAND)) { String[] andLogicStrs = curOrLogicStr.split(PART_STRING_DBL_AMPERSAND); //“与”逻辑信息 int andLogicStrNum = andLogicStrs.length; andLogicStr = PRVT_TRUE_STR; for (int j = 0; j < andLogicStrNum; j++) { curAndLogicStr = andLogicStrs[j]; if (null != curAndLogicStr) { curAndLogicStr = curAndLogicStr.trim(); } if (null == curAndLogicStr || "".equals(curAndLogicStr)) { System.out.println("字段配置错误,两个&&之间不能没有信息"); return false; } if (!sooXml.contains(curAndLogicStr) || PRVT_FALSE_STR.equals(curAndLogicStr)) { andLogicStr = PRVT_FALSE_STR; break; } } if ("".equals(rsltLogicStr)) { rsltLogicStr = andLogicStr; } else { rsltLogicStr += PRVT_OR_BLANK_STR + andLogicStr; } } else { if (sooXml.contains(curOrLogicStr) && !"0".equals(curOrLogicStr) || PRVT_TRUE_STR.equals(curOrLogicStr)) { if (!hasTrue) { orLogicStr = PRVT_TRUE_STR; if ("".equals(rsltLogicStr)) { rsltLogicStr = orLogicStr; } else { rsltLogicStr += PRVT_OR_BLANK_STR + orLogicStr; } hasTrue = true; } } } } if (!hasTrue) { if ("".equals(rsltLogicStr)) { rsltLogicStr = orLogicStr; } else { rsltLogicStr += PRVT_OR_BLANK_STR + orLogicStr; } } } else if (curProcessStr.contains(PART_STRING_DBL_AMPERSAND)) { String[] andLogicStrs = curProcessStr.split(PART_STRING_DBL_AMPERSAND); //“与”逻辑信息 int andLogicStrNum = andLogicStrs.length; String curAndLogicStr = ""; String andLogicStr = PRVT_TRUE_STR; for (int j = 0; j < andLogicStrNum; j++) { curAndLogicStr = andLogicStrs[j]; if (null != curAndLogicStr) { curAndLogicStr = curAndLogicStr.trim(); } if (null == curAndLogicStr || "".equals(curAndLogicStr)) { System.out.println("字段配置错误,两个&&之间不能没有信息"); return false; } if (!sooXml.contains(curAndLogicStr) || PRVT_FALSE_STR.equals(curAndLogicStr)) { andLogicStr = PRVT_FALSE_STR; break; } } rsltLogicStr = andLogicStr; } else { String andLogicStr = PRVT_TRUE_STR; if (!sooXml.contains(curProcessStr) || PRVT_FALSE_STR.equals(curProcessStr)) { andLogicStr = PRVT_FALSE_STR; } rsltLogicStr = andLogicStr; } System.out.println("替换前判断逻辑字符串(keyIdentifyLogicStr) :{}"+ keyIdentifyLogicStr); System.out.println("当前用于替换的逻辑字符串(rsltLogicStr) :{}"+rsltLogicStr); if (0 != rightBigBracketPosition) { keyIdentifyLogicStr = keyIdentifyLogicStr.substring(0, leftBigBracketPosition) + rsltLogicStr + keyIdentifyLogicStr.substring(rightBigBracketPosition + 1); } else { keyIdentifyLogicStr = rsltLogicStr; } System.out.println("替换后判断逻辑字符串(keyIdentifyLogicStr) :{}"+keyIdentifyLogicStr); } if (PRVT_TRUE_STR.equals(keyIdentifyLogicStr)) { return true; } return false; } }