@@ -1750,7 +1750,7 @@ public static void createDataDscr(XMLStreamWriter xmlw, JsonArray fileDetails) t
17501750 if (vars != null ) {
17511751 for (int j = 0 ; j < vars .size (); j ++) {
17521752 createVarDDI (xmlw , vars .getJsonObject (j ), fileJson .getJsonNumber ("id" ).toString (),
1753- fileJson .getString ("fileMetadataId" ));
1753+ fileJson .getJsonNumber ("fileMetadataId" ). toString ( ));
17541754 }
17551755 }
17561756 }
@@ -1797,7 +1797,7 @@ private static void createVarDDI(XMLStreamWriter xmlw, JsonObject dvar, String f
17971797 }
17981798
17991799 if (dvar .containsKey ("numberOfDecimalPoints" )) {
1800- writeAttribute (xmlw , "dcml" , dvar .getString ("numberOfDecimalPoints" ));
1800+ writeAttribute (xmlw , "dcml" , dvar .getJsonNumber ("numberOfDecimalPoints" ). toString ( ));
18011801 }
18021802
18031803 if (dvar .getBoolean ("isOrderedCategorical" )) {
@@ -1820,13 +1820,13 @@ private static void createVarDDI(XMLStreamWriter xmlw, JsonObject dvar, String f
18201820 // location
18211821 xmlw .writeEmptyElement ("location" );
18221822 if (dvar .containsKey ("fileStartPosition" )) {
1823- writeAttribute (xmlw , "StartPos" , dvar .getString ("fileStartPosition" ));
1823+ writeAttribute (xmlw , "StartPos" , dvar .getJsonNumber ("fileStartPosition" ). toString ( ));
18241824 }
18251825 if (dvar .containsKey ("fileEndPosition" )) {
1826- writeAttribute (xmlw , "EndPos" , dvar .getString ("fileEndPosition" ));
1826+ writeAttribute (xmlw , "EndPos" , dvar .getJsonNumber ("fileEndPosition" ). toString ( ));
18271827 }
18281828 if (dvar .containsKey ("recordSegmentNumber" )) {
1829- writeAttribute (xmlw , "RecSegNo" , dvar .getString ("recordSegmentNumber" ));
1829+ writeAttribute (xmlw , "RecSegNo" , dvar .getJsonNumber ("recordSegmentNumber" ). toString ( ));
18301830 }
18311831
18321832 writeAttribute (xmlw , "fileid" , "f" + fileId );
@@ -1867,38 +1867,41 @@ private static void createVarDDI(XMLStreamWriter xmlw, JsonObject dvar, String f
18671867 }
18681868
18691869 // invalrng
1870- boolean invalrngAdded = false ;
1871- JsonArray ranges = dvar .getJsonArray ("invalidRanges" );
1872- for (int i =0 ;i <ranges .size ();i ++) {
1873- JsonObject range = ranges .getJsonObject (0 );
1874- //if (range.getBeginValueType() != null && range.getBeginValueType().getName().equals(DB_VAR_RANGE_TYPE_POINT)) {
1875- if (range .getBoolean ("hasBeginValueType" ) && range .getBoolean ("isBeginValueTypePoint" )) {
1876- if (range .containsKey ("beginValue" )) {
1870+ if (dvar .containsKey ("invalidRanges" )) {
1871+ boolean invalrngAdded = false ;
1872+ JsonArray ranges = dvar .getJsonArray ("invalidRanges" );
1873+ for (int i = 0 ; i < ranges .size (); i ++) {
1874+ JsonObject range = ranges .getJsonObject (0 );
1875+ // if (range.getBeginValueType() != null &&
1876+ // range.getBeginValueType().getName().equals(DB_VAR_RANGE_TYPE_POINT)) {
1877+ if (range .getBoolean ("hasBeginValueType" ) && range .getBoolean ("isBeginValueTypePoint" )) {
1878+ if (range .containsKey ("beginValue" )) {
1879+ invalrngAdded = checkParentElement (xmlw , "invalrng" , invalrngAdded );
1880+ xmlw .writeEmptyElement ("item" );
1881+ writeAttribute (xmlw , "VALUE" , range .getString ("beginValue" ));
1882+ }
1883+ } else {
18771884 invalrngAdded = checkParentElement (xmlw , "invalrng" , invalrngAdded );
1878- xmlw .writeEmptyElement ("item" );
1879- writeAttribute (xmlw , "VALUE" , range .getString ("beginValue" ));
1880- }
1881- } else {
1882- invalrngAdded = checkParentElement (xmlw , "invalrng" , invalrngAdded );
1883- xmlw .writeEmptyElement ("range" );
1884- if (range .getBoolean ("hasBeginValueType" ) && range .containsKey ("beginValue" )) {
1885- if (range .getBoolean ("isBeginValueTypeMin" )) {
1886- writeAttribute (xmlw , "min" , range .getString ("beginValue" ));
1887- } else if (range .getBoolean ("isBeginValueTypeMinExcl" )) {
1888- writeAttribute (xmlw , "minExclusive" , range .getString ("beginValue" ));
1885+ xmlw .writeEmptyElement ("range" );
1886+ if (range .getBoolean ("hasBeginValueType" ) && range .containsKey ("beginValue" )) {
1887+ if (range .getBoolean ("isBeginValueTypeMin" )) {
1888+ writeAttribute (xmlw , "min" , range .getString ("beginValue" ));
1889+ } else if (range .getBoolean ("isBeginValueTypeMinExcl" )) {
1890+ writeAttribute (xmlw , "minExclusive" , range .getString ("beginValue" ));
1891+ }
18891892 }
1890- }
1891- if (range .getBoolean ("hasEndValueType" ) && range . containsKey ( "endValue " )) {
1892- if ( range .getBoolean ( "isEndValueTypeMax " )) {
1893- writeAttribute ( xmlw , "max" , range .getString ( "endValue " ));
1894- } else if ( range .getBoolean ( "isEndValueTypeMaxExcl " )) {
1895- writeAttribute ( xmlw , "maxExclusive" , range . getString ( "endValue" ));
1893+ if ( range . getBoolean ( "hasEndValueType" ) && range . containsKey ( "endValue" )) {
1894+ if (range .getBoolean ("isEndValueTypeMax " )) {
1895+ writeAttribute ( xmlw , "max" , range .getString ( "endValue " ));
1896+ } else if ( range .getBoolean ( "isEndValueTypeMaxExcl " )) {
1897+ writeAttribute ( xmlw , "maxExclusive" , range .getString ( "endValue " ));
1898+ }
18961899 }
18971900 }
18981901 }
1899- }
1900- if ( invalrngAdded ) {
1901- xmlw . writeEndElement (); // invalrng
1902+ if ( invalrngAdded ) {
1903+ xmlw . writeEndElement (); // invalrng
1904+ }
19021905 }
19031906
19041907 //universe
@@ -1910,67 +1913,72 @@ private static void createVarDDI(XMLStreamWriter xmlw, JsonObject dvar, String f
19101913 }
19111914 }
19121915
1913- //sum stats
1914- for (Entry <String , JsonValue > sumStat : dvar .getJsonObject ("summaryStatistics" ).entrySet ()) {
1915- xmlw .writeStartElement ("sumStat" );
1916- writeAttribute (xmlw , "type" , sumStat .getKey ());
1917- xmlw .writeCharacters (sumStat .getValue ().toString ());
1918- xmlw .writeEndElement (); //sumStat
1916+ // sum stats
1917+ if (dvar .containsKey ("summaryStatistics" )) {
1918+ for (Entry <String , JsonValue > sumStat : dvar .getJsonObject ("summaryStatistics" ).entrySet ()) {
1919+ xmlw .writeStartElement ("sumStat" );
1920+ writeAttribute (xmlw , "type" , sumStat .getKey ());
1921+ xmlw .writeCharacters (sumStat .getValue ().toString ());
1922+ xmlw .writeEndElement (); // sumStat
1923+ }
19191924 }
19201925
19211926 // categories
1922- JsonArray varCats = dvar .getJsonArray ("variableCategories" );
1923- for (int i =0 ;i <varCats .size ();i ++) {
1924- JsonObject varCat = varCats .getJsonObject (i );
1925- xmlw .writeStartElement ("catgry" );
1926- if (varCat .getBoolean ("isMissing" )) {
1927- writeAttribute (xmlw , "missing" , "Y" );
1928- }
1929-
1930- // catValu
1931- xmlw .writeStartElement ("catValu" );
1932- xmlw .writeCharacters (varCat .getString ("value" ));
1933- xmlw .writeEndElement (); //catValu
1927+ if (dvar .containsKey ("variableCategories" )) {
1928+ JsonArray varCats = dvar .getJsonArray ("variableCategories" );
1929+ for (int i = 0 ; i < varCats .size (); i ++) {
1930+ JsonObject varCat = varCats .getJsonObject (i );
1931+ xmlw .writeStartElement ("catgry" );
1932+ if (varCat .getBoolean ("isMissing" )) {
1933+ writeAttribute (xmlw , "missing" , "Y" );
1934+ }
19341935
1935- // label
1936- if (varCat .containsKey ("label" )) {
1937- xmlw .writeStartElement ("labl" );
1938- writeAttribute (xmlw , "level" , "category" );
1939- xmlw .writeCharacters (varCat .getString ("label" ));
1940- xmlw .writeEndElement (); //labl
1941- }
1936+ // catValu
1937+ xmlw .writeStartElement ("catValu" );
1938+ xmlw .writeCharacters (varCat .getString ("value" ));
1939+ xmlw .writeEndElement (); // catValu
1940+
1941+ // label
1942+ if (varCat .containsKey ("label" )) {
1943+ xmlw .writeStartElement ("labl" );
1944+ writeAttribute (xmlw , "level" , "category" );
1945+ xmlw .writeCharacters (varCat .getString ("label" ));
1946+ xmlw .writeEndElement (); // labl
1947+ }
19421948
1943- // catStat
1944- if (varCat .containsKey ("frequency" )) {
1945- xmlw .writeStartElement ("catStat" );
1946- writeAttribute (xmlw , "type" , "freq" );
1947- Double freq = Double .parseDouble (varCat .getString ("frequency" ));
1948- // if frequency is actually a long value, we want to write "100" instead of "100.0"
1949- if (Math .floor (freq ) == freq ) {
1950- xmlw .writeCharacters (Long .valueOf (freq .longValue ()).toString ());
1951- } else {
1952- xmlw .writeCharacters (freq .toString ());
1949+ // catStat
1950+ if (varCat .containsKey ("frequency" )) {
1951+ xmlw .writeStartElement ("catStat" );
1952+ writeAttribute (xmlw , "type" , "freq" );
1953+ Double freq = varCat .getJsonNumber ("frequency" ).doubleValue ();
1954+ // if frequency is actually a long value, we want to write "100" instead of
1955+ // "100.0"
1956+ if (Math .floor (freq ) == freq ) {
1957+ xmlw .writeCharacters (Long .valueOf (freq .longValue ()).toString ());
1958+ } else {
1959+ xmlw .writeCharacters (freq .toString ());
1960+ }
1961+ xmlw .writeEndElement (); // catStat
19531962 }
1954- xmlw .writeEndElement (); //catStat
1955- }
19561963
1957- //catStat weighted freq
1958- if (vm != null && vm .getBoolean ("isWeighted" )) {
1959- JsonArray catMetas = vm .getJsonArray ("categoryMetadatas" );
1960- for (int j =0 ;i <catMetas .size ();j ++) {
1961- JsonObject cm = catMetas .getJsonObject (j );
1962- if (cm .getString ("categoryValue" ).equals (varCat .getString ("value" ))) {
1963- xmlw .writeStartElement ("catStat" );
1964- writeAttribute (xmlw , "wgtd" , "wgtd" );
1965- writeAttribute (xmlw , "type" , "freq" );
1966- xmlw .writeCharacters (cm .getString ("wFreq" ));
1967- xmlw .writeEndElement (); //catStat
1968- break ;
1964+ // catStat weighted freq
1965+ if (vm != null && vm .getBoolean ("isWeighted" )) {
1966+ JsonArray catMetas = vm .getJsonArray ("categoryMetadatas" );
1967+ for (int j = 0 ; i < catMetas .size (); j ++) {
1968+ JsonObject cm = catMetas .getJsonObject (j );
1969+ if (cm .getString ("categoryValue" ).equals (varCat .getString ("value" ))) {
1970+ xmlw .writeStartElement ("catStat" );
1971+ writeAttribute (xmlw , "wgtd" , "wgtd" );
1972+ writeAttribute (xmlw , "type" , "freq" );
1973+ xmlw .writeCharacters (cm .getJsonNumber ("wFreq" ).toString ());
1974+ xmlw .writeEndElement (); // catStat
1975+ break ;
1976+ }
19691977 }
19701978 }
1971- }
19721979
1973- xmlw .writeEndElement (); //catgry
1980+ xmlw .writeEndElement (); // catgry
1981+ }
19741982 }
19751983
19761984
@@ -1981,9 +1989,13 @@ private static void createVarDDI(XMLStreamWriter xmlw, JsonObject dvar, String f
19811989 } else {
19821990 throw new XMLStreamException ("Illegal Variable Format Type!" );
19831991 }
1984- writeAttribute (xmlw , "formatname" , dvar .getString ("format" ));
1992+ if (dvar .containsKey ("format" )) {
1993+ writeAttribute (xmlw , "formatname" , dvar .getString ("format" ));
1994+ }
19851995 //experiment writeAttribute(xmlw, "schema", dv.getFormatSchema());
1986- writeAttribute (xmlw , "category" , dvar .getString ("formatCategory" ));
1996+ if (dvar .containsKey ("formatCategory" )) {
1997+ writeAttribute (xmlw , "category" , dvar .getString ("formatCategory" ));
1998+ }
19871999
19882000 // notes
19892001 if (dvar .containsKey ("UNF" ) && !dvar .getString ("UNF" ).isBlank ()) {
@@ -2031,19 +2043,19 @@ private static void createFileDscr(XMLStreamWriter xmlw, JsonArray fileDetails)
20312043
20322044 if (dt .containsKey ("caseQuantity" )) {
20332045 xmlw .writeStartElement ("caseQnty" );
2034- xmlw .writeCharacters (dt .getString ("caseQuantity" ));
2046+ xmlw .writeCharacters (dt .getJsonNumber ("caseQuantity" ). toString ( ));
20352047 xmlw .writeEndElement (); // caseQnty
20362048 }
20372049
20382050 if (dt .containsKey ("varQuantity" )) {
20392051 xmlw .writeStartElement ("varQnty" );
2040- xmlw .writeCharacters (dt .getString ("varQuantity" ));
2052+ xmlw .writeCharacters (dt .getJsonNumber ("varQuantity" ). toString ( ));
20412053 xmlw .writeEndElement (); // varQnty
20422054 }
20432055
20442056 if (dt .containsKey ("recordsPerCase" )) {
20452057 xmlw .writeStartElement ("recPrCas" );
2046- xmlw .writeCharacters (dt .getString ("recordsPerCase" ));
2058+ xmlw .writeCharacters (dt .getJsonNumber ("recordsPerCase" ). toString ( ));
20472059 xmlw .writeEndElement (); // recPrCas
20482060 }
20492061
0 commit comments