1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.jci.compilers;
19
20 import java.util.HashMap;
21 import java.util.Map;
22
23 import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
24
25
26
27
28
29
30 public final class EclipseJavaCompilerSettings extends JavaCompilerSettings {
31
32 final private Map<String, String> defaultEclipseSettings = new HashMap<String, String>();
33
34 public EclipseJavaCompilerSettings() {
35 defaultEclipseSettings.put(CompilerOptions.OPTION_LineNumberAttribute, CompilerOptions.GENERATE);
36 defaultEclipseSettings.put(CompilerOptions.OPTION_SourceFileAttribute, CompilerOptions.GENERATE);
37 defaultEclipseSettings.put(CompilerOptions.OPTION_ReportUnusedImport, CompilerOptions.IGNORE);
38 defaultEclipseSettings.put(CompilerOptions.OPTION_LocalVariableAttribute, CompilerOptions.GENERATE);
39 }
40
41 public EclipseJavaCompilerSettings( final JavaCompilerSettings pSettings ) {
42 super(pSettings);
43
44 if (pSettings instanceof EclipseJavaCompilerSettings) {
45 defaultEclipseSettings.putAll(((EclipseJavaCompilerSettings)pSettings).toNativeSettings());
46 }
47 }
48
49 public EclipseJavaCompilerSettings( final Map<String, String> pMap ) {
50 defaultEclipseSettings.putAll(pMap);
51 }
52
53 private static Map<String, String> nativeVersions = new HashMap<String, String>() {
54 private static final long serialVersionUID = 1L;
55 {
56 put("1.1", CompilerOptions.VERSION_1_1);
57 put("1.2", CompilerOptions.VERSION_1_2);
58 put("1.3", CompilerOptions.VERSION_1_3);
59 put("1.4", CompilerOptions.VERSION_1_4);
60 put("1.5", CompilerOptions.VERSION_1_5);
61 put("1.6", CompilerOptions.VERSION_1_6);
62 put("1.7", CompilerOptions.VERSION_1_7);
63 }};
64
65 private String toNativeVersion( final String pVersion ) {
66 final String nativeVersion = nativeVersions.get(pVersion);
67
68 if (nativeVersion == null) {
69 throw new RuntimeException("unknown version " + pVersion);
70 }
71
72 return nativeVersion;
73 }
74
75 Map<String, String> toNativeSettings() {
76 final Map<String, String> map = new HashMap<String, String>(defaultEclipseSettings);
77
78 map.put(CompilerOptions.OPTION_SuppressWarnings, isWarnings()?CompilerOptions.GENERATE:CompilerOptions.DO_NOT_GENERATE);
79 map.put(CompilerOptions.OPTION_ReportDeprecation, isDeprecations()?CompilerOptions.GENERATE:CompilerOptions.DO_NOT_GENERATE);
80 map.put(CompilerOptions.OPTION_TargetPlatform, toNativeVersion(getTargetVersion()));
81 map.put(CompilerOptions.OPTION_Source, toNativeVersion(getSourceVersion()));
82 map.put(CompilerOptions.OPTION_Encoding, getSourceEncoding());
83
84 return map;
85 }
86
87 @Override
88 public String toString() {
89 return toNativeSettings().toString();
90 }
91 }