blob: 098db9793b86e5f8c1b0fac51b09938f86fa6bfa [file] [log] [blame]
/**
* Copyright (c) 2009, 2010 Mia-Software.
* 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:
* Gregoire DUPE (Mia-Software) - initial API and implementation
*/
package org.eclipse.gmt.modisco.infra.common.cdo.derby;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.apache.derby.jdbc.EmbeddedDataSource;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.server.db.CDODBUtil;
import org.eclipse.emf.cdo.server.db.mapping.IMappingStrategy;
import org.eclipse.gmt.modisco.infra.common.cdo.derby.internal.Activator;
import org.eclipse.gmt.modisco.infra.common.cdo.server.AbstractCDOServer;
import org.eclipse.net4j.db.IDBAdapter;
import org.eclipse.net4j.db.derby.EmbeddedDerbyAdapter;
public class DerbyCDOServer extends AbstractCDOServer {
@Override
protected DataSource getDataSource(final String dbName) throws Exception {
EmbeddedDataSource dataSource = new EmbeddedDataSource();
try {
IProject project = ResourcesPlugin.getWorkspace().getRoot()
.getProject(dbName);
project.create(new NullProgressMonitor());
if (!project.exists()) {
throw new CoreException(new Status(IStatus.ERROR,
Activator.PLUGIN_ID, "Failed to create the DB project")); //$NON-NLS-1$
}
dataSource.setDatabaseName(project.getLocation().toString()
+ "/derbyDB"); //$NON-NLS-1$
} catch (Exception e) {
// MoDiscoLogger
// .logWarning(
// "Failed to use the workspace, tmpdir will be used", Activator //$NON-NLS-1$
// .getDefault());
// String javaIoTmpdirStr = System.getProperty("java.io.tmpdir"); //$NON-NLS-1$
// dataSource.setDatabaseName(javaIoTmpdirStr + dbName);
throw new Exception("Failed to use the workspace.", e); //$NON-NLS-1$
}
dataSource.setCreateDatabase("create"); //$NON-NLS-1$
return dataSource;
}
@Override
protected Map<String, String> getProps() {
Map<String, String> props = new HashMap<String, String>();
props.put(IRepository.Props.OVERRIDE_UUID, "gastro"); //$NON-NLS-1$
props.put(IRepository.Props.SUPPORTING_AUDITS, Boolean.TRUE.toString());
// props.put(IRepository.Props.VERIFYING_REVISIONS, Boolean.FALSE
// .toString());
// TODO Bug 329887
// props.put(IRepository.Props.CURRENT_LRU_CAPACITY, Integer
// .toString(CURRENT_LRU_CAPACITY));
// props.put(IRepository.Props.REVISED_LRU_CAPACITY, Integer
// .toString(REVISED_LRU_CAPACITY));
return props;
}
@Override
protected IMappingStrategy getMappingStrategy() {
IMappingStrategy mappingStrategy = CDODBUtil
.createHorizontalMappingStrategy(true);
Map<String, String> properties = new HashMap<String, String>();
properties.put(IMappingStrategy.PROP_QUALIFIED_NAMES, "true"); //$NON-NLS-1$
mappingStrategy.setProperties(properties);
return mappingStrategy;
}
public String getDescription() {
return "Derby, SUPPORTING_AUDITS"; //$NON-NLS-1$
}
@Override
protected IDBAdapter getDBAdapter() {
return new EmbeddedDerbyAdapter();
}
}