package org.osbp.tests.dtos.service;

import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
import org.osbp.tests.dtos.DepartmentDto;
import org.osbp.tests.entities.Department;

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