?? agentpda.java
字號:
package examples.simple;
import de.ikv.grasshopper.communication.*;
import de.ikv.grasshopper.util.SearchFilter;
import de.ikv.grasshopper.type.AgentInfo;
import de.ikv.grasshopper.agency.MigrationFailedException;
//import javax.swing.JOptionPane;
import java.sql.*;
import java.io.*;
public class agentPDA extends de.ikv.grasshopper.agent.MobileAgent
{
int state;
String[][] dataOfDB,dataOfDBCurrentNeed;
int recordNumOfLastAllVisit=0;
int recordNumOfCurrentVisit;
int recordNumWrite;
boolean fetchAllData=true;
RandomAccessFile dataFile;
String minJYGS,minJYJG;
String oldminJYGS="0";
String oldminJYJG="0";
public void init(Object[] creationArgs)
{
File oldFile=new File("fetchedData.txt");
if (oldFile.exists())
{
oldFile.delete();
}
state = 0;
}
public String getName() {
return "agentPDA ";
}
public void live()
{
switch(state)
{
case 0:
log("I'm moving to the data server to get data. please wait...");
state = 1;
String DBLocation;
DBLocation="socket://202.115.30.165:7000/202.115.30.165";
try
{
move(new GrasshopperAddress(DBLocation));
}
catch (Exception e45)
{
log("Migration failed: ", e45);
}
state = 0;
break;
case 1:
SearchFilter filter = new SearchFilter();
AgentInfo[] allAgents=getAgentSystem().listAgents(filter);
int CreatedThisAgent=0;
for (int i=0;i<allAgents.length;i++)
{
if (allAgents[i].getHome().equals(this.getInfo().getHome()))
{
CreatedThisAgent++;
}
}
if (CreatedThisAgent==2)
{
try
{
remove();
}
catch (Exception e118)
{
log("Removal failed. ",e118);
}
}
log("I'm picking up the data...");
state = 2;
log("Fistly,I'll fetch all the data ! ");
lookUpDB();
recordNumOfLastAllVisit=recordNumOfCurrentVisit;
//fetchAllData=false;
try
{
copy(getInfo().getHome());
}
catch (Exception e71)
{
log("Return trip failed: ", e71);
try
{
remove();
}
catch (Exception e78)
{
log("Removal failed. ",e78);
}
}
fetchAllData=false;
try
{
Thread.currentThread().sleep(2000);
}
catch(InterruptedException e87)
{
log("exception");
}
log("after delay 2 second ");
System.out.println(" after delay 2 second ,hello!92");
System.out.println(" sdf ");
while (true)
{
try
{
Thread.currentThread().sleep(2000);
}
catch(InterruptedException e100)
{
log("exception");
}
lookUpDB();
if (recordNumOfLastAllVisit!=recordNumOfCurrentVisit)
{
try
{
System.out.println("i will go home.109");
copy(getInfo().getHome());
}
catch(MigrationFailedException e142)
{ log("Return trip failed: MigrationFailedException e142");
try
{
remove();
}
catch (Exception e118)
{
log("Removal failed. ",e118);
}
}
catch (Exception e111)
{
log("Return trip failed: Exception e111");
try
{
remove();
}
catch (Exception e118)
{
log("Removal failed. ",e118);
}
}
fetchAllData=false;
recordNumOfLastAllVisit=recordNumOfCurrentVisit;
}
log("after delay 2 second");
System.out.println("after delay 2 second ,hello!126");
}
// break;
case 2:
log("New data returned,hello!");
System.out.println("New data returned ,hello!");
viewDB();
try
{
remove();
}
catch (Exception e149)
{
log("Removal failed. ",e149);
}
break;
}
}
public void lookUpDB()
{
String DBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
String ConnStr="jdbc:odbc:gpjy";
String MyUser="sa";
String MyPassword="";
Connection conn = null;
ResultSet rs = null;
ResultSet preRS=null;
try
{
Class.forName(DBDriver);
}
catch(java.lang.ClassNotFoundException e175)
{
System.err.println("myJdbc (): " + e175.getMessage());
}
try
{
conn = DriverManager.getConnection(ConnStr,MyUser,MyPassword);
Statement stmt = conn.createStatement();
preRS=stmt.executeQuery("select * from shezhi");
preRS.next();
minJYGS=preRS.getString("jygs");
minJYJG=preRS.getString("jyjg");
System.out.println("minJYGS = "+minJYGS);
System.out.println("oldminJYGS = "+oldminJYGS);
System.out.println("minJYJG = "+minJYJG);
System.out.println("oldminJYJG = "+oldminJYJG);
preRS.close();
rs = stmt.executeQuery("select * from gp where gpgs>"
+ minJYGS + "or gpjg>" + minJYJG + "ORDER BY no");
recordNumOfCurrentVisit=0;
while (rs.next())
{
recordNumOfCurrentVisit++;
}
rs = stmt.executeQuery("select * from gp where gpgs>"
+ minJYGS + "or gpjg>" + minJYJG + "ORDER BY no");
log("recordNumOfCurrentVisit is "+recordNumOfCurrentVisit);
dataOfDB=new String[recordNumOfCurrentVisit][4];
recordNumWrite=0;
while (rs.next())
{
// System.out.println("backup to dataOfDBor...");
dataOfDB[recordNumWrite][0]=rs.getString("gpdm");
dataOfDB[recordNumWrite][1]=(rs.getObject("gpjg")).toString();
dataOfDB[recordNumWrite][2]=rs.getString("gpgs");
dataOfDB[recordNumWrite][3]=rs.getString("yssj");
recordNumWrite+=1;
}
log("recordNumWrite ="+recordNumWrite);
System.out.println("the number of row is "+ recordNumWrite);
//if it is the first time to invoke this method, then we'll
//fetch all the data of the table.
//if (fetchAllData)
//{
// recordNumOfLastAllVisit=0;
//}
if (fetchAllData||(!(minJYGS.equals(oldminJYGS)))||(!(minJYJG.equals(oldminJYJG))))
{
recordNumOfLastAllVisit=0;
dataOfDBCurrentNeed=new String[recordNumWrite][4];
System.out.println("yes,fetch all the data.11111");
oldminJYGS=minJYGS;
oldminJYJG=minJYJG;
fetchAllData=true;
}
// if it is not first time to invoke this method.
else
{
if (recordNumOfCurrentVisit>recordNumOfLastAllVisit)
{
recordNumWrite=recordNumOfCurrentVisit-recordNumOfLastAllVisit;
dataOfDBCurrentNeed=new String[recordNumWrite][4];
System.out.println("no,it is unncessary to fetch the data.");
}
else
{
if (recordNumOfCurrentVisit<recordNumOfLastAllVisit)
{
recordNumWrite=recordNumOfCurrentVisit;
dataOfDBCurrentNeed=new String[recordNumWrite][4];
System.out.println("something is wrong with the table");
}
}
}
if (recordNumOfCurrentVisit!=recordNumOfLastAllVisit)
{
for (int i=0;i<recordNumWrite;i++)
{
//System.out.println("recordNumWrite = "+recordNumWrite);
dataOfDBCurrentNeed[i][0]=dataOfDB[recordNumOfLastAllVisit+i][0];
dataOfDBCurrentNeed[i][1]=dataOfDB[recordNumOfLastAllVisit+i][1];
dataOfDBCurrentNeed[i][2]=dataOfDB[recordNumOfLastAllVisit+i][2];
dataOfDBCurrentNeed[i][3]=dataOfDB[recordNumOfLastAllVisit+i][3];
}
}
}
catch(SQLException e272)
{
System.err.println("aq.executeQuery:272"+e272.getMessage());
}
System.out.println("the number of row is "+ recordNumWrite);
//////////////////////////////////////////////////////////////
}
public void viewDB()
{
try
{
//if (fetchAllData)
//{
//}
dataFile = new RandomAccessFile("fetchedData.txt","rw");
dataFile.seek(dataFile.length());
for (int i=0;i<recordNumWrite;i++)
{
//System.out.println(dataOfDBCurrentNeed[i][0]
// + " " + dataOfDBCurrentNeed[i][1]
// + " " + dataOfDBCurrentNeed[i][2]
// + " " + dataOfDBCurrentNeed[i][3]);
System.out.println("i="+i);
dataFile.writeBytes(dataOfDBCurrentNeed[i][0]
+" " + dataOfDBCurrentNeed[i][1]
+" " + dataOfDBCurrentNeed[i][2]
+" " + dataOfDBCurrentNeed[i][3]
+" ");
}
}
catch(IOException e269)
{
System.err.println(e269);
}
finally
{
try
{
dataFile.close();
}
catch(Exception e279)
{
System.err.println(e279);
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -