<?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>
  <keyspace name="Employee" host="localhost" cluster="Gora Cassandra Test Cluster">
    <family name="p"/>
    <family name="f"/>
     <family name="sc" type="super" />
  </keyspace>

  <keyspace name="WebPage" host="localhost" cluster="Gora Cassandra Test Cluster">
    <family name="p"/>
    <family name="f"/>
    <family name="sc" type="super"/>
  </keyspace>

  <keyspace name="TokenDatum" host="localhost" cluster="Gora Cassandra Test Cluster">
    <family name="p"/>
    <family name="f"/>
    <family name="sc" type="super"/>
  </keyspace>

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

  <class name="org.apache.gora.examples.generated.WebPage" keyClass="java.lang.String" keyspace="WebPage">
    <field name="url" family="p" qualifier="c:u"/>
    <field name="content" family="p" qualifier="p:cnt:c"/>
    <field name="parsedContent" family="sc" qualifier="p:parsedContent"/>
    <field name="outlinks" family="sc" qualifier="p:outlinks"/>
    <field name="metadata" family="sc" qualifier="c:mt"/>
  </class>

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

</gora-orm>
