blob: a82e0dac9f506e91c80f3cb221e974e5148b9908 [file] [log] [blame]
/**
* <copyright>
* </copyright>
*
* $Id: MetadataResourceImpl.java,v 1.7 2007/05/11 17:54:56 gkessler Exp $
*/
package org.eclipse.jst.jsf.common.metadata.internal.util;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.xmi.XMLHelper;
import org.eclipse.emf.ecore.xmi.XMLResource;
import org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl;
import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
import org.eclipse.jst.jsf.common.metadata.Entity;
import org.eclipse.jst.jsf.common.metadata.MetadataPackage;
import org.eclipse.jst.jsf.common.metadata.Model;
import org.eclipse.jst.jsf.common.metadata.Trait;
import org.eclipse.jst.jsf.common.metadata.internal.IMetaDataSourceModelProvider;
/**
* <!-- begin-user-doc -->
* The <b>Resource </b> associated with the package.
* <!-- end-user-doc -->
* @see org.eclipse.jst.jsf.common.metadata.internal.util.MetadataResourceFactoryImpl
* @generated NOT
*/
public class MetadataResourceImpl extends XMLResourceImpl implements XMLResource.ResourceHandler {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public static final String copyright = "Oracle inc.";
/**
* IMetaDataSourceModelProvider
*/
protected IMetaDataSourceModelProvider _provider;
/**
* Creates an instance of the resource.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param uri the URI of the new resource.
* @generated
*/
public MetadataResourceImpl(URI uri) {
super(uri);
}
/**
* Constructor
*/
public MetadataResourceImpl() {
super();
}
/**
* Constructorb
* @param provider
*/
public MetadataResourceImpl(IMetaDataSourceModelProvider provider){
super();
_provider = provider;
}
/**
* Override createXMLHelper so that MetadataPackage.eINSTANCE is used for the NoNamespace package
* @generated NOT
*/
protected XMLHelper createXMLHelper() {
return new XMLHelperImpl(){
public EPackage getNoNamespacePackage() {
return MetadataPackage.eINSTANCE;
}
};
}
public void postLoad(XMLResource resource, InputStream inputStream,
Map options) {
Object aRoot = resource.getContents().get(0);
if (aRoot != null && aRoot instanceof Model){
setModelKeyInTraits((Model)aRoot, (Model)aRoot);
}
}
private void setModelKeyInTraits(Model root, Entity currentEntity) {
// TODO: does this have side effect that we care about? nothing is done with the return value
MetadataPackage.eINSTANCE.getTrait_SourceModelProvider();
for (int i=0;i < currentEntity.getTraits().size();i++){
((Trait)currentEntity.getTraits().get(i)).setSourceModelProvider(_provider);
}
for (int j=0;j < currentEntity.getChildEntities().size();j++){
setModelKeyInTraits(root,(Entity)currentEntity.getChildEntities().get(j));
}
if (currentEntity == root){
for (int k=0;k < root.getEntityGroups().size();k++){
setModelKeyInTraits(root,(Entity)root.getEntityGroups().get(k));
}
}
}
public void postSave(XMLResource resource, OutputStream outputStream,
Map options) {
// TODO Auto-generated method stub
}
public void preLoad(XMLResource resource, InputStream inputStream,
Map options) {
// TODO Auto-generated method stub
}
public void preSave(XMLResource resource, OutputStream outputStream,
Map options) {
// TODO Auto-generated method stub
}
} //MetadataResourceImpl