private void addRow() { final Row row = table.createRow(); /* Generate zipcode */ final StringBuilder zipBuf = new StringBuilder(); for (int i = 0; i < 5; i++) { final int zipDigit = secureRandom.nextInt(10); zipBuf.append(zipDigit); } final String zipStr = zipBuf.toString(); row.put("zipcode", zipStr); /* Generate ssn */ final StringBuilder ssnBuf = new StringBuilder(); for (int i = 0; i < 9; i++) { final int ssnDigit = secureRandom.nextInt(10); ssnBuf.append(ssnDigit); } row.put("ssn", Long.parseLong(ssnBuf.toString())); /* Generate lastname */ final int lastnameIndx = secureRandom.nextInt(LAST_NAMES.length); row.put("lastname", LAST_NAMES[lastnameIndx]); /* Generate firstname and gender */ int firstnameIndx = secureRandom.nextInt(FIRST_NAMES_FEMALE.length); String firstname = FIRST_NAMES_FEMALE[firstnameIndx]; String gender = "female"; final int maleFemale = secureRandom.nextInt(2); if (maleFemale == 0) { firstnameIndx = secureRandom.nextInt(FIRST_NAMES_MALE.length); firstname = FIRST_NAMES_MALE[firstnameIndx]; gender = "male"; } row.put("firstname", firstname); row.putEnum("gender", gender); /* Generate license id as String, but store it as BINARY */ final StringBuilder licenseBuf = new StringBuilder(); for (int i = 0; i < 9; i++) { if (i > 0) { final int licenseDigit = secureRandom.nextInt(10); licenseBuf.append(String.valueOf(licenseDigit)); } else { licenseBuf.append("S"); } } row.putFixed("license", (licenseBuf.toString()).getBytes()); /* Generate phoneinfo */ final MapValue phoneMap = row.putMap("phoneinfo"); for (int i = 0; i < PHONE_TYPE.length; i++) { final String phonetype = PHONE_TYPE[i]; final int areaCodeIndx = secureRandom.nextInt(AREA_CODES.length); final int exchangeIndx = secureRandom.nextInt(EXCHANGES.length); final String areacode = AREA_CODES[areaCodeIndx]; final String exchange = EXCHANGES[exchangeIndx]; final StringBuilder phoneBuf = new StringBuilder(); phoneBuf.append(areacode); phoneBuf.append("-"); phoneBuf.append(exchange); phoneBuf.append("-"); for (int j = 0; j < 4; j++) { final int phoneDigit = secureRandom.nextInt(10); phoneBuf.append(phoneDigit); } final String phone = phoneBuf.toString(); phoneMap.put(phonetype, phone); } final RecordValue addressRec = row.putRecord("address"); final int streetNumber = secureRandom.nextInt(99999); final int streetNameIndx = secureRandom.nextInt(STREET_NAMES.length); final int unitNumber = secureRandom.nextInt(11) - 1; final int cityNameIndx = secureRandom.nextInt(CITY_NAMES.length); final int stateIndx = secureRandom.nextInt(STATE_ABBREVIATIONS.length); addressRec.put("number", streetNumber); addressRec.put("street", STREET_NAMES[streetNameIndx]); addressRec.put("unit", unitNumber); addressRec.put("city", CITY_NAMES[cityNameIndx]); addressRec.put("state", STATE_ABBREVIATIONS[stateIndx]); addressRec.put("zip", Integer.parseInt(zipStr)); /* Generate vehicleinfo */ final ArrayValue vehicleArray = row.putArray("vehicleinfo"); final int nVehicles = 1 + secureRandom.nextInt(3); for (int i = 0; i < nVehicles; i++) { final RecordValue vehicleRec = vehicleArray.addRecord(); final int typeIndx = secureRandom.nextInt(TYPES.length); final int makeIndx = secureRandom.nextInt(MAKES.length); final int classIndx = secureRandom.nextInt(CLASSES.length); final int colorIndx = secureRandom.nextInt(COLORS.length); final String type = TYPES[typeIndx]; final String make = MAKES[makeIndx]; final String vClass = CLASSES[classIndx]; final String color = COLORS[colorIndx]; String[] models = MODELS_FORD_AUTO; float valueMult = 2.0f; if ("suv".equals(type)) { valueMult = 4.0f; if ("Chrysler".equals(make)) { models = MODELS_CHRYSLER_SUV; } else if ("GM".equals(make)) { models = MODELS_GM_SUV; } else { /* Default to make "Ford" */ models = MODELS_FORD_SUV; } } else if ("truck".equals(type)) { valueMult = 3.0f; if ("Chrysler".equals(make)) { models = MODELS_CHRYSLER_TRUCK; } else if ("GM".equals(make)) { models = MODELS_GM_TRUCK; } else { /* Default to make "Ford" */ models = MODELS_FORD_TRUCK; } } else { /* Default to type "auto" */ if ("Chrysler".equals(make)) { models = MODELS_CHRYSLER_AUTO; } else if ("GM".equals(make)) { models = MODELS_GM_AUTO; } } final int modelIndx = secureRandom.nextInt(models.length); final String model = models[modelIndx]; final float baseValue = 10371.59f; final float deltaValue = secureRandom.nextFloat(); final float value = (valueMult * baseValue) + deltaValue; final double tax = TAX_RATE * value; boolean paid = true; final int paidOrNot = secureRandom.nextInt(2); if (paidOrNot == 0) { paid = false; } vehicleRec.put("type", type); vehicleRec.put("make", make); vehicleRec.put("model", model); vehicleRec.put("class", vClass); vehicleRec.put("color", color); vehicleRec.put("value", value); vehicleRec.put("tax", tax); vehicleRec.put("paid", paid); } /* Handle duplicates. */ final PrimaryKey dupKey = row.createPrimaryKey(); final Row dupRow = tableAPI.get(dupKey, null); if (dupRow != null) { /* Change the ssn */ int newSsnDigit = secureRandom.nextInt(10); final StringBuilder newSsnBuf = new StringBuilder(newSsnDigit); for (int i = 0; i < 8; i++) { newSsnDigit = secureRandom.nextInt(10); newSsnBuf.append(newSsnDigit); } row.put("ssn", Long.parseLong(newSsnBuf.toString())); } /* Finally, write the row created above to the table */ tableAPI.putIfAbsent(row, null, null); }