/**
* Copyright (c) Codice Foundation
* <p>
* This is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser
* General Public License as published by the Free Software Foundation, either version 3 of the
* License, or any later version.
* <p>
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details. A copy of the GNU Lesser General Public License
* is distributed along with this program and can be found at
* <http://www.gnu.org/licenses/lgpl.html>.
*/
package org.codice.ddf.platform.services.common;
/**
* Describable is used to capture a basic description of a service. This provides valuable runtime
* information to the user regarding the application bundles and OSGi.
* <p>
* It is expected that the children are services that perform specific tasks.
*/
public interface Describable {
/**
* Returns the version.
*
* @return the version of the item being described (example: 1.0)
*/
String getVersion();
/**
* Returns the name, aka ID, of the describable item. The name should be unique for each
* instance within the scope of a service or a component. For example, this is unique for any
* Migratable in a set of Migratables. It is not necessarily unique between Migratables and
* Metacards.
* <p>
* Format should be [<b>product</b>].[<b>component</b>] such as ddf.metacards, or ddf.platform;
* while the [<b>component</b>] within a [<b>product</b>] may simply be a module or bundle name,
* the [<b>product</b>] itself should be the unique name of the plug-in or integration that
* belongs to the organization listed in {@link Describable#getOrganization()}. Note that 'ddf'
* as a [<b>product</b>] is reserved for core features only.
*
* @return ID of the item
*/
String getId();
/**
* Returns the title of the describable item. It is generally more verbose than the name (aka
* ID).
*
* @return title of the item (example: File System Provider)
*/
String getTitle();
/**
* Returns a description of the describable item.
*
* @return description of the item (example: Provider that returns back static results)
*/
String getDescription();
/**
* Returns the organization associated with the describable item.
*
* @return organizational name or acronym (example: USAF)
*/
String getOrganization();
}