/* * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.intellij.vcs.log.graph.parser; import com.intellij.util.containers.ContainerUtil; import com.intellij.vcs.log.graph.api.elements.GraphEdgeType; import com.intellij.vcs.log.graph.api.elements.GraphNodeType; import org.jetbrains.annotations.NotNull; import java.util.Map; public class EdgeNodeCharConverter { private static final Map<Character, GraphNodeType> GRAPH_NODE_TYPE_MAP = ContainerUtil.newHashMap(); private static final Map<GraphNodeType, Character> REVERSE_GRAPH_NODE_TYPE_MAP; private static final Map<Character, GraphEdgeType> GRAPH_EDGE_TYPE_MAP = ContainerUtil.newHashMap(); private static final Map<GraphEdgeType, Character> REVERSE_GRAPH_EDGE_TYPE_MAP; static { GRAPH_NODE_TYPE_MAP.put('U', GraphNodeType.USUAL); GRAPH_NODE_TYPE_MAP.put('G', GraphNodeType.UNMATCHED); GRAPH_NODE_TYPE_MAP.put('N', GraphNodeType.NOT_LOAD_COMMIT); GRAPH_EDGE_TYPE_MAP.put('U', GraphEdgeType.USUAL); GRAPH_EDGE_TYPE_MAP.put('D', GraphEdgeType.DOTTED); GRAPH_EDGE_TYPE_MAP.put('N', GraphEdgeType.NOT_LOAD_COMMIT); GRAPH_EDGE_TYPE_MAP.put('P', GraphEdgeType.DOTTED_ARROW_UP); GRAPH_EDGE_TYPE_MAP.put('O', GraphEdgeType.DOTTED_ARROW_DOWN); REVERSE_GRAPH_NODE_TYPE_MAP = ContainerUtil.reverseMap(GRAPH_NODE_TYPE_MAP); REVERSE_GRAPH_EDGE_TYPE_MAP = ContainerUtil.reverseMap(GRAPH_EDGE_TYPE_MAP); } @NotNull public static GraphNodeType parseGraphNodeType(char type) { GraphNodeType nodeType = GRAPH_NODE_TYPE_MAP.get(type); if (nodeType == null) throw new IllegalStateException("Illegal char for graph node type: " + type); return nodeType; } @NotNull public static GraphEdgeType parseGraphEdgeType(char type) { GraphEdgeType nodeType = GRAPH_EDGE_TYPE_MAP.get(type); if (nodeType == null) throw new IllegalStateException("Illegal char for graph edge type: " + type); return nodeType; } public static char toChar(@NotNull GraphEdgeType type) { return REVERSE_GRAPH_EDGE_TYPE_MAP.get(type); } public static char toChar(@NotNull GraphNodeType type) { return REVERSE_GRAPH_NODE_TYPE_MAP.get(type); } }