/******************************************************************************* * Copyright © 2012, 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.compiler.internal.egl2mof; import org.eclipse.edt.compiler.core.ast.AddStatement; import org.eclipse.edt.compiler.core.ast.CallStatement; import org.eclipse.edt.compiler.core.ast.CloseStatement; import org.eclipse.edt.compiler.core.ast.DeleteStatement; import org.eclipse.edt.compiler.core.ast.ExecuteStatement; import org.eclipse.edt.compiler.core.ast.ForEachStatement; import org.eclipse.edt.compiler.core.ast.GetByKeyStatement; import org.eclipse.edt.compiler.core.ast.GetByPositionStatement; import org.eclipse.edt.compiler.core.ast.NestedFunction; import org.eclipse.edt.compiler.core.ast.OpenStatement; import org.eclipse.edt.compiler.core.ast.PrepareStatement; import org.eclipse.edt.compiler.core.ast.ReplaceStatement; import org.eclipse.edt.mof.egl.Annotation; import org.eclipse.edt.mof.egl.Function; import org.eclipse.edt.mof.egl.Operation; import org.eclipse.edt.mof.serialization.IEnvironment; public class DefaultElementGenerator extends AbstractElementGenerator { public DefaultElementGenerator() { super(null); } public DefaultElementGenerator(IEnvironment env) { super(env); } @Override public boolean visit(AddStatement node) { stack.push(factory.createAddStatement()); return false; } @Override public boolean visit(CallStatement callStatement) { stack.push(factory.createCallStatement()); return false; }; @Override public boolean visit(CloseStatement node) { stack.push(factory.createCloseStatement()); return false; } @Override public boolean visit(DeleteStatement node) { stack.push(factory.createDeleteStatement()); return false; } @Override public boolean visit(ExecuteStatement executeStatement) { stack.push(factory.createExecuteStatement()); return false; }; @Override public boolean visit(ForEachStatement node) { stack.push(factory.createForEachStatement()); return false; } @Override public boolean visit(GetByKeyStatement node) { stack.push(factory.createGetByKeyStatement()); return false; } @Override public boolean visit(GetByPositionStatement node) { stack.push(factory.createGetByPositionStatement()); return false; } @Override public boolean visit(NestedFunction node) { Object obj = node.getName().resolveElement(); if (obj instanceof Function) { Function function = (Function) obj; Annotation ann = function.getAnnotation(EGL_lang_reflect_package + ".Operation"); if (ann != null) { Operation op = factory.createOperation(); op.setOpSymbol((String)ann.getValue("opSymbol")); stack.push(op); return false; } } stack.push(factory.createFunction()); return false; }; @Override public boolean visit(OpenStatement node) { stack.push(factory.createOpenStatement()); return false; } @Override public boolean visit(PrepareStatement prepareStatement) { stack.push(factory.createPrepareStatement()); return false; }; @Override public boolean visit(ReplaceStatement node) { stack.push(factory.createReplaceStatement()); return false; } }