From dd4dc31b2861f02e36c6fb1eb9b3d4b4d32aa8f3 Mon Sep 17 00:00:00 2001 From: Andreas Buchen Date: Fri, 25 Mar 2016 10:18:10 +0100 Subject: [PATCH] Use localized medium date format instead of ISO date format Issue: #441 --- .../ui/util/viewers/DateEditingSupport.java | 27 +++++++------------ .../datatransfer/csv/CSVExporter.java | 2 +- .../name/abuchen/portfolio/money/Values.java | 6 ++++- .../portfolio/snapshot/PerformanceIndex.java | 8 +++--- .../portfolio/snapshot/ReportingPeriod.java | 6 ++--- 5 files changed, 21 insertions(+), 28 deletions(-) diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/viewers/DateEditingSupport.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/viewers/DateEditingSupport.java index 7864d3a9a5..6322367029 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/viewers/DateEditingSupport.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/viewers/DateEditingSupport.java @@ -1,31 +1,22 @@ package name.abuchen.portfolio.ui.util.viewers; import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; - -import name.abuchen.portfolio.ui.Messages; +import java.time.format.FormatStyle; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.TextCellEditor; -import org.eclipse.swt.events.VerifyEvent; -import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; import com.ibm.icu.text.MessageFormat; +import name.abuchen.portfolio.ui.Messages; + public class DateEditingSupport extends PropertyEditingSupport { - public static class DateCharacterVerifyListener implements VerifyListener - { - private String allowedChars = "-0123456789"; //$NON-NLS-1$ - - public void verifyText(VerifyEvent e) - { - for (int ii = 0; e.doit && ii < e.text.length(); ii++) - e.doit = allowedChars.indexOf(e.text.charAt(0)) >= 0; - } - } + private static final DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM); public DateEditingSupport(Class subjectType, String attributeName) { @@ -39,15 +30,15 @@ public DateEditingSupport(Class subjectType, String attributeName) public CellEditor createEditor(Composite composite) { TextCellEditor textEditor = new TextCellEditor(composite); - ((Text) textEditor.getControl()).setTextLimit(10); - ((Text) textEditor.getControl()).addVerifyListener(new DateCharacterVerifyListener()); + ((Text) textEditor.getControl()).setTextLimit(20); return textEditor; } @Override public final Object getValue(Object element) throws Exception { - return ((LocalDate) descriptor().getReadMethod().invoke(adapt(element))).toString(); + LocalDate date = (LocalDate) descriptor().getReadMethod().invoke(adapt(element)); + return formatter.format(date); } @Override @@ -58,7 +49,7 @@ public final void setValue(Object element, Object value) throws Exception try { - newValue = LocalDate.parse(String.valueOf(value)); + newValue = LocalDate.parse(String.valueOf(value), formatter); } catch (DateTimeParseException e) { diff --git a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/csv/CSVExporter.java b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/csv/CSVExporter.java index c58cb8febf..0321d31015 100644 --- a/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/csv/CSVExporter.java +++ b/name.abuchen.portfolio/src/name/abuchen/portfolio/datatransfer/csv/CSVExporter.java @@ -266,7 +266,7 @@ public void exportMergedSecurityPrices(File file, List securities) thr if (hasValues) { - printer.print(Values.Date.format(pointer)); + printer.print(pointer.toString()); for (ii = 0; ii < indices.length; ii++) { diff --git a/name.abuchen.portfolio/src/name/abuchen/portfolio/money/Values.java b/name.abuchen.portfolio/src/name/abuchen/portfolio/money/Values.java index e27d9b9e66..485303364b 100644 --- a/name.abuchen.portfolio/src/name/abuchen/portfolio/money/Values.java +++ b/name.abuchen.portfolio/src/name/abuchen/portfolio/money/Values.java @@ -3,6 +3,8 @@ import java.math.BigDecimal; import java.text.DecimalFormat; import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; public abstract class Values { @@ -144,10 +146,12 @@ public String format(Integer index) public static final Values Date = new Values("yyyy-MM-dd", 1D, 1) //$NON-NLS-1$ { + DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM); + @Override public String format(LocalDate date) { - return String.format("%tF", date); //$NON-NLS-1$ + return formatter.format(date); } }; diff --git a/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/PerformanceIndex.java b/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/PerformanceIndex.java index d42ca1464d..ab2937ea15 100644 --- a/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/PerformanceIndex.java +++ b/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/PerformanceIndex.java @@ -11,6 +11,9 @@ import java.util.Optional; import java.util.function.Predicate; +import org.apache.commons.csv.CSVPrinter; +import org.apache.commons.csv.CSVStrategy; + import name.abuchen.portfolio.Messages; import name.abuchen.portfolio.math.Risk.Drawdown; import name.abuchen.portfolio.math.Risk.Volatility; @@ -25,9 +28,6 @@ import name.abuchen.portfolio.util.Interval; import name.abuchen.portfolio.util.TradeCalendar; -import org.apache.commons.csv.CSVPrinter; -import org.apache.commons.csv.CSVStrategy; - public class PerformanceIndex { private final Client client; @@ -281,7 +281,7 @@ private void exportTo(File file, Predicate filter) throws IOException if (!filter.test(ii)) continue; - printer.print(Values.Date.format(dates[ii])); + printer.print(dates[ii].toString()); printer.print(Values.Amount.format(totals[ii])); printer.print(Values.Amount.format(transferals[ii])); printer.print(Values.Percent.format(delta[ii])); diff --git a/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/ReportingPeriod.java b/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/ReportingPeriod.java index f148c20a31..ac1903a18e 100644 --- a/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/ReportingPeriod.java +++ b/name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/ReportingPeriod.java @@ -9,7 +9,6 @@ import name.abuchen.portfolio.Messages; import name.abuchen.portfolio.model.Transaction; -import name.abuchen.portfolio.money.Values; import name.abuchen.portfolio.util.Interval; public abstract class ReportingPeriod @@ -213,8 +212,7 @@ public FromXtoY(LocalDate startDate, LocalDate endDate) @Override public void writeTo(StringBuilder buffer) { - buffer.append(CODE).append(Values.Date.format(getStartDate())).append('_') - .append(Values.Date.format(getEndDate())); + buffer.append(CODE).append(getStartDate().toString()).append('_').append(getEndDate().toString()); } @Override @@ -242,7 +240,7 @@ public SinceX(LocalDate startDate) @Override public void writeTo(StringBuilder buffer) { - buffer.append(CODE).append(Values.Date.format(getStartDate())); + buffer.append(CODE).append(getStartDate().toString()); } @Override