Package org.eclipse.ecf.example.sdo.editor

Source Code of org.eclipse.ecf.example.sdo.editor.SharedSDOEditor

/*******************************************************************************
* Copyright (c) 2004 Peter Nehrer and Composent, Inc.
* 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:
*     Peter Nehrer - initial API and implementation
*******************************************************************************/
package org.eclipse.ecf.example.sdo.editor;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.util.ECFException;
import org.eclipse.ecf.sdo.ISharedDataGraph;
import org.eclipse.ecf.sdo.IUpdateConsumer;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.sdo.EDataGraph;
import org.eclipse.emf.ecore.sdo.presentation.SDOEditor;
import org.eclipse.ui.IFileEditorInput;

import commonj.sdo.ChangeSummary;
import commonj.sdo.DataGraph;

/**
* @author pnehrer
*/
public class SharedSDOEditor extends SDOEditor {

    private class UpdateConsumer implements IUpdateConsumer {
        public boolean consumeUpdate(ISharedDataGraph graph, ID containerID) {
            ChangeSummary changeSummary = graph.getDataGraph()
                    .getChangeSummary();
            changeSummary.endLogging();
            SharedSDOEditor.super.doSave(null);
            changeSummary.beginLogging();
            return true;
        }

        public void updateFailed(ISharedDataGraph graph, ID containerID,
                Throwable cause) {
            EditorPlugin.getDefault().log(
                    new CoreException(new Status(Status.ERROR, EditorPlugin
                            .getDefault().getBundle().getSymbolicName(), 0,
                            "Data graph upate failed.", cause)));
        }
    }

    private ISharedDataGraph sharedDataGraph;

    protected boolean isConnected(IFileEditorInput editorInput) {
        try {
            EditorPlugin.getDefault()
                    .checkConnected(
                            ((IFileEditorInput) editorInput).getFile()
                                    .getProject());
            return true;
        } catch (ECFException e) {
          return false;
        }
    
    }
    /*
     * (non-Javadoc)
     *
     * @see org.eclipse.emf.ecore.sdo.presentation.SDOEditor#createModel()
     */
    public void createModel() {
        try {
            IFileEditorInput modelFile = (IFileEditorInput) getEditorInput();
            if (isConnected(modelFile)) {
              String path = modelFile.getFile().getFullPath().toString();
              URI uri = URI.createPlatformResourceURI(modelFile.getFile()
                      .getFullPath().toString());
              if (EditorPlugin.getDefault().isPublished(path)) {
                  sharedDataGraph = EditorPlugin.getDefault().subscribe(path,
                          new UpdateConsumer());
                  EDataGraph dataGraph = (EDataGraph) sharedDataGraph
                          .getDataGraph();
                  dataGraph.getDataGraphResource().setURI(uri);
                  editingDomain.getResourceSet().getResources().addAll(
                          dataGraph.getResourceSet().getResources());
                  dataGraph.setResourceSet(editingDomain.getResourceSet());
              } else {
                  Resource resource = editingDomain.loadResource(uri.toString());
                  DataGraph dataGraph = (DataGraph) resource.getContents().get(0);
                  sharedDataGraph = EditorPlugin.getDefault().publish(path,
                          dataGraph, new UpdateConsumer());
              }
            } else super.createModel();
        } catch (ECFException e) {
            EditorPlugin.getDefault().log(e);
            if (sharedDataGraph != null) {
                sharedDataGraph.dispose();
                sharedDataGraph = null;
            }
            super.createModel();
        }
    }

    /*
     * (non-Javadoc)
     *
     * @see org.eclipse.emf.ecore.sdo.presentation.SDOEditor#doSave(org.eclipse.core.runtime.IProgressMonitor)
     */
    public void doSave(IProgressMonitor progressMonitor) {
        super.doSave(progressMonitor);
        if (sharedDataGraph != null)
            try {
                sharedDataGraph.commit();
            } catch (ECFException e) {
                EditorPlugin.getDefault().log(e);
            }
    }

    /*
     * (non-Javadoc)
     *
     * @see org.eclipse.emf.ecore.sdo.presentation.SDOEditor#dispose()
     */
    public void dispose() {
        if (sharedDataGraph != null)
            sharedDataGraph.dispose();

        super.dispose();
    }
}
TOP

Related Classes of org.eclipse.ecf.example.sdo.editor.SharedSDOEditor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.
cript','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-20639858-1', 'auto'); ga('send', 'pageview');