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

📄 agentpda.java

📁 利用新的分布式对象技术-移动agent实现的掌上电脑证券监管系统
💻 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 + -