%%% Society Proof %%% Authors: Marco Alberti, Federico Chesani %%% Created: 2003-11-27 :- nl, write('sciff_agent.pl: Starts consulting...'), nl. :- use_module(library(chr)). :- use_module(quantif). :- use_module(ccopy). :- use_module(ics_quant). :- use_module( library(lists)). :- use_module(library(terms), [term_variables/2]). :- use_module(domains). :- use_module(library(jasper)). :- use_module(proof_util). :- use_module(library(system)). :- use_module( library(charsio)). :- load_files(sciff). :- nl, write('sciff_agent.pl: consulted all external files...'), nl. %------------------------------------------------------------------------------ % MAIN CICLE %------------------------------------------------------------------------------ run_with_gui:- load_ics, current_time(0), society_goal, setReady, cicle(-1). query_the_brain(MsgList) :- nl, write('query_the_brain: '), write(MsgList), nl, load_ics, current_time(0), society_goal, evalMsg(MsgList), get_orders(List), send_orders_java(List). evalMsg([]). evalMsg([H|T]) :- call(H), evalMsg(T). cicle(Last) :- fetchNew(NMsg, Last, Actual), doContinue(NMsg, Last, Actual). doContinue(_NMsg, _Last, -100) :- !, true. doContinue(close_history, _Last, Actual) :- !, call(close_history), printConstraints(Actual). doContinue(NMsg, _Last, Actual) :- call(NMsg), printConstraints(Actual), cicle(Actual). %------------------------------------------------------------------------------ % FETCH NEW PREDICATE %------------------------------------------------------------------------------ fetchNew(TMsg, Last, Actual) :- clause(scv(OBJ), true), jasper_initialize([classpath(['.'])], JVM), jasper_call(JVM, method('SocialComplianceVerifier', 'fetchNew', [instance]), fetch_new(+object(''), +integer, [-string]), fetch_new(OBJ, Last, Msg) ), atom_to_chars(Msg, LMsg), read_from_chars(LMsg, java_event(TMsg, Last, Actual)). %------------------------------------------------------------------------------ % SETTING READY %------------------------------------------------------------------------------ setReady :- clause(scv(OBJ), true), jasper_initialize([classpath(['.'])], JVM), jasper_call(JVM, method('SocialComplianceVerifier', 'setInitialized', [instance]), set_initialized(+object('SocialComplianceVerifier')), set_initialized(OBJ) ). %------------------------------------------------------------------------------ print_all_state_java(Msg) :- clause(scv(OBJ), true), !, jasper_initialize([classpath(['.'])], JVM), jasper_call(JVM, method('SocialComplianceVerifier', 'printState', [instance]), print_state(+object('SocialComplianceVerifier'), +chars), print_state(OBJ, Msg) ). print_all_state_java(_). print_all_state_java(Msg, Pos) :- clause(scv(OBJ), true), !, jasper_initialize([classpath(['.'])], JVM), jasper_call(JVM, method('SocialComplianceVerifier', 'printState', [instance]), print_state(+object('SocialComplianceVerifier'), +chars, +integer), print_state(OBJ, Msg, Pos) ). print_all_state_java(_, _). %------------------------------------------------------------------------------ % PRINTING OF THE STATE THROUGH JAVA %------------------------------------------------------------------------------ printConstraints :- print_all_constraints. printConstraints(Pos) :- print_all_constraints(Pos). %------------------------------------------------------------------------------ print_all_constraints :- findall_constraints(_, X), crea_lista_chars(X, Lista), print_all_state_java(Lista). print_all_constraints(Pos) :- findall_constraints(_, X), crea_lista_chars(X, Lista), print_all_state_java(Lista, Pos). %------------------------------------------------------------------------------ get_orders(List) :- findall_constraints(_, X), crea_lista_chars(X, List). send_orders_java(Msg) :- clause(scv(OBJ), true), !, jasper_initialize([classpath(['.'])], JVM), jasper_call(JVM, method('SCIFFBehaviour', 'sendOrders', [instance]), print_state(+object('SCIFFBehaviour'), +chars), print_state(OBJ, Msg) ). send_orders_java(_). %------------------------------------------------------------------------------ user:unknown_predicate_handler(society_goal, _, true) :- nl, write('WARNING: the society_goal predicate has not been defined!!!'), nl. :- nl, write('sciff_agent.pl: consulted everything.'), nl.