<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<head>
   <title>Gora</title>
</head>

<body>

  <h2> Introduction </h2>
  <p>This is the javadoc for Gora. This javadoc captures all of the modules in Gora.</p>

  <h2> Gora Modules </h2>
  <p> Gora source code is organized in a modular architecture. The <b>gora-core</b> module is the main module which contains the core of the code.
  All other modules depend on the gora-core module. Each data store backend in Gora resides in it's own module. The documentation for the specific module 
  can be found at the module's documentation directory. </p>

  <p> Source code for gora modules is organized as follows: </p>
  <p> <ul>
    <li><b> gora/&lt;module-name&gt;/src/main/java</b>: Main codes in Java  </li>
    <li><b> gora/&lt;module-name&gt;/src/main/avro</b>: Avro schema definitions used in main </li>
    <li><b> gora/&lt;module-name&gt;/src/test/java</b>: Unit test codes in Java  </li>
    <li><b> gora/&lt;module-name&gt;/src/test/avro</b>: Avro schema definitions used in unit tests </li>
    <li><b> gora/&lt;module-name&gt;/src/examples/java</b>: Example codes in Java </li>
    <li><b> gora/&lt;module-name&gt;/src/examples/avro</b>: Example avro schema definitions</li>
  </ul></p>
   
  <h2> gora-core </h2>
  <p> gora-core module contains the source code for the main functionality in Gora. </p>

  <h2> gora-cassandra </h2>
  <p> gora-cassandra module contains the source code for the <a href="http://cassandra.apache.org/">Apache Cassandra</a> backend. </p>

  <h2> gora-hbase </h2>
  <p> gora-hbase module contains the source code for the <a href="http://hbase.apache.org/">Apache HBase</a> backend. </p>

  <h2> gora-sql </h2>
  <p> gora-sql module contains the source code for the SQL backends. Currently MySQL and HSQLDB is supported. </p>
  
  <h2> gora-accumulo </h2>
  <p> gora-accumulo module contains the source code for the <a href="http://accumulo.apache.org/">Apache Accumulo</a> backend. </p>

  <h2> More information </h2> 
  <p> Most of the documentation about the project is kept at the project <a href="http://gora.apache.org">web site</a> or at the <a href="https://cwiki.apache.org/confluence/display/GORA/Index">wiki</a>. </p>
  
</body>
</html>

