⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 taskconfiguration.java

📁 nesC写的heed算法
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        }
        currentQueryArea.setText(sensorQuery.toSQL());

//        textfield1.setText(Integer.toString(sensorQuery.getSamplePeriod()));
    
        button1.setEnabled(true);
        button2.setEnabled(true);
        // enable start query, submit query
      }
    });

    JPanel column4 = new JPanel();
    bl = new BoxLayout(column4, BoxLayout.Y_AXIS);
    column4.setLayout(bl);
    column4.add(panel6);
 
    JPanel row2 = new JPanel();
    bl = new BoxLayout(row2, BoxLayout.X_AXIS);
    row2.setLayout(bl);
    row2.add(new Label(LABEL3));
    textfield3 = new JTextField("Default");
    row2.add(textfield3);
    column4.add(row2);

    JPanel panel8 = new JPanel();
    panel8.setBorder(BorderFactory.createTitledBorder(b,"Current Sensor Query")); 
    panel8.add(column4);

    JPanel panel7 = new JPanel();
    panel7.setBorder(BorderFactory.createTitledBorder(b,"Current Health Query"));
    healthQueryArea = new JTextArea(3,30);
    healthQueryArea.setEditable(false);
    healthQueryArea.setText(healthConstQuery.toSQL());

    JPanel column3 = new JPanel();
    bl = new BoxLayout(column3, BoxLayout.Y_AXIS);
    column3.setLayout(bl);
    
    column3.add(healthQueryArea);

    JPanel row1 = new JPanel();
    bl = new BoxLayout(row1, BoxLayout.X_AXIS);
    row1.setLayout(bl);
    row1.add(new Label(LABEL3));
    textfield2 = new JTextField("Default");
    row1.add(textfield2);
    column3.add(row1);

    panel7.add(column3);

    ///////////////
    // panel 3
    JPanel panel3 = new JPanel();
    panel3.setBorder(b);
    panel3.setLayout(new GridLayout(2,2));
    button3 = new JButton(BUTTON3);
    button3.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
        if (sensorQuery != null) {
          if (oldQuery != null) {
            if (oldQuery.toSQL().equals(sensorQuery.toSQL())) {
              sensorQuery = oldQuery;
            }
          }

          if (!textfield3.getText().equals("Default")) {
// System.out.println("setting table name to "+textfield3.getText()+"_sensor");
//            sensorQuery.setTableName(textfield3.getText().replace(' ','_')+"_sensor");
            sensorQuery.setTableName(textfield3.getText().replace(' ','_'));
          }
          if (client.submitSensorQuery(sensorQuery) == 0) {
            sensorQueryArea.setText(sensorQuery.toSQL());
            button5.setEnabled(true);
//            button3.setEnabled(false);
            button3.setText("Resend Sensor Query");
            sensorQueryEditButton.setEnabled(true);
            sensorQuerySubmitButton.setEnabled(false);
            sensorQuery = client.getSensorQuery();
            oldQuery = sensorQuery;
          }
          else {
            currentQueryArea.setText(sensorQuery.toSQL() +": QUERY FAILED!");
          }
        }
      }
    });

    button5 = new JButton(BUTTON5);
    button5.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
        if (client.stopSensorQuery() == 0) {
          button3.setEnabled(true);
          button3.setText("Start Sensor Query");
//          button5.setEnabled(false);
          sensorQueryArea.setText("QUERY STOPPED: "+sensorQuery.toSQL());
          sensorQuerySubmitButton.setEnabled(true);
        }
      }
    });

    button2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
        clauseListModel.clear();
        button1.setEnabled(false);
        button2.setEnabled(false);
      }
    });


    button4 = new JButton(BUTTON4);
    button4.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
        if (!textfield2.getText().equals("Default")) {
//          sensorQuery.setTableName(textfield2.getText().replace(' ','_')+"_health");
          sensorQuery.setTableName(textfield2.getText().replace(' ','_'));
        }
        if (client.submitHealthQuery(healthConstQuery) == 0) {
          healthQueryArea.setText(healthConstQuery.toSQL());
          button6.setEnabled(true);
//          button4.setEnabled(false);
          button4.setText("Resend Health Query");
          healthConstQuery = client.getHealthQuery();
        }
      }
    });


    button6 = new JButton(BUTTON6);
    button6.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
        if (client.stopHealthQuery() == 0) {
          healthQueryArea.setText("QUERY STOPPED: "+healthConstQuery.toSQL());
//          button4.setEnabled(true);
          button4.setText("Start Health Query");
//          button6.setEnabled(false);
        }
      }
    });

    panel3.add(button3);
    panel3.add(button4);
    panel3.add(button5);
    panel3.add(button6);

    parentPanel.add(panel1);
    parentPanel.add(panel2);
    parentPanel.add(panel8);
    parentPanel.add(panel7);
    parentPanel.add(panel3);
    ///////////////

    MouseListener mouseListener = new MouseAdapter() {
      public void mouseClicked(MouseEvent e) {
        String selectedValue = (String)list1.getSelectedValue();
        String att = selectedValue.substring(0,selectedValue.indexOf(":"));

        if (e.getClickCount() == 1) {
          if (e.isShiftDown()) {
            int index = list1.locationToIndex(e.getPoint());
            //commented out since split is JDK 1.4 specific -- we use
            // indexOf as below.  SRM 4.26.03 -- due to William J Maurer
            //          String att = ((String)list1.getSelectedValue()).split(":")[0];
            AttributeDialog ad = new AttributeDialog(parentFrame, att, aggs, TASKOperators.OperName);

            ad.pack();
            ad.setLocationRelativeTo(parentFrame);
            ad.setVisible(true);
            if (ad.isDataValid()) {
              Clause cl = ad.getClause();
              if (cl.getType() == Clause.BOTH) {
                Clause c1 = new Clause(cl.getAttribute(), cl.getAggregator(), 0, -1, cl.getArg1(), cl.getArg2());
                Clause c2 = new Clause(cl.getAttribute(), "No Aggregator", cl.getOperator(), cl.getOperand());
                if (c1.isValid()) {
                  clauseListModel.addElement(c1);
                }
                if (c2.isValid()) {
                  clauseListModel.addElement(c2);
                }
              }
              else {
                if (cl.isValid()) {
                  clauseListModel.addElement(cl);
                }
              }
              button1.setEnabled(true);
              button2.setEnabled(true);
  
              currentQuery = createQuery(clauseListModel);
              currentQueryArea.setText(currentQuery.toSQL());
            }
          }
          else {
            // AKD create clause cl
            Clause cl = new Clause(att, "No Aggregator", 0, -1, AttributeDialog.NO_ARGUMENT, AttributeDialog.NO_ARGUMENT);
            clauseListModel.addElement(cl);
            button1.setEnabled(true);
            button2.setEnabled(true);
            currentQuery = createQuery(clauseListModel);
            currentQueryArea.setText(currentQuery.toSQL());
          }
        }
      }
    };
    list1.addMouseListener(mouseListener);

    TASKQuery query = client.getHealthQuery();
    if (query == null) {
//      button4.setEnabled(true);
      button4.setText("Start Health Query");
      button6.setEnabled(false);
      healthQueryArea.setText("No health query running");
    }
    else {
//      button4.setEnabled(false);
      button4.setText("Resend Health Query");
      button6.setEnabled(true);
      healthQueryArea.setText(query.toSQL());
      textfield2.setText(query.getTableName());
    }

    sensorQuery = client.getSensorQuery();
    if (sensorQuery == null) {
      button3.setEnabled(false);
      button3.setText("Start Sensor Query");
      button5.setEnabled(false);
      sensorQueryArea.setText("No sensor query running");
    }
    else {
//      button3.setEnabled(false);
      button3.setText("Resend Sensor Query");
      button5.setEnabled(true);
      sensorQueryArea.setText(sensorQuery.toSQL());
      sensorQueryEditButton.setEnabled(true);
      textfield3.setText(sensorQuery.getTableName());
    }

    ttlModel.setValue(15);
    spModel.setValue(1084);
  }

  private TASKAttributeInfo getAttributeInfo(String name) {
    for (int i=0; i<atts.size(); i++) {
      if (name.equals(((TASKAttributeInfo)atts.elementAt(i)).name)) {
        return (TASKAttributeInfo)atts.elementAt(i);
      }
    }
    return null;
  }

  private String queryToString(TASKQuery query) {
    StringBuffer sb = new StringBuffer("COLLECT ");

    Vector selects = query.getSelectEntries();
    for (int i=0; i<selects.size()-1; i++) {
      TASKExpr expr = (TASKExpr)selects.elementAt(i);
      if (expr instanceof TASKAttrExpr) {
        sb.append(((TASKAttrExpr)expr).toString()+", ");
      }
      else if (expr instanceof TASKAggExpr) {
        sb.append(((TASKAggExpr)expr).toString()+", ");
      }
    }
 
    if (selects.size() > 0) {
      TASKExpr expr = (TASKExpr)selects.lastElement();
      if (expr instanceof TASKAttrExpr) {
        sb.append(((TASKAttrExpr)expr).toString()+"\n");
      }
      else if (expr instanceof TASKAggExpr) {
        sb.append(((TASKAggExpr)expr).toString()+"\n");
      }
    }

    sb.append("WHERE ");

    Vector preds = query.getPredicates();
    for (int i=0; i<preds.size()-1; i++) {
      sb.append(((TASKOperExpr)preds.elementAt(i)).toString() +", ");
    }

    if (preds.size() > 0) {
      TASKOperExpr operExpr = (TASKOperExpr)preds.lastElement();
      sb.append(operExpr.toString()+"\n");
    }
    
    sb.append("WITH SAMPLE PERIOD ");
    sb.append(query.getSamplePeriod());
    return sb.toString();
  }

  private TASKQuery createQuery(DefaultListModel model) {
    if (spPanel == null) {
      return null;
    }

    int period = spPanel.getTextValue();

    TASKQuery query = new TASKQuery(new Vector(), new Vector(), period, null);

    if (model.size() > 0) {
      for (Enumeration e=model.elements(); e.hasMoreElements(); ) {
        Clause c = (Clause)e.nextElement();
        TASKAttrExpr att = new TASKAttrExpr(getAttributeInfo(c.getAttribute()));
        if (c.getType() == Clause.PREDICATE) {
          query.addPredicate(new TASKOperExpr(c.getOperator(), att, new TASKConstExpr(0, new Integer(c.getOperand()))));
        }
        else if (c.getType() == Clause.ATTRIBUTE) {
          query.addSelectEntry(att);
        }
        else if (c.getType() == Clause.AGGREGATOR) {
          if ((c.getArg1() >= 0) && (c.getArg2() >= 0)) {
            query.addSelectEntry(new TASKAggExpr(c.getAggregator(), c.getAttribute(), new Integer(c.getArg1()), new Integer(c.getArg2())));
          }
          else if ((c.getArg1() >= 0) && (c.getArg2() < 0)) {
            query.addSelectEntry(new TASKAggExpr(c.getAggregator(), c.getAttribute(), new Integer(c.getArg1()), null));
          }
          else if ((c.getArg1() < 0) && (c.getArg2() < 0)) {
            query.addSelectEntry(new TASKAggExpr(c.getAggregator(), c.getAttribute(), null, null));
          }
        }
      }
    }
    return query;
  }

  public int getTimeToLive(int sp) { // returns in days
    currentQuery = createQuery(clauseListModel);
    if (currentQuery == null) {
      return 1;
    }
    currentQueryArea.setText(currentQuery.toSQL());
    currentQuery.setSamplePeriod(sp);
//System.out.println("LT: "+client.estimateLifeTime(currentQuery, healthConstQuery));
//System.out.println("LT: "+client.estimateLifeTime(currentQuery, healthConstQuery)/(60*60*24));
    return (int)client.estimateLifeTime(currentQuery, healthConstQuery)/(60*60*24);
  }

  public int getSamplePeriod(int ttl) { // returns in minutes
    if (clauseListModel == null) {
      return 1;
    }
    currentQuery = createQuery(clauseListModel);
    if (currentQuery == null) {
      return 1;
    }
    currentQueryArea.setText(currentQuery.toSQL());
    client.estimateSamplePeriods(ttl*24*60*60, currentQuery, healthConstQuery);
    return healthConstQuery.getSamplePeriod();
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -