///* // * Copyright (C) 2008 Universidade Federal de Campina Grande // * // * This file is part of OurGrid. // * // * OurGrid is free software: you can redistribute it and/or modify it under the // * terms of the GNU Lesser General Public License as published by the Free // * Software Foundation, either version 3 of the License, or (at your option) // * any later version. // * // * This program is distributed in the hope that it will be useful, but WITHOUT // * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License // * for more details. // * // * You should have received a copy of the GNU Lesser General Public License // * along with this program. If not, see <http://www.gnu.org/licenses/>. // * // */ //package org.ourgrid.common.specification.semantic; // //import java.lang.reflect.InvocationTargetException; //import java.lang.reflect.Method; //import java.util.LinkedList; //import java.util.List; //import java.util.Map; //import java.util.Stack; // //import org.ourgrid.common.specification.CompilerMessages; //import org.ourgrid.common.specification.semantic.exception.SemanticException; //import org.ourgrid.common.specification.syntactical.CommonSyntacticalAnalyzer; //import org.ourgrid.common.specification.token.Token; //import org.ourgrid.common.specification.worker.WorkerSpecification; //import org.ourgrid.common.util.CommonUtils; // ///** // * This entity is the set of actions that the GRID grammar uses to build a // * answer to the compilation of sources wrote in this language. // */ //public class SDFSemanticActions implements SemanticActions { // // private Stack<String> stack; // // private Token actualToken; // // private int mode = CommonSyntacticalAnalyzer.MODE_NORMAL; // // private Map<String,String> defaultAttrib = null; // // private boolean defaults; // // private LinkedList<WorkerSpecification> workers = new LinkedList<WorkerSpecification>(); // // private WorkerSpecification actualWorker = null; // // private List<WorkerSpecification> result; // // private Map<String,String> defaultAnnotations; // // // /** // * The Constructor // */ // public SDFSemanticActions() { // // this.stack = new Stack<String>(); // } // // // public void performAction( String action, Token token ) throws SemanticException { // // this.actualToken = token; // try { // Class semantic = Class.forName( this.getClass().getName() ); // Method method = semantic.getMethod( action ); // method.invoke( this ); // } catch ( NoSuchMethodException nsmex ) { // throw new SemanticException( CompilerMessages.SEMANTIC_ACTION_NOT_FOUND, nsmex ); // } catch ( ClassNotFoundException cnfex ) { // throw new SemanticException( CompilerMessages.SEMANTIC_CLASS_NOT_FOUND, cnfex ); // } catch ( InvocationTargetException itex ) { // if ( itex.getCause() instanceof SemanticException ) { // throw (SemanticException) itex.getCause(); // } // throw new SemanticException( CompilerMessages.SEMANTIC_FATAL_ERROR(), itex.getCause() ); // } catch ( IllegalAccessException iaex ) { // throw new SemanticException( CompilerMessages.SEMANTIC_FATAL_ILLEGAL_ACCESS, iaex ); // } // } // // // public int getOperationalMode() { // // return this.mode; // } // // // public List<WorkerSpecification> getResult() { // // return this.result; // } // // // /** // * This action: Sets the read line mode // */ // public void action1() { // // this.mode = CommonSyntacticalAnalyzer.MODE_READLINE; // } // // // /** // * This action: Puts the value string for a attribute at the top of the // * stack. // * // * @throws SemanticException // */ // public void action2() throws SemanticException { // // String tempAttValue = actualToken.getSymbol(); // if ( tempAttValue.equals( "" ) ) { // throw new SemanticException( CompilerMessages.SEMANTIC_EMPTY_ATTRIBUTE_VALUE( stack.pop(), actualToken // .getLine() ) ); // } // this.stack.push( tempAttValue ); // } // // // /** // * This action: Puts the name string for a attribute at the top of the // * stack. // */ // public void action3() { // // this.stack.push( actualToken.getSymbol() ); // } // // // /** // * This action: Inserts a new attribute at the actual worker specification // * or at the default map depending of the type of the attribute (worker or // * default). // */ // public void action4() { // // String attValue = stack.pop(); // String attName = stack.pop(); // if ( defaults == false ) { // this.actualWorker.putAttribute( attName, attValue ); // } else { // this.defaultAttrib.put( attName, attValue ); // } // } // // // /** // * This action: Initializes a new WorkerSpec as the actual Worker. // */ // public void action6() { // // this.actualWorker = new WorkerSpecification(); // } // // // /** // * This action: Closes the actual Worker specification and inserts it at // * worker list. The close process includes the insertion of the default // * attributes at the actual Worker specification where each default // * attribute is only inserted if the entry for a value does not exists. // */ // public void action8() throws SemanticException { // // for(String defAttName : defaultAttrib.keySet()) { // if ( !actualWorker.hasAttribute( defAttName ) ) { // actualWorker.putAttribute( defAttName, defaultAttrib.get( defAttName ) ); // } // } // // this.actualWorker.getAnnotations().putAll(defaultAnnotations); // // if ( actualWorker.isValid() ) { // this.workers.add( actualWorker ); // this.actualWorker = null; // } else { // throw new SemanticException( CompilerMessages.BAD_WORKER_DEFINITION( actualWorker.getURL() ) ); // } // } // // // /** // * This action: Prepares the environment to read and indicates the existence of defaults attributes or annotations. // */ // public void action9() { // // this.defaultAttrib = CommonUtils.createSerializableMap(); // this.defaultAnnotations = CommonUtils.createSerializableMap(); // this.defaults = true; // } // // // /** // * This action: Finishes the default attributes reading process. // */ // public void action10() { // // this.defaults = false; // } // // // /** // * This action: Sets the final result LIST object. // */ // public void action12() { // // this.result = this.workers; // } // // /** // * This action: Sets the mode to NORMAL // */ // public void action14() { // // this.mode = CommonSyntacticalAnalyzer.MODE_NORMAL; // } // // // /** // * This action: Inserts a new attribute at the actual worker specification // * or at the default map depending of the type of the attribute (worker or // * default). // */ // public void action15() { // // String attValue = stack.pop(); // String attName = stack.pop(); // if ( defaults ) { // this.defaultAnnotations.put( attName, attValue ); // } else { // this.actualWorker.getAnnotations().put( attName, attValue ); // } // } // // //}