package com.bd.movie.domain;

import com.bd.framework.accessapi.*;

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

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

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

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

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

    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public Library forId(int idthrows LibraryNotFoundException {
        FindByIdAccess<Library, Integer> ao = libraryAccessFactory.createFindByIdAccess();        
        ao.setId(id);
        ao.execute();
        if (ao.getResult() == null) {
            throw new LibraryNotFoundException("No Library found with id: " + id);
        }
        return ao.getResult();       
     }
     
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public void create(Library entity)  {
        CreateAccess<Library> ao = libraryAccessFactory.createCreateAccess();        
        ao.setEntity(entity);
        ao.execute();       
     }
     
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public List<Library> findByQuery(String query, Map parameters)  {
        FindByQueryAccess<Library> ao = libraryAccessFactory.createFindByQueryAccess();        
        ao.setQuery(query);        
        ao.setParameters(parameters);
        ao.execute();
        return ao.getResult();       
     }
     
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public Library findLibraryByName(String name)  {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("findLibraryByName not implemented");       
     }
     
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public int getNumberOfMovies(int libraryId)  {
        GetNumberOfMoviesAccess ao = libraryAccessFactory.createGetNumberOfMoviesAccess();        
        ao.setLibraryId(libraryId);
        ao.execute();
        return ao.getResult();       
     }
     
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public List<Media> findMediaByName(int libraryId, String name)  {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("findMediaByName not implemented");       
     }
     
    /**
     <!-- begin-user-doc -->
     <!-- end-user-doc -->
     * @generated
     */
     public List<Media> findMediaByCharacter(int libraryId, String characterName)  {
        // TODO Auto-generated method stub
        throw new UnsupportedOperationException("findMediaByCharacter not implemented");       
     }