From 044ca9fac706e1567c34d3c794b680fc1b849ab7 Mon Sep 17 00:00:00 2001
From: GIRARDOT Raphael <raphael.girardot@synchrotron-soleil.fr>
Date: Thu, 17 Nov 2022 11:55:55 +0100
Subject: [PATCH] - code readapted to changes in ProjectUtilities - Prefer
 using constants to new Strings - Prefer using named threads

---
 .../context/PrintContextDetailAction.java     |   2 +-
 .../PrintSnapshotComparisonAction.java        |   2 +-
 .../snapshot/PrintSnapshotDetailAction.java   |   2 +-
 .../data/snapshot/SnapshotAttribute.java      | 623 +++++++++---------
 .../data/snapshot/SnapshotAttributes.java     |   7 +-
 .../bensikin/options/sub/PrintOptions.java    |   2 +-
 6 files changed, 330 insertions(+), 308 deletions(-)

diff --git a/src/main/java/fr/soleil/bensikin/actions/context/PrintContextDetailAction.java b/src/main/java/fr/soleil/bensikin/actions/context/PrintContextDetailAction.java
index 2a5b2ca..e2a2d9d 100644
--- a/src/main/java/fr/soleil/bensikin/actions/context/PrintContextDetailAction.java
+++ b/src/main/java/fr/soleil/bensikin/actions/context/PrintContextDetailAction.java
@@ -47,7 +47,7 @@ import fr.soleil.bensikin.actions.BensikinAction;
 import fr.soleil.bensikin.containers.context.ContextDetailPrintPanel;
 import fr.soleil.bensikin.options.Options;
 import fr.soleil.bensikin.options.sub.PrintOptions;
-import fr.soleil.lib.project.awt.print.ComponentPrinter;
+import fr.soleil.lib.project.swing.print.ComponentPrinter;
 
 /**
  * An action that prints the current snapshot comparison's table to a printer.
diff --git a/src/main/java/fr/soleil/bensikin/actions/snapshot/PrintSnapshotComparisonAction.java b/src/main/java/fr/soleil/bensikin/actions/snapshot/PrintSnapshotComparisonAction.java
index e1765bf..79a785d 100644
--- a/src/main/java/fr/soleil/bensikin/actions/snapshot/PrintSnapshotComparisonAction.java
+++ b/src/main/java/fr/soleil/bensikin/actions/snapshot/PrintSnapshotComparisonAction.java
@@ -51,7 +51,7 @@ import fr.soleil.bensikin.components.snapshot.detail.SnapshotCompareTable;
 import fr.soleil.bensikin.models.SnapshotCompareTablePrintModel;
 import fr.soleil.bensikin.options.Options;
 import fr.soleil.bensikin.options.sub.PrintOptions;
-import fr.soleil.lib.project.awt.print.ComponentPrinter;
+import fr.soleil.lib.project.swing.print.ComponentPrinter;
 
 /**
  * An action that prints the current snapshot comparison's table to a printer.
diff --git a/src/main/java/fr/soleil/bensikin/actions/snapshot/PrintSnapshotDetailAction.java b/src/main/java/fr/soleil/bensikin/actions/snapshot/PrintSnapshotDetailAction.java
index f5a6020..9278121 100644
--- a/src/main/java/fr/soleil/bensikin/actions/snapshot/PrintSnapshotDetailAction.java
+++ b/src/main/java/fr/soleil/bensikin/actions/snapshot/PrintSnapshotDetailAction.java
@@ -44,7 +44,7 @@ import fr.soleil.bensikin.actions.BensikinAction;
 import fr.soleil.bensikin.containers.snapshot.SnapshotDetailPrintPanel;
 import fr.soleil.bensikin.options.Options;
 import fr.soleil.bensikin.options.sub.PrintOptions;
-import fr.soleil.lib.project.awt.print.ComponentPrinter;
+import fr.soleil.lib.project.swing.print.ComponentPrinter;
 
 /**
  * An action that prints the current snapshot comparison's table to a printer.
diff --git a/src/main/java/fr/soleil/bensikin/data/snapshot/SnapshotAttribute.java b/src/main/java/fr/soleil/bensikin/data/snapshot/SnapshotAttribute.java
index 36c6154..309a049 100644
--- a/src/main/java/fr/soleil/bensikin/data/snapshot/SnapshotAttribute.java
+++ b/src/main/java/fr/soleil/bensikin/data/snapshot/SnapshotAttribute.java
@@ -73,6 +73,7 @@ import fr.soleil.archiving.snap.api.tools.SnapAttributeExtract;
 import fr.soleil.bensikin.options.Options;
 import fr.soleil.bensikin.options.sub.SnapshotOptions;
 import fr.soleil.bensikin.xml.BensikinXMLLine;
+import fr.soleil.lib.project.ObjectUtils;
 
 /**
  * Represents an attribute attached to a snapshot. A SnapshotAttribute belongs
@@ -161,7 +162,7 @@ public class SnapshotAttribute {
         dataType = _dataType;
         dataFormat = _format;
         permit = _writable;
-        displayFormat = "";
+        displayFormat = ObjectUtils.EMPTY_STRING;
 
         SnapshotAttributeReadValue _readValue = null;
         SnapshotAttributeWriteValue _writeValue = null;
@@ -171,225 +172,241 @@ public class SnapshotAttribute {
         final Object nullElements = extract.getNullElements();
 
         switch (_format) {
-        case AttrDataFormat._SCALAR:
-            switch (_writable) {
-            case AttrWriteType._READ:
-                _readValue = new SnapshotAttributeReadValue(_format, _dataType, val, nullElements);
-                break;
+            case AttrDataFormat._SCALAR:
+                switch (_writable) {
+                    case AttrWriteType._READ:
+                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, val, nullElements);
+                        break;
+
+                    case AttrWriteType._READ_WRITE:
+                    case AttrWriteType._READ_WITH_WRITE:
+                        final Object nullRead;
+                        final Object nullWrite;
+                        if (nullElements == null) {
+                            nullRead = null;
+                            nullWrite = null;
+                        } else if (nullElements.getClass().isArray()) {
+                            nullRead = Array.get(nullElements, 0);
+                            nullWrite = Array.get(nullElements, 1);
+                        } else {
+                            // Mantis 25290
+                            nullRead = nullElements;
+                            nullWrite = null;
+                        }
+                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, getValue(val, 0), nullRead);
+                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, getValue(val, 1), nullWrite);
+                        break;
+
+                    case AttrWriteType._WRITE:
+                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, val, nullElements);
+                        break;
 
-            case AttrWriteType._READ_WRITE:
-            case AttrWriteType._READ_WITH_WRITE:
-                final Object nullRead;
-                final Object nullWrite;
-                if (nullElements == null) {
-                    nullRead = null;
-                    nullWrite = null;
-                } else if (nullElements.getClass().isArray()) {
-                    nullRead = Array.get(nullElements, 0);
-                    nullWrite = Array.get(nullElements, 1);
-                } else {
-                    // Mantis 25290
-                    nullRead = nullElements;
-                    nullWrite = null;
                 }
-                _readValue = new SnapshotAttributeReadValue(_format, _dataType, getValue(val, 0), nullRead);
-                _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, getValue(val, 1), nullWrite);
                 break;
-
-            case AttrWriteType._WRITE:
-                _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, val, nullElements);
-                break;
-
-            }
-            break;
-        case AttrDataFormat._SPECTRUM:
-            switch (_writable) {
-            case AttrWriteType._READ:
-                switch (_dataType) {
-                case TangoConst.Tango_DEV_STATE:
-                case TangoConst.Tango_DEV_STRING:
-                case TangoConst.Tango_DEV_BOOLEAN:
-                case TangoConst.Tango_DEV_CHAR:
-                case TangoConst.Tango_DEV_UCHAR:
-                case TangoConst.Tango_DEV_LONG:
-                case TangoConst.Tango_DEV_ULONG:
-                case TangoConst.Tango_DEV_SHORT:
-                case TangoConst.Tango_DEV_USHORT:
-                case TangoConst.Tango_DEV_FLOAT:
-                case TangoConst.Tango_DEV_DOUBLE:
-                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, val, nullElements);
-                    break;
-                default:
-                    // nothing to do
-                }
-                break;
-
-            case AttrWriteType._WRITE:
-                switch (_dataType) {
-                case TangoConst.Tango_DEV_STRING:
-                case TangoConst.Tango_DEV_BOOLEAN:
-                case TangoConst.Tango_DEV_CHAR:
-                case TangoConst.Tango_DEV_UCHAR:
-                case TangoConst.Tango_DEV_LONG:
-                case TangoConst.Tango_DEV_ULONG:
-                case TangoConst.Tango_DEV_SHORT:
-                case TangoConst.Tango_DEV_USHORT:
-                case TangoConst.Tango_DEV_FLOAT:
-                case TangoConst.Tango_DEV_DOUBLE:
-                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, val, nullElements);
-                    break;
-                default:
-                    // nothing to do
-                }
-                break;
-
-            case AttrWriteType._READ_WITH_WRITE:
-            case AttrWriteType._READ_WRITE:
-                final Object nullRead;
-                final Object nullWrite;
-                if (nullElements == null) {
-                    nullRead = null;
-                    nullWrite = null;
-                } else {
-                    nullRead = Array.get(nullElements, 0);
-                    nullWrite = Array.get(nullElements, 1);
-                }
-                switch (_dataType) {
-                case TangoConst.Tango_DEV_STRING:
-                    try {
-                        final String[] readst = (String[]) getValue(val, 0);
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, readst, nullRead);
-                    } catch (final ClassCastException cce) {
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, new String[0], null);
-                    }
-                    try {
-                        final String[] writest = (String[]) getValue(val, 1);
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writest, nullWrite);
-                    } catch (final ClassCastException cce) {
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new String[0], null);
-                    }
-                    break;
-                case TangoConst.Tango_DEV_BOOLEAN:
-                    try {
-                        final boolean[] readb = (boolean[]) getValue(val, 0);
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, readb, nullRead);
-                    } catch (final ClassCastException cce) {
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, new boolean[0], null);
-                    }
-                    try {
-                        final boolean[] writeb = (boolean[]) getValue(val, 1);
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writeb, nullWrite);
-                    } catch (final ClassCastException cce) {
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new boolean[0], null);
-                    }
-                    break;
-                case TangoConst.Tango_DEV_CHAR:
-                case TangoConst.Tango_DEV_UCHAR:
-                    try {
-                        final byte[] readc = (byte[]) getValue(val, 0);
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, readc, nullRead);
-                    } catch (final ClassCastException cce) {
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, new byte[0], null);
-                    }
-                    try {
-                        final byte[] writec = (byte[]) getValue(val, 1);
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writec, nullWrite);
-                    } catch (final ClassCastException cce) {
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new byte[0], null);
-                    }
-                    break;
-                case TangoConst.Tango_DEV_LONG:
-                case TangoConst.Tango_DEV_ULONG:
-                    try {
-                        final int[] readl = (int[]) getValue(val, 0);
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, readl, nullRead);
-                    } catch (final ClassCastException cce) {
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, new int[0], null);
-                    }
-                    try {
-                        final int[] writel = (int[]) getValue(val, 1);
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writel, nullWrite);
-                    } catch (final ClassCastException cce) {
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new int[0], null);
-                    }
-                    break;
-                case TangoConst.Tango_DEV_SHORT:
-                case TangoConst.Tango_DEV_USHORT:
-                    try {
-                        final short[] reads = (short[]) getValue(val, 0);
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, reads, nullRead);
-                    } catch (final ClassCastException cce) {
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, new short[0], null);
-                    }
-                    try {
-                        final short[] writes = (short[]) getValue(val, 1);
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writes, nullWrite);
-                    } catch (final ClassCastException cce) {
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new short[0], null);
-                    }
-                    break;
-                case TangoConst.Tango_DEV_FLOAT:
-                    try {
-                        final float[] readf = (float[]) getValue(val, 0);
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, readf, nullRead);
-                    } catch (final ClassCastException cce) {
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, new float[0], null);
-                    }
-                    try {
-                        final float[] writef = (float[]) getValue(val, 1);
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writef, nullWrite);
-                    } catch (final ClassCastException cce) {
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new float[0], null);
-                    }
-                    break;
-                case TangoConst.Tango_DEV_DOUBLE:
-                    try {
-                        final double[] readd = (double[]) getValue(val, 0);
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, readd, nullRead);
-                    } catch (final ClassCastException cce) {
-                        _readValue = new SnapshotAttributeReadValue(_format, _dataType, new double[0], null);
-                    }
-                    try {
-                        final double[] writed = (double[]) getValue(val, 1);
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writed, nullWrite);
-                    } catch (final ClassCastException cce) {
-                        _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new double[0], null);
-                    }
-                    break;
-                default: // nothing to do
+            case AttrDataFormat._SPECTRUM:
+                switch (_writable) {
+                    case AttrWriteType._READ:
+                        switch (_dataType) {
+                            case TangoConst.Tango_DEV_STATE:
+                            case TangoConst.Tango_DEV_STRING:
+                            case TangoConst.Tango_DEV_BOOLEAN:
+                            case TangoConst.Tango_DEV_CHAR:
+                            case TangoConst.Tango_DEV_UCHAR:
+                            case TangoConst.Tango_DEV_LONG:
+                            case TangoConst.Tango_DEV_ULONG:
+                            case TangoConst.Tango_DEV_SHORT:
+                            case TangoConst.Tango_DEV_USHORT:
+                            case TangoConst.Tango_DEV_FLOAT:
+                            case TangoConst.Tango_DEV_DOUBLE:
+                                _readValue = new SnapshotAttributeReadValue(_format, _dataType, val, nullElements);
+                                break;
+                            default:
+                                // nothing to do
+                        }
+                        break;
+
+                    case AttrWriteType._WRITE:
+                        switch (_dataType) {
+                            case TangoConst.Tango_DEV_STRING:
+                            case TangoConst.Tango_DEV_BOOLEAN:
+                            case TangoConst.Tango_DEV_CHAR:
+                            case TangoConst.Tango_DEV_UCHAR:
+                            case TangoConst.Tango_DEV_LONG:
+                            case TangoConst.Tango_DEV_ULONG:
+                            case TangoConst.Tango_DEV_SHORT:
+                            case TangoConst.Tango_DEV_USHORT:
+                            case TangoConst.Tango_DEV_FLOAT:
+                            case TangoConst.Tango_DEV_DOUBLE:
+                                _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, val, nullElements);
+                                break;
+                            default:
+                                // nothing to do
+                        }
+                        break;
+
+                    case AttrWriteType._READ_WITH_WRITE:
+                    case AttrWriteType._READ_WRITE:
+                        final Object nullRead;
+                        final Object nullWrite;
+                        if (nullElements == null) {
+                            nullRead = null;
+                            nullWrite = null;
+                        } else {
+                            nullRead = Array.get(nullElements, 0);
+                            nullWrite = Array.get(nullElements, 1);
+                        }
+                        switch (_dataType) {
+                            case TangoConst.Tango_DEV_STRING:
+                                try {
+                                    final String[] readst = (String[]) getValue(val, 0);
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, readst, nullRead);
+                                } catch (final ClassCastException cce) {
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, new String[0],
+                                            null);
+                                }
+                                try {
+                                    final String[] writest = (String[]) getValue(val, 1);
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writest,
+                                            nullWrite);
+                                } catch (final ClassCastException cce) {
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new String[0],
+                                            null);
+                                }
+                                break;
+                            case TangoConst.Tango_DEV_BOOLEAN:
+                                try {
+                                    final boolean[] readb = (boolean[]) getValue(val, 0);
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, readb, nullRead);
+                                } catch (final ClassCastException cce) {
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, new boolean[0],
+                                            null);
+                                }
+                                try {
+                                    final boolean[] writeb = (boolean[]) getValue(val, 1);
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writeb,
+                                            nullWrite);
+                                } catch (final ClassCastException cce) {
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new boolean[0],
+                                            null);
+                                }
+                                break;
+                            case TangoConst.Tango_DEV_CHAR:
+                            case TangoConst.Tango_DEV_UCHAR:
+                                try {
+                                    final byte[] readc = (byte[]) getValue(val, 0);
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, readc, nullRead);
+                                } catch (final ClassCastException cce) {
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, new byte[0], null);
+                                }
+                                try {
+                                    final byte[] writec = (byte[]) getValue(val, 1);
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writec,
+                                            nullWrite);
+                                } catch (final ClassCastException cce) {
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new byte[0],
+                                            null);
+                                }
+                                break;
+                            case TangoConst.Tango_DEV_LONG:
+                            case TangoConst.Tango_DEV_ULONG:
+                                try {
+                                    final int[] readl = (int[]) getValue(val, 0);
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, readl, nullRead);
+                                } catch (final ClassCastException cce) {
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, new int[0], null);
+                                }
+                                try {
+                                    final int[] writel = (int[]) getValue(val, 1);
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writel,
+                                            nullWrite);
+                                } catch (final ClassCastException cce) {
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new int[0], null);
+                                }
+                                break;
+                            case TangoConst.Tango_DEV_SHORT:
+                            case TangoConst.Tango_DEV_USHORT:
+                                try {
+                                    final short[] reads = (short[]) getValue(val, 0);
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, reads, nullRead);
+                                } catch (final ClassCastException cce) {
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, new short[0], null);
+                                }
+                                try {
+                                    final short[] writes = (short[]) getValue(val, 1);
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writes,
+                                            nullWrite);
+                                } catch (final ClassCastException cce) {
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new short[0],
+                                            null);
+                                }
+                                break;
+                            case TangoConst.Tango_DEV_FLOAT:
+                                try {
+                                    final float[] readf = (float[]) getValue(val, 0);
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, readf, nullRead);
+                                } catch (final ClassCastException cce) {
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, new float[0], null);
+                                }
+                                try {
+                                    final float[] writef = (float[]) getValue(val, 1);
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writef,
+                                            nullWrite);
+                                } catch (final ClassCastException cce) {
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new float[0],
+                                            null);
+                                }
+                                break;
+                            case TangoConst.Tango_DEV_DOUBLE:
+                                try {
+                                    final double[] readd = (double[]) getValue(val, 0);
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, readd, nullRead);
+                                } catch (final ClassCastException cce) {
+                                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, new double[0],
+                                            null);
+                                }
+                                try {
+                                    final double[] writed = (double[]) getValue(val, 1);
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, writed,
+                                            nullWrite);
+                                } catch (final ClassCastException cce) {
+                                    _writeValue = new SnapshotAttributeWriteValue(_format, _dataType, new double[0],
+                                            null);
+                                }
+                                break;
+                            default: // nothing to do
+                        }
+                        break;
+
+                    default: // nothing to do
                 }
                 break;
 
-            default: // nothing to do
-            }
-            break;
-
-        case AttrDataFormat._IMAGE:// to do
-            switch (_writable) {
-            case AttrWriteType._READ:
-                switch (_dataType) {
-                case TangoConst.Tango_DEV_CHAR:
-                case TangoConst.Tango_DEV_UCHAR:
-                case TangoConst.Tango_DEV_LONG:
-                case TangoConst.Tango_DEV_ULONG:
-                case TangoConst.Tango_DEV_SHORT:
-                case TangoConst.Tango_DEV_USHORT:
-                case TangoConst.Tango_DEV_FLOAT:
-                case TangoConst.Tango_DEV_DOUBLE:
-                    _readValue = new SnapshotAttributeReadValue(_format, _dataType, val, nullElements);
-                    break;
-                case TangoConst.Tango_DEV_STATE:
-                case TangoConst.Tango_DEV_STRING:
-                case TangoConst.Tango_DEV_BOOLEAN:
-                default:
-                    // nothing to do
+            case AttrDataFormat._IMAGE:// to do
+                switch (_writable) {
+                    case AttrWriteType._READ:
+                        switch (_dataType) {
+                            case TangoConst.Tango_DEV_CHAR:
+                            case TangoConst.Tango_DEV_UCHAR:
+                            case TangoConst.Tango_DEV_LONG:
+                            case TangoConst.Tango_DEV_ULONG:
+                            case TangoConst.Tango_DEV_SHORT:
+                            case TangoConst.Tango_DEV_USHORT:
+                            case TangoConst.Tango_DEV_FLOAT:
+                            case TangoConst.Tango_DEV_DOUBLE:
+                                _readValue = new SnapshotAttributeReadValue(_format, _dataType, val, nullElements);
+                                break;
+                            case TangoConst.Tango_DEV_STATE:
+                            case TangoConst.Tango_DEV_STRING:
+                            case TangoConst.Tango_DEV_BOOLEAN:
+                            default:
+                                // nothing to do
+                        }
+                        break;
+                    default: // nothing to do
                 }
                 break;
-            default: // nothing to do
-            }
-            break;
 
-        default:
+            default:
         }
 
         if (_readValue != null && _writeValue != null) {
@@ -406,7 +423,8 @@ public class SnapshotAttribute {
         if (_readValue != null) {
             readValue = _readValue;
         } else {
-            readValue = new SnapshotAttributeReadValue(SnapshotAttributeValue.NOT_APPLICABLE_DATA_FORMAT, 0, null, null);
+            readValue = new SnapshotAttributeReadValue(SnapshotAttributeValue.NOT_APPLICABLE_DATA_FORMAT, 0, null,
+                    null);
         }
 
         if (_writeValue != null) {
@@ -442,16 +460,16 @@ public class SnapshotAttribute {
     public SnapshotAttribute(final String name, final SnapshotAttributes attrs) {
         setAttributeCompleteName(name);
         snapshotAttributes = attrs;
-        displayFormat = "";
+        displayFormat = ObjectUtils.EMPTY_STRING;
         updateDisplayFormat();
     }
 
     /**
-     * Sets the displa format, reading it from Tango. Uses a Thread to avoid
+     * Sets the display format, reading it from Tango. Uses a Thread to avoid
      * freezing
      */
     public void updateDisplayFormat() {
-        new Thread() {
+        new Thread("SnapshotAttribute.updateDisplayFormat()") {
             @Override
             public void run() {
                 try {
@@ -459,7 +477,7 @@ public class SnapshotAttribute {
                     proxy = new AttributeProxy(attributeCompleteName);
                     displayFormat = proxy.get_info().format;
                 } catch (final Exception e) {
-                    displayFormat = "";
+                    displayFormat = ObjectUtils.EMPTY_STRING;
                 } finally {
                     if (readValue != null) {
                         readValue.setDisplayFormat(displayFormat);
@@ -481,8 +499,8 @@ public class SnapshotAttribute {
      * 
      * @return The result conversion
      */
-    SnapAttributeExtract toSnapAttributeExtrac() {
-		final AttributeLight snapAttributeLight = new AttributeLight();
+    public SnapAttributeExtract toSnapAttributeExtrac() {
+        final AttributeLight snapAttributeLight = new AttributeLight();
 
         snapAttributeLight.setAttributeCompleteName(attributeCompleteName);
         snapAttributeLight.setAttributeId(attributeId);
@@ -502,96 +520,96 @@ public class SnapshotAttribute {
         Object[] value = null;
         Object valueAfter = null;
         switch (permit) {
-        case AttrWriteType._READ:
-            Object tempRead = readValue.getNullElements();
-            if (tempRead == null) {
-                nullElements = null;
-            } else if (tempRead instanceof Boolean) {
-                nullElements = new boolean[] { ((Boolean) tempRead).booleanValue() };
-            } else {
-                nullElements = Array.newInstance(tempRead.getClass(), 1);
-                Array.set(nullElements, 0, tempRead);
-            }
-            break;
-        case AttrWriteType._READ_WITH_WRITE:
-        case AttrWriteType._READ_WRITE:
-            tempRead = readValue.getNullElements();
-            Object tempWrite = writeValue.getNullElements();
-            if ((tempRead == null) && (tempWrite == null)) {
-                nullElements = null;
-            } else if ((tempRead instanceof Boolean) || (tempWrite instanceof Boolean)) {
-                boolean[] bool = new boolean[2];
-                if (tempRead != null) {
-                    bool[0] = ((Boolean) tempRead).booleanValue();
-                }
-                if (tempWrite != null) {
-                    bool[1] = ((Boolean) tempWrite).booleanValue();
-                }
-                nullElements = bool;
-            } else {
-                Class<?> nullClass;
+            case AttrWriteType._READ:
+                Object tempRead = readValue.getNullElements();
                 if (tempRead == null) {
-                    nullClass = tempWrite.getClass();
+                    nullElements = null;
+                } else if (tempRead instanceof Boolean) {
+                    nullElements = new boolean[] { ((Boolean) tempRead).booleanValue() };
                 } else {
-                    nullClass = tempRead.getClass();
+                    nullElements = Array.newInstance(tempRead.getClass(), 1);
+                    Array.set(nullElements, 0, tempRead);
                 }
-                nullElements = Array.newInstance(nullClass, 2);
-                Array.set(nullElements, 0, tempRead);
-                Array.set(nullElements, 1, tempWrite);
-            }
-            break;
-        case AttrWriteType._WRITE:
-            tempWrite = writeValue.getNullElements();
-            if (tempWrite == null) {
-                nullElements = null;
-            } else if (tempWrite instanceof Boolean) {
-                nullElements = new boolean[] { ((Boolean) tempWrite).booleanValue() };
-            } else {
-                nullElements = Array.newInstance(tempWrite.getClass(), 1);
-                Array.set(nullElements, 0, tempWrite);
-            }
-            break;
-        }
-        switch (dataFormat) {
-        case AttrDataFormat._SCALAR:
-            switch (permit) {
-            case AttrWriteType._READ:
-                value = new Object[1];
-                value[0] = readValue.getScalarValue();
                 break;
             case AttrWriteType._READ_WITH_WRITE:
             case AttrWriteType._READ_WRITE:
-                value = new Object[2];
-                value[0] = readValue.getScalarValue();
-                value[1] = writeValue.getScalarValue();
+                tempRead = readValue.getNullElements();
+                Object tempWrite = writeValue.getNullElements();
+                if ((tempRead == null) && (tempWrite == null)) {
+                    nullElements = null;
+                } else if ((tempRead instanceof Boolean) || (tempWrite instanceof Boolean)) {
+                    boolean[] bool = new boolean[2];
+                    if (tempRead != null) {
+                        bool[0] = ((Boolean) tempRead).booleanValue();
+                    }
+                    if (tempWrite != null) {
+                        bool[1] = ((Boolean) tempWrite).booleanValue();
+                    }
+                    nullElements = bool;
+                } else {
+                    Class<?> nullClass;
+                    if (tempRead == null) {
+                        nullClass = tempWrite.getClass();
+                    } else {
+                        nullClass = tempRead.getClass();
+                    }
+                    nullElements = Array.newInstance(nullClass, 2);
+                    Array.set(nullElements, 0, tempRead);
+                    Array.set(nullElements, 1, tempWrite);
+                }
                 break;
             case AttrWriteType._WRITE:
-                value = new Object[1];
-                value[0] = writeValue.getScalarValue();
-                break;
-            }
-            break;
-
-        case AttrDataFormat._SPECTRUM:
-            switch (permit) {
-            case AttrWriteType._READ:
-                value = new Object[1];
-                value[0] = readValue.getSpectrumValue();
+                tempWrite = writeValue.getNullElements();
+                if (tempWrite == null) {
+                    nullElements = null;
+                } else if (tempWrite instanceof Boolean) {
+                    nullElements = new boolean[] { ((Boolean) tempWrite).booleanValue() };
+                } else {
+                    nullElements = Array.newInstance(tempWrite.getClass(), 1);
+                    Array.set(nullElements, 0, tempWrite);
+                }
                 break;
-            case AttrWriteType._READ_WITH_WRITE:
-            case AttrWriteType._READ_WRITE:
-                value = new Object[2];
-                value[0] = readValue.getSpectrumValue();
-                value[1] = writeValue.getSpectrumValue();
+        }
+        switch (dataFormat) {
+            case AttrDataFormat._SCALAR:
+                switch (permit) {
+                    case AttrWriteType._READ:
+                        value = new Object[1];
+                        value[0] = readValue.getScalarValue();
+                        break;
+                    case AttrWriteType._READ_WITH_WRITE:
+                    case AttrWriteType._READ_WRITE:
+                        value = new Object[2];
+                        value[0] = readValue.getScalarValue();
+                        value[1] = writeValue.getScalarValue();
+                        break;
+                    case AttrWriteType._WRITE:
+                        value = new Object[1];
+                        value[0] = writeValue.getScalarValue();
+                        break;
+                }
                 break;
-            case AttrWriteType._WRITE:
-                value = new Object[1];
-                value[0] = writeValue.getSpectrumValue();
+
+            case AttrDataFormat._SPECTRUM:
+                switch (permit) {
+                    case AttrWriteType._READ:
+                        value = new Object[1];
+                        value[0] = readValue.getSpectrumValue();
+                        break;
+                    case AttrWriteType._READ_WITH_WRITE:
+                    case AttrWriteType._READ_WRITE:
+                        value = new Object[2];
+                        value[0] = readValue.getSpectrumValue();
+                        value[1] = writeValue.getSpectrumValue();
+                        break;
+                    case AttrWriteType._WRITE:
+                        value = new Object[1];
+                        value[0] = writeValue.getSpectrumValue();
+                        break;
+                }
                 break;
-            }
-            break;
 
-        default: // nothing to do
+            default: // nothing to do
         }
 
         value = getValueTable(value);
@@ -619,10 +637,12 @@ public class SnapshotAttribute {
      */
     @Override
     public String toString() {
-        String ret = "";
+        String ret = ObjectUtils.EMPTY_STRING;
 
-        final BensikinXMLLine openingLine = new BensikinXMLLine(SnapshotAttribute.XML_TAG, BensikinXMLLine.OPENING_TAG_CATEGORY);
-        final BensikinXMLLine closingLine = new BensikinXMLLine(SnapshotAttribute.XML_TAG, BensikinXMLLine.CLOSING_TAG_CATEGORY);
+        final BensikinXMLLine openingLine = new BensikinXMLLine(SnapshotAttribute.XML_TAG,
+                BensikinXMLLine.OPENING_TAG_CATEGORY);
+        final BensikinXMLLine closingLine = new BensikinXMLLine(SnapshotAttribute.XML_TAG,
+                BensikinXMLLine.CLOSING_TAG_CATEGORY);
 
         openingLine.setAttribute(SnapshotAttribute.ID_PROPERTY_XML_TAG, String.valueOf(attributeId));
         openingLine.setAttribute(SnapshotAttribute.DATA_TYPE_PROPERTY_XML_TAG, String.valueOf(dataType));
@@ -921,7 +941,8 @@ public class SnapshotAttribute {
             }
         }
         final SnapshotAttributeWriteAbsValue snapshotWriteAbsValue = new SnapshotAttributeWriteAbsValue(
-                writeValue.getDataFormat(), writeValue.getDataType(), writeAbsScalarValue, writeValue.getNullElements());
+                writeValue.getDataFormat(), writeValue.getDataType(), writeAbsScalarValue,
+                writeValue.getNullElements());
         return snapshotWriteAbsValue;
     }
 
@@ -964,7 +985,7 @@ public class SnapshotAttribute {
      * @return
      */
     public String toUserFriendlyString() {
-        String ret = "";
+        String ret = ObjectUtils.EMPTY_STRING;
         final Options options = Options.getInstance();
         final SnapshotOptions snapshotOptions = options.getSnapshotOptions();
         final String separator = snapshotOptions.getCSVSeparator();
diff --git a/src/main/java/fr/soleil/bensikin/data/snapshot/SnapshotAttributes.java b/src/main/java/fr/soleil/bensikin/data/snapshot/SnapshotAttributes.java
index ba7f52a..641710e 100644
--- a/src/main/java/fr/soleil/bensikin/data/snapshot/SnapshotAttributes.java
+++ b/src/main/java/fr/soleil/bensikin/data/snapshot/SnapshotAttributes.java
@@ -47,6 +47,7 @@ import java.util.Map;
 
 import fr.soleil.archiving.gui.tools.GUIUtilities;
 import fr.soleil.archiving.snap.api.tools.SnapAttributeExtract;
+import fr.soleil.lib.project.ObjectUtils;
 
 /**
  * A group of snapshot attributes, rattached to a snapshot.
@@ -162,7 +163,7 @@ public class SnapshotAttributes {
      * 
      * @return An ArrayList of SnapAttributeExtract objects.
      */
-    ArrayList<SnapAttributeExtract> toArrayList() {
+    public ArrayList<SnapAttributeExtract> toArrayList() {
         if (snapshotAttributes == null) {
             // System.out.println("snapshotAttributes null !!!!");
             return null;
@@ -204,7 +205,7 @@ public class SnapshotAttributes {
      */
     @Override
     public String toString() {
-        String ret = "";
+        String ret = ObjectUtils.EMPTY_STRING;
 
         if (this.snapshotAttributes != null) {
             for (int i = 0; i < this.snapshotAttributes.length; i++) {
@@ -307,7 +308,7 @@ public class SnapshotAttributes {
      * @return
      */
     public String toUserFriendlyString() {
-        String ret = "";
+        String ret = ObjectUtils.EMPTY_STRING;
 
         if (this.snapshotAttributes != null) {
             for (int i = 0; i < this.snapshotAttributes.length; i++) {
diff --git a/src/main/java/fr/soleil/bensikin/options/sub/PrintOptions.java b/src/main/java/fr/soleil/bensikin/options/sub/PrintOptions.java
index f7d8d2b..c21fe8c 100644
--- a/src/main/java/fr/soleil/bensikin/options/sub/PrintOptions.java
+++ b/src/main/java/fr/soleil/bensikin/options/sub/PrintOptions.java
@@ -38,7 +38,7 @@ import fr.soleil.archiving.common.api.exception.ArchivingException;
 import fr.soleil.bensikin.containers.sub.dialogs.options.OptionsPrintTab;
 import fr.soleil.bensikin.options.PushPullOptionBook;
 import fr.soleil.bensikin.options.ReadWriteOptionBook;
-import fr.soleil.lib.project.awt.print.ComponentPrinter;
+import fr.soleil.lib.project.swing.print.ComponentPrinter;
 
 /**
  * The print options of the application.
-- 
GitLab