/*
 *  The MIT License (MIT)
 *
 *  View the full license at:
 *  https://github.com/hendrixjoseph/FamilyTree/blob/master/LICENSE.md
 *
 *  Copyright (c) 2015 Joseph Hendrix
 *
 *  Hosted on GitHub at https://github.com/hendrixjoseph/FamilyTree
 *
 */

package edu.wright.hendrix11.familyTree.entity.place;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.TypedQuery;

/**
 * @author Joe Hendrix
 */
@Entity
@DiscriminatorValue(value = "city")
@NamedQueries({
                      @NamedQuery(name = City.FIND_BY_NAME, query = "SELECT p FROM City p WHERE p.name = :name"),
                      @NamedQuery(name = City.FIND_ALL, query = "SELECT p FROM City p")
              })
public class City extends Place
{
    /**
     * Specifies the {@link String} that represents the {@link NamedQuery} to create a {@link TypedQuery} to get all
     * cities.
     */
    public static final String FIND_ALL = "City.findAll";

    /**
     * Specifies the {@link String} that represents the {@link NamedQuery} to create a {@link TypedQuery} to get all
     * states by name.
     */
    public static final String FIND_BY_NAME = "City.findByName";

    /**
     * Returns the county that the city is in.
     *
     * @return the county that the city is in
     */
    public County getCounty()
    {
        return (County) getRegionByClass(County.class);
    }

    /**
     * @return
     */
    public Country getCountry()
    {
        return (Country) getRegionByClass(Country.class);
    }

    /**
     * @return
     */
    public State getState()
    {
        return (State) getRegionByClass(State.class);
    }

    @Override
    public String getLink()
    {
        StringBuilder sb = new StringBuilder(getName());

        State state = getState();
        Country country = getCountry();

        if ( state != null )
        {
            sb.append(", ").append(state.getName());
        }
        else if ( country != null )
        {
            sb.append(", ").append(country.getName());
        }

        return mapLink(sb.toString());
    }
}

@@ -1192,16 +1192,125 @@
 y name.%0A
+     * %0A     * For example: %7B@code TypedQuery%3CCity%3E query = em.createNamedQuery(City.FIND_ALL, City.class);%7D%0A
      */%0A
@@ -1589,33 +1589,32 @@
 ;%0A    %7D%0A%0A   
- 
 /**%0A    
  * @return%0A 
@@ -1597,36 +1597,119 @@
 %0A   /**%0A    
- * @return%0A 
+* Returns the country that the city is in.%0A    *%0A    * @return the country that the city is in%0A
     */%0A    p
@@ -1809,25 +1809,24 @@
   %7D%0A%0A   
- 
 /**%0A    
  * @retu
@@ -1821,20 +1821,99 @@
     
- * @return%0A 
+* Returns the state that the city is in.%0A    *%0A    * @return the state that the city is in%0A
     
@@ -2006,24 +2006,94 @@
 ss);%0A    %7D%0A%0A
+     /**%0A    * %7B@inheritDoc%7D%0A    *%0A    * @return %7B@inheritDoc%7D%0A    */%0A
     @Overrid

Update City.java