1%%%	Society Proof
    2%%%	Authors: Marco Alberti, Federico Chesani
    3%%%	Created: 2003-11-27
    4
    5:- nl, write('sciff_agent.pl: Starts consulting...'), nl.    6
    7:- use_module(library(chr)).    8:- use_module(quantif).    9:- use_module(ccopy).   10:- use_module(ics_quant).   11:- use_module( library(lists)).   12:- use_module(library(terms),
   13         [term_variables/2]).   14:- use_module(domains).   15:- use_module(library(jasper)).   16:- use_module(proof_util).   17:- use_module(library(system)).   18:- use_module( library(charsio)).   19:- load_files(sciff).   20
   21:- nl, write('sciff_agent.pl: consulted all external files...'), nl.   22
   23
   24
   25
   26%------------------------------------------------------------------------------
   27%	MAIN CICLE
   28%------------------------------------------------------------------------------
   29run_with_gui:-
   30	load_ics,
   31	current_time(0),
   32	society_goal,
   33	setReady,
   34	cicle(-1).
   35
   36query_the_brain(MsgList) :-
   37	nl, write('query_the_brain: '), write(MsgList), nl,
   38	load_ics,
   39	current_time(0),
   40	society_goal,
   41	evalMsg(MsgList),
   42	get_orders(List),
   43	send_orders_java(List).
   44
   45
   46evalMsg([]).
   47evalMsg([H|T]) :-
   48	call(H),
   49	evalMsg(T).
   50
   51
   52cicle(Last) :-
   53	fetchNew(NMsg, Last, Actual),
   54	doContinue(NMsg, Last, Actual).
   55
   56doContinue(_NMsg, _Last, -100) :-
   57	!,
   58	true.
   59doContinue(close_history, _Last, Actual) :-
   60	!,
   61	call(close_history),
   62	printConstraints(Actual).
   63doContinue(NMsg, _Last, Actual) :-
   64	call(NMsg),
   65	printConstraints(Actual),
   66	cicle(Actual).
   67
   68
   69
   70
   71
   72
   73%------------------------------------------------------------------------------
   74%   FETCH NEW PREDICATE
   75%------------------------------------------------------------------------------
   76fetchNew(TMsg, Last, Actual) :-
   77                clause(scv(OBJ), true),
   78                jasper_initialize([classpath(['.'])], JVM),
   79                jasper_call(JVM,
   80                                method('SocialComplianceVerifier', 'fetchNew', [instance]),
   81                                fetch_new(+object(''), +integer, [-string]),
   82                                fetch_new(OBJ, Last, Msg) ),
   83                atom_to_chars(Msg, LMsg),
   84                read_from_chars(LMsg, java_event(TMsg, Last, Actual)).
   85
   86
   87%------------------------------------------------------------------------------
   88%   SETTING READY
   89%------------------------------------------------------------------------------
   90setReady :-
   91                clause(scv(OBJ), true),
   92                jasper_initialize([classpath(['.'])], JVM),
   93                jasper_call(JVM,
   94                                method('SocialComplianceVerifier', 'setInitialized', [instance]),
   95                                set_initialized(+object('SocialComplianceVerifier')),
   96                                set_initialized(OBJ) ).
   97
   98
   99%------------------------------------------------------------------------------
  100
  101print_all_state_java(Msg) :-
  102    clause(scv(OBJ), true),
  103    !,
  104    jasper_initialize([classpath(['.'])], JVM),
  105    jasper_call(JVM,
  106                    method('SocialComplianceVerifier', 'printState', [instance]),
  107                    print_state(+object('SocialComplianceVerifier'), +chars),
  108                    print_state(OBJ, Msg) ).
  109print_all_state_java(_).
  110
  111print_all_state_java(Msg, Pos) :-
  112    clause(scv(OBJ), true),
  113    !,
  114    jasper_initialize([classpath(['.'])], JVM),
  115    jasper_call(JVM,
  116                    method('SocialComplianceVerifier', 'printState', [instance]),
  117                    print_state(+object('SocialComplianceVerifier'), +chars, +integer),
  118                    print_state(OBJ, Msg, Pos) ).
  119print_all_state_java(_, _).
  120
  121
  122
  123%------------------------------------------------------------------------------
  124% PRINTING OF THE STATE THROUGH JAVA
  125%------------------------------------------------------------------------------
  126printConstraints :-
  127    print_all_constraints.
  128    
  129printConstraints(Pos) :-
  130    print_all_constraints(Pos).
  131
  132
  133%------------------------------------------------------------------------------
  134print_all_constraints :-
  135    findall_constraints(_, X),
  136    crea_lista_chars(X, Lista),
  137    print_all_state_java(Lista).
  138
  139print_all_constraints(Pos) :-
  140    findall_constraints(_, X),
  141    crea_lista_chars(X, Lista),
  142    print_all_state_java(Lista, Pos).
  143
  144
  145%------------------------------------------------------------------------------
  146
  147get_orders(List) :-
  148    findall_constraints(_, X),
  149    crea_lista_chars(X, List).
  150
  151send_orders_java(Msg) :-
  152    clause(scv(OBJ), true),
  153    !,
  154    jasper_initialize([classpath(['.'])], JVM),
  155    jasper_call(JVM,
  156                    method('SCIFFBehaviour', 'sendOrders', [instance]),
  157                    print_state(+object('SCIFFBehaviour'), +chars),
  158                    print_state(OBJ, Msg) ).
  159send_orders_java(_).
  160
  161
  162%------------------------------------------------------------------------------
  163
  164
  165user:unknown_predicate_handler(society_goal, _, true) :-
  166	nl, write('WARNING: the society_goal predicate has not been defined!!!'), nl.
  167
  168
  169:- nl, write('sciff_agent.pl: consulted everything.'), nl.