| 255 | } // end of GetColumns |
| 256 | |
| 257 | public Object ColumnDesc(Object obj, int n, int[] val, int lvl) { |
| 258 | Object ret = null; |
| 259 | Object oval = ((obj != null) ? obj : doc); |
| 260 | BasicDBObject dob = (oval instanceof BasicDBObject) ? (BasicDBObject) oval : null; |
| 261 | BasicDBList ary = (oval instanceof BasicDBList) ? (BasicDBList) oval : null; |
| 262 | |
| 263 | try { |
| 264 | if (ary != null) { |
| 265 | oval = ary.get(n); |
| 266 | ovalName = Integer.toString(n); |
| 267 | } else if (dob != null) { |
| 268 | // String[] k = dob.keySet().toArray(new String[0]); |
| 269 | Object[] k = dob.keySet().toArray(); |
| 270 | oval = dob.get(k[n]); |
| 271 | ovalName = (String) k[n]; |
| 272 | } else |
| 273 | ovalName = "x" + Integer.toString(n); |
| 274 | |
| 275 | if (DEBUG) |
| 276 | System.out.println("Class of " + ovalName + " = " + oval.getClass()); |
| 277 | |
| 278 | val[0] = 0; // ColumnType |
| 279 | val[1] = 0; // Precision |
| 280 | val[2] = 0; // Scale |
| 281 | val[3] = 0; // Nullable |
| 282 | val[4] = 0; // ncol |
| 283 | |
| 284 | if (oval == null) { |
| 285 | val[3] = 1; |
| 286 | } else if (oval instanceof String) { |
| 287 | val[0] = 1; |
| 288 | val[1] = ((String) oval).length(); |
| 289 | } else if (oval instanceof org.bson.types.ObjectId) { |
| 290 | val[0] = 1; |
| 291 | val[1] = ((org.bson.types.ObjectId) oval).toString().length(); |
| 292 | } else if (oval instanceof Integer) { |
| 293 | val[0] = 7; |
| 294 | val[1] = Integer.toString(((Integer) oval).intValue()).length(); |
| 295 | } else if (oval instanceof Long) { |
| 296 | val[0] = 5; |
| 297 | val[1] = Long.toString(((Long) oval).longValue()).length(); |
| 298 | } else if (oval instanceof Date) { |
| 299 | Long TS = (((Date) oval).getTime() / 1000); |
| 300 | val[0] = 8; |
| 301 | val[1] = TS.toString().length(); |
| 302 | } else if (oval instanceof Double) { |
| 303 | String d = Double.toString(((Double) oval).doubleValue()); |
| 304 | int i = d.indexOf('.') + 1; |
| 305 | |
| 306 | val[0] = 2; |
| 307 | val[1] = d.length(); |
| 308 | val[2] = (i > 0) ? val[1] - i : 0; |
| 309 | } else if (oval instanceof Boolean) { |
| 310 | val[0] = 4; |
| 311 | val[1] = 1; |
| 312 | } else if (oval instanceof BasicDBObject) { |
| 313 | if (lvl > 0) { |
| 314 | ret = oval; |