/*******************************************************************************
 * Copyright (C) 2008-2010 The University of Manchester   
 * 
 *  Modifications to the initial code base are copyright of their
 *  respective authors, or their employers as appropriate.
 * 
 *  This program 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 2.1 of
 *  the License, or (at your option) any later version.
 *    
 *  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
 *  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, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ******************************************************************************/
package net.sf.taverna.t2.workbench.ui.credentialmanager.password;

import net.sf.taverna.t2.security.credentialmanager.MasterPasswordProvider;

/**
 * A simple implementation of {@link MasterPasswordProvider} that just provides
 * a master password that can be obtained and set from outside the provider.
 * 
 * @author Alex Nenadic
 */
public class SimpleMasterPasswordProvider implements MasterPasswordProvider {
	private String masterPassword;
	private int priority = 200;
	
	@Override
	public String getMasterPassword(boolean firstTime) {
		return masterPassword;
	}
	
	@Override
	public void setMasterPassword(String masterPassword){
		this.masterPassword = masterPassword;
	}

	@Override
	public int getProviderPriority() {
		return priority;
	}

//	@Override
//	public void setProviderPriority(int priority) {
//		this.priority = priority;		
//	}
}
