blob: 7735696d88875ca978917b00d2458294c3bcd80d [file] [log] [blame]
/*
* Copyright (c) 2010-2012, 2015 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.spi.common.branch.InternalCDOBranchManager.BranchLoader.BranchInfo;
import com.objy.db.app.ooObj;
import com.objy.db.util.ooTreeSetX;
import java.util.SortedSet;
/**
* @author Ibrahim Sallam
*/
/**
* @author Ibrahim Sallam
*/
/**
* @author Ibrahim Sallam
*/
public class ObjyBranch extends ooObj
{
protected int branchId;
protected int baseBranchId;
protected long baseBranchTimeStamp;
protected String branchName;
protected ooTreeSetX revisions;
public static ObjyBranch create(ooObj clusterObj, int branchId, int baseBranchId, String branchName, long timeStamp)
{
ObjyBranch objyBranch = new ObjyBranch(branchId, baseBranchId, branchName, timeStamp);
clusterObj.cluster(objyBranch);
objyBranch.createRevisionsSet();
return objyBranch;
}
public static ObjyBranch create(ooObj clusterObj, int branchId, BranchInfo branchInfo)
{
ObjyBranch objyBranch = new ObjyBranch(branchId, branchInfo);
clusterObj.cluster(objyBranch);
objyBranch.createRevisionsSet();
return objyBranch;
}
private ObjyBranch(int id, BranchInfo branchInfo)
{
branchId = id;
baseBranchId = branchInfo.getBaseBranchID();
baseBranchTimeStamp = branchInfo.getBaseTimeStamp();
branchName = branchInfo.getName();
revisions = null;
}
private ObjyBranch(int branchId, int baseBranchId, String branchName, long timeStamp)
{
this.branchId = branchId;
this.baseBranchId = baseBranchId;
baseBranchTimeStamp = timeStamp;
this.branchName = branchName;
revisions = null;
}
public int getBranchId()
{
fetch();
return branchId;
}
public int getBaseBranchId()
{
fetch();
return baseBranchId;
}
public long getBaseBranchTimeStamp()
{
fetch();
return baseBranchTimeStamp;
}
public String getBranchName()
{
fetch();
return branchName;
}
public void addRevision(ooObj anObj)
{
markModified();
if (revisions == null) // we'll only allocate if needed.
{
revisions = new ooTreeSetX();
this.cluster(revisions);
}
revisions.add(anObj);
}
public int numberOfRevisions()
{
fetch();
return revisions.size();
}
public SortedSet<?> getRevisions()
{
fetch();
// // we don't want to allocate the ooTreeSetX object if the branch is empty.
// if (revisions == null)
// {
// return new ArrayList<Object>().iterator();
// }
return revisions;
}
public BranchInfo getBranchInfo()
{
fetch();
BranchInfo branchInfo = new BranchInfo(getBranchName(), getBaseBranchId(), getBaseBranchTimeStamp());
return branchInfo;
}
public boolean deleteRevision(Object anObject)
{
markModified();
return revisions.remove(anObject);
}
private void createRevisionsSet()
{
if (revisions == null) // we'll only allocate if needed.
{
revisions = new ooTreeSetX();
this.cluster(revisions);
}
}
}