Skip to content
Snippets Groups Projects
Commit 3d52a4de authored by Raphael GIRARDOT's avatar Raphael GIRARDOT
Browse files

better preferences file management (detected during PROBLEM-2297)

parent d79e8af7
No related branches found
No related tags found
No related merge requests found
...@@ -5,10 +5,10 @@ import java.io.File; ...@@ -5,10 +5,10 @@ import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.text.Collator;
import java.util.Collections; import java.util.Map;
import java.util.HashMap; import java.util.Map.Entry;
import java.util.List; import java.util.TreeMap;
import javax.xml.XMLConstants; import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
...@@ -45,9 +45,12 @@ public class DevicePreferencesPersistence { ...@@ -45,9 +45,12 @@ public class DevicePreferencesPersistence {
/** scanserver device property name */ /** scanserver device property name */
public static final String SCANSERVER_PROPERTY = "SCANSERVER"; public static final String SCANSERVER_PROPERTY = "SCANSERVER";
private static final DevicePreferences DEVICE_PREFERENCES; private static DevicePreferences devicePreferences = null;
static { private static final Object DEVICE_PREFERENCES_LOCK = new Object();
DevicePreferences devicePreferences = null;
public static DevicePreferences getSystemPreferences() {
if (devicePreferences == null) {
synchronized (DEVICE_PREFERENCES_LOCK) {
if (devicePreferences == null) { if (devicePreferences == null) {
String preferencePath = SystemUtils.getSystemProperty(PREFERENCE_FILE_PROPERTY); String preferencePath = SystemUtils.getSystemProperty(PREFERENCE_FILE_PROPERTY);
if ((preferencePath == null) || preferencePath.trim().isEmpty()) { if ((preferencePath == null) || preferencePath.trim().isEmpty()) {
...@@ -57,11 +60,9 @@ public class DevicePreferencesPersistence { ...@@ -57,11 +60,9 @@ public class DevicePreferencesPersistence {
devicePreferences = load(preferencePath, scanServer); devicePreferences = load(preferencePath, scanServer);
} }
} }
DEVICE_PREFERENCES = devicePreferences;
} }
}
public static DevicePreferences getSystemPreferences() { return devicePreferences;
return DEVICE_PREFERENCES;
} }
private static String getDefaultScanServer() { private static String getDefaultScanServer() {
...@@ -146,8 +147,7 @@ public class DevicePreferencesPersistence { ...@@ -146,8 +147,7 @@ public class DevicePreferencesPersistence {
/** /**
* Save preferences on file system. * Save preferences on file system.
* *
* @param devicePreferences * @param devicePreferences The preferences to save.
* The preferences to save
*/ */
public static void save(DevicePreferences devicePreferences) { public static void save(DevicePreferences devicePreferences) {
if (devicePreferences != null) { if (devicePreferences != null) {
...@@ -162,30 +162,28 @@ public class DevicePreferencesPersistence { ...@@ -162,30 +162,28 @@ public class DevicePreferencesPersistence {
document.appendChild(root); document.appendChild(root);
HashMap<String, String> hashMap = new HashMap<>(); Map<String, String> preferenceMap = new TreeMap<>(Collator.getInstance());
preferenceMap.put(PreferenceItem.DataFitter.name(), devicePreferences.getDataFitter());
hashMap.put(PreferenceItem.DataFitter.name(), devicePreferences.getDataFitter()); preferenceMap.put(PreferenceItem.DataRecorder.name(),
hashMap.put(PreferenceItem.DataRecorder.name(), String.valueOf(devicePreferences.isDataRecorder())); String.valueOf(devicePreferences.isDataRecorder()));
hashMap.put(PreferenceItem.ScanServer.name(), devicePreferences.getScanServer()); preferenceMap.put(PreferenceItem.ScanServer.name(), devicePreferences.getScanServer());
hashMap.put(PreferenceItem.UserLogFile.name(), devicePreferences.getUserLogFile()); preferenceMap.put(PreferenceItem.UserLogFile.name(), devicePreferences.getUserLogFile());
hashMap.put(PreferenceItem.Publisher.name(), devicePreferences.getPublisher()); preferenceMap.put(PreferenceItem.Publisher.name(), devicePreferences.getPublisher());
Integer maxLineNumber = devicePreferences.getMaxLineNumber(); Integer maxLineNumber = devicePreferences.getMaxLineNumber();
hashMap.put(PreferenceItem.MaxLineNumber.name(), preferenceMap.put(PreferenceItem.MaxLineNumber.name(),
maxLineNumber != null ? maxLineNumber.toString() : ObjectUtils.EMPTY_STRING); maxLineNumber != null ? maxLineNumber.toString() : ObjectUtils.EMPTY_STRING);
hashMap.put(PreferenceItem.RecordingManager.name(), devicePreferences.getRecordingManager()); preferenceMap.put(PreferenceItem.RecordingManager.name(), devicePreferences.getRecordingManager());
hashMap.put(PreferenceItem.RecordingManagerProfil.name(), preferenceMap.put(PreferenceItem.RecordingManagerProfil.name(),
devicePreferences.getRecordingManagerProfil()); devicePreferences.getRecordingManagerProfil());
for (Entry<String, String> entry : preferenceMap.entrySet()) {
List<String> keys = new ArrayList<>(hashMap.keySet()); String key = entry.getKey();
Collections.sort(keys, null); String value = entry.getValue();
for (String key : keys) {
String value = hashMap.get(key);
Element e = document.createElement("add"); Element e = document.createElement("add");
e.setAttribute("key", key); e.setAttribute("key", key);
e.setTextContent(value); e.setTextContent(value);
root.appendChild(e); root.appendChild(e);
} }
hashMap.clear(); preferenceMap.clear();
String str = XMLUtils.xmlToString(document); String str = XMLUtils.xmlToString(document);
File f = new File(devicePreferences.getPreferenceFile()); File f = new File(devicePreferences.getPreferenceFile());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment