| /* |
| * Copyright (c) 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.tests.db.offline; |
| |
| import org.eclipse.emf.cdo.server.db.IDBStore; |
| import org.eclipse.emf.cdo.server.db.mapping.IClassMapping; |
| import org.eclipse.emf.cdo.server.db.mapping.IListMapping; |
| import org.eclipse.emf.cdo.spi.server.InternalRepository; |
| import org.eclipse.emf.cdo.tests.model1.Company; |
| import org.eclipse.emf.cdo.tests.offline.Bugzilla_351078_Test; |
| |
| import org.eclipse.net4j.db.DBUtil; |
| import org.eclipse.net4j.db.ddl.IDBTable; |
| import org.eclipse.net4j.util.WrappedException; |
| import org.eclipse.net4j.util.io.ExtendedDataOutputStream; |
| |
| import java.io.ByteArrayOutputStream; |
| import java.sql.Connection; |
| import java.util.Arrays; |
| |
| /** |
| * @author Eike Stepper |
| */ |
| public class Bugzilla_351078_DB_Test extends Bugzilla_351078_Test |
| { |
| @Override |
| protected void check(InternalRepository master, Company masterCompany, String when) |
| { |
| super.check(master, masterCompany, when); |
| |
| // XXX use capabilities?! |
| DBOfflineConfig config = (DBOfflineConfig)getRepositoryConfig(); |
| if (config.isWithRanges()) |
| { |
| byte[] masterTable = readTable(master); |
| byte[] cloneTable = readTable(getRepository()); |
| |
| assertEquals(true, Arrays.equals(masterTable, cloneTable)); |
| } |
| } |
| |
| protected byte[] readTable(InternalRepository repository) |
| { |
| IDBStore store = (IDBStore)repository.getStore(); |
| IClassMapping classMapping = store.getMappingStrategy().getClassMapping(getModel1Package().getCompany()); |
| IListMapping listMapping = classMapping.getListMapping(getModel1Package().getCompany_Categories()); |
| IDBTable table = listMapping.getDBTables().iterator().next(); |
| |
| Connection connection = null; |
| |
| try |
| { |
| connection = store.getConnection(); |
| |
| ByteArrayOutputStream out = new ByteArrayOutputStream(); |
| DBUtil.serializeTable(new ExtendedDataOutputStream(out), connection, table, null, |
| " ORDER BY CDO_SOURCE, CDO_BRANCH, CDO_VERSION_ADDED, CDO_IDX"); |
| |
| return out.toByteArray(); |
| } |
| catch (Exception ex) |
| { |
| throw WrappedException.wrap(ex); |
| } |
| finally |
| { |
| DBUtil.close(connection); |
| } |
| } |
| } |