Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OPackageUnit.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OPackageUnit.java134
1 files changed, 134 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OPackageUnit.java b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OPackageUnit.java
new file mode 100644
index 0000000000..dce6e55133
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.server.db4o/src/org/eclipse/emf/cdo/server/internal/db4o/DB4OPackageUnit.java
@@ -0,0 +1,134 @@
+/**
+ * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) and others.
+ * 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:
+ * Victor Roldan Betancort - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.db4o;
+
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
+import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
+import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
+import org.eclipse.emf.cdo.common.model.EMFUtil;
+import org.eclipse.emf.cdo.server.IStore;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Victor Roldan Betancort
+ */
+public class DB4OPackageUnit
+{
+ private String id;
+
+ private Integer ordinalType;
+
+ private Long timeStamp;
+
+ private List<Byte> ePackageBytes;
+
+ public DB4OPackageUnit(String id, Integer ordinalType, Long timeStamp, List<Byte> ePackageBytes)
+ {
+ setId(id);
+ setOrdinalType(ordinalType);
+ setTimeStamp(timeStamp);
+ setePackageBytes(ePackageBytes);
+ }
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public void setOrdinalType(Integer ordinalType)
+ {
+ this.ordinalType = ordinalType;
+ }
+
+ public Integer getOrdinalType()
+ {
+ return ordinalType;
+ }
+
+ public void setTimeStamp(Long timeStamp)
+ {
+ this.timeStamp = timeStamp;
+ }
+
+ public Long getTimeStamp()
+ {
+ return timeStamp;
+ }
+
+ public void setePackageBytes(List<Byte> ePackageBytes)
+ {
+ this.ePackageBytes = ePackageBytes;
+ }
+
+ public List<Byte> getePackageBytes()
+ {
+ return ePackageBytes;
+ }
+
+ public static DB4OPackageUnit getPrimitivePackageUnit(IStore store, InternalCDOPackageUnit packageUnit)
+ {
+ return new DB4OPackageUnit(new String(packageUnit.getID()), new Integer(packageUnit.getOriginalType()
+ .ordinal()), new Long(packageUnit.getTimeStamp()), getEPackageBytes(store, packageUnit));
+ }
+
+ public static InternalCDOPackageUnit getPackageUnit(InternalCDOPackageRegistry packageRegistry,
+ DB4OPackageUnit packageUnit)
+ {
+ InternalCDOPackageUnit cdoPackageUnit = (InternalCDOPackageUnit)CDOModelUtil.createPackageUnit();
+ CDOPackageUnit.Type type = CDOPackageUnit.Type.values()[packageUnit.getOrdinalType()];
+ cdoPackageUnit.setOriginalType(type);
+ cdoPackageUnit.setTimeStamp(packageUnit.getTimeStamp());
+ EPackage ePackage = getEPackageFromBytes(packageUnit.getePackageBytes());
+ cdoPackageUnit.setPackageRegistry(packageRegistry);
+ cdoPackageUnit.init(ePackage);
+ return cdoPackageUnit;
+ }
+
+ private static List<Byte> getEPackageBytes(IStore store, InternalCDOPackageUnit packageUnit)
+ {
+ EPackage ePackage = packageUnit.getTopLevelPackageInfo().getEPackage();
+ CDOPackageRegistry packageRegistry = store.getRepository().getPackageRegistry();
+ byte[] bytes = EMFUtil.getEPackageBytes(ePackage, true, packageRegistry);
+ List<Byte> bytesObject = new ArrayList<Byte>();
+ for (byte bt : bytes)
+ {
+ bytesObject.add(new Byte(bt));
+ }
+
+ return bytesObject;
+ }
+
+ private static EPackage getEPackageFromBytes(List<Byte> ePackageBytesList)
+ {
+ ResourceSet rSet = new ResourceSetImpl();
+ byte[] packageBytes = new byte[ePackageBytesList.size()];
+ for (int i = 0; i < packageBytes.length; i++)
+ {
+ packageBytes[i] = ePackageBytesList.get(i);
+ }
+
+ EPackage ePackage = EMFUtil.createEPackage("", packageBytes, true, rSet, false);
+ return ePackage;
+ }
+}

Back to the top