public static EmbedConfig getEmbedConfig()

in Java/Embed for your customers/AppOwnsData/src/main/java/com/embedsample/appownsdata/services/PowerBIService.java [55:133]


	public static EmbedConfig getEmbedConfig(String accessToken, String workspaceId, String reportId, String... additionalDatasetIds) throws JsonMappingException, JsonProcessingException {
		if (reportId == null || reportId.isEmpty()) {
			throw new RuntimeException("Empty Report Id");
		}
		if (workspaceId == null || workspaceId.isEmpty()) {
			throw new RuntimeException("Empty Workspace Id");
		}
		
		// Get Report In Group API: https://api.powerbi.com/v1.0/myorg/groups/{workspaceId}/reports/{reportId}
		StringBuilder urlStringBuilder = new StringBuilder("https://api.powerbi.com/v1.0/myorg/groups/"); 
		urlStringBuilder.append(workspaceId);
		urlStringBuilder.append("/reports/");
		urlStringBuilder.append(reportId);
		
		// Request header
		HttpHeaders reqHeader = new HttpHeaders();
		reqHeader.put("Content-Type", Arrays.asList("application/json"));
		reqHeader.put("Authorization", Arrays.asList("Bearer " + accessToken));
		
		// HTTP entity object - holds header and body
		HttpEntity<String> reqEntity = new HttpEntity<> (reqHeader);
		
		// REST API URL to get report details
		String endPointUrl = urlStringBuilder.toString();
		
		// Rest API get report's details
		RestTemplate getReportRestTemplate = new RestTemplate();
		ResponseEntity<String> response = getReportRestTemplate.exchange(endPointUrl, HttpMethod.GET, reqEntity, String.class);
		
		HttpHeaders responseHeader = response.getHeaders();
		String responseBody = response.getBody();
		
		// Create embedding configuration object
		EmbedConfig reportEmbedConfig = new EmbedConfig();
		
		// Create Object Mapper to convert String into Object
		ObjectMapper mapper = new ObjectMapper();
		mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
		
		// Convert responseBody string into ReportConfig class object
		ReportConfig embedReport = mapper.readValue(responseBody, ReportConfig.class);
		
		// Add embed config to client response object
		reportEmbedConfig.embedReports = new ArrayList<ReportConfig>();
		reportEmbedConfig.embedReports.add(embedReport);
		
		if (Config.DEBUG) {
			
			// Get the request Id
			List<String> reqIdList = responseHeader.get("RequestId");
			
			// Log progress
			logger.info("Retrieved report details");
						
			// Log Request Id
			if (reqIdList != null && !reqIdList.isEmpty()) {
				for (String reqId: reqIdList) {
					logger.info("Request Id: {}", reqId);
				}
			}
		}
		
		// Parse string into report object and get Report details
		JSONObject responseObj = new JSONObject(responseBody);
		
		// Create a list of DatasetIds
		List<String> datasetIds = new ArrayList<String>();
		datasetIds.add(responseObj.getString("datasetId"));
		
		// Append to existing list of datasetIds to achieve dynamic binding later
		for (String datasetId : additionalDatasetIds) {
			datasetIds.add(datasetId);
			System.out.println(datasetId);
		}
		
		// Get embed token
		reportEmbedConfig.embedToken = PowerBIService.getEmbedToken(accessToken, reportId, datasetIds);
		return reportEmbedConfig;
	}