Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.transfer.repository/src/org/eclipse/emf/cdo/transfer/spi/repository/RepositoryTransferSystem.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.transfer.repository/src/org/eclipse/emf/cdo/transfer/spi/repository/RepositoryTransferSystem.java40
1 files changed, 38 insertions, 2 deletions
diff --git a/plugins/org.eclipse.emf.cdo.transfer.repository/src/org/eclipse/emf/cdo/transfer/spi/repository/RepositoryTransferSystem.java b/plugins/org.eclipse.emf.cdo.transfer.repository/src/org/eclipse/emf/cdo/transfer/spi/repository/RepositoryTransferSystem.java
index 41568a491d..6f5ddf5586 100644
--- a/plugins/org.eclipse.emf.cdo.transfer.repository/src/org/eclipse/emf/cdo/transfer/spi/repository/RepositoryTransferSystem.java
+++ b/plugins/org.eclipse.emf.cdo.transfer.repository/src/org/eclipse/emf/cdo/transfer/spi/repository/RepositoryTransferSystem.java
@@ -13,6 +13,7 @@ package org.eclipse.emf.cdo.transfer.spi.repository;
import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.lob.CDOBlob;
import org.eclipse.emf.cdo.common.lob.CDOClob;
+import org.eclipse.emf.cdo.common.util.CDOException;
import org.eclipse.emf.cdo.eresource.CDOBinaryResource;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.eresource.CDOResourceFolder;
@@ -24,6 +25,7 @@ import org.eclipse.emf.cdo.transfer.CDOTransferElement;
import org.eclipse.emf.cdo.transfer.CDOTransferSystem;
import org.eclipse.emf.cdo.transfer.CDOTransferType;
import org.eclipse.emf.cdo.util.CDOURIUtil;
+import org.eclipse.emf.cdo.util.CommitException;
import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.net4j.util.io.IORuntimeException;
@@ -32,9 +34,11 @@ import org.eclipse.net4j.util.io.IOUtil;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
import java.io.ByteArrayInputStream;
@@ -164,34 +168,66 @@ public class RepositoryTransferSystem extends CDOTransferSystem
}
@Override
- public void createBinary(IPath path, InputStream source)
+ public void createBinary(IPath path, InputStream source, IProgressMonitor monitor)
{
try
{
+ monitor.beginTask("", 1);
+
CDOBlob blob = new CDOBlob(source);
CDOBinaryResource resource = ((CDOTransaction)view).createBinaryResource(path.toString());
resource.setContents(blob);
+
+ monitor.worked(1); // TODO Progress more smoothly
}
catch (IOException ex)
{
throw new IORuntimeException(ex);
}
+ finally
+ {
+ monitor.done();
+ }
}
@Override
- public void createText(IPath path, InputStream source, String encoding)
+ public void createText(IPath path, InputStream source, String encoding, IProgressMonitor monitor)
{
try
{
+ monitor.beginTask("", 1);
+
CDOClob clob = new CDOClob(new InputStreamReader(source, encoding));
CDOTextResource resource = ((CDOTransaction)view).createTextResource(path.toString());
resource.setContents(clob);
resource.setEncoding(encoding);
+
+ monitor.worked(1); // TODO Progress more smoothly
}
catch (IOException ex)
{
throw new IORuntimeException(ex);
}
+ finally
+ {
+ monitor.done();
+ }
+ }
+
+ @Override
+ public void saveModels(EList<Resource> resources, IProgressMonitor monitor)
+ {
+ try
+ {
+ monitor.subTask("Committing to " + this);
+
+ CDOTransaction transaction = (CDOTransaction)view;
+ transaction.commit(monitor);
+ }
+ catch (CommitException ex)
+ {
+ throw new CDOException(ex);
+ }
}
@Override

Back to the top