From c00f47e0e298b3dab01a19b9f650646cfd5b84bb Mon Sep 17 00:00:00 2001 From: Feildmaster Date: Tue, 1 Nov 2011 22:04:48 -0500 Subject: Added createSection(String path, Map map) --- .../org/bukkit/configuration/ConfigurationSection.java | 11 +++++++++++ src/main/java/org/bukkit/configuration/MemorySection.java | 14 ++++++++++++++ .../org/bukkit/configuration/ConfigurationSectionTest.java | 14 ++++++++++++++ .../java/org/bukkit/configuration/ConfigurationTest.java | 1 - 4 files changed, 39 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/org/bukkit/configuration/ConfigurationSection.java b/src/main/java/org/bukkit/configuration/ConfigurationSection.java index 0843c04e..3bd6fe37 100644 --- a/src/main/java/org/bukkit/configuration/ConfigurationSection.java +++ b/src/main/java/org/bukkit/configuration/ConfigurationSection.java @@ -164,6 +164,17 @@ public interface ConfigurationSection { * @return Newly created section */ public ConfigurationSection createSection(String path); + + /** + * Creates a {@link ConfigurationSection} at the specified path, with specified values. + *

+ * Any value that was previously set at this path will be overwritten. If the + * previous value was itself a {@link ConfigurationSection}, it will be orphaned. + * + * @param path Path to create the section at. + * @return Newly created section + */ + public ConfigurationSection createSection(String path, Map map); // Primitives /** diff --git a/src/main/java/org/bukkit/configuration/MemorySection.java b/src/main/java/org/bukkit/configuration/MemorySection.java index 46965c23..68254d0a 100644 --- a/src/main/java/org/bukkit/configuration/MemorySection.java +++ b/src/main/java/org/bukkit/configuration/MemorySection.java @@ -266,6 +266,20 @@ public class MemorySection implements ConfigurationSection { return section.createSection(key); } } + + public ConfigurationSection createSection(String path, Map map) { + ConfigurationSection section = createSection(path); + + for(Map.Entry entry : map.entrySet()) { + if(entry.getValue() instanceof Map) { + section.createSection(entry.getKey(), (Map)entry.getValue()); + } else { + section.set(entry.getKey(), entry.getValue()); + } + } + + return section; + } // Primitives public String getString(String path) { diff --git a/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java b/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java index 6834bfda..6810f817 100644 --- a/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java +++ b/src/test/java/org/bukkit/configuration/ConfigurationSectionTest.java @@ -3,6 +3,7 @@ package org.bukkit.configuration; import org.bukkit.Material; import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.bukkit.inventory.ItemStack; @@ -182,6 +183,19 @@ public abstract class ConfigurationSectionTest { assertEquals("subsection", subsection.getName()); } + @Test + public void testSectionMap() { + ConfigurationSection config = getConfigurationSection(); + Map testMap = new LinkedHashMap(); + + testMap.put("string", "Hello World"); + testMap.put("integer", 15); + + config.createSection("test.path", testMap); + + assertEquals(testMap, config.getConfigurationSection("test.path").getValues(false)); + } + @Test public void testGetString_String() { ConfigurationSection section = getConfigurationSection(); diff --git a/src/test/java/org/bukkit/configuration/ConfigurationTest.java b/src/test/java/org/bukkit/configuration/ConfigurationTest.java index 20e6f21d..a1671d35 100644 --- a/src/test/java/org/bukkit/configuration/ConfigurationTest.java +++ b/src/test/java/org/bukkit/configuration/ConfigurationTest.java @@ -1,7 +1,6 @@ package org.bukkit.configuration; import java.util.LinkedHashMap; -import java.io.File; import java.util.Arrays; import java.util.HashMap; import java.util.Map; -- cgit v1.2.3