/*******************************************************************************
* Copyright © 2011, 2013 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 Corporation - initial API and implementation
*
*******************************************************************************/
package org.eclipse.edt.ide.compiler.gen;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.edt.compiler.ICompiler;
import org.eclipse.edt.gen.Generator;
import org.eclipse.edt.gen.generator.java.EGL2Java;
import org.eclipse.edt.ide.core.IGenerator;
import org.eclipse.edt.ide.core.utils.EclipseUtilities;
import org.eclipse.edt.mof.egl.Part;
import org.eclipse.edt.mof.egl.utils.LoadPartException;
/**
* Subclass of the base Java generator command to do certain things in the Eclipse way.
*/
public class EclipseEGL2JavaCore extends EGL2Java {
private final IFile eglFile;
private final Part part;
private final IGenerator generatorProvider;
public EclipseEGL2JavaCore(IFile eglFile, Part part, IGenerator generator) {
super();
this.eglFile = eglFile;
this.part = part;
this.generatorProvider = generator;
}
@Override
protected List<Part> loadEGLParts(ICompiler compiler) throws LoadPartException {
List<Part> parts = new ArrayList<Part>();
parts.add(part);
return parts;
}
@Override
protected void writeFile(Part part, Generator generator) throws Exception {
String outputFolder = (String) getParameterMapping().get(org.eclipse.edt.gen.Constants.parameter_output).getValue();
if (EclipseUtilities.shouldWriteFileInEclipse(outputFolder)) {
EclipseGeneratorUtility.writeAndProcessJavaFile(outputFolder, part, generator, generatorProvider, eglFile);
} else {
// super's method handles writing to an absolute file system path.
super.writeFile(part, generator);
}
}
@Override
protected void writeSMAPFile(byte[] data, Part part, Generator generator) throws Exception {
String outputFolder = (String) getParameterMapping().get(org.eclipse.edt.gen.Constants.parameter_output).getValue();
if (EclipseUtilities.shouldWriteFileInEclipse(outputFolder)) {
EclipseGeneratorUtility.writeSMAPFile(data, outputFolder, part, generator, eglFile);
}
else {
super.writeSMAPFile(data, part, generator);
}
}
}