예제 #1
0
public class ExtractEmails
{
    
    /*
     * connect to database
     * execute SQL statement to retrieve domain IDs
          Could use database and SQL to do the heavy processing but that's easy
          SELECT date(now()),  substr(addr,locate('@',addr)+1) as maildomain, count (*) as mailcount FROM mailing GROUP BY maildomain ORDER BY mailcount DESC
          use simple SQL statement (do not truncate)
        
        restriction: simple SQL statement being used
          select * from mailing
        retrieve domain IDs and put them into list (or file)
        go through list and strip the local part of email out, save the domain (base on @)
        assume that the e-mails have already went through a validation/verification process before being put into the table
         
     */
    
    //initialize variables/constants
    
    //database objects/variables
    Connection con          = null;
    Statement qry           = null;
    Statement insert        = null;
    ResultSet rs            = null;
    String database         = "test_database";
    String username         = "******";
    String password         = "******";
    final String table1     = "mailing";
    final String table1C1   = "ADDR";
    final String table2     = "addresscount";
    //final String fileName   = ""      //figure out if need to insert by file or by sQL statement
    String SQLRetrive       = "SELECT * FROM " + table1;
    //String SQLLoad          = "LOAD DATA INFILE " + fileName + " INTO TABLE " + table2;       //figure out if need to insert by file or SQL statement
    
    //data variables
    List <String> emailList         = new ArrayList<String>();
    SimpleDateFormat dateFormat     = new SimpleDateFormat("MM-dd-YYYY");
    Calendar calDate                = Calendar.getInstance();
    String date                     = dateFormat.format(calDate);
    
    
    //Connect to database
    
    String strRS = null;
    Hashtable <String, Integer> domainCount = new Hashtable<String, Integer>();
    int i = 0;
    int dupEmailCount = 0;
    
    //execute SQL statement, SELECT * FROM mailing
    //rs = ...
    while (rs.next())
    {
        strRS = rs.getString(table1C1);
        strRS = strRS.substring(strRS.lastIndexOf("@")+1);
        emailList.add(strRS);
    }
    //sort list in alphabetical order (duplicates included)
    Collections.sort(emailList);
    
    for (i=0; i < emailList.length(); i++)
    {
        //create out of bounds exception emailList.get(-1)
        if (emailList.get(i) == emailList.get(i-1))
        {
            dupEmailCount++;
        }
        else
        {
            //insert domain email, dupEmailCount into hashtable
            domainCount.put(emailList.get(i), dupEmailCount);
            dupEmailCount = 0;
        }
    }
        
    //count the duplicates
    //use TreeSet as a solution?
    
    
    
}
예제 #2
0
  public void update(MultihopMsg msg) {
    String info;
    SurgeMsg SMsg = new SurgeMsg(msg.dataGet(), msg.offset_data(0));
    if (SMsg.get_type() == 0) {

      if (SMsg.get_parentaddr() == MainFrame.BEACON_BASE_ADDRESS) {
        isDirectChild = true;
      } else {
        isDirectChild = false;
      }

      // Update message count and rate
      // Only update if this message is coming to the root from
      // a direct child
      int saddr = msg.get_sourceaddr();
      NodeInfo ni = (NodeInfo) SensorAnalyzer.proprietaryNodeInfo.get(new Integer(saddr));
      if (ni != null) {
        if (ni.isDirectChild) {
          msgCount++;
          int new_seq_no = (int) SMsg.get_seq_no() & 0x7fffff;
          if (stats_start_sequence_number == 0) stats_start_sequence_number = new_seq_no;
          if (seq_no == 0) seq_no = new_seq_no - 1;
          int diff = new_seq_no - seq_no;
          if (diff > 1000) diff = 1;
          active = true;
          long curtime = System.currentTimeMillis();
          packetTimes[packetTimesPointer++] = curtime - lastTime;
          packetTimesPointer %= SensorAnalyzer.HISTORY_LENGTH;
          packetSkips[packetSkipsPointer++] = diff;
          packetSkipsPointer %= SensorAnalyzer.HISTORY_LENGTH;
          msgRate = calcMsgRate(0);
          msgYield = calcMsgYield(0);

          SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a");

          String log = "";
          log += nodeNumber + "#";
          log += msgCount + "#";
          log += formatter.format(new Date()) + "#";
          log += curtime + "#";
          log += (curtime - lastTime) + "#";
          log += SMsg.get_parentaddr() + "#";

          parent_count[SMsg.get_parentaddr()]++;
          log += msgRate + "#";
          seq_no = new_seq_no;
          batt = (int) SMsg.get_seq_no() >> 23 & 0x1ff;

          log += seq_no + "#";
          log += hopcount + "#";

          level_sum += hopcount;
          log += SMsg.get_reading() + "#";
          log += batt + "#";
          for (int i = 0; i < 5; i++) {
            log += neighbors[i].id + "#";
            log += neighbors[i].hopcount + "#";
            log += neighbors[i].link_quality / 255.0 + "#";
          }
          log += SMsg.get_temp() + "#";
          log += SMsg.get_light() + "#";
          log += SMsg.get_accelx() + "#";
          log += SMsg.get_accely() + "#";
          log += SMsg.get_magx() + "#";
          log += SMsg.get_magy() + "#";
          System.out.println(log);

          double batt_val = (double) batt;
          batt_val = 1.25 * 1023.0 / batt_val;
          batt_val *= 256.0 / 4.0;
          // System.out.println(batt_val);
          // Store the sensor readings.
          yield_series.insertNewReading(total_yield++, new Integer((int) (yield() * 256.0)));
          time_series.insertNewReading(seq_no, new Long(curtime));
          batt_series.insertNewReading(seq_no, new Integer((int) batt_val));
          temp_series.insertNewReading(seq_no, new Integer(SMsg.get_temp()));
          light_series.insertNewReading(seq_no, new Integer(SMsg.get_light()));
          accelx_series.insertNewReading(seq_no, new Integer(SMsg.get_accelx()));
          accely_series.insertNewReading(seq_no, new Integer(SMsg.get_accely()));
          magx_series.insertNewReading(seq_no, new Integer(SMsg.get_magx()));
          magy_series.insertNewReading(seq_no, new Integer(SMsg.get_magy()));

          link_quality = neighbors[0].link_quality / 255;

          // update the edge quality as well...
          MainClass.locationAnalyzer.setQualityForEdge(
              nodeNumber.intValue(), SMsg.get_parentaddr(), (int) (link_quality * 255.0));

          lastTime = curtime;
        }
      }

      if (self_calc != false) info = msgCount + " msgs ";
      else info = "";

      this.value = SMsg.get_reading();
      if (panel != null) {
        panel.YieldLabel.setText(String.valueOf(percent_yield()) + " %");
        panel.SensorLabel.setText(String.valueOf(value));
        panel.ParentLabel.setText(String.valueOf(SMsg.get_parentaddr()));
        panel.SequenceLabel.setText(String.valueOf(seq_no));
        panel.CountLabel.setText(String.valueOf(msgCount));
        panel.DepthLabel.setText(String.valueOf(hopcount));
        panel.repaint();
      }

      this.infoString = info;
    }
  }