From 097d45c4a97b0a0e0253a7e8a76b4ac0429d9965 Mon Sep 17 00:00:00 2001 From: Emmanuel Robert Ssebaggala Date: Thu, 26 Sep 2019 00:15:19 +0300 Subject: [PATCH] Fix collection of 3GPP parameters (#21) --- dist/boda-bulkcmparser.jar | Bin 102877 -> 102879 bytes pom.xml | 2 +- .../boda_bulkcmparser/BodaBulkCMParser.java | 46 +++++------------- 3 files changed, 14 insertions(+), 34 deletions(-) diff --git a/dist/boda-bulkcmparser.jar b/dist/boda-bulkcmparser.jar index 96c8824203c51c309c1e127d1371952c98fc2d7d..6b7f04c34d99c18e1db9f0f665f6f3ef6b4715e3 100644 GIT binary patch delta 15240 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 delta 15084 zcmZ8|1yEdDuq}f_aCdii5AN>n5Zp;{7~I_kcXyXC1a}MWZowr$(D1qU{`X(iKUFi` zy>{A8JQ2~Of#QMn* z_YxIl$;JjJLkBRiXYVC-T*bgcUPW}_6YJPtjhuCi>c4FoEx#C>bw5@=ck^=MW0=0b zzkpgzJbO+*E`hG?1C^c&KO%_u^m=bLnMbABZ7A_ajU5X1UP{<#F`yx#Lo_)F+r?#} z;eiW#Yzzc$r{RHX(u@=UH!K}*dZw6}Jvg7T6Yoou#Up=Kj0LkRk;sUP+Tf5b%djhZ zUJQaE(aaEnq2hr#2JVnys*Bnwddd)1ozi_I2YZ}7ZI-!!$V6wwPEm3UzG2P*I;T_` zy_L6VNybzhKgns{1n^2(8T+cCE)HJz(sHfWpVQ}hhfsvnv>=XFmw#|2ozqoFqZZA1QcqTC8Me9+6PIQ8n-YAnOsBY zd3<)5c2%%>qqBwftXx0gw!67z(>w7F5l`MJ(GOk;D$QC&bqVb`xh7Cw9x`{#VEysk zQ7;2FQU-{5_F3;G1i$Hb7juihLlkq3LFc~af^Wq z7zwWXt_nhZ;2ZZFDqI!U8?GMTaC_jvo*s*bdt*e*u@IY<&`hg{>kT9>@Mur!=ve`b z%6ik*;}ESQw5N5GMQ{8kl6TOg!z(4G9q-vO{HdB6xYan=1)l!HbR+x+*gLe%bVH7L z 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 QP*M^=7Ixa><1~QyKXHMqg#Z8m diff --git a/pom.xml b/pom.xml index caea812..f888bff 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.bodastate.boda_bulkcmparser boda-bulkcmparser jar - 2.2.0 + 2.2.1 boda-bulkcmparser-pr http://maven.apache.org diff --git a/src/main/java/com/bodastage/boda_bulkcmparser/BodaBulkCMParser.java b/src/main/java/com/bodastage/boda_bulkcmparser/BodaBulkCMParser.java index d48750b..39dfff0 100644 --- a/src/main/java/com/bodastage/boda_bulkcmparser/BodaBulkCMParser.java +++ b/src/main/java/com/bodastage/boda_bulkcmparser/BodaBulkCMParser.java @@ -46,7 +46,7 @@ public class BodaBulkCMParser { * * Since 1.3.0 */ - final static String VERSION = "2.2.0"; + final static String VERSION = "2.2.1"; private static final Logger LOGGER = LoggerFactory.getLogger(BodaBulkCMParser.class); @@ -669,7 +669,7 @@ public void parse() throws XMLStreamException, FileNotFoundException, Unsupporte parserState = ParserStates.EXTRACTING_VALUES; } - + //Reset variables resetVariables(); @@ -1045,7 +1045,6 @@ public void endELementEvent(XMLEvent xmlEvent) } - LOGGER.debug("xmlTagStack:" + xmlTagStack.toString()); //We are at the end of in 3GPP tag if(qName.equals("attributes") && !xmlTagStack.peek().toString().startsWith("VsDataContainer")){ //Collect values for use when separateVsData is false @@ -1070,8 +1069,6 @@ public void endELementEvent(XMLEvent xmlEvent) if(parserState == ParserStates.EXTRACTING_PARAMETERS && vsDataType == null ){ updateThreeGPPAttrMap(); } - - return; } @@ -1387,8 +1384,6 @@ public void process3GPPAttributes() private void saveThreeGPPAttrValues(String mo){ threeGPPAttrValues.clear(); - LOGGER.debug("moThreeGPPAttrMap:" + moThreeGPPAttrMap.toString()); - LOGGER.debug("threeGPPAttrStack:" + threeGPPAttrStack.toString()); //Some MOs dont have 3GPP attributes e.g. the fileHeader //and the fileFooter @@ -1402,10 +1397,6 @@ private void saveThreeGPPAttrValues(String mo){ current3GPPAttrs = threeGPPAttrStack.get(depth); } - LOGGER.debug("a3GPPAtrr: " + a3GPPAtrr); - LOGGER.debug("current3GPPAttrs:" + current3GPPAttrs); - - for(int i =0; i < a3GPPAtrr.size();i++){ String aAttr = (String)a3GPPAtrr.get(i); @@ -1481,9 +1472,6 @@ public void processVendorAttributes() { Iterator> aIter = xmlAttrStack.get(depthKey).entrySet().iterator(); - LOGGER.debug( "depth:" + depth + " parentMO:" + parentMO + - " xmlAttrStack:" + xmlAttrStack.toString() + " m:" + m.toString()); - //If we dont't want to separate the vsDataMo from the 3GPP mos //strip vsData From the MOs Ids ie.e vsDataSomeMO_id becomes SomeMO_id if(separateVendorAttributes == false){ @@ -1500,18 +1488,11 @@ public void processVendorAttributes() { } } - - //LOGGER.info("parentIdValues:" + parentIdValues.toString()); //Make copy of the columns first Stack columns = new Stack(); columns = moColumns.get(vsDataType); - - //LOGGER.info("vsDataType:" + vsDataType); - //LOGGER.info("columns:" + columns.toString()); - - //Iterate through the columns already collected for (int i = 0; i < columns.size(); i++) { @@ -1549,9 +1530,6 @@ public void processVendorAttributes() { paramNames = paramNames + "," + pName; paramValues = paramValues + "," + pValue; } - - - //LOGGER.info("threeGPPAttrValues:" + threeGPPAttrValues.toString()); //If we dont't want to separate the vsDataMo from the 3GPP mos //strip vsData From the MOs, we must print the 3GPP mos here . @@ -1559,25 +1537,27 @@ public void processVendorAttributes() { //@TODO: Handle parameter file String threeGGPMo = vsDataType.replace("vsData", ""); if(separateVendorAttributes == false && xmlTagStack.contains(threeGGPMo)){ - //@TODO: comment 3GPP MO attributes and value - Iterator> aIter - = threeGPPAttrValues.entrySet().iterator(); - while (aIter.hasNext()) { - Map.Entry meMap = aIter.next(); - String pValue = toCSVFormat(meMap.getValue()); - String pName = meMap.getKey(); + //@TODO: collect 3GPP MO attributes and value + Stack _3gppAttr = moThreeGPPAttrMap.get(threeGGPMo); + for(int idx =0; idx < _3gppAttr.size(); idx++){ + String pName = _3gppAttr.get(idx).toString(); + String pValue= ""; + + //Skip _id fileds + if(pName.endsWith("_id")) continue; + + if(threeGPPAttrValues.containsKey(pName)) pValue = threeGPPAttrValues.get(pName); paramNames = paramNames + "," + pName; paramValues = paramValues + "," + pValue; } - } String csvFileName = vsDataType; //Remove vsData if we don't want to separate the 3GPP and vendor attributes if(separateVendorAttributes == false) csvFileName = csvFileName.replace("vsData", ""); - + //Write the parameters and values to files. PrintWriter pw = null; if (!outputVsDataTypePWMap.containsKey(csvFileName)) {