package com.baselet.element.facet.customdrawings; import com.baselet.diagram.draw.DrawHandler; import com.baselet.element.facet.customdrawings.gen.CustomDrawingParser; import com.baselet.element.facet.customdrawings.gen.CustomDrawingParserTokenManager; import com.baselet.element.facet.customdrawings.gen.ParseException; import com.baselet.element.facet.customdrawings.gen.Provider; import com.baselet.element.facet.customdrawings.gen.StringProvider; import com.baselet.element.facet.customdrawings.gen.TokenMgrException; public class CustomDrawingParserImpl extends CustomDrawingParser { private final double width; private final double height; private final DrawHandler drawHandler; public CustomDrawingParserImpl(CustomDrawingParserTokenManager tm, double width, double height, DrawHandler drawHandler) { super(tm); this.width = width; this.height = height; this.drawHandler = drawHandler; } public CustomDrawingParserImpl(String dsl, double width, double height, DrawHandler drawHandler) { this(new StringProvider(dsl), width, height, drawHandler); } public CustomDrawingParserImpl(Provider stream, double width, double height, DrawHandler drawHandler) { super(stream); this.width = width; this.height = height; this.drawHandler = drawHandler; } /** * * @param line String which should be parsed * @param width of the element, can be used in the drawing command * @param height of the element, can be used in the drawing command * @param drawer is used to execute the drawing commands * @throws CustomDrawingParserRuntimeException if the input couldn't be parsed (cause is a ParseException or TokenMgrException) */ public static void parse(String line, int width, int height, DrawHandler drawer) { new CustomDrawingParserImpl(line, width, height, drawer).parse(); } /** * calls the function for the start symbol and catches exceptions which are re-thrown as CustomDrawingParserRuntimeException * @throws CustomDrawingParserRuntimeException if the input couldn't be parsed (cause is a ParseException or TokenMgrException) * @see CustomDrawingParserImpl#start() */ public void parse() { try { start(); } catch (ParseException e) { throw new CustomDrawingParserRuntimeException(e); } catch (TokenMgrException e) { throw new CustomDrawingParserRuntimeException(e); } } /** * * @param line String which should be parsed * @param width of the element, can be used in the drawing command * @param height of the element, can be used in the drawing command * @param drawer is used to execute the drawing commands * @throws CustomDrawingParserException if the input couldn't be parsed (cause is a ParseException or TokenMgrException) */ public static void parseCheckedEx(String line, int width, int height, DrawHandler drawer) throws CustomDrawingParserException { new CustomDrawingParserImpl(line, width, height, drawer).parse(); } /** * calls the function for the start symbol and catches exceptions which are re-thrown as CustomDrawingParserException * @throws CustomDrawingParserException if the input couldn't be parsed (cause is a ParseException or TokenMgrException) * @see CustomDrawingParserImpl#start() */ public void parseCheckedEx() throws CustomDrawingParserException { try { start(); } catch (ParseException e) { throw new CustomDrawingParserException(e); } catch (TokenMgrException e) { throw new CustomDrawingParserException(e); } } @Override public double getWidth() { return width; } @Override public double getHeight() { return height; } @Override public DrawHandler getDrawHandler() { return drawHandler; } }