/**
* Copyright (c) 2006 IBM Corporation 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:
* IBM - Initial API and implementation
*/
package org.eclipse.emf.examples.generator.validator;
import java.util.List;
import org.eclipse.emf.codegen.ecore.generator.GeneratorAdapterFactory;
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
import org.eclipse.emf.codegen.ecore.genmodel.generator.GenBaseGeneratorAdapter;
import org.eclipse.emf.codegen.jet.JETEmitter;
import org.eclipse.emf.codegen.jet.JETException;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.common.util.Monitor;
import org.eclipse.emf.common.util.URI;
public class GenModelValidatorGeneratorAdapter extends GenBaseGeneratorAdapter
{
protected static final int MODEL_DESCRIPTION_ID = 0;
protected static final JETEmitterDescriptor[] JET_EMITTER_DESCRIPTORS =
{
new JETEmitterDescriptor("model/ModelDescription.txtjet", "org.eclipse.emf.examples.generator.validator.templates.model.ModelDescription")
};
protected JETEmitterDescriptor[] getJETEmitterDescriptors()
{
return JET_EMITTER_DESCRIPTORS;
}
public GenModelValidatorGeneratorAdapter()
{
super();
}
public GenModelValidatorGeneratorAdapter(GeneratorAdapterFactory generatorAdapterFactory)
{
super(generatorAdapterFactory);
}
@Override
public boolean canGenerate(Object object, Object projectType)
{
return MODEL_PROJECT_TYPE.equals(projectType) ? super.canGenerate(object, projectType) : false;
}
@Override
protected Diagnostic generateModel(Object object, Monitor monitor)
{
GenModel genModel = (GenModel)object;
monitor.beginTask("", 2);
message = ValidatorGeneratorPlugin.INSTANCE.getString("GeneratingModelDescription.message");
monitor.subTask(message);
ensureProjectExists
(genModel.getModelDirectory(), genModel, MODEL_PROJECT_TYPE, genModel.isUpdateClasspath(), createMonitor(monitor, 1));
String targetFile = genModel.getModelProjectDirectory() + "/text/description.txt";
generateText
(targetFile,
getJETEmitter(getJETEmitterDescriptors(), MODEL_DESCRIPTION_ID),
null,
true,
getEncoding(URI.createURI(targetFile)),
createMonitor(monitor, 1));
return Diagnostic.OK_INSTANCE;
}
@Override
protected void addBaseTemplatePathEntries(List<String> templatePath)
{
templatePath.add(ValidatorGeneratorUtil.TEMPLATE_LOCATION);
super.addBaseTemplatePathEntries(templatePath);
}
@Override
protected void addClasspathEntries(JETEmitter jetEmitter) throws JETException
{
super.addClasspathEntries(jetEmitter);
jetEmitter.addVariable(ValidatorGeneratorUtil.CLASSPATH_VARIABLE_NAME, ValidatorGeneratorPlugin.ID);
}
}