package com.ejie.m62fb.service.registroVPP;

import java.util.List;

import com.ejie.m62fb.model.persona.Persona;
import com.ejie.x38.dto.JQGridRequestDto;
import com.ejie.x38.dto.JQGridResponseDto;

/**
 * PersonaService generated by UDA, 24-oct-2012 16:55:00.
 * 
XXXX
 */

public interface PersonaService {

	/**
	 * Inserts a single row in the Persona table.
	 * 
	 * @param persona
	 *            Persona
	 * @return Persona
	 */
	Persona add(Persona persona);

	/**
	 * Updates a single row in the Persona table.
	 * 
	 * @param persona
	 *            Persona
	 * @return Persona
	 */
	Persona update(Persona persona);

	/**
	 * Finds a single row in the Persona table.
	 * 
	 * @param persona
	 *            Persona
	 * @return Persona
	 */
	Persona find(Persona persona);
//
//	/**
//	 * Finds a List of rows in the Persona table.
//	 * 
//	 * @param persona
//	 *            Persona
//	 * @param pagination
//	 *            Pagination
//	 * @return List
//	 */
//	List<Persona> findAll(Persona persona, Pagination pagination);

//	/**
//	 * Counts rows in the Persona table.
//	 * 
//	 * @param persona
//	 *            Persona
//	 * @return Long
//	 */
//	Long findAllCount(Persona persona);

	/**
	 * Finds rows in the Persona table using like.
	 * 
	 * @param persona
	 *            Persona
	 * @param pagination
	 *            Pagination
	 * @param startsWith
	 *            Boolean
	 * @return List
	 */
	List<Persona> findAllLike(Persona filterPersona, JQGridRequestDto jqGridRequestDto,  Boolean startsWith);

	/**
	 * Finds rows in the Persona table using like.
	 * 
	 * @param persona
	 *            Persona
	 * @param pagination
	 *            Pagination
	 * @param startsWith
	 *            Boolean
	 * @return List
	 */
	List<Persona> findAll(Persona filterPersona, JQGridRequestDto jqGridRequestDto);

	/**
	 * Counts rows in the Persona table using like.
	 * 
	 * @param persona
	 *            Persona
	 * @param startsWith
	 *            Boolean
	 * @return Long
	 */
	Long findAllLikeCount(Persona persona, Boolean startsWith);

	/**
	 * Deletes a single row in the Persona table.
	 * 
	 * @param persona
	 *            Persona
	 * @return
	 */
	void remove(Persona persona);

	/**
	 * Deletes multiple rows in the Persona table.
	 * 
	 * @param personaList
	 *            List
	 * @return
	 */
	void removeMultiple(List<Persona> personaList);
	/**
	 * Filter method in the Persona table.
	 *
	 * @param filterElemento Persona
	 * @param jqGridRequestDto JQGridRequestDto
	 * @param startsWith Boolean
	 * @return JQGridResponseDto<Elemento>
	 */	
	JQGridResponseDto<Persona> filter(Persona filterPersona, JQGridRequestDto jqGridRequestDto,  Boolean startsWith);
	/**
	 * Inserta una petición para llamar al SVDI
	 * @param persona
	 * @return
	 */
	public String insertPeticionSVDI(String tipoCodigoId, String codigoId,
			 String apellido1, String fechaNacimiento);
	/**
	 * Devuelve el resultado de una petición del SVDI
	 * @param persona
	 * @return
	 */
	public Persona getResultadoSVDI(String idPeticion);
//	/**
//	 * LLama al servicio web de interoperabilidad SVDI
//	 * @param persona
//	 * @return
//	 */
//	Persona getDatosSVDI (Persona persona)throws MalformedURLException;
// Persona getDatosSVDI (Persona persona) throws MalformedURLException;
}
