/**
* 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.GenClass;
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;
public class GenClassValidatorGeneratorAdapter extends GenBaseGeneratorAdapter
{
protected static final int VALIDATOR_ID = 0;
protected static final JETEmitterDescriptor[] JET_EMITTER_DESCRIPTORS =
{
new JETEmitterDescriptor("model/Validator.javajet", "org.eclipse.emf.examples.generator.validator.templates.model.Validator")
};
protected JETEmitterDescriptor[] getJETEmitterDescriptors()
{
return JET_EMITTER_DESCRIPTORS;
}
public GenClassValidatorGeneratorAdapter()
{
super();
}
public GenClassValidatorGeneratorAdapter(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)
{
GenClass genClass = (GenClass)object;
monitor.beginTask("", 2);
message = ValidatorGeneratorPlugin.INSTANCE.getString("GeneratingValidator.message", new Object[] { ValidatorGeneratorUtil.getValidatorInterfaceName(genClass) });
monitor.subTask(message);
GenModel genModel = genClass.getGenModel();
ensureProjectExists
(genModel.getModelDirectory(), genClass, MODEL_PROJECT_TYPE, genModel.isUpdateClasspath(), createMonitor(monitor, 1));
generateJava
(genModel.getModelDirectory(),
ValidatorGeneratorUtil.getValidationPackageName(genClass.getGenPackage()),
ValidatorGeneratorUtil.getValidatorInterfaceName(genClass),
getJETEmitter(getJETEmitterDescriptors(), VALIDATOR_ID),
null,
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);
}
}