/**
* <copyright>
* </copyright>
*
*
*/
package ssl.resource.ssl.util;
/**
* Class ResourceUtil can be used to perform common tasks on resources, such as
* resolving proxy object, saving resources, as well as, checking them for errors.
*/
public class SslResourceUtil {
/**
* Searches for all unresolved proxy object in the given resource.
*
* @param resource
*
* @return all proxy object that are not resolvable
*/
public static java.util.List<org.eclipse.emf.ecore.EObject> findUnresolvedProxies(org.eclipse.emf.ecore.resource.Resource resource) {
java.util.List<org.eclipse.emf.ecore.EObject> unresolveProxies = new java.util.ArrayList<org.eclipse.emf.ecore.EObject>();
for(java.util.Iterator<org.eclipse.emf.ecore.EObject> elementIt = org.eclipse.emf.ecore.util.EcoreUtil.getAllContents(resource, true); elementIt.hasNext(); ) {
org.eclipse.emf.ecore.InternalEObject nextElement = (org.eclipse.emf.ecore.InternalEObject) elementIt.next();
if (nextElement.eIsProxy()) {
unresolveProxies.add(nextElement);
}
for (org.eclipse.emf.ecore.EObject crElement : nextElement.eCrossReferences()) {
crElement = org.eclipse.emf.ecore.util.EcoreUtil.resolve(crElement, resource);
if (crElement.eIsProxy()) {
unresolveProxies.add(nextElement);
}
}
}
return unresolveProxies;
}
/**
* Tries to resolve all unresolved proxy objects in the given resource. If all
* proxies were resolved true is returned. If some could not be resolved, false is
* returned.
*
* @param resource the resource containing the proxy object
*
* @return true on success
*/
public static boolean resolveAll(org.eclipse.emf.ecore.resource.Resource resource) {
org.eclipse.emf.ecore.util.EcoreUtil.resolveAll(resource);
if (findUnresolvedProxies(resource).size() > 0) {
return false;
} else {
return true;
}
}
public static void saveResource(java.io.File file, org.eclipse.emf.ecore.resource.Resource resource) throws java.io.IOException {
java.util.Map<?, ?> options = java.util.Collections.EMPTY_MAP;
java.io.OutputStream outputStream = new java.io.FileOutputStream(file);
resource.save(outputStream, options);
outputStream.close();
}
public static boolean containsErrors(org.eclipse.emf.ecore.resource.Resource resource) {
return !resource.getErrors().isEmpty();
}
public static boolean containsWarnings(org.eclipse.emf.ecore.resource.Resource resource) {
return !resource.getWarnings().isEmpty();
}
public static boolean containsProblems(org.eclipse.emf.ecore.resource.Resource resource) {
return containsErrors(resource) || containsWarnings(resource);
}
}