Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/schema/ObjyBranchManager.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/schema/ObjyBranchManager.java458
1 files changed, 229 insertions, 229 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/schema/ObjyBranchManager.java b/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/schema/ObjyBranchManager.java
index 7705ff72a0..fee6ed3b8d 100644
--- a/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/schema/ObjyBranchManager.java
+++ b/plugins/org.eclipse.emf.cdo.server.objectivity/src/org/eclipse/emf/cdo/server/internal/objectivity/schema/ObjyBranchManager.java
@@ -1,229 +1,229 @@
-/*
- * Copyright (c) 2004 - 2012 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:
- * Ibrahim Sallam - initial API and implementation
- */
-package org.eclipse.emf.cdo.server.internal.objectivity.schema;
-
-import org.eclipse.emf.cdo.common.branch.CDOBranch;
-import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager.BranchLoader;
-import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager.BranchLoader.BranchInfo;
-
-import org.eclipse.net4j.util.collection.Pair;
-
-import com.objy.db.app.ooId;
-import com.objy.db.app.ooObj;
-import com.objy.db.util.ooTreeSetX;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * @author Ibrahim Sallam
- */
-public class ObjyBranchManager extends ooObj
-{
- protected int nextBranchId;
-
- protected int nextLocalBranchId;
-
- protected ooTreeSetX branchSet;
-
- private ObjyBranchManager()
- {
- nextBranchId = 0;
- nextLocalBranchId = 0;
- }
-
- protected void createTreeSet(ooObj clusterObject)
- {
- branchSet = new ooTreeSetX();
- clusterObject.cluster(branchSet);
- }
-
- public int getLastBranchId()
- {
- fetch();
- return nextBranchId;
- }
-
- public int nextBranchId()
- {
- markModified();
- return ++nextBranchId;
- }
-
- public int getlastLocalBranchId()
- {
- fetch();
- return nextLocalBranchId;
- }
-
- public int nextLocalBranchId()
- {
- markModified();
- return --nextLocalBranchId;
- }
-
- public Pair<Integer, Long> createBranch(int branchId, BranchInfo branchInfo)
- {
- markModified();
-
- if (branchId == BranchLoader.NEW_BRANCH)
- {
- branchId = nextBranchId();
- }
- else if (branchId == BranchLoader.NEW_LOCAL_BRANCH)
- {
- branchId = nextLocalBranchId();
- }
-
- ObjyBranch newObjyBranch = ObjyBranch.create(this, branchId, branchInfo);
- // if the baseBranchId is 0, then we just added to our branchSet, otherwise
- // we'll lookup the ObjyBranch with the id, and add the newly created
- // ObjyBranch to it's sub-branches set.
- // int baseBranchId = branchInfo.getBaseBranchID();
-
- // Initially I thought we could make a tree of branches, but for the
- // first implementation we can just create a TreeSet of all branches,
- // then resolve sub-branches dynamically by checking baseBranchId.
- branchSet.add(newObjyBranch); // implicit clustering.
-
- // if (baseBranchId == 0) // main branch.
- // {
- // branchSet.add(newObjyBranch); // implicit clustering.
- // }
- // else
- // {
- // Iterator<ObjyBranch> treeItr = branchSet.iterator();
- // ObjyBranch objyBranch = null;
- // boolean found = false;
- // while (treeItr.hasNext() && !found)
- // {
- // objyBranch = treeItr.next();
- // if (baseBranchId == objyBranch.getBaseBranchId())
- // {
- // found = true;
- // continue;
- // }
- // objyBranch = null;
- // }
- //
- // objyBranch.addSubBranch(newObjyBranch);
- // }
-
- return new Pair<Integer, Long>(branchId, branchInfo.getBaseTimeStamp());
- }
-
- public ObjyBranch getBranch(int branchId)
- {
- fetch();
-
- @SuppressWarnings("unchecked")
- Iterator<ObjyBranch> treeItr = branchSet.iterator();
- ObjyBranch objyBranch = null;
- while (treeItr.hasNext())
- {
- ObjyBranch tempObjyBranch = treeItr.next();
- if (branchId == tempObjyBranch.getBranchId())
- {
- objyBranch = tempObjyBranch;
- break;
- }
- }
-
- return objyBranch;
- }
-
- public static ObjyBranchManager create(ooId scopeContOid)
- {
- ObjyBranchManager branchManager = new ObjyBranchManager();
- ooObj clusterObject = ooObj.create_ooObj(scopeContOid);
- clusterObject.cluster(branchManager);
-
- branchManager.createTreeSet(branchManager);
- branchManager.createMainBranch();
-
- return branchManager;
- }
-
- public void createMainBranch()
- {
- ObjyBranch newObjyBranch = ObjyBranch.create(this, CDOBranch.MAIN_BRANCH_ID, CDOBranch.MAIN_BRANCH_ID,
- CDOBranch.MAIN_BRANCH_NAME, 0);
- branchSet.add(newObjyBranch); // implicit clustering.
- }
-
- public boolean deleteBranch(int branchId)
- {
- boolean done = false;
-
- markModified();
-
- @SuppressWarnings("unchecked")
- Iterator<ObjyBranch> treeItr = branchSet.iterator();
- ObjyBranch objyBranch = null;
- while (treeItr.hasNext())
- {
- objyBranch = treeItr.next();
- if (branchId == objyBranch.getBranchId())
- {
- done = branchSet.remove(objyBranch);
- break;
- }
- }
-
- return done;
- }
-
- public List<ObjyBranch> getSubBranches(int baseBranchId)
- {
- fetch();
- List<ObjyBranch> objyBranchList = new ArrayList<ObjyBranch>();
-
- Iterator<?> treeItr = branchSet.iterator();
- ObjyBranch objyBranch = null;
- while (treeItr.hasNext())
- {
- objyBranch = (ObjyBranch)treeItr.next();
- if (objyBranch.getBranchId() == objyBranch.getBaseBranchId())
- {
- continue;
- }
- if (objyBranch.getBaseBranchId() == baseBranchId)
- {
- objyBranchList.add(objyBranch);
- }
- }
- return objyBranchList;
- }
-
- public List<ObjyBranch> getBranches(int startId, int endId)
- {
- fetch();
- List<ObjyBranch> objyBranchList = new ArrayList<ObjyBranch>();
-
- int lastId = endId != 0 ? endId : Integer.MAX_VALUE;
-
- @SuppressWarnings("unchecked")
- Iterator<ObjyBranch> treeItr = branchSet.iterator();
- ObjyBranch objyBranch = null;
- while (treeItr.hasNext())
- {
- objyBranch = treeItr.next();
- int id = objyBranch.getBranchId();
- if (id >= startId && id <= lastId)
- {
- objyBranchList.add(objyBranch);
- }
- }
- return objyBranchList;
- }
-
-}
+/*
+ * Copyright (c) 2004 - 2012 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:
+ * Ibrahim Sallam - initial API and implementation
+ */
+package org.eclipse.emf.cdo.server.internal.objectivity.schema;
+
+import org.eclipse.emf.cdo.common.branch.CDOBranch;
+import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager.BranchLoader;
+import org.eclipse.emf.cdo.spi.common.branch.InternalCDOBranchManager.BranchLoader.BranchInfo;
+
+import org.eclipse.net4j.util.collection.Pair;
+
+import com.objy.db.app.ooId;
+import com.objy.db.app.ooObj;
+import com.objy.db.util.ooTreeSetX;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * @author Ibrahim Sallam
+ */
+public class ObjyBranchManager extends ooObj
+{
+ protected int nextBranchId;
+
+ protected int nextLocalBranchId;
+
+ protected ooTreeSetX branchSet;
+
+ private ObjyBranchManager()
+ {
+ nextBranchId = 0;
+ nextLocalBranchId = 0;
+ }
+
+ protected void createTreeSet(ooObj clusterObject)
+ {
+ branchSet = new ooTreeSetX();
+ clusterObject.cluster(branchSet);
+ }
+
+ public int getLastBranchId()
+ {
+ fetch();
+ return nextBranchId;
+ }
+
+ public int nextBranchId()
+ {
+ markModified();
+ return ++nextBranchId;
+ }
+
+ public int getlastLocalBranchId()
+ {
+ fetch();
+ return nextLocalBranchId;
+ }
+
+ public int nextLocalBranchId()
+ {
+ markModified();
+ return --nextLocalBranchId;
+ }
+
+ public Pair<Integer, Long> createBranch(int branchId, BranchInfo branchInfo)
+ {
+ markModified();
+
+ if (branchId == BranchLoader.NEW_BRANCH)
+ {
+ branchId = nextBranchId();
+ }
+ else if (branchId == BranchLoader.NEW_LOCAL_BRANCH)
+ {
+ branchId = nextLocalBranchId();
+ }
+
+ ObjyBranch newObjyBranch = ObjyBranch.create(this, branchId, branchInfo);
+ // if the baseBranchId is 0, then we just added to our branchSet, otherwise
+ // we'll lookup the ObjyBranch with the id, and add the newly created
+ // ObjyBranch to it's sub-branches set.
+ // int baseBranchId = branchInfo.getBaseBranchID();
+
+ // Initially I thought we could make a tree of branches, but for the
+ // first implementation we can just create a TreeSet of all branches,
+ // then resolve sub-branches dynamically by checking baseBranchId.
+ branchSet.add(newObjyBranch); // implicit clustering.
+
+ // if (baseBranchId == 0) // main branch.
+ // {
+ // branchSet.add(newObjyBranch); // implicit clustering.
+ // }
+ // else
+ // {
+ // Iterator<ObjyBranch> treeItr = branchSet.iterator();
+ // ObjyBranch objyBranch = null;
+ // boolean found = false;
+ // while (treeItr.hasNext() && !found)
+ // {
+ // objyBranch = treeItr.next();
+ // if (baseBranchId == objyBranch.getBaseBranchId())
+ // {
+ // found = true;
+ // continue;
+ // }
+ // objyBranch = null;
+ // }
+ //
+ // objyBranch.addSubBranch(newObjyBranch);
+ // }
+
+ return new Pair<Integer, Long>(branchId, branchInfo.getBaseTimeStamp());
+ }
+
+ public ObjyBranch getBranch(int branchId)
+ {
+ fetch();
+
+ @SuppressWarnings("unchecked")
+ Iterator<ObjyBranch> treeItr = branchSet.iterator();
+ ObjyBranch objyBranch = null;
+ while (treeItr.hasNext())
+ {
+ ObjyBranch tempObjyBranch = treeItr.next();
+ if (branchId == tempObjyBranch.getBranchId())
+ {
+ objyBranch = tempObjyBranch;
+ break;
+ }
+ }
+
+ return objyBranch;
+ }
+
+ public static ObjyBranchManager create(ooId scopeContOid)
+ {
+ ObjyBranchManager branchManager = new ObjyBranchManager();
+ ooObj clusterObject = ooObj.create_ooObj(scopeContOid);
+ clusterObject.cluster(branchManager);
+
+ branchManager.createTreeSet(branchManager);
+ branchManager.createMainBranch();
+
+ return branchManager;
+ }
+
+ public void createMainBranch()
+ {
+ ObjyBranch newObjyBranch = ObjyBranch.create(this, CDOBranch.MAIN_BRANCH_ID, CDOBranch.MAIN_BRANCH_ID,
+ CDOBranch.MAIN_BRANCH_NAME, 0);
+ branchSet.add(newObjyBranch); // implicit clustering.
+ }
+
+ public boolean deleteBranch(int branchId)
+ {
+ boolean done = false;
+
+ markModified();
+
+ @SuppressWarnings("unchecked")
+ Iterator<ObjyBranch> treeItr = branchSet.iterator();
+ ObjyBranch objyBranch = null;
+ while (treeItr.hasNext())
+ {
+ objyBranch = treeItr.next();
+ if (branchId == objyBranch.getBranchId())
+ {
+ done = branchSet.remove(objyBranch);
+ break;
+ }
+ }
+
+ return done;
+ }
+
+ public List<ObjyBranch> getSubBranches(int baseBranchId)
+ {
+ fetch();
+ List<ObjyBranch> objyBranchList = new ArrayList<ObjyBranch>();
+
+ Iterator<?> treeItr = branchSet.iterator();
+ ObjyBranch objyBranch = null;
+ while (treeItr.hasNext())
+ {
+ objyBranch = (ObjyBranch)treeItr.next();
+ if (objyBranch.getBranchId() == objyBranch.getBaseBranchId())
+ {
+ continue;
+ }
+ if (objyBranch.getBaseBranchId() == baseBranchId)
+ {
+ objyBranchList.add(objyBranch);
+ }
+ }
+ return objyBranchList;
+ }
+
+ public List<ObjyBranch> getBranches(int startId, int endId)
+ {
+ fetch();
+ List<ObjyBranch> objyBranchList = new ArrayList<ObjyBranch>();
+
+ int lastId = endId != 0 ? endId : Integer.MAX_VALUE;
+
+ @SuppressWarnings("unchecked")
+ Iterator<ObjyBranch> treeItr = branchSet.iterator();
+ ObjyBranch objyBranch = null;
+ while (treeItr.hasNext())
+ {
+ objyBranch = treeItr.next();
+ int id = objyBranch.getBranchId();
+ if (id >= startId && id <= lastId)
+ {
+ objyBranchList.add(objyBranch);
+ }
+ }
+ return objyBranchList;
+ }
+
+}

Back to the top