/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *         Florian Pirchner - Initial implementation
 */
package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.services;

import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseBySubclass;
import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.BaseBySubclassDto;

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