/** * <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: ModelPackageBaseTest.java,v 1.3 2011/08/25 14:34:48 mtaal Exp $ */ package org.eclipse.emf.texo.server.test; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EClassifier; 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.ModelDataGenerator; import org.eclipse.emf.texo.model.ModelPackage; import org.eclipse.emf.texo.server.service.ServiceModelPackageRegistry; import org.eclipse.emf.texo.utils.ModelUtils; /** * Base Package Test * * @author <a href="mailto:mtaal@elver.org">Martin Taal</a> * @version $Revision: 1.3 $ */ public class ModelPackageBaseTest extends BaseTest { private List<ModelPackage> modelPackages; private List<EClass> eClasses; public ModelPackageBaseTest(ModelPackage modelPackage) { super(modelPackage.getEPackage().getName()); ServiceModelPackageRegistry.getInstance().register(modelPackage); modelPackages = Collections.singletonList(modelPackage); } public ModelPackageBaseTest(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 = new ArrayList<EClass>(); for (final EPackage ePackage : getEPackages()) { for (final EClassifier eClassifier : ePackage.getEClassifiers()) { if (eClassifier instanceof EClass && !ModelUtils.isEMap((EClass) eClassifier)) { final EClass eClass = (EClass) eClassifier; if (!eClass.isAbstract() && !eClass.isInterface()) { eClasses.add((EClass) eClassifier); } } } } } 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(); System.err.println(modelDataGenerator.getTotalObjectCount()); final List<EObject> list = modelDataGenerator.getResult(); final EMFModelConverter emfModelConverter = new EMFModelConverter(); return emfModelConverter.convert(list); } }