public static String getParseableText(final Waypoint wp) {
        final StringBuilder sb = new StringBuilder();
        //name
        sb.append(PARSING_NAME_PRAEFIX);
        if (!wp.isUserDefined()) {
            sb.append(PARSING_PREFIX_OPEN).append(wp.getPrefix()).append(PARSING_PREFIX_CLOSE);
        }
        sb.append(wp.getName()).append(" ");

        //type
        sb.append(PARSING_TYPE_OPEN).append(wp.getWaypointType().getShortId().toUpperCase(Locale.US))
                .append(PARSING_TYPE_CLOSE).append(" ");

        //visited-flag
        if (wp.isVisited()) {
            sb.append(PARSING_VISITED_FLAG).append(" ");
        }

        // formula
        final String formulaString = getParseableFormula(wp);
        if (StringUtils.isNotEmpty(formulaString)) {
            sb.append(formulaString);
        } else {
            //coordinate
            if (wp.getPreprojectedCoords() == null) {
                sb.append(PARSING_COORD_EMPTY);
            } else {
                sb.append(wp.getPreprojectedCoords().format(GeopointFormatter.Format.LAT_LON_DECMINUTE_SHORT_RAW));
            }
        }

        //projection
        if (wp.getProjectionType() != ProjectionType.NO_PROJECTION) {
            sb.append(wp.getProjectionConfig());
        }

        //user note
        final String userNote = wp.getUserNote();
        if (!StringUtils.isBlank(userNote)) {
            //if user note contains itself newlines, then start user note on a second line
            sb.append(userNote.contains("\n") ? "\n" : " ");
            sb.append(TextUtils.createDelimitedValue(userNote, PARSING_USERNOTE_DELIM, PARSING_USERNOTE_ESCAPE));
        }

        return sb.toString();
    }
creates parseable waypoint text

@return parseable waypoint text
main/src/main/java/cgeo/geocaching/models/CacheArtefactParser.java