001package org.nasdanika.html.ecore;
002
003import java.util.ArrayList;
004import java.util.List;
005
006import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
007import org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage;
008import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
009import org.eclipse.emf.ecore.EPackage;
010import org.eclipse.emf.ecore.EcorePackage;
011import org.eclipse.emf.ecore.resource.Resource;
012import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
013import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
014
015public class GenModelResourceSet extends ResourceSetImpl {
016        
017        public GenModelResourceSet() {
018                getResourceFactoryRegistry().getExtensionToFactoryMap().put(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl());
019                
020                getPackageRegistry().put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE);
021                getPackageRegistry().put(GenModelPackage.eNS_URI, GenModelPackage.eINSTANCE);
022        }
023        
024        /**
025         * @return Top level EPackage's.
026         */
027        public List<EPackage> getEPackages() {
028                List<EPackage> ret = new ArrayList<>();
029                for (Resource res: new ArrayList<>(getResources())) {
030                        for (Object contents: res.getContents()) {
031                                if (contents instanceof GenModel) {
032                                        for (GenPackage genPackage: ((GenModel) contents).getGenPackages()) {
033                                                ret.add(genPackage.getEcorePackage());
034                                        }
035                                }
036                        }
037                }               
038                return ret;
039        }
040        
041}