view mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCommitsInfoBuilderStates.java @ 729:785ab04c78da

implement new graph construction code
author eugene.petrenko@jetbrains.com
date Mon, 13 Jan 2014 20:29:59 +0100
parents
children 31a1aca3305c
line wrap: on
line source
package jetbrains.buildServer.buildTriggers.vcs.mercurial;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

/**
 * Created 13.01.14 19:45
 *
 * @author Eugene Petrenko (eugene.petrenko@jetbrains.com)
 */
public class MercurialCommitsInfoBuilderStates {
  private final Map<String, String> myHgStateNodes = new HashMap<String, String>();
  private final Map<String, String> myHgSubNodes = new HashMap<String, String>();

  public void addSubNode(@NotNull final String hash, @NotNull final String text) {
    myHgSubNodes.put(hash, text);
  }

  public void addStateNode(@NotNull final String hash, @NotNull final String text) {
    myHgStateNodes.put(hash, text);
  }


  @NotNull
  public Map<String, SubRepo> mounts(@Nullable final String subHash,
                                     @Nullable final String stateHash) {
    if (subHash == null || stateHash == null) return Collections.emptyMap();

    //TODO: may cache parsed contents to make it work faster
    return HgSubs.readSubrepositories(
            myHgSubNodes.get(subHash),
            myHgStateNodes.get(stateHash));
  }
}