KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > java2html > properties > ConversionOptionsPropertiesReader


1 package de.java2html.properties;
2
3 import java.util.Properties JavaDoc;
4 import java.util.StringTokenizer JavaDoc;
5
6 import de.java2html.javasource.JavaSourceType;
7 import de.java2html.options.ConversionOptionsUtilities;
8 import de.java2html.options.HorizontalAlignment;
9 import de.java2html.options.IConversionOptionsConstants;
10 import de.java2html.options.JavaSourceConversionOptions;
11 import de.java2html.options.JavaSourceStyleEntry;
12 import de.java2html.options.JavaSourceStyleTable;
13 import de.java2html.util.RGB;
14
15 /**
16  * @author Markus Gebhard
17  */

18 public class ConversionOptionsPropertiesReader {
19
20   public JavaSourceConversionOptions read(Properties JavaDoc properties) throws IllegalPropertyValueException {
21     JavaSourceConversionOptions conversionOptions = JavaSourceConversionOptions.getRawDefault();
22     adjustStyleTable(properties, conversionOptions);
23     adjustShowFileName(properties, conversionOptions);
24     adjustBorder(properties, conversionOptions);
25     adjustLineNumbers(properties, conversionOptions);
26     adjustShowJava2HtmlLink(properties, conversionOptions);
27     adjustTabSize(properties, conversionOptions);
28     adjustAlignment(properties, conversionOptions);
29     adjustStyleEntries(properties, conversionOptions);
30     return conversionOptions;
31   }
32
33   private void adjustAlignment(Properties JavaDoc properties, JavaSourceConversionOptions conversionOptions)
34     throws IllegalPropertyValueException {
35     String JavaDoc alignmentValue = properties.getProperty(IConversionOptionsConstants.HORIZONTAL_ALIGNMENT);
36     if (alignmentValue != null) {
37       HorizontalAlignment alignment = HorizontalAlignment.getByName(alignmentValue);
38       if (alignment == null) {
39         throw new IllegalPropertyValueException(
40           IConversionOptionsConstants.HORIZONTAL_ALIGNMENT,
41           alignmentValue,
42           ConversionOptionsUtilities.getAvailableHorizontalAlignmentNames());
43       }
44       conversionOptions.setHorizontalAlignment(alignment);
45     }
46   }
47
48   private void adjustTabSize(Properties JavaDoc properties, JavaSourceConversionOptions conversionOptions)
49     throws IllegalPropertyValueException {
50     String JavaDoc tabSizeValue = properties.getProperty(IConversionOptionsConstants.TAB_SIZE);
51     if (tabSizeValue != null) {
52       try {
53         int tabSize = Integer.parseInt(tabSizeValue);
54         if (tabSize < 0) {
55           throw new NumberFormatException JavaDoc();
56         }
57         conversionOptions.setTabSize(tabSize);
58       }
59       catch (NumberFormatException JavaDoc e) {
60         throw new IllegalPropertyValueException(IConversionOptionsConstants.TAB_SIZE, tabSizeValue);
61       }
62     }
63   }
64
65   private void adjustShowFileName(Properties JavaDoc properties, JavaSourceConversionOptions conversionOptions)
66     throws IllegalPropertyValueException {
67     String JavaDoc value = properties.getProperty(IConversionOptionsConstants.SHOW_FILE_NAME);
68     if (value != null) {
69       conversionOptions.setShowFileName(parseBooleanValue(IConversionOptionsConstants.SHOW_FILE_NAME, value));
70     }
71   }
72
73   private void adjustShowJava2HtmlLink(Properties JavaDoc properties, JavaSourceConversionOptions conversionOptions)
74     throws IllegalPropertyValueException {
75     String JavaDoc value = properties.getProperty(IConversionOptionsConstants.SHOW_JAVA2HTML_LINK);
76     if (value != null) {
77       conversionOptions.setShowJava2HtmlLink(
78         parseBooleanValue(IConversionOptionsConstants.SHOW_JAVA2HTML_LINK, value));
79     }
80   }
81
82   private void adjustLineNumbers(Properties JavaDoc properties, JavaSourceConversionOptions conversionOptions)
83     throws IllegalPropertyValueException {
84     String JavaDoc value = properties.getProperty(IConversionOptionsConstants.SHOW_LINE_NUMBERS);
85     if (value != null) {
86       conversionOptions.setShowLineNumbers(
87         parseBooleanValue(IConversionOptionsConstants.SHOW_LINE_NUMBERS, value));
88     }
89   }
90
91   private void adjustBorder(Properties JavaDoc properties, JavaSourceConversionOptions conversionOptions)
92     throws IllegalPropertyValueException {
93     String JavaDoc value = properties.getProperty(IConversionOptionsConstants.SHOW_TABLE_BORDER);
94     if (value != null) {
95       conversionOptions.setShowTableBorder(
96         parseBooleanValue(IConversionOptionsConstants.SHOW_TABLE_BORDER, value));
97     }
98   }
99
100   private void adjustStyleTable(Properties JavaDoc properties, JavaSourceConversionOptions conversionOptions)
101     throws IllegalPropertyValueException {
102     String JavaDoc defaultTableName = properties.getProperty(IConversionOptionsConstants.DEFAULT_STYLE_NAME);
103     if (defaultTableName != null) {
104       JavaSourceStyleTable table = JavaSourceStyleTable.getPredefinedTable(defaultTableName);
105       if (table == null) {
106         throw new IllegalPropertyValueException(
107           IConversionOptionsConstants.DEFAULT_STYLE_NAME,
108           defaultTableName,
109           ConversionOptionsUtilities.getPredefinedStyleTableNames());
110       }
111       conversionOptions.setStyleTable(table);
112     }
113   }
114
115   private boolean parseBooleanValue(String JavaDoc propertyName, String JavaDoc value) throws IllegalPropertyValueException {
116     if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("yes")) {
117       return true;
118     }
119     if (value.equalsIgnoreCase("false") || value.equalsIgnoreCase("no")) {
120       return false;
121     }
122     throw new IllegalPropertyValueException(propertyName, value, new String JavaDoc[] { "true", "false" });
123   }
124
125   private RGB parseColorValue(String JavaDoc propertyName, String JavaDoc colorValue) throws IllegalPropertyValueException {
126     StringTokenizer JavaDoc tokenizer = new StringTokenizer JavaDoc(colorValue, ","); //$NON-NLS-1$
127
if (tokenizer.countTokens() != 3) {
128       throw new IllegalPropertyValueException(propertyName, colorValue);
129     }
130     String JavaDoc redValue = tokenizer.nextToken();
131     String JavaDoc greenValue = tokenizer.nextToken();
132     String JavaDoc blueValue = tokenizer.nextToken();
133     int red = 0, green = 0, blue = 0;
134     try {
135       red = Integer.parseInt(redValue);
136       green = Integer.parseInt(greenValue);
137       blue = Integer.parseInt(blueValue);
138     }
139     catch (NumberFormatException JavaDoc e) {
140       throw new IllegalPropertyValueException(propertyName, colorValue);
141     }
142     if (red > 255 || red < 0 || green > 255 || green < 0 || blue > 255 || blue < 0) {
143       throw new IllegalPropertyValueException(propertyName, colorValue);
144     }
145     return new RGB(red, green, blue);
146   }
147
148   private void adjustStyleEntries(Properties JavaDoc properties, JavaSourceConversionOptions conversionOptions)
149     throws IllegalPropertyValueException {
150     JavaSourceType[] sourceTypes = JavaSourceType.getAll();
151     for (int i = 0; i < sourceTypes.length; i++) {
152       adjustStyleEntry(properties, conversionOptions, sourceTypes[i]);
153     }
154   }
155
156   private void adjustStyleEntry(
157     Properties JavaDoc properties,
158     JavaSourceConversionOptions conversionOptions,
159     JavaSourceType type)
160     throws IllegalPropertyValueException {
161     RGB color = getColor(properties, conversionOptions, type);
162     boolean bold = getBold(properties, conversionOptions, type);
163     boolean italic = getItalic(properties, conversionOptions, type);
164     conversionOptions.getStyleTable().put(type, new JavaSourceStyleEntry(color, bold, italic));
165   }
166
167   private boolean getItalic(
168     Properties JavaDoc properties,
169     JavaSourceConversionOptions conversionOptions,
170     JavaSourceType type)
171     throws IllegalPropertyValueException {
172
173     String JavaDoc italicPropertyName = type.getName() + IConversionOptionsConstants.POSTFIX_ITALIC;
174     String JavaDoc italicValue = properties.getProperty(italicPropertyName);
175     if (italicValue != null) {
176       return parseBooleanValue(italicPropertyName, italicValue);
177     }
178     return conversionOptions.getStyleTable().get(type).isItalic();
179   }
180
181   private boolean getBold(
182     Properties JavaDoc properties,
183     JavaSourceConversionOptions conversionOptions,
184     JavaSourceType type)
185     throws IllegalPropertyValueException {
186     String JavaDoc boldPropertyName = type.getName() + IConversionOptionsConstants.POSTFIX_BOLD;
187     String JavaDoc boldValue = properties.getProperty(boldPropertyName);
188     if (boldValue != null) {
189       return parseBooleanValue(boldPropertyName, boldValue);
190     }
191     return conversionOptions.getStyleTable().get(type).isBold();
192   }
193
194   private RGB getColor(
195     Properties JavaDoc properties,
196     JavaSourceConversionOptions conversionOptions,
197     JavaSourceType type)
198     throws IllegalPropertyValueException {
199     String JavaDoc colorPropertyName = type.getName() + IConversionOptionsConstants.POSTFIX_COLOR;
200     String JavaDoc colorValue = properties.getProperty(colorPropertyName);
201     if (colorValue != null) {
202       return parseColorValue(colorPropertyName, colorValue);
203     }
204     return conversionOptions.getStyleTable().get(type).getColor();
205   }
206 }
Popular Tags