public static String getGoalText( final ChallengeGoalData goal, final ChallengeData data, final ChallengeDataModel model) { String rawText = goal.getFormattedString(); if (rawText == null || rawText.length() == 0) { return null; } rawText = (String) ChallengeFormatter.extractValue( rawText, ChallengeFormatter.Type.STRING, model.getParams()); for (Matcher match = ChallengeGoalView.GOAL_BREED_PATTERN.matcher(rawText); match.find(); match = ChallengeGoalView.GOAL_BREED_PATTERN.matcher(rawText)) { final String name = WakfuTranslator.getInstance() .getString(7, PrimitiveConverter.getInteger(match.group(1)), new Object[0]); rawText = match.replaceFirst(name); } for (Matcher match = ChallengeGoalView.GOAL_RESOURCE_PATTERN.matcher(rawText); match.find(); match = ChallengeGoalView.GOAL_RESOURCE_PATTERN.matcher(rawText)) { final String name = WakfuTranslator.getInstance() .getString(12, PrimitiveConverter.getInteger(match.group(1)), new Object[0]); rawText = match.replaceFirst(name); } for (Matcher match = ChallengeGoalView.GOAL_VAR_PATTERN.matcher(rawText); match.find(); match = ChallengeGoalView.GOAL_VAR_PATTERN.matcher(rawText)) { final Long value = data.getVarValue(match.group().substring(1, match.group().length() - 1)); rawText = match.replaceFirst(value.toString()); } return rawText; }