Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Metastore

The Metastore project aims to provide a developer with a way of storing metadata, configuration information, settings and so on in a standardized way.   To make this happen we choose a simple meta-model with the organization described below

Meta-model

The Metastore meta-model is organized as following:

  1. Namespaces: the top level entry of the Metastore is always a namespace.  The namespace Pentaho software works in will always simply be "Pentaho".
  2. Element types: each namespace has a set of element types which are identified by a unique ID and have a name and a description.
  3. Elements: each element type can have a number of elements which are identified by a unique ID and have a name and a set of attributes
  4. Attributes: each attribute has an ID, a value and a set of child attributes.  The values of attributes are typically string values but integers, doubles and dates are supported as well.

So essentially, it's a key/value store with children allowing you to store just about any piece of metadata.

Java project

The Java project with the API and reference implementations is to be found over here:

https://github.com/pentaho/metastore

Java API

Even though the organisation of the meta-model is kept simple (on purpose) it makes sense to cover the main Java interfaces a bit.

IMetaStore

The IMetaStore interface is the top level interface describing all the possible operations which are available. 

Namespace operations

  • getNamespaces() : lists all the namespaces
  • createNamespace() : create a new namespace
  • deleteNamespace() : delete a namespace

Element type operations

  • getElementTypes() : list all the element types
  • getElementTypeIds() : list all the element type IDs
  • getElementType(): find an element with a specific ID
  • getElementTypeByName() : find an element type with a specific name
  • createElementType() : create a new element type in the store
  • updateElementType(): update an element type
  • deleteElementType(): delete an element type
  • newElementType() : generate a new empty element type

Element operations

  • getElements() : list all the elements
  • getElementIds() : list all the element IDs
  • getElement(): find an element with a specific ID
  • getElementByName() : find an element with a specific name
  • createElement() : create a new element in the store
  • updateElement(): update an element
  • deleteElement(): delete an element
  • newElement() : generate a new element
  • newAttribute() : generate a new empty attribute suitable for the store
  • newElementOwner() : generate a new element owner

Metastore convenience properties

Self explanatory, to distinguish one Metastore from another.

  • getName()
  • getDescription()
  • getLifeCycle()
  • getCustomerName()
  • getProjectName()

Listeners

You can have the metastore inform you of changes that are happening inside of the Metastore

  • addElementTypeListener() : be informed of changed to element types
  • getElementTypeListeners() : get the element type listeners
  • removeElementTypeListener: remove an element type listener
  • addElementListener() add an element listener
  • getElementListeners() get the element listeners
  • removeElementListener() remove an element listener
  • No labels