]> source.dussan.org Git - jackcess.git/commitdiff
currency format uses parens; add bool predefined formats
authorJames Ahlborn <jtahlborn@yahoo.com>
Thu, 15 Nov 2018 05:22:13 +0000 (05:22 +0000)
committerJames Ahlborn <jtahlborn@yahoo.com>
Thu, 15 Nov 2018 05:22:13 +0000 (05:22 +0000)
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@1225 f203690c-595d-4dc9-a70b-905162fa7fd2

src/main/java/com/healthmarketscience/jackcess/expr/NumericConfig.java
src/main/java/com/healthmarketscience/jackcess/impl/expr/DefaultFunctions.java
src/main/java/com/healthmarketscience/jackcess/impl/expr/FormatUtil.java
src/test/java/com/healthmarketscience/jackcess/impl/expr/DefaultFunctionsTest.java

index f8fd51bdfa3940f608607e3f9ed141366358e4cd..cf9bacb6f70294ea638c9ec6746a7877dedd2065 100644 (file)
@@ -31,19 +31,22 @@ import java.util.Locale;
 public class NumericConfig
 {
   public static final NumericConfig US_NUMERIC_CONFIG = new NumericConfig(
-      2, true, false, 3, Locale.US);
+      2, true, false, true, 3, Locale.US);
 
   private final int _numDecDigits;
   private final boolean _incLeadingDigit;
   private final boolean _useNegParens;
+  private final boolean _useNegCurrencyParens;
   private final int _numGroupDigits;
   private final DecimalFormatSymbols _symbols;
 
   public NumericConfig(int numDecDigits, boolean incLeadingDigit,
-                       boolean useNegParens, int numGroupDigits, Locale locale) {
+                       boolean useNegParens, boolean useNegCurrencyParens,
+                       int numGroupDigits, Locale locale) {
     _numDecDigits = numDecDigits;
     _incLeadingDigit = incLeadingDigit;
     _useNegParens = useNegParens;
+    _useNegCurrencyParens = useNegCurrencyParens;
     _numGroupDigits = numGroupDigits;
     _symbols = DecimalFormatSymbols.getInstance(locale);
   }
@@ -60,6 +63,10 @@ public class NumericConfig
     return _useNegParens;
   }
 
+  public boolean useParensForCurrencyNegatives() {
+    return _useNegCurrencyParens;
+  }
+
   public int getNumGroupingDigits() {
     return _numGroupDigits;
   }
index dcb2348707b1f0af64140eead160c9479856f9ec..d66330978dfc4cbf2054a6aa68fcc8a58d3dd312 100644 (file)
@@ -537,8 +537,10 @@ public class DefaultFunctions
         ctx, params, 1, cfg.getNumDecimalDigits(), -1);
     boolean incLeadDigit = getOptionalTriStateBoolean(
         ctx, params, 2, cfg.includeLeadingDigit());
+    boolean defNegParens = (isCurrency ? cfg.useParensForCurrencyNegatives() :
+                            cfg.useParensForNegatives());
     boolean negParens = getOptionalTriStateBoolean(
-        ctx, params, 3, cfg.useParensForNegatives());
+        ctx, params, 3, defNegParens);
     int numGroupDigits = cfg.getNumGroupingDigits();
     boolean groupDigits = getOptionalTriStateBoolean(
         ctx, params, 4, (numGroupDigits > 0));
@@ -553,7 +555,7 @@ public class DefaultFunctions
       fmt.append("#,");
       DefaultTextFunctions.nchars(fmt, numGroupDigits - 1, '#');
     }
-    
+
     fmt.append(incLeadDigit ? "0" : "#");
     if(numDecDigits > 0) {
       fmt.append(".");
index 730961d9874e67926111583e7a8eb778c57a6d2f..1d9e21ef0acea83ab92edf4bd4da9ca99cabdf26 100644 (file)
@@ -28,7 +28,7 @@ import com.healthmarketscience.jackcess.expr.Value;
  *
  * @author James Ahlborn
  */
-public class FormatUtil 
+public class FormatUtil
 {
   private static final Map<String,Fmt> PREDEF_FMTS = new HashMap<String,Fmt>();
 
@@ -48,8 +48,11 @@ public class FormatUtil
     PREDEF_FMTS.put("Short Time",
                     new PredefDateFmt(TemporalConfig.Type.SHORT_TIME));
 
+    PREDEF_FMTS.put("True/False", new PredefBoolFmt("True", "False"));
+    PREDEF_FMTS.put("Yes/No", new PredefBoolFmt("Yes", "No"));
+    PREDEF_FMTS.put("On/Off", new PredefBoolFmt("On", "Off"));
   }
-  
+
   private FormatUtil() {}
 
 
@@ -75,7 +78,7 @@ public class FormatUtil
     private PredefDateFmt(TemporalConfig.Type type) {
       _type = type;
     }
-    
+
     @Override
     public Value format(EvalContext ctx, Value expr, String fmtStr,
                          int firstDay, int firstWeekType) {
@@ -94,7 +97,7 @@ public class FormatUtil
       _trueVal = ValueSupport.toValue(trueStr);
       _falseVal = ValueSupport.toValue(falseStr);
     }
-    
+
     @Override
     public Value format(EvalContext ctx, Value expr, String fmtStr,
                         int firstDay, int firstWeekType) {
@@ -103,5 +106,5 @@ public class FormatUtil
     }
   }
 
-  
+
 }
index fdab10493068231639e7a3017729ff2ec4c9085d..8c015d8d6039c2ec3d5880abfb1c5bf8df78bc3e 100644 (file)
@@ -250,9 +250,9 @@ public class DefaultFunctionsTest extends TestCase
     assertEval("-.123%", "=FormatPercent(-0.0012345,3,False)");
 
     assertEval("$12,345.00", "=FormatCurrency(12345)");
-    assertEval("($12.34)", "=FormatCurrency(-12.345,-1,True,True)");
+    assertEval("-$12.34", "=FormatCurrency(-12.345,-1,True,False)");
     assertEval("$12", "=FormatCurrency(12.345,0,True,True)");
-    assertEval("-$.123", "=FormatCurrency(-0.12345,3,False)");
+    assertEval("($.123)", "=FormatCurrency(-0.12345,3,False)");
 
     assertEval("1/1/1973 1:37:25 PM", "=FormatDateTime(#1/1/1973 1:37:25 PM#)");
     assertEval("1:37:25 PM", "=FormatDateTime(#1:37:25 PM#,0)");