diff --git a/LICENSE b/LICENSE
index 0971b9c..0423396 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2014, Prof. Dr. Dr. Thomas F. Sturm
+Copyright (c) 2014-2018, Prof. Dr. Dr. Thomas F. Sturm
All rights reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/build.number b/build.number
index b7d38b2..ee34fd6 100644
--- a/build.number
+++ b/build.number
@@ -1,3 +1,3 @@
#Build Number for ANT. Do not edit!
-#Mon Jul 14 09:38:37 CEST 2014
-build.number=59
+#Thu Jan 11 17:02:28 CET 2018
+build.number=75
diff --git a/build.xml b/build.xml
index 8d98191..af8fe15 100644
--- a/build.xml
+++ b/build.xml
@@ -4,8 +4,8 @@
CSV-Sorter ANT build
-
-
+
+
@@ -88,8 +88,8 @@
includes="${package}/**"
deprecation="on"
includeAntRuntime="false"
- source="1.6"
- target="1.6"
+ source="1.7"
+ target="1.7"
>
diff --git a/doc/csvsorter.tex b/doc/csvsorter.tex
index a700cb9..3109ef0 100644
--- a/doc/csvsorter.tex
+++ b/doc/csvsorter.tex
@@ -1,8 +1,8 @@
% \LaTeX-Main\
-%% The csvsorter program - version 0.94 beta (2014/07/14)
+%% The csvsorter program - version 0.95 beta (2018/01/11)
%% csvsorter.tex: Manual
%%
-%% Copyright (c) 2014, Prof. Dr. Dr. Thomas F. Sturm
+%% Copyright (c) 2014-2018, Prof. Dr. Dr. Thomas F. Sturm
%% All rights reserved.
%%
%% Redistribution and use in source and binary forms, with or without
@@ -37,7 +37,7 @@
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[english]{babel}
-\usepackage{lmodern,parskip,array,ifthen,calc}
+\usepackage{lmodern,parskip,array}
\usepackage{amsmath,amssymb}
\usepackage[svgnames,table,hyperref]{xcolor}
\usepackage{tikz}
@@ -71,9 +71,9 @@
\usepackage[many,listings,minted]{tcolorbox}
\usetikzlibrary{arrows.meta}
-\def\version{0.94 beta}%
-\def\datum{2014/07/14}%
-\def\docdatum{2014/07/19}
+\def\version{0.95 beta}%
+\def\datum{2018/01/11}%
+\def\docdatum{2018/01/11}
\hypersetup{
pdftitle={Manual for the csvsorter program},
@@ -162,7 +162,7 @@
title={\thetcbcounter: #2},label={#3},center title,colframe=blue!25!red!50!black,
colbacktitle=blue!25!red!75!black,
fonttitle=\bfseries,toptitle=1mm,bottomtitle=1mm,
- colback=red!5!white,drop lifted shadow,enlarge left by=(\linewidth-\tcb@width)/2,
+ colback=red!5!white,drop lifted shadow,center,
before upper=\arrayrulecolor{blue!25!red!50!black},
float=tb,#1}
\makeatother
@@ -187,10 +187,8 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
-\begin{center}
-\begin{tcolorbox}[enhanced,hbox,tikznode,left=8mm,right=8mm,boxrule=0.4pt,
+\begin{tcolorbox}[enhanced,center,hbox,tikznode,left=8mm,right=8mm,boxrule=0.4pt,
colback=white,colframe=black!50!yellow,
- %drop fuzzy midday shadow=black!50!yellow,
drop lifted shadow=black!50!yellow,
before=\par\vspace*{5mm},after=\par\bigskip]
{\bfseries\LARGE The \csvsorter\ program}\\[3mm]
@@ -212,6 +210,7 @@
{\footnotesize Documentation \docdatum}\\[3mm]
\url{http://T-F-S.github.io/csvsorter/}
\end{tcolorbox}
+\begin{center}
{\large Thomas F.~Sturm%
\footnote{Prof.~Dr.~Dr.~Thomas F.~Sturm, Institut f\"{u}r Mathematik und Informatik,
Universit\"{a}t der Bundeswehr M\"{u}nchen, D-85577 Neubiberg, Germany;
@@ -247,7 +246,7 @@ \section{Introduction}
The \csvsorter\ program was developed as external sorting program
for the \texttt{csvsimple} \LaTeX\ package,
-see \url{www.ctan.org/tex-archive/macros/latex/contrib/csvsimple}.
+see \url{http://www.ctan.org/tex-archive/macros/latex/contrib/csvsimple}.
But it can be used for any CSV sorting task.
\clearpage
@@ -263,7 +262,7 @@ \section{License}
\bigskip
\begin{tcolorbox}[parbox=false,colframe=red!50!black,colback=yellow!10!white]
-Copyright \copyright~2014, Prof.~Dr.~Dr.~Thomas~F.~Sturm\\
+Copyright \copyright~2014-2018, Prof.~Dr.~Dr.~Thomas~F.~Sturm\\
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
@@ -634,7 +633,7 @@ \section{Configuration}\label{sec:config}
The document element
\element{csv} is mandatory.
-\subsection{\element{noheader}}
+\subsection{\element{noHeader}}
If this element is present, the CSV file(s) do not have a header line.
Note that in this case the columns can be addressed by number only.
If this element is not present, the first line of the CSV file is
@@ -940,8 +939,15 @@ \subsection{Hierarchical brackets}
\section{Version History}
%\versionbox[before=\par]{Version \version\ (\datum)}
+\versionbox[before=\par]{Version 0.95 beta (2018/01/11)}
+\begin{changelist}
+\item[changed] Windows launcher |csvsorter.exe| can be used for Java 9 now.
+\item[changed] Java 7 or newer is required now.
+\item[fixed] Deprecated constructors replaced.
+\item[fixed] Documentation corrected for \element{noHeader}.
+\end{changelist}
-\versionbox[before=\par]{Version 0.94 beta (2014/07/14)}
+\versionbox{Version 0.94 beta (2014/07/14)}
\begin{changelist}
\item[new] Token file for interaction with |csvsimple| with new command-line option 't'.
\item[new] New command-line option 'q' to set quiet state.
diff --git a/launcher/launch4j.xml b/launcher/launch4j.xml
index 5982209..eca7b22 100644
--- a/launcher/launch4j.xml
+++ b/launcher/launch4j.xml
@@ -16,7 +16,7 @@
false
- 1.6.0
+ 1.7.0
preferJre
64/32
diff --git a/src/tfs/csvsorter/CSVSorter.java b/src/tfs/csvsorter/CSVSorter.java
index 10f8d6f..c388c7c 100644
--- a/src/tfs/csvsorter/CSVSorter.java
+++ b/src/tfs/csvsorter/CSVSorter.java
@@ -31,9 +31,9 @@ public class CSVSorter
static
{
- VERSION = "0.94 beta";
- DATE = "2014/07/14";
- BUILD = 58;
+ VERSION = "0.95 beta";
+ DATE = "2018/01/11";
+ BUILD = 74;
PROGNAME = "CSV-Sorter";
}
@@ -44,7 +44,7 @@ public static String getFullVersion()
public static String getCopyright()
{
- return "Copyright (c) 2014, Prof. Dr. Dr. Thomas F. Sturm";
+ return "Copyright (c) 2014-2018, Prof. Dr. Dr. Thomas F. Sturm";
}
private enum OPTCODE { c, l, i, o, x, t, q };
@@ -102,6 +102,7 @@ private void printLogHeader(PrintWriter log)
{
log.println(getFullVersion());
log.println(getCopyright());
+ log.println("Java Version: "+System.getProperty("java.version"));
log.println("Start time: "+startDate);
}
@@ -445,11 +446,6 @@ public static void main(String s[])
{
startTime = System.nanoTime();
Date date = new Date();
- /*
- System.out.println("This is "+getFullVersion());
- System.out.println(getCopyright());
- System.out.println("");
- */
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
startDate = sdf.format(date);
diff --git a/src/tfs/csvsorter/MultiColumnComparator.java b/src/tfs/csvsorter/MultiColumnComparator.java
index df5d2bf..16ff4e8 100644
--- a/src/tfs/csvsorter/MultiColumnComparator.java
+++ b/src/tfs/csvsorter/MultiColumnComparator.java
@@ -69,7 +69,7 @@ public void config(HashMap nameToColumn, int maxNumber) throws E
}
- int getIntegerValue(String[] parts) throws Exception
+ Integer getIntegerValue(String[] parts) throws Exception
{
int s = 0;
for (NumberName nn : getNumberNames())
@@ -80,7 +80,7 @@ int getIntegerValue(String[] parts) throws Exception
}
- long getLongValue(String[] parts) throws Exception
+ Long getLongValue(String[] parts) throws Exception
{
long s = 0;
for (NumberName nn : getNumberNames())
@@ -92,7 +92,7 @@ long getLongValue(String[] parts) throws Exception
- double getDoubleValue(String[] parts) throws Exception
+ Double getDoubleValue(String[] parts) throws Exception
{
double s = 0;
for (NumberName nn : getNumberNames())
@@ -116,7 +116,7 @@ public static MultiColumnComparator createIntegerComparator(NumberName[] numberN
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Integer(getIntegerValue(parts));
+ return getIntegerValue(parts);
}
};
}
@@ -129,7 +129,7 @@ public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Integer(getIntegerValue(parts));
+ return getIntegerValue(parts);
}
catch (Exception e)
{
@@ -147,20 +147,20 @@ public Comparable generateKey(String[] parts) throws Exception
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Integer(-getIntegerValue(parts));
+ return Integer.valueOf(-getIntegerValue(parts));
}
};
}
else
{
- final Integer defaultKey = new Integer(-Integer.parseInt(defaultString));
+ final Integer defaultKey = Integer.valueOf(-Integer.parseInt(defaultString));
return new MultiColumnComparator(numberNames,ascending,type,defaultString)
{
public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Integer(-getIntegerValue(parts));
+ return Integer.valueOf(-getIntegerValue(parts));
}
catch (Exception e)
{
@@ -186,7 +186,7 @@ public static MultiColumnComparator createLongComparator(NumberName[] numberName
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Long(getLongValue(parts));
+ return getLongValue(parts);
}
};
}
@@ -199,7 +199,7 @@ public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Long(getLongValue(parts));
+ return getLongValue(parts);
}
catch (Exception e)
{
@@ -217,20 +217,20 @@ public Comparable generateKey(String[] parts) throws Exception
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Long(-getLongValue(parts));
+ return Long.valueOf(-getLongValue(parts));
}
};
}
else
{
- final Long defaultKey = new Long(-Long.parseLong(defaultString));
+ final Long defaultKey = Long.valueOf(-Long.parseLong(defaultString));
return new MultiColumnComparator(numberNames,ascending,type,defaultString)
{
public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Long(-getLongValue(parts));
+ return Long.valueOf(-getLongValue(parts));
}
catch (Exception e)
{
@@ -256,7 +256,7 @@ public static MultiColumnComparator createDoubleComparator(NumberName[] numberNa
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Double(getDoubleValue(parts));
+ return getDoubleValue(parts);
}
};
}
@@ -269,7 +269,7 @@ public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Double(getDoubleValue(parts));
+ return getDoubleValue(parts);
}
catch (Exception e)
{
@@ -287,20 +287,20 @@ public Comparable generateKey(String[] parts) throws Exception
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Double(-getDoubleValue(parts));
+ return Double.valueOf(-getDoubleValue(parts));
}
};
}
else
{
- final Double defaultKey = new Double(-Double.parseDouble(defaultString));
+ final Double defaultKey = Double.valueOf(-Double.parseDouble(defaultString));
return new MultiColumnComparator(numberNames,ascending,type,defaultString)
{
public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Double(-getDoubleValue(parts));
+ return Double.valueOf(-getDoubleValue(parts));
}
catch (Exception e)
{
diff --git a/src/tfs/csvsorter/SingleColumnComparator.java b/src/tfs/csvsorter/SingleColumnComparator.java
index b0ed0ca..58d96fd 100644
--- a/src/tfs/csvsorter/SingleColumnComparator.java
+++ b/src/tfs/csvsorter/SingleColumnComparator.java
@@ -66,24 +66,25 @@ public void config(HashMap nameToColumn, int maxNumber) throws E
}
- int getIntegerValue(String[] parts) throws Exception
+ Integer getIntegerValue(String[] parts) throws Exception
{
- return Integer.parseInt(parts[numberName.getNumber()]);
+ return Integer.valueOf(parts[numberName.getNumber()]);
}
- long getLongValue(String[] parts) throws Exception
+
+ Long getLongValue(String[] parts) throws Exception
{
- return Long.parseLong(parts[numberName.getNumber()]);
+ return Long.valueOf(parts[numberName.getNumber()]);
}
- double getDoubleValue(String[] parts) throws Exception
+ Double getDoubleValue(String[] parts) throws Exception
{
- return Double.parseDouble(parts[numberName.getNumber()]);
+ return Double.valueOf(parts[numberName.getNumber()]);
}
- long getDateValue(String[] parts, Locale locale) throws Exception
+ Long getDateValue(String[] parts, Locale locale) throws Exception
{
return DateFormat.getDateInstance(DateFormat.DEFAULT,locale).parse(parts[getNumber()]).getTime();
}
@@ -101,7 +102,7 @@ public static SingleColumnComparator createIntegerComparator(NumberName numberNa
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Integer(getIntegerValue(parts));
+ return getIntegerValue(parts);
}
};
}
@@ -114,7 +115,7 @@ public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Integer(getIntegerValue(parts));
+ return getIntegerValue(parts);
}
catch (Exception e)
{
@@ -132,20 +133,20 @@ public Comparable generateKey(String[] parts) throws Exception
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Integer(-getIntegerValue(parts));
+ return Integer.valueOf(-getIntegerValue(parts));
}
};
}
else
{
- final Integer defaultKey = new Integer(-Integer.parseInt(defaultString));
+ final Integer defaultKey = Integer.valueOf(-Integer.parseInt(defaultString));
return new SingleColumnComparator(numberName,ascending,type,defaultString)
{
public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Integer(-getIntegerValue(parts));
+ return Integer.valueOf(-getIntegerValue(parts));
}
catch (Exception e)
{
@@ -171,7 +172,7 @@ public static SingleColumnComparator createLongComparator(NumberName numberName,
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Long(getLongValue(parts));
+ return getLongValue(parts);
}
};
}
@@ -184,7 +185,7 @@ public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Long(getLongValue(parts));
+ return getLongValue(parts);
}
catch (Exception e)
{
@@ -202,20 +203,20 @@ public Comparable generateKey(String[] parts) throws Exception
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Long(-getLongValue(parts));
+ return Long.valueOf(-getLongValue(parts));
}
};
}
else
{
- final Long defaultKey = new Long(-Long.parseLong(defaultString));
+ final Long defaultKey = Long.valueOf(-Long.parseLong(defaultString));
return new SingleColumnComparator(numberName,ascending,type,defaultString)
{
public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Long(-getLongValue(parts));
+ return Long.valueOf(-getLongValue(parts));
}
catch (Exception e)
{
@@ -241,7 +242,7 @@ public static SingleColumnComparator createDoubleComparator(NumberName numberNam
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Double(getDoubleValue(parts));
+ return getDoubleValue(parts);
}
};
}
@@ -254,7 +255,7 @@ public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Double(getDoubleValue(parts));
+ return getDoubleValue(parts);
}
catch (Exception e)
{
@@ -272,20 +273,20 @@ public Comparable generateKey(String[] parts) throws Exception
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Double(-getDoubleValue(parts));
+ return Double.valueOf(-getDoubleValue(parts));
}
};
}
else
{
- final Double defaultKey = new Double(-Double.parseDouble(defaultString));
+ final Double defaultKey = Double.valueOf(-Double.parseDouble(defaultString));
return new SingleColumnComparator(numberName,ascending,type,defaultString)
{
public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Double(-getDoubleValue(parts));
+ return Double.valueOf(-getDoubleValue(parts));
}
catch (Exception e)
{
@@ -311,20 +312,20 @@ public static SingleColumnComparator createDateComparator(NumberName numberName,
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Long(getDateValue(parts,locale));
+ return getDateValue(parts,locale);
}
};
}
else
{
- final Long defaultKey = new Long(DateFormat.getDateInstance(DateFormat.DEFAULT,locale).parse(defaultString).getTime());
+ final Long defaultKey = DateFormat.getDateInstance(DateFormat.DEFAULT,locale).parse(defaultString).getTime();
return new SingleColumnComparator(numberName,ascending,type,defaultString)
{
public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Long(getDateValue(parts,locale));
+ return getDateValue(parts,locale);
}
catch (Exception e)
{
@@ -342,20 +343,20 @@ public Comparable generateKey(String[] parts) throws Exception
{
public Comparable generateKey(String[] parts) throws Exception
{
- return new Long(-getDateValue(parts,locale));
+ return Long.valueOf(-getDateValue(parts,locale));
}
};
}
else
{
- final Long defaultKey = new Long(-DateFormat.getDateInstance(DateFormat.DEFAULT,locale).parse(defaultString).getTime());
+ final Long defaultKey = -DateFormat.getDateInstance(DateFormat.DEFAULT,locale).parse(defaultString).getTime();
return new SingleColumnComparator(numberName,ascending,type,defaultString)
{
public Comparable generateKey(String[] parts) throws Exception
{
try
{
- return new Long(-getDateValue(parts,locale));
+ return Long.valueOf(-getDateValue(parts,locale));
}
catch (Exception e)
{