Interface ILcdOGCModelProvider

All Superinterfaces:
AutoCloseable, ILcdDisposable
All Known Subinterfaces:
ILcdModelProvider
All Known Implementing Classes:
ALcdMultiDimensionalModelProvider, TLcdOGCModelProvider, TLcdWMSModelProvider

public interface ILcdOGCModelProvider extends ILcdDisposable
Interface defining implementations that can provide models corresponding to some source name.
  • Method Summary

    Modifier and Type
    Method
    Description
    default void
    Disposes of this object and allows it to release any system resources that it is holding.
    getModel(String aSourceName, ALcdRequestContext aRequestContext)
    Returns the ILcdModel corresponding to the given source name and request context.
    default String
    getModelUpdateSequence(String aSourceName, ALcdRequestContext aRequestContext)
    Returns the update sequence value associated with the mode identified by the given source name.

    Methods inherited from interface com.luciad.util.ILcdDisposable

    close
  • Method Details

    • getModel

      ILcdModel getModel(String aSourceName, ALcdRequestContext aRequestContext) throws IOException
      Returns the ILcdModel corresponding to the given source name and request context.
      Parameters:
      aSourceName - the source name of the model.
      aRequestContext - the request context. This can be null if the method is called by a process which is not handling a request.
      Returns:
      the ILcdModel corresponding to the given source name.
      Throws:
      IOException - if the model can not be returned (because decoding fails).
    • getModelUpdateSequence

      default String getModelUpdateSequence(String aSourceName, ALcdRequestContext aRequestContext) throws IOException

      Returns the update sequence value associated with the mode identified by the given source name. The update sequence identifies the state of the model.

      The update sequence should comply with a number of conditions:

      • The sequence number should be different from all previous update sequences for this model (if the model has changed).
      • If the model is different, the sequence number should be different as well. Failing to do so will cause malfunctions in combination with caching.
      • If the model doesn't change, the sequence number should also remain the same. Failing to do so lowers the effect of caching, and will result in worse performance.
      • The sequence number should be unique across sessions. Failing to do so may cause malfunctions in combination with caching. An easy mistake to make would for example be to use a counter that is reset when the server is restarted.

      By default, this method always returns "0". This means that the default implementation assumes that models never change. If models change, this method should be implemented differently.

      One way to generate update sequences would be to use a (persistent) counter that gets incremented on every (file system) change. Another way would be to use System.currentTimeMillis() from a correct clock.

      This method must be used by model provider implementations that contain a model cache. The result of this method must be used to invalidate this cache if needed.

      Because of caching on the request/view level, it is possible that the getModel method is called infrequently. This method will need to be called at least once for each request though. This means that for performance reasons, this method needs to have a fast implementation, ideally avoiding any I/O.

      Parameters:
      aSourceName - the source name of the model.
      aRequestContext - the request context. This can be null if the method is called by a process which is not handling a request.
      Returns:
      the update sequence value associated with the mode identified by the given source name.
      Throws:
      IOException - if the update sequence can not be determined
      Since:
      2017.0
    • dispose

      default void dispose()
      Description copied from interface: ILcdDisposable

      Disposes of this object and allows it to release any system resources that it is holding.

      The result of calling any other method (other than finalize) on this object subsequent to a call to this method is undefined.

      Specified by:
      dispose in interface ILcdDisposable