コード例 #1
0
ファイル: LogMySqlManager.java プロジェクト: okoye/teenylime
  private void elaborate(DataRecord record) {
    short type = record.getType();
    long time = record.getTime().getTime();
    Statement statement = null;
    String query = "";
    switch (type) {
      case Properties.TEMP_DEFORM_TYPE:
        int node_identifier = record.getNode_identifier();
        int period = record.getPeriod();
        float temperature = record.getTemperature();
        if (!nodes_status.containsKey(new Integer(node_identifier))) {
          nodes_status.put(new Integer(node_identifier), new NodeLogStatus());
        }
        NodeLogStatus status = (NodeLogStatus) nodes_status.get(new Integer(node_identifier));
        status.registerTuple(time, period);
        status.updateTimeRef(time, period);
        Timestamp ts = new Timestamp(status.getTime(period));
        try {
          out.write(
              "SENSOR:"
                  + Properties.getSensorId(node_identifier)
                  + "\tPERIOD: "
                  + period
                  + "\tTEMPERATURE: "
                  + temperature
                  + "\tTIMESTAMP: "
                  + ts
                  + "\n");
          out.flush();
        } catch (IOException ioe) {
          System.out.println(ioe.toString());
        }

        try {
          query =
              "insert into Measurement "
                  + "(MeasurementID, SensorID, SessionID, \"TimeStamp\") "
                  + "values(measurement_seq.nextval,"
                  + Properties.getSensorId(node_identifier)
                  + ","
                  + period
                  + ", \'"
                  + ts
                  + "\')";

          statement = connection.createStatement();
          statement.executeUpdate(query);
          statement.close();

          query =
              "insert into Value "
                  + "(ValueID, MeasurementID, ChannelID, ScalarValue, "
                  + "OriginalCalibrationID, ScalarRms)"
                  + "values(value_seq.nextval, measurement_seq.currval, "
                  + Properties.getTempChannelId(node_identifier)
                  + ", "
                  + temperature
                  + ", 0, 0)";

          statement = connection.createStatement();
          statement.executeUpdate(query);
          statement.close();

          synchronized (data) {
            data.remove(0);
          }
        } catch (SQLException se) {
          try {
            log.write("Cannot execute INSERT query\n");
            log.write(se.toString());
            log.flush();
          } catch (IOException ie) {
            System.out.println(ie.toString());
          }
        } finally {
          try {
            statement.close();
          } catch (Exception e) {
            try {
              log.write("Statement closure error");
              log.write(e.toString());
              log.flush();
            } catch (IOException ie) {
              System.out.println(ie.toString());
            }
          }
        }
        break;

      default:
        try {
          log.write("Unknown tuple received");
          log.flush();
        } catch (IOException ie) {
          System.out.println(ie.toString());
        }
    }
  }