/* * File : ShareConfigImpl.java * Created : 31-Dec-2003 * By : parg * * Azureus - a Java Bittorrent client * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License. * * This program 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 General Public License for more details ( see the LICENSE file ). * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.gudy.azureus2.pluginsimpl.local.sharing; /** * @author parg * */ import java.util.*; import org.gudy.azureus2.core3.util.*; import org.gudy.azureus2.plugins.sharing.*; public class ShareConfigImpl { protected ShareManagerImpl manager; protected int suspend_level; protected boolean save_outstanding; protected AEMonitor this_mon = new AEMonitor( "ShareConfig" ); protected void loadConfig( ShareManagerImpl _manager ) { manager = _manager; try{ Map map = FileUtil.readResilientConfigFile("sharing.config"); List resources = (List) map.get("resources"); if (resources == null){ return; } Iterator iter = resources.iterator(); while (iter.hasNext()) { Map r_map = (Map) iter.next(); manager.deserialiseResource( r_map ); } }catch (Exception e) { Debug.printStackTrace( e ); } } protected void saveConfig() throws ShareException { try{ this_mon.enter(); if ( suspend_level > 0 ){ save_outstanding = true; return; } Map map = new HashMap(); List list = new ArrayList(); map.put("resources", list); ShareResource[] shares = manager.getShares(); for (int i=0;i<shares.length;i++){ Map m = new HashMap(); ((ShareResourceImpl)shares[i]).serialiseResource( m ); list.add( m ); } FileUtil.writeResilientConfigFile("sharing.config", map); }finally{ this_mon.exit(); } } protected void suspendSaving() { try{ this_mon.enter(); suspend_level++; }finally{ this_mon.exit(); } } protected void resumeSaving() throws ShareException { try{ this_mon.enter(); suspend_level--; if ( suspend_level == 0 && save_outstanding ){ save_outstanding = false; saveConfig(); } }finally{ this_mon.exit(); } } }