Exemple #1
0
  static int loadOrder(int whseKount, int distWhseKount, int custDistKount) {

    int k = 0;
    int t = 0;
    PrintWriter outLine = null;
    PrintWriter outNewOrder = null;

    try {

      if (outputFiles == true) {
        out = new PrintWriter(new FileOutputStream(fileLocation + "order.csv"));
        System.out.println("\nWriting Order file to: " + fileLocation + "order.csv");
        outLine = new PrintWriter(new FileOutputStream(fileLocation + "order-line.csv"));
        System.out.println("\nWriting Order Line file to: " + fileLocation + "order-line.csv");
        outNewOrder = new PrintWriter(new FileOutputStream(fileLocation + "new-order.csv"));
        System.out.println("\nWriting New Order file to: " + fileLocation + "new-order.csv");
      }

      now = new java.util.Date();
      Oorder oorder = new Oorder();
      NewOrder new_order = new NewOrder();
      OrderLine order_line = new OrderLine();
      jdbcIO myJdbcIO = new jdbcIO();

      t = (whseKount * distWhseKount * custDistKount);
      t = (t * 11) + (t / 3);
      System.out.println(
          "whse=" + whseKount + ", dist=" + distWhseKount + ", cust=" + custDistKount);
      System.out.println("\nStart Order-Line-New Load for approx " + t + " rows @ " + now + " ...");

      for (int w = 1; w <= whseKount; w++) {

        for (int d = 1; d <= distWhseKount; d++) {

          for (int c = 1; c <= custDistKount; c++) {

            oorder.o_id = c;
            oorder.o_w_id = w;
            oorder.o_d_id = d;
            oorder.o_c_id = jTPCCUtil.randomNumber(1, custDistKount, gen);
            oorder.o_carrier_id = jTPCCUtil.randomNumber(1, 10, gen);
            oorder.o_ol_cnt = jTPCCUtil.randomNumber(5, 15, gen);
            oorder.o_all_local = 1;
            oorder.o_entry_d = System.currentTimeMillis();

            k++;
            if (outputFiles == false) {
              myJdbcIO.insertOrder(ordrPrepStmt, oorder);
            } else {
              String str = "";
              str = str + oorder.o_id + ",";
              str = str + oorder.o_w_id + ",";
              str = str + oorder.o_d_id + ",";
              str = str + oorder.o_c_id + ",";
              str = str + oorder.o_carrier_id + ",";
              str = str + oorder.o_ol_cnt + ",";
              str = str + oorder.o_all_local + ",";
              Timestamp entry_d = new java.sql.Timestamp(oorder.o_entry_d);
              str = str + entry_d;
              out.println(str);
            }

            // 900 rows in the NEW-ORDER table corresponding to the last
            // 900 rows in the ORDER table for that district (i.e., with
            // NO_O_ID between 2,101 and 3,000)

            if (c > 2100) {

              new_order.no_w_id = w;
              new_order.no_d_id = d;
              new_order.no_o_id = c;

              k++;
              if (outputFiles == false) {
                myJdbcIO.insertNewOrder(nworPrepStmt, new_order);
              } else {
                String str = "";
                str = str + new_order.no_w_id + ",";
                str = str + new_order.no_d_id + ",";
                str = str + new_order.no_o_id;
                outNewOrder.println(str);
              }
            } // end new order

            for (int l = 1; l <= oorder.o_ol_cnt; l++) {

              order_line.ol_w_id = w;
              order_line.ol_d_id = d;
              order_line.ol_o_id = c;
              order_line.ol_number = l; // ol_number
              order_line.ol_i_id = jTPCCUtil.randomNumber(1, 100000, gen);
              order_line.ol_delivery_d = oorder.o_entry_d;

              if (order_line.ol_o_id < 2101) {
                order_line.ol_amount = 0;
              } else {
                // random within [0.01 .. 9,999.99]

                float f = (float) (jTPCCUtil.randomNumber(1, 999999, gen) / 100.0);

                order_line.ol_amount = f; // XXX float error line 1.
              }

              order_line.ol_supply_w_id = jTPCCUtil.randomNumber(1, numWarehouses, gen);
              order_line.ol_quantity = 5;
              order_line.ol_dist_info = jTPCCUtil.randomStr(24);

              k++;
              if (outputFiles == false) {
                myJdbcIO.insertOrderLine(orlnPrepStmt, order_line);
              } else {
                String str = "";
                str = str + order_line.ol_w_id + ",";
                str = str + order_line.ol_d_id + ",";
                str = str + order_line.ol_o_id + ",";
                str = str + order_line.ol_number + ",";
                str = str + order_line.ol_i_id + ",";
                Timestamp delivery_d = new Timestamp(order_line.ol_delivery_d);
                str = str + delivery_d + ",";
                str = str + order_line.ol_amount + ",";
                str = str + order_line.ol_supply_w_id + ",";
                str = str + order_line.ol_quantity + ",";
                str = str + order_line.ol_dist_info;
                outLine.println(str);
              }

              if ((k % configCommitCount) == 0) {
                long tmpTime = new java.util.Date().getTime();
                String etStr =
                    "  Elasped Time(ms): "
                        + ((tmpTime - lastTimeMS) / 1000.000)
                        + "                    ";
                System.out.println(etStr.substring(0, 30) + "  Writing record " + k + " of " + t);
                lastTimeMS = tmpTime;
                if (outputFiles == false) {
                  ordrPrepStmt.executeBatch();
                  nworPrepStmt.executeBatch();
                  orlnPrepStmt.executeBatch();
                  ordrPrepStmt.clearBatch();
                  nworPrepStmt.clearBatch();
                  orlnPrepStmt.clearBatch();
                  transCommit();
                }
              }
            } // end for [l]
          } // end for [c]
        } // end for [d]
      } // end for [w]

      System.out.println("  Writing final records " + k + " of " + t);
      if (outputFiles == false) {
        ordrPrepStmt.executeBatch();
        nworPrepStmt.executeBatch();
        orlnPrepStmt.executeBatch();
      } else {
        outLine.close();
        outNewOrder.close();
      }
      transCommit();
      now = new java.util.Date();
      System.out.println("End Orders Load @  " + now);

    } catch (Exception e) {
      e.printStackTrace();
      transRollback();
      if (outputFiles == true) {
        outLine.close();
        outNewOrder.close();
      }
    }

    return (k);
  } // end loadOrder()