package de.opitzconsulting.orcas.ot;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;

import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.xmi.XMLResource;
import org.eclipse.emf.ecore.xmi.impl.XMLResourceFactoryImpl;

import de.opitzconsulting.orcasDsl.Model;

public class ModelWriter
{
  public static String getSkriptXml( Model pModel )
  {
    Resource.Factory.Registry lRegistry = Resource.Factory.Registry.INSTANCE;
    Map<String,Object> lMap = lRegistry.getExtensionToFactoryMap();
    lMap.put( "xml", new XMLResourceFactoryImpl() );

    ResourceSet lResourceSet = new ResourceSetImpl();
    Resource lResource = lResourceSet.createResource( URI.createFileURI( "*.xml" ) );

    ((XMLResource)lResource).getDefaultSaveOptions();

    lResource.getContents().add( pModel );
    try
    {
      ByteArrayOutputStream lByteArrayOutputStream = new ByteArrayOutputStream();
      lResource.save( lByteArrayOutputStream, Collections.EMPTY_MAP );

      return new String( lByteArrayOutputStream.toByteArray() );
    }
    catch( IOException e )
    {
      throw new RuntimeException( e );
    }
  }
}