/**
   * Method composedUpdate.
   *
   * @param object
   * @param parent
   */
  public void composedUpdateOrAdd(ValueObject changedVO, FacilityValue parent) throws Exception {

    if (changedVO == null || parent == null) {
      throw new IllegalArgumentException("No null values allowed for this method");
    }

    if (changedVO instanceof ServiceAreaValue) {

      ServiceAreaValue changedObject = (ServiceAreaValue) changedVO;

      if (changedObject.getClientValueObjectProxy().isNew()) {
        // changedObject is a new object
        log.debug("composedUpdate FacilityService add");
        // add to database
        changedObject.setFacilityId(parent.getId().longValue());
        add(changedObject);
        // add to value object
        parent.getServiceAreas().add(changedObject);

        changedObject.getClientValueObjectProxy().setNew(false);
        changedObject.getClientValueObjectProxy().setChanged(false);

      } else {
        log.debug("composedUpdate FacilityService update");
        // update database
        update(changedObject);
        changedObject.getClientValueObjectProxy().setChanged(false);
        parent.getClientValueObjectProxy().fireChange();
      }
    }
  }