001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package org.netbeans.modules.java.source.tasklist;
042:
043: import java.util.HashMap;
044: import java.util.Map;
045: import java.util.prefs.Preferences;
046: import org.netbeans.api.java.source.JavaSource;
047: import org.openide.util.NbPreferences;
048:
049: /**
050: *
051: * @author Jan Lahoda
052: */
053: public class CompilerSettings {
054:
055: private CompilerSettings() {
056: }
057:
058: public static final String ENABLE_LINT = "enable_lint";
059: public static final String ENABLE_LINT_DEPRECATION = "enable_lint_deprecation";
060: public static final String ENABLE_LINT_UNCHECKED = "enable_lint_unchecked";
061: public static final String ENABLE_LINT_FALLTHROUGH = "enable_lint_fallthrough";
062: public static final String ENABLE_LINT_SERIAL = "enable_lint_serial";
063: public static final String ENABLE_LINT_FINALLY = "enable_lint_finally";
064: public static final String ENABLE_LINT_CAST = "enable_lint_cast";
065: public static final String ENABLE_LINT_DIVZERO = "enable_lint_dvizero";
066: public static final String ENABLE_LINT_EMPTY = "enable_lint_empty";
067: public static final String ENABLE_LINT_OVERRIDES = "enable_lint_overrides";
068:
069: private static final Map<String, Boolean> DEFAULTS;
070:
071: static {
072: DEFAULTS = new HashMap<String, Boolean>();
073:
074: DEFAULTS.put(ENABLE_LINT, false);
075: DEFAULTS.put(ENABLE_LINT_DEPRECATION, false);
076: DEFAULTS.put(ENABLE_LINT_UNCHECKED, false);
077: DEFAULTS.put(ENABLE_LINT_FALLTHROUGH, false);
078: DEFAULTS.put(ENABLE_LINT_SERIAL, false);
079: DEFAULTS.put(ENABLE_LINT_FINALLY, false);
080: DEFAULTS.put(ENABLE_LINT_CAST, false);
081: DEFAULTS.put(ENABLE_LINT_DIVZERO, false);
082: DEFAULTS.put(ENABLE_LINT_EMPTY, false);
083: DEFAULTS.put(ENABLE_LINT_OVERRIDES, false);
084: }
085:
086: public static Preferences getNode() {
087: return NbPreferences.forModule(JavaSource.class).node(
088: "compiler_settings");
089: }
090:
091: public static String getCommandLine() {
092: Preferences p = getNode();
093:
094: StringBuilder sb = new StringBuilder();
095:
096: if (get(p, ENABLE_LINT_DEPRECATION))
097: sb.append("-Xlint:deprecation ");
098: if (get(p, ENABLE_LINT_UNCHECKED))
099: sb.append("-Xlint:unchecked ");
100: if (get(p, ENABLE_LINT_FALLTHROUGH))
101: sb.append("-Xlint:fallthrough ");
102: if (get(p, ENABLE_LINT_SERIAL))
103: sb.append("-Xlint:serial ");
104: if (get(p, ENABLE_LINT_FINALLY))
105: sb.append("-Xlint:finally ");
106: if (get(p, ENABLE_LINT_CAST))
107: sb.append("-Xlint:cast ");
108: if (get(p, ENABLE_LINT_DIVZERO))
109: sb.append("-Xlint:divzero ");
110: if (get(p, ENABLE_LINT_EMPTY))
111: sb.append("-Xlint:empty ");
112: if (get(p, ENABLE_LINT_OVERRIDES))
113: sb.append("-Xlint:overrides ");
114:
115: if (sb.length() > 0 && sb.charAt(sb.length() - 1) == ' ') {
116: sb.deleteCharAt(sb.length() - 1);
117: }
118:
119: return sb.toString();
120: }
121:
122: public static boolean get(Preferences p, String key) {
123: return p.getBoolean(key, DEFAULTS.get(key));
124: }
125:
126: }
|