package be.nikiroo.jvcard.tui;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
import java.text.Normalizer;
import java.text.Normalizer.Form;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.regex.Pattern;
import com.googlecode.lanterna.gui2.LinearLayout.Alignment;
return input;
}
+
+ /**
+ * Convert between time in milliseconds to {@link String} in a "static" way
+ * (to exchange data over the wire, for instance).
+ *
+ * @param time
+ * the time in milliseconds
+ *
+ * @return the time as a {@link String}
+ */
+ static public String fromTime(long time) {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ return sdf.format(new Date(time));
+ }
+
+ /**
+ * Convert between time as a {@link String} to milliseconds in a "static"
+ * way (to exchange data over the wire, for instance).
+ *
+ * @param time
+ * the time as a {@link String}
+ *
+ * @return the time in milliseconds
+ */
+ static public long toTime(String display) {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ try {
+ return sdf.parse(display).getTime();
+ } catch (ParseException e) {
+ return -1;
+ }
+ }
+
+ /**
+ * Return a hash of the given {@link String}.
+ *
+ * @param input
+ * the input data
+ *
+ * @return the hash
+ */
+ static public String getHash(String input) {
+ try {
+ MessageDigest md = MessageDigest.getInstance("MD5");
+ md.update(input.getBytes());
+ byte byteData[] = md.digest();
+
+ StringBuffer hexString = new StringBuffer();
+ for (int i = 0; i < byteData.length; i++) {
+ String hex = Integer.toHexString(0xff & byteData[i]);
+ if (hex.length() == 1)
+ hexString.append('0');
+ hexString.append(hex);
+ }
+
+ return hexString.toString();
+ } catch (NoSuchAlgorithmException e) {
+ // all JVM most probably have an MD5 implementation, but even if
+ // not, returning the input is "correct", if inefficient and
+ // unsecure
+ return input;
+ }
+ }
}