blob: 972d735afdc5d411002853091fb9d06d3aab1b0e [file] [log] [blame]
/**
* Copyright (c) 2004 - 2011 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
* Stefan Winkler - bug 271444: [DB] Multiple refactorings
* Kai Schlamp - bug 282976: [DB] Influence Mappings through EAnnotations
* Stefan Winkler - bug 282976: [DB] Influence Mappings through EAnnotations
*/
package org.eclipse.emf.cdo.server.db;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.protocol.CDODataInput;
import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit;
import org.eclipse.net4j.util.om.monitor.OMMonitor;
import org.eclipse.emf.ecore.EModelElement;
import org.eclipse.emf.ecore.EPackage;
import java.io.IOException;
import java.sql.Connection;
import java.util.Collection;
/**
* @author Eike Stepper
* @since 2.0
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface IMetaDataManager
{
/**
* Returns the meta ID of the given {@link EModelElement}. <code> getMetaID(getMetaInstance(x))</code> yields
* <code>x</code>
*
* @param modelElement
* the element
* @return the corresponding ID
* @since 4.0
*/
public CDOID getMetaID(EModelElement modelElement, long commitTime);
/**
* Returns the {@link EModelElement} referred to by the given ID. <code> getMetaInstance(getMetaID(m))</code> yields
* <code>m</code>
*
* @since 4.0
*/
public EModelElement getMetaInstance(CDOID id);
/**
* Loads a package unit from the database.
*
* @param connection
* the DB connection to read from.
* @param packageUnit
* the package unit to load.
* @return the loaded package unit.
* @since 2.0
*/
public EPackage[] loadPackageUnit(Connection connection, InternalCDOPackageUnit packageUnit);
/**
* @since 4.0
*/
public void clearMetaIDMappings();
/**
* Reads information about package units present in the database.
*
* @param connection
* the DB connection to read from.
* @return a collection of package unit information records which can be passed to
* {@link IMetaDataManager#loadPackageUnit(Connection, InternalCDOPackageUnit)} in order to read the EPackage.
* @since 2.0
*/
public Collection<InternalCDOPackageUnit> readPackageUnits(Connection connection);
/**
* Write package units to the database.
*
* @param connection
* the DB connection to write to.
* @param packageUnits
* the package units to write.
* @param monitor
* the monitor to indicate progress.
* @since 2.0
*/
public void writePackageUnits(Connection connection, InternalCDOPackageUnit[] packageUnits, OMMonitor monitor);
/**
* @since 3.0
*/
public void rawExport(Connection connection, CDODataOutput out, long fromCommitTime, long toCommitTime)
throws IOException;
/**
* @since 4.0
*/
public Collection<InternalCDOPackageUnit> rawImport(Connection connection, CDODataInput in, long fromCommitTime,
long toCommitTime, OMMonitor monitor) throws IOException;
}