@Override
    public void addChild(Location parent, Location newChild) {
      if (this.manager != null) {
        parent.getChildLocations().add(newChild);
        newChild.setParentLocation(parent);

        manager.persistLocation(newChild);
      }
    }
    @Override
    public boolean removeChild(Location child) {
      if (child.getParentLocation() != null && manager != null) {
        child.getParentLocation().getChildLocations().remove(child);
        child.setParentLocation(null);

        manager.cascadeDeleteLocation(child.getId());

        return true;
      }

      return false;
    }
 @Override
 public boolean hasChildren(Location item) {
   return item.getChildLocations().size() > 0;
 }
 @Override
 public List<Location> getChildren(Location item) {
   return new ArrayList<Location>(item.getChildLocations());
 }
 @Override
 public Location getParent(Location item) {
   return item.getParentLocation();
 }