/** * 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; }
/** * 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; }