All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.javagimmicks.graph.MapGraphBuilder Maven / Gradle / Ivy

package net.sf.javagimmicks.graph;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

import net.sf.javagimmicks.graph.DefaultEdgeFactory.DefaultEdge;
import net.sf.javagimmicks.lang.Factory;

public class MapGraphBuilder>
{
   protected boolean _directed = false;
   protected Map> _edgeMap = new HashMap>();
   protected Factory> _setFactory = new HashSetFactory();
   protected EdgeFactory _edgeFactory = null;

   public static  MapGraphBuilder> createDefaultInstance(Map>> edges, Factory>> setFactory)
   {
      return new MapGraphBuilder>()
         .setEdgeMap(edges)
         .setSetFactory(setFactory)
         .setEdgeFactory(new DefaultEdgeFactory());
   }
   
   public static  MapGraphBuilder> createDefaultHashInstance()
   {
      return createDefaultInstance(new HashMap>>(), new HashSetFactory>());
   }
   
   public MapGraph build()
   {
      if(_edgeFactory == null)
      {
         throw new IllegalStateException("No EdgeFactory set yet!");
      }
      
      return new MapGraph(_edgeMap, _setFactory, _edgeFactory, _directed);
   }
   
   public boolean isDirected()
   {
      return _directed;
   }

   public Map> getEdgeMap()
   {
      return _edgeMap;
   }

   public Factory> getSetFactory()
   {
      return _setFactory;
   }

   public EdgeFactory getEdgeFactory()
   {
      return _edgeFactory;
   }

   public MapGraphBuilder setDirected(boolean directed)
   {
      _directed = directed;
      
      return this;
   }

   public MapGraphBuilder setEdgeMap(Map> edgeMap)
   {
      _edgeMap = edgeMap;
      
      return this;
   }

   public MapGraphBuilder setSetFactory(Factory> setFactory)
   {
      _setFactory = setFactory;
      
      return this;
   }

   public MapGraphBuilder setEdgeFactory(EdgeFactory edgeFactory)
   {
      _edgeFactory = edgeFactory;
      
      return this;
   }

   public static class HashSetFactory implements Factory>
   {
      public Set create()
      {
         return new HashSet();
      }
   }

   public static class TreeSetFactory implements Factory>
   {
      public Set create()
      {
         return new TreeSet();
      }
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy