/* * Decompiled with CFR 0.152. */ package com.tridium.data; import com.tridium.data.BDataTable; import com.tridium.data.DataCodec; import java.io.DataInput; import java.io.IOException; import javax.baja.data.BIDataTable; import javax.baja.data.BIDataValue; import javax.baja.data.DataTypes; import javax.baja.io.BIEncodable; import javax.baja.sys.BFacets; import javax.baja.sys.Type; public class DataTableDecoder extends DataCodec { public static BIDataTable decode(DataInput dataInput) throws IOException { BIEncodable bIEncodable; int n; BDataTable bDataTable = new BDataTable(); int n2 = dataInput.readInt(); if (n2 != 497933825) { throw new IOException("Invalid start of binary table encoding."); } boolean bl = dataInput.readBoolean(); if (bl) { bDataTable.setTableFacets((BFacets)BFacets.DEFAULT.decode(dataInput)); } int n3 = dataInput.readInt(); int[] nArray = new int[n3]; Type[] typeArray = new Type[n3]; int n4 = 0; while (n4 < n3) { String string = dataInput.readUTF(); String string2 = dataInput.readUTF(); nArray[n4] = dataInput.readInt(); typeArray[n4] = DataTypes.getBySymbol((char)nArray[n4]); n = dataInput.readInt(); bIEncodable = null; boolean bl2 = dataInput.readBoolean(); if (bl2) { bIEncodable = (BFacets)BFacets.DEFAULT.decode(dataInput); } bDataTable.addColumn(string, string2, typeArray[n4], n, (BFacets)bIEncodable); ++n4; } if (n3 == 0) { throw new IllegalStateException("Table contains no columns."); } n4 = dataInput.readInt(); if (n4 == -1) { bDataTable.startRows(); } else { bDataTable.startRows(n4); } int n5 = dataInput.readInt(); while (n5 != 0) { int n6 = 0; while (n6 < n5) { bDataTable.startRow(); n = 0; while (n < n3) { switch (nArray[n]) { case 102: { bDataTable.set(dataInput.readFloat(), (BFacets)null); break; } case 98: { bDataTable.set(dataInput.readBoolean(), null); break; } case 115: { bDataTable.set(dataInput.readUTF(), null); break; } case 105: { bDataTable.set(dataInput.readInt(), (BFacets)null); break; } case 108: { bDataTable.set(dataInput.readLong(), (BFacets)null); break; } case 100: { bDataTable.set(dataInput.readDouble(), null); break; } default: { bIEncodable = (BIDataValue)((Object)typeArray[n].getInstance()); bDataTable.set((BIDataValue)((Object)bIEncodable.decode(dataInput)), null); } } ++n; } bDataTable.endRow(); ++n6; } n5 = dataInput.readInt(); } bDataTable.endRows(); int n7 = dataInput.readInt(); if (n7 != 766369282) { throw new IOException("Invalid end of binary table encoding."); } return bDataTable; } }