/**
* CloudGraph Community Edition (CE) License
*
* This is a community release of CloudGraph, a dual-license suite of
* Service Data Object (SDO) 2.1 services designed for relational and
* big-table style "cloud" databases, such as HBase and others.
* This particular copy of the software is released under the
* version 2 of the GNU General Public License. CloudGraph was developed by
* TerraMeta Software, Inc.
*
* Copyright (c) 2013, TerraMeta Software, Inc. All rights reserved.
*
* General License information can be found below.
*
* This distribution may include materials developed by third
* parties. For license and attribution notices for these
* materials, please refer to the documentation that accompanies
* this distribution (see the "Licenses for Third-Party Components"
* appendix) or view the online documentation at
* <http://cloudgraph.org/licenses/>.
*/
package org.cloudgraph.hbase.graph;
import org.apache.hadoop.hbase.client.Result;
import org.plasma.sdo.access.DataGraphAssembler;
/**
* Constructs a data graph starting with a given root SDO type based on
* a given HBase client <a target="#" href="http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Result.html">result</a> row
* the entire graph being found in the result row or potentially requiring additional scans depending on the
* assembler implementation.
* <p>
* Since every column key in HBase must be unique, and a data graph
* may contain any number of nodes, a column key factory is used both
* to persist as well as re-constitute a graph. A minimal amount of
* "state" information is therefore stored with each graph which maps
* user readable sequence numbers (which are used in column keys) to
* UUID values. The nodes of the resulting data graph are re-created with
* the original UUID values.
* </p>
* @see org.cloudgraph.hbase.key.StatefullColumnKeyFactory
* @see org.plasma.sdo.PlasmaDataGraph
* @see org.apache.hadoop.hbase.client.Result
* @author Scott Cinnamond
* @since 0.5.1
*/
public interface HBaseGraphAssembler extends DataGraphAssembler{
/**
* Re-constitutes a data graph from the given HBase client
* result (row).
* @param resultRow the HBase client
* result (row).
*/
public void assemble(Result resultRow);
}