From 16ab48d0092982c02097e7027b0626538c2e7520 Mon Sep 17 00:00:00 2001 From: Daniel Lublin Date: Fri, 15 Apr 2022 10:24:37 +0200 Subject: [PATCH] Allow storing int array in settings --- .../briarproject/bramble/api/StringMap.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/StringMap.java b/bramble-api/src/main/java/org/briarproject/bramble/api/StringMap.java index bda2a94d2..92c9ac44a 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/StringMap.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/StringMap.java @@ -1,8 +1,14 @@ package org.briarproject.bramble.api; +import org.briarproject.bramble.util.StringUtils; + +import java.util.ArrayList; import java.util.Hashtable; +import java.util.List; import java.util.Map; +import javax.annotation.Nullable; + public abstract class StringMap extends Hashtable { protected StringMap(Map m) { @@ -52,4 +58,31 @@ public abstract class StringMap extends Hashtable { public void putLong(String key, long value) { put(key, String.valueOf(value)); } + + @Nullable + public int[] getIntArray(String key) { + String s = get(key); + if (s == null) return null; + // Handle empty string because "".split(",") returns {""} + if (s.length() == 0) return new int[0]; + String[] intStrings = s.split(","); + int[] ints = new int[intStrings.length]; + try { + for (int i = 0; i < ints.length; i++) { + ints[i] = Integer.parseInt(intStrings[i]); + } + } catch (NumberFormatException e) { + return null; + } + return ints; + } + + public void putIntArray(String key, int[] value) { + List intStrings = new ArrayList<>(); + for (int integer : value) { + intStrings.add(String.valueOf(integer)); + } + // Puts empty string if input array value is empty + put(key, StringUtils.join(intStrings, ",")); + } }