/******************************************************************************* * Copyright (c) 2008 SAP * see https://research.qkal.sap.corp/mediawiki/index.php/CoMONET * * Date: $Date: 2008-10-30 16:47:01 +0100 (Do, 30 Okt 2008) $ * Revision: $Revision: 2114 $ * Author: $Author: c5107456 $ *******************************************************************************/ package com.sap.furcas.runtime.parser.impl; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.antlr.runtime.RecognitionException; import com.sap.furcas.runtime.parser.IInjectionHelper; import com.sap.furcas.runtime.parser.IModelAdapter; import com.sap.furcas.runtime.parser.InjectionOptionsBean; import com.sap.furcas.runtime.parser.ParsingError; import com.sap.furcas.runtime.parser.TextLocation; /** * provides basic functionality required in any Modelinjector */ public abstract class AbstractModelInjector implements IInjectionHelper { /** The model handler. */ private IModelAdapter modelAdapter; /** static maintenance of element location mapping. */ private final Map<Object, TextLocation> locationByElement = new HashMap<Object, TextLocation>(); /** also relevant to subclasses */ protected InjectionOptionsBean options; /** The error list. */ private final List<ParsingError> errorList = new ArrayList<ParsingError>(); /* used for better error messages on mismatchedTokenExceptions */ private final String[] parserTokens; /** * Instantiates a new tCS injector. * * @param parserTokens * @param newTokenFactory must not be null * * @param modelHandler the model handler */ public AbstractModelInjector(String[] parserTokens) { this.parserTokens = parserTokens; } /* * (non-Javadoc) * * @see * com.sap.mi.textual.grammar.impl.IModelInjector#reportError(java.lang. * Exception) */ @Override public void reportError(RecognitionException e) { // TCS Handling of problem involves adding a Problem element to some // separate "Problems" model // relying on ANTLR3 API for getting Exception messages RecognitionException re = e; ParsingError newError = ErrorMessageGenerator.getParsingError(re, parserTokens); addError(newError); } /** * * @param newError */ @Override public void addError(ParsingError newError) { errorList.add(newError); } /* * (non-Javadoc) * * @see com.sap.mi.textual.grammar.impl.IModelInjector#getErrorList() */ @Override public List<ParsingError> getErrorList() { return errorList; } public Map<Object, TextLocation> getLocationsMap() { return locationByElement; } /* * (non-Javadoc) * * @see * com.sap.mi.textual.grammar.impl.IModelInjector#setLocation(java.lang. * Object, java.lang.String) */ @Override public void setLocation(Object modelElement, TextLocation location) { locationByElement.put(modelElement, location); } /** * @param bean */ public void setOptions(InjectionOptionsBean optionsBean) { this.options = optionsBean; } /** * * @return */ public IModelAdapter getModelAdapter() { return modelAdapter; } public void setModelAdapter(IModelAdapter modelAdapter) { this.modelAdapter = modelAdapter; } }