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