/**
* <copyright>
*
* Copyright (c) 2009, 2010 Springsite BV (The Netherlands) 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:
* Martin Taal - Initial API and implementation
*
* </copyright>
*
* $Id: ModelPackageJPATest.java,v 1.7 2011/08/25 12:42:40 mtaal Exp $
*/
package org.eclipse.emf.texo.test.base;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import junit.framework.TestCase;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.texo.converter.EMFModelConverter;
import org.eclipse.emf.texo.datagenerator.DataGeneratorUtils;
import org.eclipse.emf.texo.datagenerator.ModelDataGenerator;
import org.eclipse.emf.texo.model.ModelPackage;
/**
* Base JPA Test
*
* @author <a href="mailto:mtaal@elver.org">Martin Taal</a>
* @version $Revision: 1.7 $
*/
public class ModelPackageJPATest extends TestCase {
private List<ModelPackage> modelPackages;
private List<EClass> eClasses;
public ModelPackageJPATest(ModelPackage modelPackage) {
this(modelPackage, ""); //$NON-NLS-1$
}
public ModelPackageJPATest(ModelPackage modelPackage, String postFix) {
super(modelPackage.getEPackage().getName() + postFix);
modelPackages = Collections.singletonList(modelPackage);
}
public ModelPackageJPATest(List<ModelPackage> modelPackages) {
super(modelPackages.get(0).getEPackage().getName());
this.modelPackages = modelPackages;
}
public List<EClass> getEClasses() {
if (eClasses == null) {
setAllEClasses();
}
return eClasses;
}
public void setEClasses(List<EClass> eClasses) {
this.eClasses = eClasses;
}
protected void setAllEClasses() {
eClasses = DataGeneratorUtils.getRootEClasses(getEPackages());
}
protected List<EPackage> getEPackages() {
final List<EPackage> ePackages = new ArrayList<EPackage>();
for (ModelPackage modelPackage : modelPackages) {
ePackages.add(modelPackage.getEPackage());
}
return ePackages;
}
protected List<Object> generateTestSet(final int dataSize, final int collectionSize, final int maxDepth,
final int maxObjects) {
final ModelDataGenerator modelDataGenerator = new ModelDataGenerator();
modelDataGenerator.setStartEClasses(getEClasses());
modelDataGenerator.setMaxDepth(maxDepth);
modelDataGenerator.setCollectionSize(collectionSize);
modelDataGenerator.setDataSize(dataSize);
modelDataGenerator.setMaxObjects(maxObjects);
modelDataGenerator.setEPackages(getEPackages());
modelDataGenerator.setUseDataFiles(false);
modelDataGenerator.generateTestData();
final List<EObject> list = modelDataGenerator.getResult();
final EMFModelConverter emfModelConverter = new EMFModelConverter();
final List<Object> result = emfModelConverter.convert(list);
// System.err.println(modelDataGenerator.getTotalObjectCount());
// ModelXMLSaver xmlPrinter = new ModelXMLSaver();
// xmlPrinter.setObjects(result);
// final StringWriter sw = new StringWriter();
// xmlPrinter.setSaveAsXMI(true);
// xmlPrinter.setWriter(sw);
// xmlPrinter.write();
// System.err.println(sw.toString());
return result;
}
}