public RandomiserInstance getRandomiserInstance() {
    RandomiserInstance ri = new RandomiserInstance();
    LinkedHashMap hashmap = new LinkedHashMap();
    String name, sDateFrom, sDateTo, sPercent, sDays;
    Date dateFrom, dateTo;
    Object objValues[] = new Object[3];
    int rowCount, error, percent;

    ri.setName(txtName.getText());
    ri.setDescription(txtDescription.getText());
    ri.setRandomiserType("DateRandomiser");

    error = 0;
    rowCount = tblDateRanges.getRowCount();
    hashmap.put("rangesNum", "" + rowCount);
    for (int i = 0; i < rowCount; i++) {
      try {
        objValues[0] = (Object) newModelDates.getValueAt(i, 0);
        objValues[1] = (Object) newModelDates.getValueAt(i, 1);
        objValues[2] = (Object) newModelDates.getValueAt(i, 2);
        sDateFrom = objValues[0].toString();
        sDateTo = objValues[1].toString();
        sPercent = objValues[2].toString();
        dateFrom = Date.valueOf(sDateFrom);
        dateTo = Date.valueOf(sDateTo);
        if (dateFrom.getTime() > dateTo.getTime()) {
          logger.warn("Problem retrieving table values, From date is higher than To date");
          error = i;
          return null;
        }
        percent = Integer.valueOf(sPercent);
        hashmap.put("fromField" + i, sDateFrom);
        hashmap.put("toField" + i, sDateTo);
        hashmap.put("percentField" + i, "" + percent);
      } catch (Exception e) {
        logger.warn("Problem retrieving table values", e);
        error = i;
      }
    }

    hashmap.put("nullField", "" + spinNull.getValue());
    ri.setProperties(hashmap);
    return ri;
  }