01 package de.java2html.plugin.jspwiki;
02 
03 import java.util.Map;
04 
05 import com.ecyrd.jspwiki.plugin.PluginException;
06 
07 import de.java2html.options.ConversionOptionsUtilities;
08 import de.java2html.options.HorizontalAlignment;
09 import de.java2html.options.JavaSourceConversionOptions;
10 import de.java2html.options.JavaSourceStyleTable;
11 import de.java2html.plugin.AbstractJava2HtmlPlugin;
12 import de.java2html.plugin.ParameterUtilities;
13 
14 /**
15  @author Markus Gebhard
16  */
17 public class PluginConversionOptionsParser {
18 
19   public JavaSourceConversionOptions parseConversionOptions(Map paramsthrows PluginException {
20     final JavaSourceConversionOptions conversionOptions = AbstractJava2HtmlPlugin.getDefaultSettings().getConversionOptions();
21     adjustStyleTable(params, conversionOptions);
22     adjustBorder(params, conversionOptions);
23     adjustLineNumbers(params, conversionOptions);
24     adjustTabSize(params, conversionOptions);
25     adjustAlignment(params, conversionOptions);
26     return conversionOptions;
27   }
28 
29   private void adjustStyleTable(Map params, JavaSourceConversionOptions conversionOptions)
30     throws PluginException {
31     final String style = ParameterUtilities.getParameter(params, PluginParameter.STYLE);
32     if (style != null) {
33       final JavaSourceStyleTable styleTable = JavaSourceStyleTable.getPredefinedTable(style);
34       if (styleTable == null) {
35         throw new PluginException(
36           "Unsupported style '"
37             + style
38             "' - available styles are: "
39             + ConversionOptionsUtilities.getPredefinedStyleTableNameString());
40       }
41       conversionOptions.setStyleTable(styleTable);
42     }
43   }
44 
45   private void adjustBorder(Map params, JavaSourceConversionOptions conversionOptionsthrows PluginException {
46     final String border = ParameterUtilities.getParameter(params, PluginParameter.BORDER);
47     if (border != null) {
48       conversionOptions.setShowTableBorder(ParameterUtilities.getBoolean(border));
49     }
50   }
51 
52   private void adjustLineNumbers(Map params, JavaSourceConversionOptions conversionOptions)
53     throws PluginException {
54     final String lineNumbers = ParameterUtilities.getParameter(params, PluginParameter.LINE_NUMBERS);
55     if (lineNumbers != null) {
56       conversionOptions.setShowLineNumbers(ParameterUtilities.getBoolean(lineNumbers));
57     }
58   }
59 
60   private void adjustTabSize(Map params, JavaSourceConversionOptions conversionOptionsthrows PluginException {
61     final String tabSize = ParameterUtilities.getParameter(params, PluginParameter.TAB_SIZE);
62     if (tabSize != null) {
63       conversionOptions.setTabSize(ParameterUtilities.getInt(tabSize));
64     }
65   }
66 
67   private void adjustAlignment(Map params, JavaSourceConversionOptions conversionOptionsthrows PluginException {
68     final String alignment = ParameterUtilities.getParameter(params, PluginParameter.ALIGNMENT);
69     if (alignment != null) {
70       final HorizontalAlignment horizontalAlignment = HorizontalAlignment.getByName(alignment);
71       if (horizontalAlignment == null) {
72         throw new PluginException(
73           "Unsupported alignment '"
74             + alignment
75             "' - valid values are: "
76             + ConversionOptionsUtilities.getAvailableHorizontalAlignmentNameString());
77       }
78       conversionOptions.setHorizontalAlignment(horizontalAlignment);
79     }
80   }
81 }