/* * This file is part of muCommander, http://www.mucommander.com * Copyright (C) 2002-2016 Maxence Bernard * * muCommander is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * muCommander is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.mucommander.commons.conf; /** * Helper class meant for instances of {@link Configuration} to explore their own configuration tree. * @author Nicolas Rinaudo */ class ConfigurationExplorer { // - Instance variables -------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------------- /** Current section. */ private ConfigurationSection section; // - Initialisation ------------------------------------------------------------------------------------------------ // ----------------------------------------------------------------------------------------------------------------- /** * Creates a new explorer on the specified section. * @param root section from which to start exploring. */ public ConfigurationExplorer(ConfigurationSection root) { section = root; } // - Exploration methods ------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------------- /** * Returns the current section. * @return the current section. */ public ConfigurationSection getSection() { return section; } /** * Move to the specified section. * @param name name of the current section's subsection in which to move. * @param create if <code>true</code> and <code>name</code> doesn't exist, it will be created. * @return <code>true</code> if we could move to <code>name</code>, <code>false</code> otherwise. */ public boolean moveTo(String name, boolean create) { ConfigurationSection buffer; // Buffer for the subsection. // Checks whether the requested subsection exists. if((buffer = section.getSection(name)) == null) { // If it doesn't exist, either return false or create it depending on // parameters. if(create) { section = section.addSection(name); return true; } return false; } section = buffer; return true; } }