blob: 5b7daee95274cb7897a48b0346bf206da9c76187 [file] [log] [blame]
/*
* Copyright (c) 2011, 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:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.emf.cdo.server.internal.mongodb;
import org.eclipse.emf.cdo.common.branch.CDOBranch;
import org.eclipse.emf.cdo.common.branch.CDOBranchHandler;
import org.eclipse.emf.cdo.common.branch.CDOBranchPoint;
import org.eclipse.emf.cdo.common.branch.CDOBranchVersion;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfoHandler;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.lob.CDOLobHandler;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.common.revision.CDORevisionCacheAdder;
import org.eclipse.emf.cdo.common.revision.CDORevisionHandler;
import org.eclipse.emf.cdo.common.util.CDOQueryInfo;
import org.eclipse.emf.cdo.server.IQueryHandler;
import org.eclipse.emf.cdo.server.ISession;
import org.eclipse.emf.cdo.server.IStoreChunkReader;
import org.eclipse.emf.cdo.server.ITransaction;
import org.eclipse.emf.cdo.server.mongodb.IMongoDBStoreAccessor;
import org.eclipse.emf.cdo.spi.common.commit.CDOChangeSetSegment;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.spi.server.InternalCommitContext;
import org.eclipse.emf.cdo.spi.server.Store;
import org.eclipse.emf.cdo.spi.server.StoreAccessorBase;
import org.eclipse.net4j.util.collection.Pair;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EStructuralFeature;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Collection;
import java.util.List;
import java.util.Set;
/**
* @author Eike Stepper
*/
public class MongoDBStoreAccessor extends StoreAccessorBase implements IMongoDBStoreAccessor
{
private Commits commits;
public MongoDBStoreAccessor(Store store, ISession session)
{
super(store, session);
commits = getStore().getCommits();
}
public MongoDBStoreAccessor(Store store, ITransaction transaction)
{
super(store, transaction);
commits = getStore().getCommits();
}
@Override
public MongoDBStore getStore()
{
return (MongoDBStore)super.getStore();
}
public IStoreChunkReader createChunkReader(InternalCDORevision revision, EStructuralFeature feature)
{
// Partial collection loading not supported, yet.
return null;
}
public Collection<InternalCDOPackageUnit> readPackageUnits()
{
return commits.readPackageUnits();
}
public EPackage[] loadPackageUnit(InternalCDOPackageUnit packageUnit)
{
return commits.loadPackageUnit(packageUnit);
}
public InternalCDORevision readRevision(CDOID id, CDOBranchPoint branchPoint, int listChunk,
CDORevisionCacheAdder cache)
{
return commits.readRevision(id, branchPoint, listChunk, cache);
}
public InternalCDORevision readRevisionByVersion(CDOID id, CDOBranchVersion branchVersion, int listChunk,
CDORevisionCacheAdder cache)
{
return commits.readRevisionByVersion(id, branchVersion, listChunk, cache);
}
public void handleRevisions(EClass eClass, CDOBranch branch, long timeStamp, boolean exactTime,
CDORevisionHandler handler)
{
throw new UnsupportedOperationException("Not yet implemented"); // TODO Implement me
}
public Set<CDOID> readChangeSet(OMMonitor monitor, CDOChangeSetSegment... segments)
{
throw new UnsupportedOperationException("Not yet implemented"); // TODO Implement me
}
public void queryResources(QueryResourcesContext context)
{
commits.queryResources(context);
}
public void queryXRefs(QueryXRefsContext context)
{
throw new UnsupportedOperationException("Not yet implemented"); // TODO Implement me
}
public void queryLobs(List<byte[]> ids)
{
throw new UnsupportedOperationException("Not yet implemented"); // TODO Implement me
}
public void loadLob(byte[] id, OutputStream out) throws IOException
{
throw new UnsupportedOperationException("Not yet implemented"); // TODO Implement me
}
public void handleLobs(long fromTime, long toTime, CDOLobHandler handler) throws IOException
{
throw new UnsupportedOperationException("Not yet implemented"); // TODO Implement me
}
public IQueryHandler getQueryHandler(CDOQueryInfo info)
{
return null;
}
public Pair<Integer, Long> createBranch(int branchID, BranchInfo branchInfo)
{
throw new UnsupportedOperationException("Not yet implemented"); // TODO Implement me
}
public BranchInfo loadBranch(int branchID)
{
throw new UnsupportedOperationException("Not yet implemented"); // TODO Implement me
}
public SubBranchInfo[] loadSubBranches(int branchID)
{
throw new UnsupportedOperationException("Not yet implemented"); // TODO Implement me
}
public int loadBranches(int startID, int endID, CDOBranchHandler branchHandler)
{
throw new UnsupportedOperationException("Not yet implemented"); // TODO Implement me
}
public void loadCommitInfos(CDOBranch branch, long startTime, long endTime, CDOCommitInfoHandler handler)
{
commits.loadCommitInfos(branch, startTime, endTime, handler);
}
public void writePackageUnits(InternalCDOPackageUnit[] packageUnits, OMMonitor monitor)
{
commits.writePackageUnits(this, packageUnits, monitor);
}
@Override
protected void doWrite(InternalCommitContext context, OMMonitor monitor)
{
commits.write(this, context, monitor);
}
@Override
protected void doCommit(OMMonitor monitor)
{
// Do nothing
}
@Override
protected void doRollback(CommitContext commitContext)
{
// Do nothing
}
@Override
protected CDOID getNextCDOID(CDORevision revision)
{
return getStore().getIDHandler().getNextCDOID(revision);
}
}