/* * ==================================================================== * Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms * are also available at http://svnkit.com/license.html. * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * ==================================================================== */ package org.tmatesoft.svn.core.internal.wc; import java.util.Map; /** * @version 1.0 * @author TMate Software Ltd. */ public class SVNCompositeConfigFile { private SVNConfigFile myUserFile; private SVNConfigFile mySystemFile; /** * Highest priority in-memory read-only options. */ private Map myGroupsToOptions; public SVNCompositeConfigFile(SVNConfigFile systemFile, SVNConfigFile userFile) { mySystemFile = systemFile; myUserFile = userFile; } public Map getProperties(String groupName) { Map system = mySystemFile.getProperties(groupName); Map user = myUserFile.getProperties(groupName); system.putAll(user); if (myGroupsToOptions != null) { Map groupOptions = (Map) myGroupsToOptions.get(groupName); if (groupOptions != null) { system.putAll(groupOptions); } } return system; } public void setGroupsToOptions(Map groupToOptions) { myGroupsToOptions = groupToOptions; } public String getPropertyValue(String groupName, String propertyName) { String value = null; if (myGroupsToOptions != null) { Map groupOptions = (Map) myGroupsToOptions.get(groupName); if (groupOptions != null) { value = (String) groupOptions.get(propertyName); } } if (value == null) { value = myUserFile.getPropertyValue(groupName, propertyName); } if (value == null) { value = mySystemFile.getPropertyValue(groupName, propertyName); } return value; } public void setPropertyValue(String groupName, String propertyName, String propertyValue, boolean save) { myUserFile.setPropertyValue(groupName, propertyName, propertyValue, save); } public boolean isModfied() { return myUserFile.isModified(); } public void save() { myUserFile.save(); } }