public void addArgument(IPeopleQueryArgument argument) {

    if (getArgumentMap().containsKey(argument.getName())) {
      throw new RuntimeException(
          "There is already exists an argument with name "
              + argument.getName()
              + " within the people query.");
    }

    List<Peoplequeryargument> peopleQueryArgEntities = peopleQueryEntity.getPeoplequeryarguments();

    /* If the people query doesn't contain any arguments yet the list
     * of people query arguments is null.
     */
    if (peopleQueryArgEntities == null) {
      peopleQueryArgEntities = new ArrayList<Peoplequeryargument>();
      peopleQueryEntity.setPeoplequeryarguments(peopleQueryArgEntities);
    }

    Peoplequeryargument peopleQueryArgEntity = (Peoplequeryargument) argument.getAdaptee();
    /*
     * There is a bidirectional relation between people
     * query entities and people query argument entities consequently
     * both sides of the relationship have to be set.
     */
    peopleQueryArgEntities.add(peopleQueryArgEntity);
    peopleQueryArgEntity.setPeoplequeryBean(peopleQueryEntity);
  }
  public PeopleQueryWrapper(Peoplequery adaptee) {

    if (adaptee.getLogicalpeoplegroupdef() == null) {
      throw new RuntimeException(
          "Invalid people query. "
              + "There must be always a logical people group definition "
              + "associated with the people query.");
    }
    this.peopleQueryEntity = adaptee;
  }
  public void removeArgument(IPeopleQueryArgument argumentToRemove) {
    List<Peoplequeryargument> queryArgumentEntities = peopleQueryEntity.getPeoplequeryarguments();

    /* Search for the argument that is to be removed (simply by name).
     * If the people query hasn't any arguments queryArgumentEntities is null */
    if (queryArgumentEntities != null) {
      Iterator<Peoplequeryargument> iter = queryArgumentEntities.iterator();
      /* Iterate over all arguments and remove the argument that has the same
       * name like the argument that is to be delete.  */
      while (iter.hasNext()) {
        String argumentName = getPeopleQueryArgumentName(iter.next());
        if (argumentName.equals(argumentToRemove.getName())) {
          /* Remove people query argument */
          iter.remove();
        }
      }
    }
  }
  protected Map<String, IPeopleQueryArgument> getArgumentMap() {
    List<Peoplequeryargument> argumentEntities = peopleQueryEntity.getPeoplequeryarguments();

    Map<String, IPeopleQueryArgument> arguments = new HashMap<String, IPeopleQueryArgument>();
    if (argumentEntities != null) {
      /* Get all people query arguments and their associated names */
      Iterator<Peoplequeryargument> iter = argumentEntities.iterator();
      while (iter.hasNext()) {
        Peoplequeryargument peoplequeryArgument = (Peoplequeryargument) iter.next();
        /* Get the name of the people query argument */
        String argumentName = getPeopleQueryArgumentName(peoplequeryArgument);
        if (argumentName != null) {
          /* Add the name and the people query argument model to the map */
          arguments.put(
              argumentName,
              /* Determine the model of the people query argument */
              ModelElementFactory.newInstance().createPeopleGroupArgument(peoplequeryArgument));
        }
      }
    }
    return arguments;
  }
  public void setLogicalPeopleGroupDef(ILogicalPeopleGroupDef lpgDefinition) {
    Logicalpeoplegroupdef lpgDefEntity = (Logicalpeoplegroupdef) lpgDefinition.getAdaptee();

    /*
     * There is a bidirectional relation between LPG definitions and people
     * queries in the generated JPA entities consequently both sides of the relationship
     * have to be set.
     */

    peopleQueryEntity.setLogicalpeoplegroupdef(lpgDefEntity);

    /* The list contains all people queries which are already
     * associated with the LPG definition */
    List<Peoplequery> peopleQueryEntities = lpgDefEntity.getPeoplequeries();

    /* If this people query is the first one that is associated with the
     * LPG definition the list is null thus it has to be instantiated */
    if (peopleQueryEntities == null) {
      peopleQueryEntities = new ArrayList<Peoplequery>();
      lpgDefEntity.setPeoplequeries(peopleQueryEntities);
    }
    peopleQueryEntities.add(peopleQueryEntity);
  }
 public String getId() {
   return Integer.toString(peopleQueryEntity.getId());
 }
 public ILogicalPeopleGroupDef getBoundPeopleGroup() {
   /* Create the model of the LPG definition from the entity model */
   return ModelElementFactory.newInstance()
       .createPeopleGroupDefinition(peopleQueryEntity.getLogicalpeoplegroupdef());
 }