/* * Created on May 23, 2013 * Created by Paul Gardner * * Copyright 2013 Azureus Software, Inc. All rights reserved. * * 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; version 2 of the License only. * * 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. * * 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.ui.console.multiuser.persist; import java.beans.XMLDecoder; import java.beans.XMLEncoder; import java.io.BufferedOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import org.gudy.azureus2.ui.console.UserProfile; import org.gudy.azureus2.ui.console.multiuser.UserManagerPersister; import org.gudy.azureus2.ui.console.multiuser.UserManager.UserManagerConfig; public class UserManagerXMLPersist implements UserManagerPersister { /** * This code abstracted because it relies on java.beans.* which is not always available * e.g. on Android */ public void doSave( OutputStream out, Map usersMap ) { UserManagerConfig config = new UserManagerConfig(); List users = new ArrayList( usersMap.values() ); config.setUsers(users); XMLEncoder encoder = new XMLEncoder( new BufferedOutputStream( out ) ); encoder.writeObject(config); encoder.close(); } public void doLoad( InputStream in, Map usersMap ) { XMLDecoder decoder = new XMLDecoder( in ); UserManagerConfig managerConfig = (UserManagerConfig)decoder.readObject(); for (Iterator iter = managerConfig.getUsers().iterator(); iter.hasNext();) { UserProfile user = (UserProfile) iter.next(); usersMap.put(user.getUsername().toLowerCase(), user); } System.out.println("UserManager: registered " + usersMap.size() + " users"); decoder.close(); } }