Interface ModelMaker

  • All Superinterfaces:
    ModelGetter, ModelSource
    All Known Implementing Classes:
    ModelMakerImpl

    public interface ModelMaker
    extends ModelSource
    A ModelMaker contains a collection of named models, methods for creating new models [both named and anonymous] and opening previously-named models, removing models, and accessing a single "default" Model for this Maker.

    Additional constraints are placed on a ModelMaker as compared to its ancestor ModelSource. ModelMakers do not arbitrarily forget their contents - once they contain a named model, that model stays inside the ModelMaker until that ModelMaker goes away, and maybe for longer (eg if the ModelMaker fronted a database or directory). And new models can be added to a ModelMaker.

    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      void close()
      Close the factory - no more requests need be honoured, and any clean-up can be done.
      Model createModel​(java.lang.String name)
      Create a Model with the given name if no such model exists.
      Model createModel​(java.lang.String name, boolean strict)
      Create a new Model associated with the given name.
      GraphMaker getGraphMaker()
      Answer a GraphMaker that makes graphs the same way this ModelMaker makes models.
      boolean hasModel​(java.lang.String name)
      return true iff the factory has a Model with the given name
      ExtendedIterator<java.lang.String> listModels()
      Answer an [extended] iterator where each element is the name of a model in the maker, and the complete sequence exhausts the set of names.
      Model openModel​(java.lang.String name, boolean strict)
      Find an existing Model that this factory knows about under the given name.
      void removeModel​(java.lang.String name)
      Remove the association between the name and the Model.
    • Method Detail

      • createModel

        Model createModel​(java.lang.String name,
                          boolean strict)
        Create a new Model associated with the given name. If there is no such association, create one and return it. If one exists but strict is false, return the associated Model. Otherwise throw an AlreadyExistsException.
        Parameters:
        name - the name to give to the new Model
        strict - true to cause existing bindings to throw an exception
        Throws:
        AlreadyExistsException - if that name is already bound.
      • createModel

        Model createModel​(java.lang.String name)
        Create a Model with the given name if no such model exists. Otherwise, answer the existing model. Equivalent to
        createModel( name, false ).
      • openModel

        Model openModel​(java.lang.String name,
                        boolean strict)
        Find an existing Model that this factory knows about under the given name. If such a Model exists, return it. Otherwise, if strict is false, create a new Model, associate it with the name, and return it. Otherwise throw a DoesNotExistException.

        When called with strict=false, is equivalent to the ancestor openModel(String) method.

        Parameters:
        name - the name of the Model to find and return
        strict - false to create a new one if one doesn't already exist
        Throws:
        DoesNotExistException - if there's no such named Model
      • removeModel

        void removeModel​(java.lang.String name)
        Remove the association between the name and the Model. create will now be able to create a Model with that name, and open will no longer be able to find it. Throws an exception if there's no such Model. The Model itself is not touched.
        Parameters:
        name - the name to disassociate
        Throws:
        DoesNotExistException - if the name is unbound
      • hasModel

        boolean hasModel​(java.lang.String name)
        return true iff the factory has a Model with the given name
        Parameters:
        name - the name of the Model to look for
        Returns:
        true iff there's a Model with that name
      • close

        void close()
        Close the factory - no more requests need be honoured, and any clean-up can be done.
      • getGraphMaker

        GraphMaker getGraphMaker()
        Answer a GraphMaker that makes graphs the same way this ModelMaker makes models. In general this will be an underlying GraphMaker.
      • listModels

        ExtendedIterator<java.lang.String> listModels()
        Answer an [extended] iterator where each element is the name of a model in the maker, and the complete sequence exhausts the set of names. No particular order is expected from the list.
        Returns:
        an extended iterator over the names of models known to this Maker.