// Path: de.hatoka.common/src/main/java/de/hatoka/common/capi/dao/UUIDGenerator.java
// public interface UUIDGenerator
// {
//     public String generate();
// }
// 
// Path: de.hatoka.group/src/main/java/de/hatoka/group/capi/dao/MemberDao.java
// public interface MemberDao extends Dao<MemberPO>
// {
//     /**
//      * Add member to group
//      * @param groupPO
//      * @param userRef
//      * @return
//      */
//     public MemberPO createAndInsert(GroupPO groupPO, String userRef, String name);
// 
//     /**
//      * @param userRef
//      *            any userRef
//      * @return list of members
//      */
//     List<MemberPO> getByUser(String userRef);
// }
// 
// Path: de.hatoka.group/src/main/java/de/hatoka/group/capi/entities/GroupPO.java
// @Entity
// @NamedQueries(value = {
//                 @NamedQuery(name = "GroupPO.findByName", query = "select a from GroupPO a where a.name = :name"),
//                 @NamedQuery(name = "GroupPO.findByOwnerRef", query = "select a from GroupPO a where a.ownerRef = :ownerRef")
// })
// public class GroupPO implements Serializable, IdentifiableEntity
// {
//     private static final long serialVersionUID = 1L;
// 
//     @Id
//     @XmlTransient
//     private String id;
// 
//     @NotNull
//     private String name;
// 
//     @NotNull
//     private String ownerRef;
// 
//     @OneToMany(mappedBy = "groupPO", cascade = CascadeType.ALL)
//     @XmlElement(name = "member")
//     private List<MemberPO> members = new ArrayList<>();
// 
//     public GroupPO()
//     {
//     }
// 
//     @Override
//     public boolean equals(Object obj)
//     {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         GroupPO other = (GroupPO)obj;
//         if (id == null)
//         {
//             if (other.id != null)
//                 return false;
//         }
//         else if (!id.equals(other.id))
//             return false;
//         return true;
//     }
// 
//     @Override
//     public String getId()
//     {
//         return id;
//     }
// 
//     @Override
//     public void setId(String id)
//     {
//         this.id = id;
//     }
// 
//     public String getName()
//     {
//         return name;
//     }
// 
//     public void setName(String name)
//     {
//         this.name = name;
//     }
// 
//     public List<MemberPO> getMembers()
//     {
//         return members;
//     }
// 
//     public void setMembers(List<MemberPO> members)
//     {
//         this.members = members;
//     }
// 
//     public String getOwnerRef()
//     {
//         return ownerRef;
//     }
// 
//     public void setOwnerRef(String ownerRef)
//     {
//         this.ownerRef = ownerRef;
//     }
// }


import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import de.hatoka.common.capi.dao.GenericJPADao;
import de.hatoka.common.capi.dao.UUIDGenerator;
import de.hatoka.group.capi.dao.GroupDao;
import de.hatoka.group.capi.dao.MemberDao;
import de.hatoka.group.capi.entities.GroupPO;
package de.hatoka.group.internal.dao;




public class GroupDaoJpa extends GenericJPADao<GroupPO> implements GroupDao
{
    @Inject
// Path: de.hatoka.common/src/main/java/de/hatoka/common/capi/dao/UUIDGenerator.java
// public interface UUIDGenerator
// {
//     public String generate();
// }
// 
// Path: de.hatoka.group/src/main/java/de/hatoka/group/capi/dao/MemberDao.java
// public interface MemberDao extends Dao<MemberPO>
// {
//     /**
//      * Add member to group
//      * @param groupPO
//      * @param userRef
//      * @return
//      */
//     public MemberPO createAndInsert(GroupPO groupPO, String userRef, String name);
// 
//     /**
//      * @param userRef
//      *            any userRef
//      * @return list of members
//      */
//     List<MemberPO> getByUser(String userRef);
// }
// 
// Path: de.hatoka.group/src/main/java/de/hatoka/group/capi/entities/GroupPO.java
// @Entity
// @NamedQueries(value = {
//                 @NamedQuery(name = "GroupPO.findByName", query = "select a from GroupPO a where a.name = :name"),
//                 @NamedQuery(name = "GroupPO.findByOwnerRef", query = "select a from GroupPO a where a.ownerRef = :ownerRef")
// })
// public class GroupPO implements Serializable, IdentifiableEntity
// {
//     private static final long serialVersionUID = 1L;
// 
//     @Id
//     @XmlTransient
//     private String id;
// 
//     @NotNull
//     private String name;
// 
//     @NotNull
//     private String ownerRef;
// 
//     @OneToMany(mappedBy = "groupPO", cascade = CascadeType.ALL)
//     @XmlElement(name = "member")
//     private List<MemberPO> members = new ArrayList<>();
// 
//     public GroupPO()
//     {
//     }
// 
//     @Override
//     public boolean equals(Object obj)
//     {
//         if (this == obj)
//             return true;
//         if (obj == null)
//             return false;
//         if (getClass() != obj.getClass())
//             return false;
//         GroupPO other = (GroupPO)obj;
//         if (id == null)
//         {
//             if (other.id != null)
//                 return false;
//         }
//         else if (!id.equals(other.id))
//             return false;
//         return true;
//     }
// 
//     @Override
//     public String getId()
//     {
//         return id;
//     }
// 
//     @Override
//     public void setId(String id)
//     {
//         this.id = id;
//     }
// 
//     public String getName()
//     {
//         return name;
//     }
// 
//     public void setName(String name)
//     {
//         this.name = name;
//     }
// 
//     public List<MemberPO> getMembers()
//     {
//         return members;
//     }
// 
//     public void setMembers(List<MemberPO> members)
//     {
//         this.members = members;
//     }
// 
//     public String getOwnerRef()
//     {
//         return ownerRef;
//     }
// 
//     public void setOwnerRef(String ownerRef)
//     {
//         this.ownerRef = ownerRef;
//     }
// }


// Path: de.hatoka.group/src/main/java/de/hatoka/group/internal/dao/GroupDaoJpa.java
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import de.hatoka.common.capi.dao.GenericJPADao;
import de.hatoka.common.capi.dao.UUIDGenerator;
import de.hatoka.group.capi.dao.GroupDao;
import de.hatoka.group.capi.dao.MemberDao;
import de.hatoka.group.capi.entities.GroupPO;

package de.hatoka.group.internal.dao;




public class GroupDaoJpa extends GenericJPADao<GroupPO> implements GroupDao
{
    @Inject
    private UUIDGenerator uuidGenerator;