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

📄 receivemesg.java

📁 一个用于实现不同数据库数据同步的程序
💻 JAVA
字号:
import java.net.*;
import java.io.*;
import java.sql.*;
import javax.sql.*;
import java.sql.DriverManager;

//数据库Agent的接受器,监听有否从其他Agent发来的更新信息
 
public class receiveMesg extends Thread
{

	private String databaseName="";
	private static String txtAddress="";
 
	private String ms="";
	private String password="";

	receiveMesg(String mesg,String dn,String ta)
	{
		ms=mesg;
		databaseName=dn;
		txtAddress=ta;
		init();
	}

	public void init()
	{
		sqlOperation so=new sqlOperation();
		password=so.StringFromDB("select * from DBINFORMATION where STATE=1","PASSWORD");
	}


	public void run()
	{
		String s=ms;
		String temp="",temp2="",fromDB="";

		int start=0,mid=0,cnt=0;
		dealMessage cutingMessage=new dealMessage();

		File file=null;
		RandomAccessFile fr=null;
		byte insertStr[]=null;
		long l=0;

		String enter="\r\n";
		int enterLength=enter.length();
		byte insertEnter[]=new byte[enterLength];
		enter.getBytes(0,enterLength,insertEnter,0);

		//Key k=null;
		sqlOperation so=null;
		writeText writeMissionManage=new writeText(databaseName,txtAddress,"MissionManageTemp.txt");
		writeText writeDaily=new writeText(databaseName,txtAddress,"Database Daily.txt");
					
		
		try
		{
			getUpdateTime gut=new getUpdateTime();
			String ntime=gut.getSystemTime();
				
			start=0;
			mid=s.indexOf("\t");
			temp=cutingMessage.cutMessage(s,start,mid);

			

			sendBySocket ds=new sendBySocket(databaseName,txtAddress);
			//k=new Key(txtAddress);



			if(temp.equals("package"))
			{
				start=s.indexOf("\t");
				mid=s.length();
				s=cutingMessage.cutMessage(s,start,mid);
		
				start=0;
				mid=s.indexOf("\t");
				temp=cutingMessage.cutMessage(s,start,mid);
				temp+="\t"+ntime;

				start=mid;
				mid=s.length();
				s=cutingMessage.cutMessage(s,start,mid);

				temp+="\t"+s;
				writeMissionManage.writingMission(temp);
				temp="------------------------------------------";
				writeMissionManage.writingMission(temp);

			}
			else
			{
				if(temp.equals("confirm"))
				{
					start=s.lastIndexOf("\t");
					mid=s.length();
					temp=cutingMessage.cutMessage(s,start,mid);
					writeMissionManage.confirmPack(temp);
				}
				else
				{	
					if(temp.equals("single"))
					{
						start=s.indexOf("\t");
						mid=s.length();
						s=cutingMessage.cutMessage(s,start,mid);

						start=0;
						mid=s.indexOf("\t");
						temp2=cutingMessage.cutMessage(s,start,mid);
						temp=temp2+"\t"+ntime+"\t";

						start=mid;
						mid=s.length();
						s=cutingMessage.cutMessage(s,start,mid);

						start=0;
						mid=s.indexOf("\t");
						fromDB=cutingMessage.cutMessage(s,start,mid);

						temp+=fromDB;
						temp+="\t1";
						writeMissionManage.writingMission(temp);

						start=mid;
						mid=s.length();
						s=cutingMessage.cutMessage(s,start,mid);

						temp="\t"+s;
						writeMissionManage.writingMission(temp);

						temp="------------------------------------------";
						writeMissionManage.writingMission(temp);

						receivePackMesg(temp2,fromDB);
								
					}
					else
					{

						if(temp.equals("search"))
						{

							start=s.indexOf("\t");
							mid=s.length();
							s=cutingMessage.cutMessage(s,start,mid);

							start=0;
							mid=s.indexOf("\t");
							temp2=cutingMessage.cutMessage(s,start,mid);
							temp="BeSearched-\t"+ntime+"\t";
				
							start=mid;
							mid=s.length();
							s=cutingMessage.cutMessage(s,start,mid);

							start=0;
							mid=s.indexOf("\t");
							fromDB=cutingMessage.cutMessage(s,start,mid);
							temp+=fromDB;

							temp+="\t"+temp2;
							writeMissionManage.writingMission(temp);

							start=mid;
							mid=s.length();
							s=cutingMessage.cutMessage(s,start,mid);

							temp="\t"+s;
							writeMissionManage.writingMission(temp);

							temp="------------------------------------------";
							writeMissionManage.writingMission(temp);
									
							dealSearchMesg(s,temp2,fromDB);	
						}
						else
						{
							oneOfPackMesg();
						}	
					}
				}
				
			}
				
				
		}catch(Exception e){}

	}

	public void oneOfPackMesg()
	{
		String s=ms;System.out.println(s);
		String temp="",temp2="",fromDB="";

		int start=0,mid=0,cnt=0;
		dealMessage cutingMessage=new dealMessage();

		writeText writeMissionManage=new writeText(databaseName,txtAddress,"MissionManageTemp.txt");
		
		//Key k=null;

		File file=null;
		RandomAccessFile fr=null;
		byte insertStr[]=null;
		long l=0;

		String enter="\r\n";
		int enterLength=enter.length();
		byte insertEnter[]=new byte[enterLength];
		enter.getBytes(0,enterLength,insertEnter,0);

		mid=s.indexOf("\t");
		temp=cutingMessage.cutMessage(s,start,mid);

		try
		{
			file=new File(txtAddress+"MissionManageTemp.txt");
			//k.decrypt(txtAddress+"MissionManageTemp.txt");

			if(file.exists())
			{
				fr=new RandomAccessFile(file,"rw");
				l=fr.getFilePointer();
				while((s=fr.readLine())!=null)
				{
					mid=s.indexOf("\t");
					if(mid>0)
					{
						start=0;
						temp2=cutingMessage.cutMessage(s,start,mid);
						if(temp.equals(temp2))
						{
							start=mid;
							mid=s.length();
							temp2=cutingMessage.cutMessage(s,start,mid);

							start=0;
							mid=temp2.indexOf("\t");
							temp2=cutingMessage.cutMessage(temp2,start,mid);

							start=s.lastIndexOf("\t");
							mid=s.length();
							cnt=Integer.parseInt(cutingMessage.cutMessage(s,start,mid));
							cnt--;
												
							start=0;
							mid=s.lastIndexOf("\t");
							s=cutingMessage.cutMessage(s,start,mid);

							start=s.lastIndexOf("\t");
							mid=s.length();
							fromDB=cutingMessage.cutMessage(s,start,mid);

							s+="\t"+cnt;
							insertStr=new byte[150-enterLength];
							s.getBytes(0,s.length(),insertStr,0);
							fr.seek(l);
							fr.write(insertStr);
							fr.write(insertEnter);
							fr.close();
							break;
						}
					}
					l=fr.getFilePointer();
				}
								
								
				//k.encryption(txtAddress+"MissionManageTemp.txt");
				start=ms.indexOf("\t");
				mid=ms.length();
				s=cutingMessage.cutMessage(ms,start,mid);
				writeMissionManage.insertWriting("\t"+s,temp2);
				if(cnt==0)
				{
					receivePackMesg(temp,fromDB);
				}
			}

		}catch(Exception e){}
	}

	public void receivePackMesg(String pno,String fromDB)
	{
		String s="";
		String temp="";
		FileWriter fw=null;
		char buffer[]=null;
		int start=0,mid=0,end=0,cut=0;
		String packNo=pno;
		int t=0;
		dealMessage cutingMessage=new dealMessage();
		writeText writeDaily=new writeText(databaseName,txtAddress,"Database Daily.txt");
		writeText writeMissionManage=new writeText(databaseName,txtAddress,"MissionManageTemp.txt");
		//Key k=null;


		sendBySocket ds=new sendBySocket(databaseName,txtAddress);
			
		sqlOperation so=new sqlOperation();
		s=so.multiSqlOperation(txtAddress,pno);

			getUpdateTime gut=new getUpdateTime();
			String nt=gut.getSystemTime();
		
			if(s.equals("NO"))
			{
				System.out.println("update seccess");
				writeMissionManage.confirmPack(packNo);
				try
				{
					writeDaily.writingDaily(nt+"\tLocal database have synchronized with "+fromDB+"\n");
				}
				catch(Exception e){}

				s="confirm\t"+packNo;
				ds.sendSingleMessage(fromDB,s);
			}
			else
			{
				System.out.println("update fail:"+s);
			}		
	}

	public void dealSearchMesg(String ms,String pno,String fromDB)
	{
		String mesg=ms;
		String s="",temp="",columnName="",value="",sql="",sql2="",sql3="",sql4="";
	
		int start=0,mid=0,end=0,cut=0;
		String packNo=pno;
		int t=0;
		dealMessage cutingMessage=new dealMessage();
		writeText writeDaily=new writeText(databaseName,txtAddress,"Database Daily.txt");
		writeText writeMissionManage=new writeText(databaseName,txtAddress,"MissionManageTemp.txt");
	
		sql="select TABLE_NAME from TABLELIST where ";
		sql2="select TABLE_NAME from TABLELIST where ";
		ResultSet rs=null,rs2=null;

		start=0;
		mid=mesg.indexOf("\t");
		if(mid!=-1)
		{
			s=cutingMessage.cutMessage(mesg,start,mid);
		}
		else
		{
			s=mesg;
		}

		mid=s.indexOf("=");
		s=s.replace("=","\t");
		start=0;
		mid=s.indexOf("\t");
		columnName=cutingMessage.cutMessage(s,start,mid);
		sql+="COLUMN_NAME='"+columnName+"'";

		start=mid;
		mid=s.length();
		value=cutingMessage.cutMessage(s,start,mid);
		sql3=columnName+"='"+value+"'";

		start=mesg.indexOf("\t");
		while(start!=-1)
		{	
			mid=mesg.length();
			mesg=cutingMessage.cutMessage(mesg,start,mid);

			start=0;
			mid=mesg.indexOf("\t");
			s=cutingMessage.cutMessage(mesg,start,mid);

			temp=s.trim();

			start=mid;
			mid=mesg.length();
			mesg=cutingMessage.cutMessage(mesg,start,mid);

			start=0;
			mid=mesg.indexOf("\t");
			if(mid!=-1)
			{
				s=cutingMessage.cutMessage(mesg,start,mid);
			}
			else
			{
				s=mesg;
			}

			s=s.replace("=","\t");
			start=0;
			mid=s.indexOf("\t");
			columnName=cutingMessage.cutMessage(s,start,mid);

			start=mid;
			mid=s.length();
			value=cutingMessage.cutMessage(s,start,mid);

			if(temp.equals("&&"))
			{
				sql+=" and ";
				sql+="COLUMN_NAME='"+columnName+"'";
				sql3+=" and ";
				sql3+=columnName+"='"+value+"'";
				
			}
			else
			{
				if(temp.equals("||"))
				{
					if(value2.length()!=0)
					{
						sql2+=" or ";
						sql4+=" or ";
					}
					sql2+="COLUMN_NAME='"+columnName+"'";
					sql4+=columnName+"='"+value+"'";
				}
			}
			
			start=mesg.indexOf("\t");
		}


		/*try
		{
			rs=so.ResultSetFromDB(sql);
			while(rs.next())
			{
				temp=rs.getString("TABLE_NAME");
				s="select * from "+temp+" where "+sql3;
				rs2=so.ResultSetFromDB(s);
				while(rs2.next())
				{
					
				}
			}
			
			
		}catch(Exception e){}*/

	}
}

⌨️ 快捷键说明

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