package at.bestsolution.efxclipse.runtime.example.photoedit.resource.xmi;
import java.io.IOException;
import javax.inject.Inject;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.e4.core.services.events.IEventBroker;
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 at.bestsolution.efxclipse.runtime.example.photoedit.core.EventTopics;
import at.bestsolution.efxclipse.runtime.example.photoedit.core.ResourceStore;
import at.bestsolution.efxclipse.runtime.example.photoedit.model.photoedit.PhotoEditApp;
@SuppressWarnings("restriction")
public class XMIStorageResource implements ResourceStore {
@Inject
IEventBroker eventBroker;
private Resource resource;
@Override
public IStatus loadRoot(URI uri) {
ResourceSet set = new ResourceSetImpl();
resource = set.getResource(uri, true);
eventBroker.send(EventTopics.STORE_NEW_CONTENT, getPhotoEditApp());
return Status.OK_STATUS;
}
public PhotoEditApp getPhotoEditApp() {
if( resource != null ) {
return (PhotoEditApp) resource.getContents().get(0);
}
return null;
}
@Override
public IStatus save() {
if( resource != null ) {
try {
resource.save(null);
return Status.OK_STATUS;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return new Status(IStatus.ERROR, "at.bestsolution.efxclipse.runtime.example.photoedit.resource.xmi", e.getMessage(),e);
}
}
return Status.CANCEL_STATUS;
}
}