[PATCH] Use new executor API to run reports

13 views
Skip to first unread message

Lubomir Rintel

unread,
Aug 30, 2010, 9:52:09 AM8/30/10
to gooddata...@googlegroups.com, Quick Assistance, Lubomir Rintel
---
.../integration/rest/GdcRESTApiWrapper.java | 76 +++++---------------
.../main/java/com/gooddata/processor/GdcDI.java | 8 --
2 files changed, 19 insertions(+), 65 deletions(-)

diff --git a/backend/src/main/java/com/gooddata/integration/rest/GdcRESTApiWrapper.java b/backend/src/main/java/com/gooddata/integration/rest/GdcRESTApiWrapper.java
index 564d106..2a7f1e4 100644
--- a/backend/src/main/java/com/gooddata/integration/rest/GdcRESTApiWrapper.java
+++ b/backend/src/main/java/com/gooddata/integration/rest/GdcRESTApiWrapper.java
@@ -69,7 +69,7 @@ public class GdcRESTApiWrapper {
private static final String DLI_DESCRIPTOR_URI = "/descriptor";
public static final String MAQL_EXEC_URI = "/ldm/manage";
public static final String REPORT_QUERY = "/query/reports";
- public static final String EXECUTOR = "/gdc/xtab2/executor";
+ public static final String EXECUTOR = "/gdc/xtab2/executor3";
public static final String INVITATION_URI = "/invitations";
public static final String OBJ_URI = "/obj";

@@ -545,8 +545,7 @@ public class GdcRESTApiWrapper {
PostMethod execPost = new PostMethod(config.getUrl() + EXECUTOR);
setJsonHeaders(execPost);
JSONObject execDef = new JSONObject();
- //execDef.put("reportDefinition",reportDefUri);
- execDef.put("report",reportDefUri);
+ execDef.put("reportDefinition",reportDefUri);
JSONObject exec = new JSONObject();
exec.put("report_req", execDef);
InputStreamRequestEntity request = new InputStreamRequestEntity(new ByteArrayInputStream(exec.toString().getBytes()));
@@ -555,34 +554,25 @@ public class GdcRESTApiWrapper {
try {
String task = executeMethodOk(execPost);
if(task != null && task.length()>0) {
- task = task.substring(1,task.length()-1);
- HttpMethod tg = new GetMethod(config.getUrl() + task);
- setJsonHeaders(tg);
- try {
- String t = executeMethodOk(tg);
- JSONObject tr = JSONObject.fromObject(t);
- if(tr.isNullObject()) {
- l.debug("Executing report definition uri="+reportDefUri + " failed. Returned invalid result result="+tr);
- throw new GdcRestApiException("Executing report definition uri="+reportDefUri + " failed. " +
- "Returned invalid result result="+tr);
- }
- JSONObject reportResult = tr.getJSONObject("reportResult");
- if(reportResult.isNullObject()) {
- l.debug("Executing report definition uri="+reportDefUri + " failed. Returned invalid result result="+tr);
- throw new GdcRestApiException("Executing report definition uri="+reportDefUri + " failed. " +
- "Returned invalid result result="+tr);
- }
- JSONObject content = reportResult.getJSONObject("content");
- if(content.isNullObject()) {
- l.debug("Executing report definition uri="+reportDefUri + " failed. Returned invalid result result="+tr);
- throw new GdcRestApiException("Executing report definition uri="+reportDefUri + " failed. " +
- "Returned invalid result result="+tr);
- }
- return content.getString("dataResult");
+ JSONObject tr = JSONObject.fromObject(task);
+ if(tr.isNullObject()) {
+ l.debug("Executing report definition uri="+reportDefUri + " failed. Returned invalid result result="+tr);
+ throw new GdcRestApiException("Executing report definition uri="+reportDefUri + " failed. " +
+ "Returned invalid result result="+tr);
}
- finally {
- tg.releaseConnection();
+ JSONObject reportResult = tr.getJSONObject("reportResult2");
+ if(reportResult.isNullObject()) {
+ l.debug("Executing report definition uri="+reportDefUri + " failed. Returned invalid result result="+tr);
+ throw new GdcRestApiException("Executing report definition uri="+reportDefUri + " failed. " +
+ "Returned invalid result result="+tr);
}
+ JSONObject content = reportResult.getJSONObject("content");
+ if(content.isNullObject()) {
+ l.debug("Executing report definition uri="+reportDefUri + " failed. Returned invalid result result="+tr);
+ throw new GdcRestApiException("Executing report definition uri="+reportDefUri + " failed. " +
+ "Returned invalid result result="+tr);
+ }
+ return content.getString("dataResult");
}
else {
l.debug("Executing report definition uri="+reportDefUri + " failed. Returned invalid task link uri="+task);
@@ -598,34 +588,6 @@ public class GdcRESTApiWrapper {
}

/**
- * Checks if the report execution is finished
- *
- * @param link the link returned exec report
- * @return the loading status (true - finished, false - not yet)
- */
- public boolean getReportExecutionStatus(String link) throws HttpMethodException {
- l.debug("Getting report execution status uri="+link);
- HttpMethod ptm = new GetMethod(config.getUrl() + link);
- setJsonHeaders(ptm);
- try {
- executeMethodOk(ptm);
- }
- catch (HttpMethodNotFinishedYetException e) {
- l.debug("Got report execution status uri="+link+" status="+false);
- return false;
- }
- catch (HttpMethodNoContentException e) {
- l.debug("Got report execution status uri="+link+" status=EMPTY");
- return true;
- }
- finally {
- ptm.releaseConnection();
- }
- l.debug("Got report execution status uri="+link+" status="+true);
- return true;
- }
-
- /**
* Kicks the GDC platform to inform it that the FTP transfer is finished.
*
* @param projectId the project's ID
diff --git a/cli/src/main/java/com/gooddata/processor/GdcDI.java b/cli/src/main/java/com/gooddata/processor/GdcDI.java
index c9a451d..02fa950 100644
--- a/cli/src/main/java/com/gooddata/processor/GdcDI.java
+++ b/cli/src/main/java/com/gooddata/processor/GdcDI.java
@@ -789,14 +789,6 @@ public class GdcDI implements Executor {
String defUri = ctx.getRestApi(p).getReportDefinition(uri.trim());
l.info("Executing report uri="+defUri);
String task = ctx.getRestApi(p).executeReportDefinition(defUri.trim());
- boolean finished = false;
- do {
- finished = ctx.getRestApi(p).getReportExecutionStatus(task);
- if(!finished)
- Thread.sleep(1500);
- l.info("Checking report " +defUri+ " execution finished status="+finished);
- }
- while(!finished);
l.info("Report " +defUri+ " execution finished.");
}
}
--
1.7.2.1

Reply all
Reply to author
Forward
0 new messages