package de.ivu.elect.exchange.gebietsbaum.mapper;

import java.io.Serializable;
import java.util.Map;

import javax.inject.Inject;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gebietsbaum.entity.GebietPolygonPoint;
import de.ivu.elect.business.gebietsbaum.entity.GebietPolygonPointArt;
import de.ivu.elect.interfaces.core.GebietReferenz;

/**
 *  on 22.06.2015.
 */
public class GebietPolygonMapperUtil implements Serializable {

  @Inject
  GebietMapperUtil gebietMapperUtil;

  public GebietPolygonPointArt mappe(de.ivu.elect.interfaces.gebietgeometrie.GebietPolygonPointArt gebietPolygonPointArt) {
    return GebietPolygonPointArt.valueOf(gebietPolygonPointArt.name());
  }

  public de.ivu.elect.interfaces.gebietgeometrie.GebietPolygonPointArt mappe(GebietPolygonPointArt gebietPolygonPointArt) {
    return de.ivu.elect.interfaces.gebietgeometrie.GebietPolygonPointArt.valueOf(gebietPolygonPointArt.name());
  }

  public GebietPolygonPoint mappe(de.ivu.elect.interfaces.gebietgeometrie.GebietPolygonPoint from, Map<GebietReferenz, Gebiet> gebieteNachReferenz) {
    GebietPolygonPoint result = new GebietPolygonPoint();
    result.setGebietPolygonPointArt(mappe(from.getGebietPolygonPointArt()));
    result.setPosition(from.getPosition());
    result.setLatitude(from.getLatitude());
    result.setLongitude(from.getLongitude());
    result.setGebiet(gebietMapperUtil.createGebiet(from.getGebiet(), gebieteNachReferenz));
    return result;
  }

  public de.ivu.elect.interfaces.gebietgeometrie.GebietPolygonPoint mappe(GebietPolygonPoint from) {
    de.ivu.elect.interfaces.gebietgeometrie.GebietPolygonPoint result = new de.ivu.elect.interfaces.gebietgeometrie.GebietPolygonPoint();
    result.setGebietPolygonPointArt(mappe(from.getGebietPolygonPointArt()));
    result.setPosition(from.getPosition());
    result.setLatitude(from.getLatitude());
    result.setLongitude(from.getLongitude());
    result.setGebiet(gebietMapperUtil.createGebietReferenz(from.getGebiet()));
    return result;
  }

}
