/******************************************************************************* * Copyright (c) 2014 Jeff Martin. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * Jeff Martin - initial API and implementation ******************************************************************************/ package cuchaz.enigma.convert; import java.util.Map; import com.google.common.collect.BiMap; import com.google.common.collect.Maps; public class ClassNamer { public interface SidedClassNamer { String getName(String name); } private Map m_sourceNames; private Map m_destNames; public ClassNamer(BiMap mappings) { // convert the identity mappings to name maps m_sourceNames = Maps.newHashMap(); m_destNames = Maps.newHashMap(); int i = 0; for (Map.Entry entry : mappings.entrySet()) { String name = String.format("M%04d", i++); m_sourceNames.put(entry.getKey().getClassEntry().getName(), name); m_destNames.put(entry.getValue().getClassEntry().getName(), name); } } public String getSourceName(String name) { return m_sourceNames.get(name); } public String getDestName(String name) { return m_destNames.get(name); } public SidedClassNamer getSourceNamer() { return new SidedClassNamer() { @Override public String getName(String name) { return getSourceName(name); } }; } public SidedClassNamer getDestNamer() { return new SidedClassNamer() { @Override public String getName(String name) { return getDestName(name); } }; } }