package immibis.bon.mcp; import immibis.bon.IProgressListener; import immibis.bon.JoinMapping; import immibis.bon.Mapping; import immibis.bon.NameSet; import immibis.bon.mcp.MappingLoader_MCP.CantLoadMCPMappingException; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; @Deprecated public class MappingFactory { public static class MappingUnavailableException extends Exception { private static final long serialVersionUID = 1L; public MappingUnavailableException(String message) { super(message); } public MappingUnavailableException(NameSet from, NameSet to, String reason) { super("Can't create mapping from "+from+" to "+to+" - "+reason); } } private static Map<String, MappingLoader_MCP> mcpInstances = new HashMap<>(); public static void registerMCPInstance(String mcVersion, MinecraftNameSet.Side side, File mcpPath, IProgressListener progress) throws IOException, CantLoadMCPMappingException { mcpInstances.put(mcVersion+" "+side, new MappingLoader_MCP(mcVersion, side, mcpPath, progress)); } public static void registerMCPInstance(String mcVersion, MinecraftNameSet.Side side, MappingLoader_MCP loader) { mcpInstances.put(mcVersion+" "+side, loader); } @SuppressWarnings("incomplete-switch") public static Mapping getMapping(MinecraftNameSet from, MinecraftNameSet to, IProgressListener progress) throws MappingUnavailableException { if(!from.mcVersion.equals(to.mcVersion)) throw new MappingUnavailableException(from, to, "different Minecraft version"); if(from.type == to.type) throw new MappingUnavailableException(from, to, ""); MappingLoader_MCP mcpLoader = mcpInstances.get(from.mcVersion+" "+from.side); if(mcpLoader != null) { MappingLoader_MCP loader = mcpLoader; switch(from.type) { case MCP: switch(to.type) { case OBF: return new JoinMapping( loader.getReverseCSV(), loader.getReverseSRG() ); case SRG: return loader.getReverseCSV(); } break; case OBF: switch(to.type) { case MCP: return new JoinMapping( loader.getForwardSRG(), loader.getForwardCSV() ); case SRG: return loader.getForwardSRG(); } break; case SRG: switch(to.type) { case OBF: return loader.getReverseSRG(); case MCP: return loader.getForwardCSV(); } break; } throw new MappingUnavailableException(from, to, "not supported"); } throw new MappingUnavailableException(from, to, "no known MCP folder for "+from.mcVersion); } }