189 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*************************************************************************
 | |
| *									 *
 | |
| *	 YAP Prolog 							 *
 | |
| *									 *
 | |
| *	Yap Prolog was developed at NCCUP - Universidade do Porto	 *
 | |
| *									 *
 | |
| * Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997	 *
 | |
| *									 *
 | |
| **************************************************************************
 | |
| *									 *
 | |
| * File:		myddas_errors.yap					 *
 | |
| * Last rev:								 *
 | |
| * mods:									 *
 | |
| * comments:	MYDDAS errors checks and errors Messages                 *
 | |
| *									 *
 | |
| *************************************************************************/
 | |
| 
 | |
| :- module(myddas_errors,[
 | |
| 			 '$error_checks'/1
 | |
| 			 ]).
 | |
| 
 | |
| :- use_module(myddas_util_predicates,[
 | |
| 				      '$make_a_list'/2,
 | |
| 				      '$check_fields'/2,
 | |
| 				      '$check_list_on_list'/2
 | |
| 				      ]).
 | |
| 
 | |
| '$error_checks'(db_abolish(ModulePredName,Arity)):-!,
 | |
| 	(ModulePredName = Module:PredName ->
 | |
| 	    atom(Module),
 | |
| 	    atom(PredName)
 | |
| 	;
 | |
| 	    atom(ModulePredName)
 | |
| 	),
 | |
| 	number(Arity).
 | |
| '$error_checks'(db_show_databases(Connection)):- !,
 | |
| 	atom(Connection).
 | |
| '$error_checks'(db_show_database(Connection,_)):- !,
 | |
| 	atom(Connection).
 | |
| '$error_checks'(db_my_sql_mode(Connection,_)):- !,
 | |
| 	atom(Connection).
 | |
| '$error_checks'(db_change_database(Connection,Database)):- !,
 | |
| 	atom(Connection),
 | |
| 	atom(Database).
 | |
| '$error_checks'(db_prolog_select_multi(Connection,DbGoalsList,_)):- !,
 | |
| 	atom(Connection),
 | |
| 	is_list(DbGoalsList).
 | |
| '$error_checks'(db_multi_queries_number(Connection,Number)):-!,
 | |
|         atom(Connection),
 | |
| 	( var(Number) ->
 | |
| 	    true
 | |
| 	;
 | |
| 	    number(Number),
 | |
| 	    Number > 0
 | |
| 	).
 | |
| '$error_checks'(db_command(Connection,SQL)):-!,
 | |
|         atom(Connection),
 | |
|         nonvar(SQL).
 | |
| #ifdef MYDDAS_STATS
 | |
| '$error_checks'(db_stats(_,List)):-!,
 | |
| 	var(List).
 | |
| '$error_checks'(db_stats_time(Reference,Time)):-!,
 | |
| 	number(Reference),
 | |
| 	var(Time).
 | |
| #endif
 | |
| '$error_checks'(db_export_view(Connection,TableViewName,SQLorDbGoal,FieldsInf)):-!,
 | |
|         atom(Connection),
 | |
| 	( atom(TableViewName) -> atom(SQLorDbGoal) ; true ),
 | |
|         ( atom(SQLorDbGoal) -> atom(TableViewName) ; true ),
 | |
| 	is_list(FieldsInf).
 | |
| '$error_checks'(db_create_table(Connection,TableName,FieldsInf)):-!,
 | |
|         atom(Connection),
 | |
| 	atom(TableName),
 | |
| 	FieldsInf = [_|_].
 | |
| '$error_checks'(db_insert3(Connection,RelationName,PredName)):-!,
 | |
|         atom(Connection),
 | |
| 	atom(RelationName),
 | |
| 	atom(PredName).
 | |
| '$error_checks'(db_insert2(Connection,_,[query(Att,[rel(Relation,_)],_)])) :- !,
 | |
|         atom(Connection), 
 | |
| 	get_value(Connection,Con),
 | |
| 	% Number of fields of the Relation, must be
 | |
|         % equal to the number of attributes
 | |
| 	c_db_connection_type(Con,ConType),
 | |
| 	( ConType == mysql ->
 | |
| 	    c_db_my_number_of_fields(Relation,Con,Arity)
 | |
| 	; ConType == sqlit3 ->
 | |
| 	    c_sqlit3_number_of_fields(Relation,Con,Arity)
 | |
| 	;
 | |
| 	    c_db_odbc_number_of_fields(Relation,Con,Arity)
 | |
| 	),
 | |
| 	length(Att,Arity),
 | |
| 	% All fields must be Instanciated ( FALTA POR O NULL )
 | |
| 	'$make_a_list'(Arity,FieldsProperties),
 | |
| 	( ConType == mysql ->
 | |
| 	    c_db_my_get_fields_properties(Relation,Con,FieldsProperties)
 | |
| 	;ConType == sqlit3 ->
 | |
| 	    c_sqlit3_get_fields_properties(Relation,Con,FieldsProperties)
 | |
| 	;
 | |
| 	    c_db_odbc_get_fields_properties(Relation,Con,FieldsProperties)
 | |
| 	),
 | |
| 	'$check_fields'(Att,FieldsProperties).
 | |
| '$error_checks'(db_open(mysql,Connection,Host/Db/Port/_,User,Password)) :- !,
 | |
| 	nonvar(Host), % ==  \+var(Host)
 | |
| 	nonvar(User),
 | |
| 	nonvar(Password),
 | |
| 	nonvar(Db),
 | |
| 	integer(Port),
 | |
| 	atom(Connection),
 | |
| 	get_value(Connection,[]).  % Nao pode ter nenhum valor atribuido
 | |
| '$error_checks'(db_open(odbc,Connection,ODBCEntry,User,Password)) :- !,
 | |
| 	nonvar(ODBCEntry), % ==  \+var(ODBCEntry)
 | |
| 	nonvar(User),
 | |
| 	nonvar(Password),
 | |
| 	atom(Connection),
 | |
| 	get_value(Connection,[]).  % Nao pode ter nenhum valor atribuido
 | |
| '$error_checks'(db_open(postgres,Connection,_Host/_Db/_Port/_,_User,_Password)) :- !,
 | |
| 	atom(Connection),
 | |
| 	get_value(Connection,[]).  % Nao pode ter nenhum valor atribuido
 | |
| '$error_checks'(db_open(postgres,Connection,_Host/_Db/_Port/_,_User)) :- !,
 | |
| 	atom(Connection),
 | |
| 	get_value(Connection,[]).  % Nao pode ter nenhum valor atribuido
 | |
| '$error_checks'(db_open(postgres,Connection,_Host/_Db/_Port/_)) :- !,
 | |
| 	atom(Connection),
 | |
| 	get_value(Connection,[]).  % Nao pode ter nenhum valor atribuido
 | |
| '$error_checks'(db_open(postgres,Connection)) :- !,
 | |
| 	atom(Connection),
 | |
| 	get_value(Connection,[]).  % Nao pode ter nenhum valor atribuido
 | |
| '$error_checks'(db_open(sqlite3,Connection,File,_User,_Password)) :- !,
 | |
| 	nonvar(File), % ==  \+var(ODBCEntry)
 | |
| 	atom(Connection),
 | |
| 	get_value(Connection,[]).  % Nao pode ter nenhum valor atribuido
 | |
| '$error_checks'(db_view(Connection,Pred,DbGoal)) :- !,
 | |
|         atom(Connection),
 | |
|         nonvar(DbGoal),
 | |
| 	nonvar(Pred),
 | |
| 	nonvar(DbGoal),
 | |
| 	Pred =.. [_|_],
 | |
| 	DbGoal =.. [_|_].
 | |
| 	%'$check_list_on_list'(PredArgs,DbGoalArgs).
 | |
| '$error_checks'(db_import(Connection,RelationName,PredName)) :- !,
 | |
|         atom(Connection),
 | |
|         atom(RelationName),
 | |
| 	atom(PredName).
 | |
| '$error_checks'(db_get_attributes_types(Connection,RelationName,_)) :- !,
 | |
|         atom(Connection),
 | |
| 	nonvar(RelationName).
 | |
| '$error_checks'(db_call_procedure(_,Procedure,Args,LA)) :- !,
 | |
| 	nonvar(Procedure),
 | |
| 	ground(Args),
 | |
| 	not ground(LA).
 | |
| '$error_checks'(db_sql(Connection,SQL,LA)):- !,
 | |
|         atom(Connection),
 | |
|         nonvar(SQL),
 | |
| 	not ground(LA).
 | |
| '$error_checks'(db_number_of_fields(Connection,RelationName,_)) :- !,
 | |
|         atom(Connection),
 | |
| 	nonvar(RelationName).
 | |
| '$error_checks'(db_close(Connection)) :- !,
 | |
|         atom(Connection).
 | |
| % must have only one relation
 | |
| '$error_checks'(db_datalog_describe(Relation,_)) :- !,
 | |
| 	nonvar(Relation).
 | |
| '$error_checks'(db_describe(Connection,Relation,_)) :- !,
 | |
| 	atom(Connection),
 | |
| 	nonvar(Relation).
 | |
| '$error_checks'(db_my_show_tables(_)):- !.
 | |
| '$error_checks'(db_is_database_predicate(PredName,Arity,Module)):-!,
 | |
|         nonvar(PredName),
 | |
| 	nonvar(Arity),
 | |
| 	nonvar(Module).
 | |
| % Prevent the error of given an atom that has no value
 | |
| '$error_checks'(get_value(Connection,Con)) :- !,
 | |
| 	% This also prevents the case of giving the number of the connection
 | |
| 	% as an argument
 | |
| 	atom(Connection),
 | |
| 	var(Con),
 | |
| 	get_value(Connection,Value),
 | |
| 	Value \== [].
 | |
| 
 | |
| % Prevent the error of given an atom that has no value
 | |
| '$error_checks'(get_value(Conn,Connection)) :- !,
 | |
| 	% This also prevents the case of giving the number of the connection
 | |
| 	% as an argument
 | |
| 	atom(Conn),
 | |
| 	var(Connection),
 | |
| 	get_value(Conn,Value),
 | |
| 	Value \== [].
 |