| /** |
| * |
| * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) |
| * |
| * 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: |
| * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation |
| * |
| * |
| * This copyright notice shows up in the generated Java code |
| * |
| */ |
| |
| package org.eclipse.osbp.xtext.entitymock.generator |
| |
| import com.google.inject.Inject |
| import java.io.BufferedInputStream |
| import java.io.InputStream |
| import java.util.ArrayList |
| import java.util.Date |
| import java.util.HashMap |
| import java.util.Iterator |
| import java.util.LinkedHashMap |
| import java.util.List |
| import org.eclipse.emf.ecore.EObject |
| import org.eclipse.emf.ecore.resource.Resource |
| import org.eclipse.osbp.utils.entitymock.ABaseMockEntity |
| import org.eclipse.osbp.utils.entitymock.ABaseMockObject |
| import org.eclipse.osbp.utils.entitymock.ABaseMockResource |
| import org.eclipse.osbp.utils.entitymock.AEntityMockDataGenerator |
| import org.eclipse.osbp.utils.entitymock.IEntityMockDataDbFiller |
| import org.eclipse.osbp.utils.entitymock.IEntityMockDataGenerator |
| import org.eclipse.osbp.utils.entitymock.Iterators |
| import org.eclipse.osbp.utils.entitymock.MockedEntityDto |
| import org.eclipse.osbp.xtext.addons.AdvancedJvmModelGenerator |
| import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils |
| import org.eclipse.osbp.xtext.entitymock.EntityMockModel |
| import org.eclipse.osbp.xtext.entitymock.EntityMockPackage |
| import org.eclipse.osbp.xtext.entitymock.jvmmodel.EntityMockDSLJvmModelInferrer |
| import org.eclipse.xtext.generator.IFileSystemAccess |
| import org.eclipse.xtext.xbase.compiler.GeneratorConfig |
| import org.eclipse.xtext.xbase.compiler.ImportManager |
| import org.slf4j.Logger |
| import org.slf4j.LoggerFactory |
| import org.eclipse.osbp.utils.blob.component.BlobTypingAPI |
| import org.eclipse.osbp.utils.blob.component.BlobUpload |
| |
| class EntityMockDslGenerator extends AdvancedJvmModelGenerator { |
| // @Inject extension JvmTypeReferenceBuilder |
| @Inject extension BasicDslGeneratorUtils |
| |
| override doGenerate(Resource input, IFileSystemAccess fsa) { |
| val model = input.getContents().get(0) as EntityMockModel |
| for (pckg : model.packages) { |
| pckg.generateOsgiInf(fsa) |
| } |
| super.doGenerate(input, fsa) |
| } |
| |
| /** |
| * Generate an OSGI INF xml file defining the generated Entity Mock Data Generator via Declarative Service |
| * @param pckg the package defining the generator |
| * @param fsa file system access |
| */ |
| def void generateOsgiInf(EntityMockPackage pckg, IFileSystemAccess fsa) { |
| val generatorName = '''«EntityMockDSLJvmModelInferrer.getEntityMockName(pckg)».«EntityMockDSLJvmModelInferrer.ENTITY_MOCK_GENERATOR»''' |
| var str = ''' |
| <?xml version="1.0" encoding="UTF-8"?> |
| <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="«generatorName»"> |
| <implementation class="«generatorName»"/> |
| <service> |
| <provide interface="«IEntityMockDataGenerator.canonicalName»"/> |
| </service> |
| </scr:component> |
| ''' |
| fsa.generateFile('''../OSGI-INF/«generatorName».xml''', str) |
| } |
| |
| /** |
| * add all relevant Java import statements for necessary classes |
| */ |
| override createAppendable(EObject context, ImportManager importManager, GeneratorConfig config) { |
| // required to initialize the needed builder to avoid deprecated methods |
| builder = context.eResource |
| // --------- |
| addImportFor(importManager, _typeReferenceBuilder |
| , Iterator |
| , Iterators.DateIterator |
| , Iterators.IntegerIterator |
| , ABaseMockEntity |
| , ABaseMockObject |
| , ABaseMockResource |
| , AEntityMockDataGenerator |
| , MockedEntityDto |
| , Date |
| , ArrayList |
| , HashMap |
| , LinkedHashMap |
| , List |
| , BlobTypingAPI |
| , BlobUpload |
| , InputStream |
| , BufferedInputStream |
| , Logger |
| , LoggerFactory |
| , IEntityMockDataDbFiller |
| ) |
| super.createAppendable(context, importManager, config) |
| } |
| } |