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 Details

    • createModel

      Model createModel(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(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(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(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(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<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.