package com.l2jserver.service.database; import com.l2jserver.model.Model; import com.l2jserver.model.id.ID; /** * The {@link DAOResolver} resolves the {@link DataAccessObject} that provides * database operations for an given {@link Model} instance * * @author Rogiel */ public interface DAOResolver { /** * Returns the {@link DataAccessObject} used to retrieve and save objects of * type * * @param * the {@link Model} type * @param * the {@link ID} type * @param modelObject * the model object * @return the {@link DataAccessObject} for {@link Model} */ , M extends Model> DataAccessObject getDAO( M modelObject); /** * Returns the {@link DataAccessObject} used to retrieve and save objects of * type * * @param * the {@link Model} type * @param * the {@link ID} type * @param modelClass * the model class * @return the {@link DataAccessObject} for {@link Model} */ , I extends ID> DataAccessObject getDAO( Class modelClass); /** * Returns the {@link DataAccessObject} used to retrieve and save objects of * type M which use {@link ID} of type I * * @param * the {@link Model} type * @param * the {@link ID} type * @param modelIdObject * the model {@link ID} object * @return the {@link DataAccessObject} for {@link Model} */ , M extends Model> DataAccessObject getDAOFromID( I modelIdObject); /** * Returns the {@link DataAccessObject} used to retrieve and save objects of * type M which use {@link ID} of type I * * @param * the {@link Model} type * @param * the {@link ID} type * @param modelIdType * the model {@link ID} class * @return the {@link DataAccessObject} for {@link Model} */ , M extends Model> DataAccessObject getDAOFromID( Class modelIdType); }