blob: 05f18831ac18dc8fc80ba7a876236eed640d9cab [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.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.eclipse.epsilon.common.module.Comment;
import org.eclipse.epsilon.common.module.IModule;
import org.eclipse.epsilon.common.module.ModuleElement;
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.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;
public class EglTemplateFactoryModuleAdapter implements IEglModule {
private EglTemplateFactory templateFactory;
private EglTemplate current;
public EglTemplateFactoryModuleAdapter() {
this(new EglTemplateFactory());
}
public EglTemplateFactoryModuleAdapter(EglTemplateFactory factory) {
this.templateFactory = factory;
}
@Override
public EglTemplateFactory getTemplateFactory() {
return templateFactory;
}
@Override
public void setTemplateFactory(EglTemplateFactory templateFactory) {
this.templateFactory = templateFactory;
}
/**
* @deprecated Use {@link #getTemplateFactory()}
*/
@Deprecated
public EglTemplateFactory getFactory() {
return getTemplateFactory();
}
/**
* @deprecated Use {@link #setTemplateFactory()}
*/
@Deprecated
public void setFactory(EglTemplateFactory factory) {
setTemplateFactory(factory);
}
@Override
public EglTemplate getCurrentTemplate() {
return current;
}
@Override
public boolean parse(File file) throws Exception {
current = templateFactory.load(file);
return getParseProblems().isEmpty();
}
@Override
public boolean parse(URI uri) throws Exception {
current = templateFactory.load(uri);
return getParseProblems().isEmpty();
}
@Override
public boolean parse(String code) throws Exception {
current = templateFactory.prepare(code);
return getParseProblems().isEmpty();
}
@Override
public boolean parse(String code, File file) throws Exception {
current = templateFactory.load(code, file);
return current.getParseProblems().isEmpty();
}
@Override
public boolean parse(String code, URI uri) throws Exception {
current = templateFactory.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 void reset() {
current = null;
}
@Override
public IEglContext getContext() {
return templateFactory.getContext();
}
@Override
public List<ModelDeclaration> getDeclaredModelDeclarations() {
if (current == null) return null;
return current.module.getDeclaredModelDeclarations();
}
@Override
public OperationList getDeclaredOperations() {
if (current == null) return null;
return current.module.getDeclaredOperations();
}
@Override
public List<Import> getImports() {
if (current == null) return null;
return current.module.getImports();
}
@Override
public Set<ModelDeclaration> getModelDelcarations() {
if (current == null) return null;
return current.module.getModelDelcarations();
}
@Override
public OperationList getOperations() {
if (current == null) return null;
return current.module.getOperations();
}
@Override
public void setDefaultFormatters(Collection<Formatter> defaultFormatters) {
templateFactory.setDefaultFormatters(defaultFormatters);
}
@Override
public IEolModule getParentModule() {
if (current == null) return null;
return current.module.getParentModule();
}
@Override
public void setParentModule(IEolModule parent) {
if (current != null) current.module.setParentModule(parent);
}
@Override
public URI getSourceUri() {
if (current == null) return null;
return current.module.getSourceUri();
}
@Override
public void setContext(IEolContext context) {
if (context instanceof IEglContext) {
templateFactory.setContext((IEglContext) context);
if (current != null) current.module.setContext(context);
}
}
@Override
public ModuleElement createAst(AST cst, ModuleElement parentAst) {
if (current == null) return null;
return current.module.createAst(cst, parentAst);
}
@Override
public File getFile() {
if (current == null) return null;
return current.module.getFile();
}
@Override
public URI getUri() {
if (current == null) return null;
return current.module.getUri();
}
@Override
public void setUri(URI uri) {
if (current != null) current.module.setUri(uri);
}
@Override
public void setModule(IModule module) {
if (current != null) current.module.setModule(module);
}
@Override
public void build(AST cst, IModule module) {
if (current != null) current.module.build(cst, module);
}
@Override
public Region getRegion() {
if (current == null) return null;
return current.module.getRegion();
}
@Override
public void setRegion(Region region) {
if (current != null) current.module.setRegion(region);
}
@Override
public ModuleElement getParent() {
if (current == null) return null;
return current.module.getParent();
}
@Override
public void setParent(ModuleElement moduleElement) {
if (current != null) current.module.setParent(moduleElement);
}
@Override
public List<ModuleElement> getChildren() {
if (current == null) return null;
return current.module.getChildren();
}
@Override
public IModule getModule() {
if (current == null) return null;
return current.module;
}
@Override
public StatementBlock getMain() {
if (current == null) return null;
return current.module.getMain();
}
@Override
public List<Statement> getPostOperationStatements() {
if (current == null) return null;
return current.module.getPostOperationStatements();
}
@Override
public List<Comment> getComments() {
return current.module.getComments();
}
@Override
public Map<String, Object> getData() {
return current.getModule().getData();
}
}