<?xml version="1.0" encoding="UTF-8"?>

<!--
   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.
-->

<gora-orm>

  <table name="Employee"> <!-- optional descriptors for tables -->
    <family name="info"/> <!-- This can also have params like compression, bloom filters -->
  </table>

  <table name="WebPage">
    <family name="common"/>
    <family name="content"/>
    <family name="parsedContent"/>
    <family name="outlinks"/>
  </table>

  <class name="org.apache.gora.examples.generated.Employee" keyClass="java.lang.String" table="Employee">
    <field name="name" family="info" qualifier="nm"/>
    <field name="dateOfBirth" family="info" qualifier="db"/>
    <field name="ssn" family="info" qualifier="sn"/>
    <field name="salary" family="info" qualifier="sl"/>
  </class>

  <class name="org.apache.gora.examples.generated.WebPage" keyClass="java.lang.String" table="WebPage">
    <field name="url" family="common" qualifier="u"/>
    <field name="content" family="content"/>
    <field name="parsedContent" family="parsedContent"/>
    <field name="outlinks" family="outlinks"/>
    <field name="metadata" family="common" qualifier="metadata"/>
  </class>


  <class name="org.apache.gora.examples.generated.TokenDatum" keyClass="java.lang.String">
    <field name="count" family="common" qualifier="count"/>
  </class>

</gora-orm>
