/**
 * 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.entitydsl.documentation.demo.dtos.services;

import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
import org.eclipse.osbp.entitydsl.documentation.demo.Foo;
import org.eclipse.osbp.entitydsl.documentation.demo.dtos.FooDto;

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