/*******************************************************************************
* Copyright (c) 2011-2014 The University of York.
* 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:
* Konstantinos Barmpis - initial API and implementation
******************************************************************************/
package org.hawk.ifc.mm;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.HashSet;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.Resource;
import org.hawk.core.IMetaModelResourceFactory;
import org.hawk.core.model.IHawkMetaModelResource;
import org.hawk.core.model.IHawkObject;
import org.hawk.ifc.IFCClass;
import org.hawk.ifc.IFCPackage;
public class IFCMetaModelResource implements IHawkMetaModelResource {
Resource res;
IMetaModelResourceFactory p;
HashSet<IHawkObject> contents = new HashSet<>();
@Override
public void unload() {
res = null;
}
// @Override
// public Resource getEMFResource() {
// return res;
//
// }
//
// @Override
// public ResourceSet getEMFResourceSet() {
// return set;
//
// }
public IFCMetaModelResource(Resource r, IMetaModelResourceFactory pa) {
res = r;
p = pa;
}
@Override
public HashSet<IHawkObject> getAllContents() {
TreeIterator<EObject> it = res.getAllContents();
HashSet<IHawkObject> ret = new HashSet<IHawkObject>();
while (it.hasNext()) {
Object o = it.next();
if (o instanceof EClass)
ret.add(new IFCClass((EClass) o));
else if (o instanceof EPackage)
ret.add(new IFCPackage((EPackage) o, this));
}
return ret;
}
@Override
public IMetaModelResourceFactory getMetaModelResourceFactory() {
return p;
}
@Override
public void save(OutputStream output, HashMap<Object, Object> hashMap)
throws IOException {
res.save(output, hashMap);
}
@Override
public String toString() {
return res.getURI().toString();
}
}