public String printFormatData(DataItems data) {
   String ret = "";
   StringWriter sw = new StringWriter();
   BufferedWriter bw = new BufferedWriter(sw);
   int numRows = data.getLength();
   try {
     for (int row = 0; row < numRows; row++) {
       DataItem s = data.getElementAt(row);
       bw.write(s.toString());
       bw.write("\r\n");
     }
   } catch (IOException e) {
     e.printStackTrace();
   } finally {
     ret = sw.toString();
     if (bw != null)
       try {
         bw.close();
       } catch (Exception ee) {
       }
     if (sw != null)
       try {
         sw.close();
       } catch (Exception ee) {
       }
   }
   return ret;
 }
  // 按照时间,sizeWindow和stepWindow将数据分成项集,再调用Itemset2File写入文件
  public static String[] movingdivide(DataItems datainput, TaskElement task, boolean FP)
      throws IOException {
    int sizeWindow = (int) ((ParamsSM) task.getMiningParams()).getSizeWindow() * 1000; // seconds
    int stepWindow = (int) ((ParamsSM) task.getMiningParams()).getStepWindow() * 1000; // seconds

    int len = datainput.getLength();
    List<Date> time = datainput.getTime();
    List<String> data = datainput.getData();

    List<String> DataSets = new ArrayList<String>();

    Date win_start_time = time.get(0);
    Date win_end_time = getDateAfter(win_start_time, sizeWindow);
    Date win_start_next = getDateAfter(win_start_time, stepWindow);
    int ind_next = -1;

    StringBuilder sb = new StringBuilder();
    int i = 0;
    do {
      DataItem item = datainput.getElementAt(i);
      i++;
      Date date = item.getTime();
      String val = item.getData();
      if (!date.before(win_start_time) && !date.after(win_end_time)) {
        if (sb.length() != 0) sb.append(" ");
        sb.append(val + " -1");
        if (!date.before(win_start_next) && ind_next == -1) ind_next = i - 1;
      } else {
        sb.append(" -2");
        DataSets.add(sb.toString());
        sb = new StringBuilder();

        if (ind_next == -1) {
          if (!date.before(getDateAfter(win_end_time, stepWindow))) {
            win_start_time = date;
            if (sb.length() != 0) sb.append(" ");
            sb.append(val + " -1");
          } else {
            win_start_time = win_start_next; // getDateAfter(win_start_time, stepWindow);
            if (sb.length() != 0) sb.append(" ");
            sb.append(val + " -1");
          }
        } else {
          i = ind_next;
          ind_next = -1;
          win_start_time = win_start_next;
        }
        win_end_time = getDateAfter(win_start_time, sizeWindow);
        win_start_next = getDateAfter(win_start_time, stepWindow);
      }

    } while (i < len);
    sb.append(" -2");
    DataSets.add(sb.toString());
    return DataSets.toArray(new String[0]);
  }
 public static DataItems sort(DataItems dataInput) {
   DataItem datin[] = new DataItem[dataInput.getLength()];
   for (int i = 0; i < dataInput.getLength(); i++) {
     datin[i] = dataInput.getElementAt(i);
   }
   Arrays.sort(datin);
   DataItems di = new DataItems();
   di.setItems(datin);
   return di;
 }