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

📄 db.py

📁 Java Communicating Agents是一个用于开发网络反应式信息agent的框架
💻 PY
字号:
import javaimport jacommafrom jacomma.icm.type import Symbolfrom jacomma.platform.core import Agent, AgentManager, \	 MessagePattern, AgentObserver, AgentObserverAdapter# The Message Handler classclass QueryHandler( Agent.MessageHandler ):	def onMessage( self, agent, msg ):		print agent, ": Incoming query", msg.getContent().get( 1 )		con = agent.getProperty( "connection" )		try:			stmt = con.createStatement()			res = java.util.ArrayList()			rs = stmt.executeQuery( msg.getContent().get( 1 ) )			md = rs.getMetaData()			cc = md.getColumnCount()			res.add( Symbol( "query-ref" ) )			head = java.util.ArrayList()			res.add( head )				# column labels			for i in range( 1, cc + 1 ) :				head.add( md.getColumnLabel( i ) )				# result set			rsl = java.util.ArrayList()			res.add( rsl )			while( rs.next() ) :				cur = java.util.ArrayList()				rsl.add( cur )				for i in range( 1, cc + 1 ):					cur.add( rs.getObject( i ) )			print agent, "Query processed"			agent.send( msg.replyto(), res )		except java.sql.SQLException, exc:			print agent, exc.getMessage()			res = java.util.ArrayList()			res.add( Symbol( "query-error" ) )			res.add( exc.getMessage() )			agent.send( msg.replyto(), res )# The Message Handler classclass UpdateHandler( Agent.MessageHandler ):	def onMessage( self, agent, msg ):		print agent, ": Incoming update", msg.getContent().get( 1 )		con = agent.getProperty( "connection" )		try:			stmt = con.createStatement()			res = java.util.ArrayList()			res.add( Symbol( "update-ref" ) )			res.add( java.lang.Integer( stmt.executeUpdate( msg.getContent().get( 1 ) ) ) )			print agent, "Update processed"			agent.send( msg.replyto(), res )		except java.sql.SQLException, exc:			print agent, exc.getMessage()			res = java.util.ArrayList()			res.add( Symbol( "update-error" ) )			res.add( exc.getMessage() )			agent.send( msg.replyto(), res )						## The pattern test objectclass query_test( java.lang.Object ) :	def equals( self, msg ) :		l = msg.getContent()		return java.util.List.isInstance( l ) \			   and l.size() == 2 \			   and l.get( 0 ).equals( Symbol( "query" ) ) \			   and java.lang.String.isInstance( l.get( 1 ) )	## The pattern test objectclass update_test( java.lang.Object ) :	def equals( self, msg ) :		l = msg.getContent()		return java.util.List.isInstance( l ) \			   and l.size() == 2 \			   and l.get( 0 ).equals( Symbol( "update" ) ) \			   and java.lang.String.isInstance( l.get( 1 ) )# The local observerclass DBObserver( AgentObserverAdapter ):	def __init__( self, con ) :		self.con_ = con	def onRegisteredAgent( self, agent, at ):		agent.setProperty( "connection", self.con_ )		query_ptrn = MessagePattern.createPattern( java.util.List, query_test() )		agent.registerHandler( query_ptrn, QueryHandler() )		update_ptrn = MessagePattern.createPattern( java.util.List, update_test() )		agent.registerHandler( update_ptrn, UpdateHandler() )	def onDeregisteredAgent( self, agent, at ) :		self.con_.close()## the code that creates the agentdef spawnAgent( name, driver, url, user, passwd ) :	java.lang.Class.forName( driver )	con = java.sql.DriverManager.getConnection( url, user, passwd )	return AgentManager.instance.createAgent( name, DBObserver( con ) )

⌨️ 快捷键说明

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