示例#1
0
  /**
   * Gets the validation error messages.
   *
   * @return <code>List</code> of validation error messages
   */
  public List<String> getValidationErrorMessages() {

    ArrayList<String> validationErrors = new ArrayList<>();
    // check if map has an image
    if (map.getImage() == null) {
      validationErrors.add(NO_IMAGE_ERROR_MESSAGE);
    }
    // check if map markers are in valid positions

    // we take the lower left corner of the lowerLeftMarker as the marker position point
    int lowerLeftMarkerPositionX =
        (int) (lowerLeftMarker.getLocation().getX() / scalingRatioToFitContainer);
    int lowerLeftMarkerPositionY =
        (int) (lowerLeftMarker.getLocation().getY() / scalingRatioToFitContainer)
            + (CoordinateZeroMarkerView.ZERO_COORDINATE_MARKER_VIEW_HEIGHT);

    // we take the upper right corner of the upperRightMarker as the marker position point
    int upperRightMarkerPositionX =
        (int) (upperRightMarker.getLocation().getX() / scalingRatioToFitContainer)
            + (CoordinateZeroMarkerView.ZERO_COORDINATE_MARKER_VIEW_WIDTH);
    int upperRightMarkerPositionY =
        (int) (upperRightMarker.getLocation().getY() / scalingRatioToFitContainer);

    if ((lowerLeftMarkerPositionX > upperRightMarkerPositionX)
        || (lowerLeftMarkerPositionY < upperRightMarkerPositionY)) {
      validationErrors.add(INVALID_POSITION_OF_MARKERS_ERROR_MESSAGE);
    }

    // check if receivers are outside the map
    for (ReceiverView receiverView : receiverViews) {
      // we take the middle point of receiverView as the receiver position point
      int receiverViewLocationX =
          (int) (receiverView.getLocation().getX() / scalingRatioToFitContainer)
              + (ReceiverView.RECEIVER_ITEM_WIDTH / 2);
      int receiverViewLocationY =
          (int) (receiverView.getLocation().getY() / scalingRatioToFitContainer)
              + (ReceiverView.RECEIVER_ITEM_HEIGHT / 2);

      if ((receiverViewLocationX < lowerLeftMarkerPositionX)
          || (receiverViewLocationX > upperRightMarkerPositionX)
          || (receiverViewLocationY > lowerLeftMarkerPositionY)
          || (receiverViewLocationY < upperRightMarkerPositionY)) {
        validationErrors.add(
            RECEIVERS_OUT_OF_MAP_ERROR_MESSAGE
                + " Please check receiver "
                + receiverView.getReceiver().getID());
        break;
      }
    }

    return validationErrors;
  }
示例#2
0
  /**
   * Getter for <code>RoomMap</code> object with all its properties, including <code>Receiver</code>
   * s and <code>CoordinateZeroMarkerView</code>s .
   *
   * @return the map
   * @see Receiver
   * @see ReceiverView
   * @see CoordinateZeroMarkerView
   */
  public RoomMap getMap() {

    // set zero coordinate marker positions
    int lowerLeftMarkerOffsetXInPixels =
        (int) (lowerLeftMarker.getLocation().getX() / scalingRatioToFitContainer);
    int lowerLeftMarkerOffsetYInPixels =
        (int) (lowerLeftMarker.getLocation().getY() / scalingRatioToFitContainer)
            + (CoordinateZeroMarkerView.ZERO_COORDINATE_MARKER_VIEW_HEIGHT);
    map.setLowerLeftMarkerOffsetXInPixels(lowerLeftMarkerOffsetXInPixels);
    map.setLowerLeftMarkerOffsetYInPixels(lowerLeftMarkerOffsetYInPixels);

    int upperRightMarkerOffsetXInPixels =
        (int) (upperRightMarker.getLocation().getX() / scalingRatioToFitContainer)
            + (CoordinateZeroMarkerView.ZERO_COORDINATE_MARKER_VIEW_WIDTH);
    int upperRightMarkerOffsetYInPixels =
        (int) (upperRightMarker.getLocation().getY() / scalingRatioToFitContainer);
    map.setUpperRightMarkerOffsetXInPixels(upperRightMarkerOffsetXInPixels);
    map.setUpperRightMarkerOffsetYInPixels(upperRightMarkerOffsetYInPixels);

    // set room width and height in meters
    double roomWidthInMeters = parent.getRoomWidthInMeters();
    double roomHeightInMeters = parent.getRoomHeightInMeters();
    map.setWidthInMeters(roomWidthInMeters);
    map.setHeightInMeters(roomHeightInMeters);

    // set width and height ratios
    int mapWidthInPixels = upperRightMarkerOffsetXInPixels - lowerLeftMarkerOffsetXInPixels;
    int mapHeightInPixels = lowerLeftMarkerOffsetYInPixels - upperRightMarkerOffsetYInPixels;

    double mapWidthRatio = (mapWidthInPixels) / roomWidthInMeters;
    double mapHeightRatio = (mapHeightInPixels) / roomHeightInMeters;

    map.setRatioWidth(mapWidthRatio);
    map.setRatioHeight(mapHeightRatio);

    // set receiver positions in meters
    map.getReceivers().clear(); // first we remove all present receivers
    for (ReceiverView receiverView : receiverViews) {

      int receiverViewXInPixels =
          ((int) (receiverView.getLocation().getX() / scalingRatioToFitContainer))
              + (ReceiverView.RECEIVER_ITEM_WIDTH / 2);
      int receiverViewYInPixels =
          ((int) (receiverView.getLocation().getY() / scalingRatioToFitContainer))
              + (ReceiverView.RECEIVER_ITEM_HEIGHT / 2);

      double receiverPositionInMetersX =
          calculateReceiverPositionInMetersX(
              lowerLeftMarkerOffsetXInPixels, receiverViewXInPixels, mapWidthRatio);
      double receiverPositionInMetersY =
          calculateReceiverPositionInMetersY(
              lowerLeftMarkerOffsetYInPixels, receiverViewYInPixels, mapHeightRatio);

      receiverView.getReceiver().setxPos(receiverPositionInMetersX);
      receiverView.getReceiver().setyPos(receiverPositionInMetersY);

      map.addReceiver(receiverView.getReceiver());
    }

    // set map title
    String titleFromInput = parent.getRoomTitle();
    map.setTitle(titleFromInput.equals("") ? "Unkown" : titleFromInput);

    // set map xFrom, xTo, yFrom and yTo values
    map.setxFrom(0);
    map.setxTo(map.getWidthInMeters());
    map.setyFrom(0);
    map.setyTo(map.getHeightInMeters());

    Application.getApplication().setRoomMap(map);

    return map;
  }