/*
* Copyright (c) 2002 Cunningham & Cunningham, Inc.
* Copyright (c) 2009-2015 by Jochen Wierum & Cologne Intelligence
*
* This file is part of FitGoodies.
*
* FitGoodies 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 3 of the License, or
* (at your option) any later version.
*
* FitGoodies 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 FitGoodies. If not, see <http://www.gnu.org/licenses/>.
*/
package de.cologneintelligence.fitgoodies.alias;
import java.util.HashMap;
import java.util.Map;
/**
* Singleton class to manage aliases.
*/
public final class AliasHelper {
private final Map<String, String> classMapper = new HashMap<>();
public AliasHelper() {
initDefaultMappings();
}
private void initDefaultMappings() {
classMapper.put("fitgoodies.ActionFixture", "de.cologneintelligence.fitgoodies.ActionFixture");
classMapper.put("fitgoodies.ColumnFixture", "de.cologneintelligence.fitgoodies.ColumnFixture");
classMapper.put("fitgoodies.RowFixture", "de.cologneintelligence.fitgoodies.RowFixture");
classMapper.put("fitgoodies.file.FileFixture", "de.cologneintelligence.fitgoodies.file.FileFixture");
classMapper.put("fitgoodies.runners.RunFixture", "de.cologneintelligence.fitgoodies.runners.RunFixture");
classMapper.put("fitgoodies.selenium.SeleniumFixture", "de.cologneintelligence.fitgoodies.selenium.SeleniumFixture");
classMapper.put("fitgoodies.selenium.SetupFixture", "de.cologneintelligence.fitgoodies.selenium.SetupFixture");
classMapper.put("fitgoodies.references.SetupFixture", "de.cologneintelligence.fitgoodies.references.SetupFixture");
classMapper.put("fitgoodies.mail.SetupFixture", "de.cologneintelligence.fitgoodies.mail.SetupFixture");
classMapper.put("fitgoodies.date.SetupFixture", "de.cologneintelligence.fitgoodies.date.SetupFixture");
classMapper.put("fitgoodies.database.SetupFixture", "de.cologneintelligence.fitgoodies.database.SetupFixture");
classMapper.put("fitgoodies.typehandler.SetupFixture", "de.cologneintelligence.fitgoodies.typehandler.SetupFixture");
classMapper.put("fitgoodies.database.ResultSetFixture", "de.cologneintelligence.fitgoodies.database.ResultSetFixture");
classMapper.put("fitgoodies.database.TableFixture", "de.cologneintelligence.fitgoodies.database.TableFixture");
classMapper.put("fitgoodies.file.CSVFileRecordFixture", "de.cologneintelligence.fitgoodies.file.CSVFileRecordFixture");
classMapper.put("fitgoodies.file.DelimiterFileRecordFixture", "de.cologneintelligence.fitgoodies.file.DelimiterFileRecordFixture");
classMapper.put("fitgoodies.file.FixedLengthFileRecordFixture", "de.cologneintelligence.fitgoodies.file.FixedLengthFileRecordFixture");
classMapper.put("fitgoodies.file.XMLFileFixture", "de.cologneintelligence.fitgoodies.file.XMLFileFixture");
classMapper.put("fitgoodies.log4j.LogFixture", "de.cologneintelligence.fitgoodies.log4j.LogFixture");
classMapper.put("fitgoodies.log4j.SetupFixture", "de.cologneintelligence.fitgoodies.log4j.SetupFixture");
classMapper.put("fitgoodies.mail.MailFixture", "de.cologneintelligence.fitgoodies.mail.MailFixture");
classMapper.put("fitgoodies.alias.SetupFixture", "de.cologneintelligence.fitgoodies.alias.SetupFixture");
classMapper.put("fitgoodies.external.StartFixture", "de.cologneintelligence.fitgoodies.external.StartFixture");
}
/**
* Looks up a class in the alias map. If <code>className</code> exists as
* an alias, it is resolved and returned. If the alias doesn't exist, the
* original String is returned.
*
* @param className class name to look up
* @return resolved name of the alias
*/
public String getClazz(final String className) {
String realName = className;
while (classMapper.containsKey(realName)) {
realName = classMapper.get(realName);
}
return realName;
}
/**
* Registers a new alias <code>alias</code> for <code>className</code>.
*
* @param alias alias to use
* @param className class the alias maps on
*/
public void register(final String alias, final String className) {
classMapper.put(alias, className);
}
}