public String getFormattedReport(boolean hideUninterestingLines)
	{
		StringBuffer sb = new StringBuffer();

		for (String pageName : pageCount.keySet())
		{
			Map<String, Integer> count = pageCount.get(pageName);
			SortedSet<Map.Entry<String,Integer>> sortedCount = ProfilerResults.getSortedCountsStatic(hideUninterestingLines, count, applicationPackage);

			if (!sortedCount.isEmpty())
			{
				sb.append(NEWLINE);
				sb.append("Page \"" + pageName + "\"" + NEWLINE);
				for (Map.Entry<String,Integer> entry : sortedCount)
				{
					sb.append((entry.getValue() * pollingInterval) + "ms " + entry.getKey() + NEWLINE);
				}
			}
		}

		for (String jobName : jobCount.keySet())
		{
			Map<String, Integer> count = jobCount.get(jobName);
			SortedSet<Map.Entry<String,Integer>> sortedCount = ProfilerResults.getSortedCountsStatic(hideUninterestingLines, count, applicationPackage);

			if (!sortedCount.isEmpty())
			{
				sb.append(NEWLINE);
				sb.append("Job \"" + jobName + "\"" + NEWLINE);
				for (Map.Entry<String,Integer> entry : sortedCount)
				{
					sb.append((entry.getValue() * pollingInterval) + "ms " + entry.getKey() + NEWLINE);
				}
			}
		}

		SortedSet<Map.Entry<String,Integer>> sortedOverallCount = ProfilerResults.getSortedCountsStatic(hideUninterestingLines, overallCount, applicationPackage);

		if (!sortedOverallCount.isEmpty())
		{
			sb.append(NEWLINE);
			sb.append("Overall" + NEWLINE);
			for (Map.Entry<String,Integer> entry : sortedOverallCount)
			{
				sb.append((entry.getValue() * pollingInterval) + "ms " + entry.getKey() + NEWLINE);
			}
		}

		return sb.toString();
	}