package org.eclipse.osbp.authentication.account.dtos.service;

import org.eclipse.osbp.authentication.account.dtos.UserAccountFilterDto;
import org.eclipse.osbp.authentication.account.entities.UserAccountFilter;
import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;

@SuppressWarnings("all")
public class UserAccountFilterDtoService extends AbstractDTOServiceWithMutablePersistence<UserAccountFilterDto, UserAccountFilter> {
  public UserAccountFilterDtoService() {
    // set the default persistence ID
    setPersistenceId("authentication");
  }
  
  public Class<UserAccountFilterDto> getDtoClass() {
    return UserAccountFilterDto.class;
  }
  
  public Class<UserAccountFilter> getEntityClass() {
    return UserAccountFilter.class;
  }
  
  public Object getId(final UserAccountFilterDto dto) {
    return dto.getId();
  }
}
