blob: 51fd89a916a2378b0fe09ba45e71fa9df4ca29fd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 The University of York.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* Louis Rose - initial API and implementation
******************************************************************************
*
* $Id$
*/
package org.eclipse.epsilon.egl;
import java.io.File;
import java.net.URI;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import org.eclipse.epsilon.common.module.IModule;
import org.eclipse.epsilon.common.module.ModuleElement;
import org.eclipse.epsilon.common.module.ModuleMarker;
import org.eclipse.epsilon.common.parse.AST;
import org.eclipse.epsilon.common.parse.Region;
import org.eclipse.epsilon.common.parse.problem.ParseProblem;
import org.eclipse.epsilon.egl.execute.context.IEglContext;
import org.eclipse.epsilon.egl.formatter.Formatter;
import org.eclipse.epsilon.eol.IEolModule;
import org.eclipse.epsilon.eol.compile.context.EolCompilationContext;
import org.eclipse.epsilon.eol.dom.Import;
import org.eclipse.epsilon.eol.dom.ModelDeclaration;
import org.eclipse.epsilon.eol.dom.OperationList;
import org.eclipse.epsilon.eol.dom.Statement;
import org.eclipse.epsilon.eol.dom.StatementBlock;
import org.eclipse.epsilon.eol.exceptions.EolRuntimeException;
import org.eclipse.epsilon.eol.execute.context.IEolContext;
import org.eclipse.epsilon.eol.execute.control.IExecutionListener;
public class EglTemplateFactoryModuleAdapter implements IEolModule {
private EglTemplateFactory factory;
private EglTemplate current;
public static void main(String[] args) throws Exception {
EglTemplateFactoryModuleAdapter module = new EglTemplateFactoryModuleAdapter(new EglTemplateFactory());
module.getContext().getExecutorFactory().addExecutionListener(new IExecutionListener() {
@Override
public void finishedExecutingWithException(ModuleElement ast,
EolRuntimeException exception, IEolContext context) {
// TODO Auto-generated method stub
}
@Override
public void finishedExecuting(ModuleElement ast, Object result,
IEolContext context) {
System.out.println("Done");
}
@Override
public void aboutToExecute(ModuleElement ast, IEolContext context) {
// TODO Auto-generated method stub
}
});
module.execute();
}
public EglTemplateFactoryModuleAdapter() {
}
public EglTemplateFactoryModuleAdapter(EglTemplateFactory factory) {
this.factory = factory;
}
public EglTemplateFactory getFactory() {
return factory;
}
public void setFactory(EglTemplateFactory factory) {
this.factory = factory;
}
public EglTemplate getCurrentTemplate() {
return current;
}
@Override
public boolean parse(File file) throws Exception {
current = factory.load(file);
return getParseProblems().isEmpty();
}
@Override
public boolean parse(URI uri) throws Exception {
current = factory.load(uri);
return getParseProblems().isEmpty();
}
@Override
public boolean parse(String code) throws Exception {
current = factory.prepare(code);
return getParseProblems().isEmpty();
}
@Override
public boolean parse(String code, File file) throws Exception {
current = factory.load(code, file);
return current.getParseProblems().isEmpty();
}
public boolean parse(String code, URI uri) throws Exception {
current = factory.load(code, uri);
return current.getParseProblems().isEmpty();
}
@Override
public List<ParseProblem> getParseProblems() {
return current == null ? new LinkedList<>() : current.getParseProblems();
}
@Override
public Object execute() throws EolRuntimeException {
return current == null ? null : current.process();
}
@Override
public List<ModuleMarker> compile() {
return Collections.emptyList();
}
public void reset() {
current = null;
}
public void buildModel() throws Exception {}
@Override
public IEglContext getContext() {
return factory.getContext();
}
@Override
public List<ModelDeclaration> getDeclaredModelDeclarations() {
return current.getModule().getPreprocessorModule().getDeclaredModelDeclarations();
}
@Override
public OperationList getDeclaredOperations() {
return current.getModule().getPreprocessorModule().getDeclaredOperations();
}
@Override
public List<Import> getImports() {
return current.getModule().getPreprocessorModule().getImports();
}
@Override
public Set<ModelDeclaration> getModelDelcarations() {
return current.getModule().getPreprocessorModule().getModelDelcarations();
}
@Override
public OperationList getOperations() {
return current.getModule().getPreprocessorModule().getOperations();
}
public void setDefaultFormatters(Collection<Formatter> defaultFormatters) {
factory.setDefaultFormatters(defaultFormatters);
}
@Override
public IEolModule getParentModule() {
return null;
}
@Override
public void setParentModule(IEolModule parent) {}
@Override
public URI getSourceUri() {
return null;
}
@Override
public void setContext(IEolContext context) {
if (context instanceof IEglContext) {
factory.setContext((IEglContext) context);
}
}
@Override
public EolCompilationContext getCompilationContext() {
return current.getModule().getPreprocessorModule().getCompilationContext();
}
@Override
public ModuleElement createAst(AST cst, ModuleElement parentAst) {
return null;
}
@Override
public File getFile() {
// TODO Auto-generated method stub
return null;
}
@Override
public URI getUri() {
return null;
}
@Override
public void setUri(URI uri) {}
@Override
public void setModule(IModule module) {}
@Override
public void build(AST cst, IModule module) {}
@Override
public Region getRegion() {
return current.module.getRegion();
}
@Override
public void setRegion(Region region) {}
@Override
public ModuleElement getParent() {
return null;
}
@Override
public void setParent(ModuleElement moduleElement) {}
@Override
public List<ModuleElement> getChildren() {
return current.module.getChildren();
}
@Override
public IModule getModule() {
return null;
}
@Override
public StatementBlock getMain() {
return null;
}
@Override
public List<Statement> getPostOperationStatements() {
return Collections.emptyList();
}
}