blob: 53996fae6e75d5b0698673d870dc330a0cf0dd74 [file] [log] [blame]
/*
* Copyright (c) 2006, 2018 IBM Corporation, CEA, and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* IBM - initial API and implementation
* Kenn Hussey (CEA) - 394623
* Kenn Hussey - 535301
*
*/
package org.eclipse.uml2.codegen.ecore.genmodel.generator;
import org.eclipse.emf.codegen.ecore.CodeGenEcorePlugin;
import org.eclipse.emf.codegen.ecore.generator.GeneratorAdapterFactory;
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
import org.eclipse.emf.codegen.ecore.genmodel.GenResourceKind;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.Monitor;
import org.eclipse.uml2.codegen.ecore.genmodel.GenPackage;
/**
* @since 1.2.0
*/
public class UML2GenPackageGeneratorAdapter
extends UML2GenBaseGeneratorAdapter {
protected static final int RESOURCE_INTERFACE_ID = 0;
protected static final int DERIVED_UNION_ADAPTER_CLASS_ID = 1;
private static final JETEmitterDescriptor[] JET_EMITTER_DESCRIPTORS = {
new JETEmitterDescriptor("model/ResourceInterface.javajet", //$NON-NLS-1$
"org.eclipse.uml2.codegen.ecore.templates.model.ResourceInterface"), //$NON-NLS-1$
new JETEmitterDescriptor("model/DerivedUnionAdapterClass.javajet", //$NON-NLS-1$
"org.eclipse.uml2.codegen.ecore.templates.model.DerivedUnionAdapterClass")}; //$NON-NLS-1$
public UML2GenPackageGeneratorAdapter(
GeneratorAdapterFactory generatorAdapterFactory) {
super(generatorAdapterFactory);
}
protected JETEmitterDescriptor[] getJETEmitterDescriptors() {
return JET_EMITTER_DESCRIPTORS;
}
@Override
protected Diagnostic generateModel(Object object, Monitor monitor) {
GenPackage genPackage = (GenPackage) object;
monitor.beginTask("", 3); //$NON-NLS-1$
message = CodeGenEcorePlugin.INSTANCE.getString(
"_UI_GeneratingPackage_message", new Object[]{genPackage //$NON-NLS-1$
.getPackageInterfaceName()});
monitor.subTask(message);
GenModel genModel = genPackage.getGenModel();
ensureProjectExists(genModel.getModelDirectory(), genPackage,
MODEL_PROJECT_TYPE, genModel.isUpdateClasspath(), createMonitor(
monitor, 1));
generateResourceInterface(genPackage, monitor);
generateDerivedUnionAdapterClass(genPackage, monitor);
return Diagnostic.OK_INSTANCE;
}
protected void generateResourceInterface(GenPackage genPackage,
Monitor monitor) {
if (GenResourceKind.NONE_LITERAL != genPackage.getResource()
&& genPackage.isResourceInterfaces()) {
message = CodeGenEcorePlugin.INSTANCE.getString(
"_UI_GeneratingJavaClass_message", new Object[]{genPackage //$NON-NLS-1$
.getQualifiedResourceInterfaceName()});
monitor.subTask(message);
generateJava(genPackage.getGenModel().getModelDirectory(),
genPackage.getUtilitiesPackageName(), genPackage
.getResourceInterfaceName(), getJETEmitter(
getJETEmitterDescriptors(), RESOURCE_INTERFACE_ID), null,
createMonitor(monitor, 1));
} else {
monitor.worked(1);
}
}
protected void generateDerivedUnionAdapterClass(GenPackage genPackage,
Monitor monitor) {
if (!genPackage.getDerivedUnionAdapterGenClasses().isEmpty()) {
message = CodeGenEcorePlugin.INSTANCE.getString(
"_UI_GeneratingJavaClass_message", new Object[]{genPackage
.getQualifiedDerivedUnionAdapterClassName()});
monitor.subTask(message);
generateJava(
genPackage.getGenModel().getModelDirectory(),
genPackage.getUtilitiesPackageName(),
genPackage.getDerivedUnionAdapterClassName(),
getJETEmitter(getJETEmitterDescriptors(),
DERIVED_UNION_ADAPTER_CLASS_ID), null,
createMonitor(monitor, 1));
} else {
monitor.worked(1);
}
}
}