package com.bd.movie.domain;

import com.bd.framework.accessapi.*;

import com.bd.movie.accessapi.*;
import com.bd.movie.accessapi.PersonAccessFactory;

import java.util.List;
import java.util.Map;

/**
 <!-- begin-user-doc -->
 * Repository for Person
 <!-- end-user-doc -->
 *
 * @generated
 */
public class PersonRepository {

    /**
     * Reference to the access object factory. 
     * @generated 
     */
    private PersonAccessFactory personAccessFactory = PersonAccessFactory.getInstance();

    /** @generated */
    public PersonRepository() {
    }
    

    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public Person forId(String idthrows PersonNotFoundException {
        FindByIdAccess<Person, String> ao = personAccessFactory.createFindByIdAccess();        
        ao.setId(id);
        ao.execute();
        if (ao.getResult() == null) {
            throw new PersonNotFoundException("No Person found with id: " + id);
        }
        return ao.getResult();       
     }
     
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public void add(Person entity)  {
        CreateAccess<Person> ao = personAccessFactory.createCreateAccess();        
        ao.setEntity(entity);
        ao.execute();       
     }
     
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public void update(Person entity)  {
        UpdateAccess<Person> ao = personAccessFactory.createUpdateAccess();        
        ao.setEntity(entity);
        ao.execute();       
     }
     
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public List<Person> findByQuery(String query, Map parameters)  {
        FindByQueryAccess<Person> ao = personAccessFactory.createFindByQueryAccess();        
        ao.setQuery(query);        
        ao.setParameters(parameters);
        ao.execute();
        return ao.getResult();       
     }
     
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public Person findPersonByName(String name)  {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("findPersonByName not implemented");       
     }
     
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public List<Person> findByExample(Person example)  {
        FindByExampleAccess<Person> ao = personAccessFactory.createFindByExampleAccess();        
        ao.setExample(example);
        ao.execute();
        return ao.getResult();       
     }
     
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public void delete(Person entity)  {
        DeleteAccess<Person> ao = personAccessFactory.createDeleteAccess();        
        ao.setEntity(entity);
        ao.execute();       
     }