You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by jo...@apache.org on 2018/08/26 04:44:21 UTC
[38/49] zeppelin git commit: [ZEPPELIN-3740] Adopt
`google-java-format` and `fmt-maven-plugin`
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/55f6c91c/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseClient.java
----------------------------------------------------------------------
diff --git a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseClient.java b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseClient.java
index c397f45..8c87fbc 100644
--- a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseClient.java
+++ b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseClient.java
@@ -18,6 +18,20 @@
package org.apache.zeppelin.sap.universe;
import com.sun.org.apache.xpath.internal.NodeSet;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.http.Header;
@@ -38,24 +52,7 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpression;
-import javax.xml.xpath.XPathExpressionException;
-import javax.xml.xpath.XPathFactory;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Client for API SAP Universe
- */
+/** Client for API SAP Universe */
public class UniverseClient {
private static Logger logger = LoggerFactory.getLogger(UniverseClient.class);
@@ -76,8 +73,7 @@ public class UniverseClient {
private String apiUrl;
private String authType;
private Header[] commonHeaders = {
- new BasicHeader("Accept", "application/xml"),
- new BasicHeader("Content-Type", "application/xml")
+ new BasicHeader("Accept", "application/xml"), new BasicHeader("Content-Type", "application/xml")
};
// <name, id>
private final Map<String, UniverseInfo> universesMap = new ConcurrentHashMap();
@@ -87,53 +83,55 @@ public class UniverseClient {
private long universesUpdated = 0;
private Map<String, Long> universesInfoUpdatedMap = new HashMap<>();
- private final String loginRequestTemplate = "<attrs xmlns=\"http://www.sap.com/rws/bip\">\n"
- + "<attr name=\"userName\" type=\"string\">%s</attr>\n"
- + "<attr name=\"password\" type=\"string\">%s</attr>\n"
- + "<attr name=\"auth\" type=\"string\" "
- + "possibilities=\"secEnterprise,secLDAP,secWinAD,secSAPR3\">%s</attr>\n" + "</attrs>";
+ private final String loginRequestTemplate =
+ "<attrs xmlns=\"http://www.sap.com/rws/bip\">\n"
+ + "<attr name=\"userName\" type=\"string\">%s</attr>\n"
+ + "<attr name=\"password\" type=\"string\">%s</attr>\n"
+ + "<attr name=\"auth\" type=\"string\" "
+ + "possibilities=\"secEnterprise,secLDAP,secWinAD,secSAPR3\">%s</attr>\n"
+ + "</attrs>";
private final String createQueryRequestTemplate =
- "<query xmlns=\"http://www.sap.com/rws/sl/universe\" dataSourceType=\"%s\" " +
- "dataSourceId=\"%s\">\n" +
- "<querySpecification version=\"1.0\">\n" +
- " <queryOptions>\n" +
- " <queryOption name=\"duplicatedRows\" value=\"%s\"/>\n" +
- " <queryOption name=\"maxRowsRetrieved\" activated=\"%s\" value=\"%d\"/>\n" +
- " </queryOptions>" +
- " <queryData>\n%s\n" +
- " %s\n" +
- " </queryData>\n" +
- "</querySpecification>\n" +
- "</query>\n";
+ "<query xmlns=\"http://www.sap.com/rws/sl/universe\" dataSourceType=\"%s\" "
+ + "dataSourceId=\"%s\">\n"
+ + "<querySpecification version=\"1.0\">\n"
+ + " <queryOptions>\n"
+ + " <queryOption name=\"duplicatedRows\" value=\"%s\"/>\n"
+ + " <queryOption name=\"maxRowsRetrieved\" activated=\"%s\" value=\"%d\"/>\n"
+ + " </queryOptions>"
+ + " <queryData>\n%s\n"
+ + " %s\n"
+ + " </queryData>\n"
+ + "</querySpecification>\n"
+ + "</query>\n";
private final String filterPartTemplate = "<filterPart>%s\n</filterPart>";
private final String errorMessageTemplate = "%s\n\n%s";
- private final String parameterTemplate = "<parameter type=\"prompt\">\n" +
- "%s\n" +
- "%s\n" +
- "%s\n" +
- "%s\n" +
- "</parameter>\n";
- private final String parameterAnswerTemplate = "<answer constrained=\"%s\" type=\"%s\">\n" +
- " <info cardinality=\"%s\" keepLastValues=\"%s\"></info>\n" +
- " <values>\n" + " " +
- " <value>%s</value>\n" +
- " </values>\n" +
- " </answer>\n";
-
- public UniverseClient(String user, String password, String apiUrl, String authType,
- int queryTimeout) {
- RequestConfig requestConfig = RequestConfig.custom()
- .setConnectTimeout(queryTimeout)
- .setSocketTimeout(queryTimeout)
- .build();
+ private final String parameterTemplate =
+ "<parameter type=\"prompt\">\n" + "%s\n" + "%s\n" + "%s\n" + "%s\n" + "</parameter>\n";
+ private final String parameterAnswerTemplate =
+ "<answer constrained=\"%s\" type=\"%s\">\n"
+ + " <info cardinality=\"%s\" keepLastValues=\"%s\"></info>\n"
+ + " <values>\n"
+ + " "
+ + " <value>%s</value>\n"
+ + " </values>\n"
+ + " </answer>\n";
+
+ public UniverseClient(
+ String user, String password, String apiUrl, String authType, int queryTimeout) {
+ RequestConfig requestConfig =
+ RequestConfig.custom()
+ .setConnectTimeout(queryTimeout)
+ .setSocketTimeout(queryTimeout)
+ .build();
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(100);
cm.setDefaultMaxPerRoute(100);
cm.closeIdleConnections(10, TimeUnit.MINUTES);
- httpClient = HttpClientBuilder.create()
- .setConnectionManager(cm)
- .setDefaultRequestConfig(requestConfig)
- .build();
+ httpClient =
+ HttpClientBuilder.create()
+ .setConnectionManager(cm)
+ .setDefaultRequestConfig(requestConfig)
+ .build();
this.user = user;
this.password = password;
@@ -150,68 +148,98 @@ public class UniverseClient {
try {
httpClient.close();
} catch (Exception e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient " +
- "(close all): Error close HTTP client", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(close all): Error close HTTP client",
+ ExceptionUtils.getStackTrace(e)));
}
-
}
public String createQuery(String token, UniverseQuery query) throws UniverseException {
try {
HttpPost httpPost = new HttpPost(String.format("%s%s", apiUrl, "/sl/v1/queries"));
setHeaders(httpPost, token);
- String where = StringUtils.isNotBlank(query.getWhere()) ?
- String.format(filterPartTemplate, query.getWhere()) : StringUtils.EMPTY;
- httpPost.setEntity(new StringEntity(
- String.format(createQueryRequestTemplate, query.getUniverseInfo().getType(),
- query.getUniverseInfo().getId(), query.getDuplicatedRows(),
- query.getMaxRowsRetrieved().isPresent(), query.getMaxRowsRetrieved().orElse(0),
- query.getSelect(), where), "UTF-8"));
+ String where =
+ StringUtils.isNotBlank(query.getWhere())
+ ? String.format(filterPartTemplate, query.getWhere())
+ : StringUtils.EMPTY;
+ httpPost.setEntity(
+ new StringEntity(
+ String.format(
+ createQueryRequestTemplate,
+ query.getUniverseInfo().getType(),
+ query.getUniverseInfo().getId(),
+ query.getDuplicatedRows(),
+ query.getMaxRowsRetrieved().isPresent(),
+ query.getMaxRowsRetrieved().orElse(0),
+ query.getSelect(),
+ where),
+ "UTF-8"));
HttpResponse response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
return getValue(EntityUtils.toString(response.getEntity()), "//success/id");
}
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(create query): Request failed\n", EntityUtils.toString(response.getEntity())));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(create query): Request failed\n",
+ EntityUtils.toString(response.getEntity())));
} catch (IOException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(create query): Request failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(create query): Request failed",
+ ExceptionUtils.getStackTrace(e)));
} catch (ParserConfigurationException | SAXException | XPathExpressionException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(create query): Response processing failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(create query): Response processing failed",
+ ExceptionUtils.getStackTrace(e)));
}
}
public void deleteQuery(String token, String queryId) throws UniverseException {
try {
if (StringUtils.isNotBlank(queryId)) {
- HttpDelete httpDelete = new HttpDelete(String.format("%s%s%s", apiUrl, "/sl/v1/queries/",
- queryId));
+ HttpDelete httpDelete =
+ new HttpDelete(String.format("%s%s%s", apiUrl, "/sl/v1/queries/", queryId));
setHeaders(httpDelete, token);
httpClient.execute(httpDelete);
}
} catch (Exception e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient " +
- "(delete query): Request failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(delete query): Request failed",
+ ExceptionUtils.getStackTrace(e)));
}
}
public List<List<String>> getResults(String token, String queryId) throws UniverseException {
- HttpGet httpGet = new HttpGet(String.format("%s%s%s%s", apiUrl, "/sl/v1/queries/",
- queryId, "/data.svc/Flows0"));
+ HttpGet httpGet =
+ new HttpGet(
+ String.format("%s%s%s%s", apiUrl, "/sl/v1/queries/", queryId, "/data.svc/Flows0"));
setHeaders(httpGet, token);
HttpResponse response = null;
try {
response = httpClient.execute(httpGet);
if (response.getStatusLine().getStatusCode() != 200) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get results): Request failed\n", EntityUtils.toString(response.getEntity())));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get results): Request failed\n",
+ EntityUtils.toString(response.getEntity())));
}
} catch (IOException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient " +
- "(get results): Request failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get results): Request failed",
+ ExceptionUtils.getStackTrace(e)));
}
try (InputStream xmlStream = response.getEntity().getContent()) {
@@ -225,15 +253,23 @@ public class UniverseClient {
if (resultsNodes != null) {
return parseResults(resultsNodes);
} else {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get results): Response processing failed"));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get results): Response processing failed"));
}
} catch (IOException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get results): Request failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get results): Request failed",
+ ExceptionUtils.getStackTrace(e)));
} catch (ParserConfigurationException | SAXException | XPathExpressionException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get results): Response processing failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get results): Response processing failed",
+ ExceptionUtils.getStackTrace(e)));
}
}
@@ -245,23 +281,31 @@ public class UniverseClient {
HttpPost httpPost = new HttpPost(String.format("%s%s", apiUrl, "/logon/long"));
setHeaders(httpPost);
- httpPost.setEntity(new StringEntity(
- String.format(loginRequestTemplate, user, password, authType), "UTF-8"));
+ httpPost.setEntity(
+ new StringEntity(String.format(loginRequestTemplate, user, password, authType), "UTF-8"));
HttpResponse response = httpClient.execute(httpPost);
String result = null;
if (response.getStatusLine().getStatusCode() == 200) {
- result = getValue(EntityUtils.toString(response.getEntity()),
- "//content/attrs/attr[@name=\"logonToken\"]");
+ result =
+ getValue(
+ EntityUtils.toString(response.getEntity()),
+ "//content/attrs/attr[@name=\"logonToken\"]");
tokens.put(paragraphId, result);
}
return result;
} catch (IOException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get token): Request failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get token): Request failed",
+ ExceptionUtils.getStackTrace(e)));
} catch (ParserConfigurationException | SAXException | XPathExpressionException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get token): Response processing failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get token): Response processing failed",
+ ExceptionUtils.getStackTrace(e)));
}
}
@@ -278,8 +322,11 @@ public class UniverseClient {
return false;
} catch (Exception e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(close session): Request failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(close session): Request failed",
+ ExceptionUtils.getStackTrace(e)));
} finally {
tokens.remove(paragraphId);
}
@@ -294,8 +341,9 @@ public class UniverseClient {
UniverseInfo universeInfo = universesMap.get(universeName);
if (universeInfo != null && StringUtils.isNotBlank(universeInfo.getId())) {
Map<String, UniverseNodeInfo> universeNodeInfoMap = universeInfosMap.get(universeName);
- if (universeNodeInfoMap != null && universesInfoUpdatedMap.containsKey(universeName) &&
- !isExpired(universesInfoUpdatedMap.get(universeName))) {
+ if (universeNodeInfoMap != null
+ && universesInfoUpdatedMap.containsKey(universeName)
+ && !isExpired(universesInfoUpdatedMap.get(universeName))) {
return universeNodeInfoMap;
} else {
universeNodeInfoMap = new HashMap<>();
@@ -325,14 +373,19 @@ public class UniverseClient {
parseUniverseInfo(universeRootInfoNodes, universeNodeInfoMap);
}
} catch (Exception e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get universe nodes info): Response processing failed",
- ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get universe nodes info): Response processing failed",
+ ExceptionUtils.getStackTrace(e)));
}
}
} catch (IOException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get universe nodes info): Request failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get universe nodes info): Request failed",
+ ExceptionUtils.getStackTrace(e)));
}
universeInfosMap.put(universeName, universeNodeInfoMap);
universesInfoUpdatedMap.put(universeName, System.currentTimeMillis());
@@ -340,7 +393,6 @@ public class UniverseClient {
return universeNodeInfoMap;
}
return Collections.emptyMap();
-
}
public void loadUniverses(String token) throws UniverseException {
@@ -367,19 +419,25 @@ public class UniverseClient {
public List<UniverseQueryPrompt> getParameters(String token, String queryId)
throws UniverseException {
- HttpGet httpGet = new HttpGet(String.format("%s%s%s%s", apiUrl, "/sl/v1/queries/",
- queryId, "/parameters"));
+ HttpGet httpGet =
+ new HttpGet(String.format("%s%s%s%s", apiUrl, "/sl/v1/queries/", queryId, "/parameters"));
setHeaders(httpGet, token);
HttpResponse response = null;
try {
response = httpClient.execute(httpGet);
if (response.getStatusLine().getStatusCode() != 200) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get parameters): Request failed\n", EntityUtils.toString(response.getEntity())));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get parameters): Request failed\n",
+ EntityUtils.toString(response.getEntity())));
}
} catch (IOException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient " +
- "(get parameters): Request failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get parameters): Request failed",
+ ExceptionUtils.getStackTrace(e)));
}
try (InputStream xmlStream = response.getEntity().getContent()) {
@@ -393,39 +451,56 @@ public class UniverseClient {
if (parametersNodes != null) {
return parseParameters(parametersNodes);
} else {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get parameters): Response processing failed"));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get parameters): Response processing failed"));
}
} catch (IOException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get parameters): Response processing failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get parameters): Response processing failed",
+ ExceptionUtils.getStackTrace(e)));
} catch (ParserConfigurationException | SAXException | XPathExpressionException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get parameters): Response processing failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get parameters): Response processing failed",
+ ExceptionUtils.getStackTrace(e)));
}
}
- public void setParametersValues(String token, String queryId,
- List<UniverseQueryPrompt> parameters) throws UniverseException {
- HttpPut httpPut = new HttpPut(String.format("%s%s%s%s", apiUrl, "/sl/v1/queries/",
- queryId, "/parameters"));
+ public void setParametersValues(
+ String token, String queryId, List<UniverseQueryPrompt> parameters) throws UniverseException {
+ HttpPut httpPut =
+ new HttpPut(String.format("%s%s%s%s", apiUrl, "/sl/v1/queries/", queryId, "/parameters"));
setHeaders(httpPut, token);
HttpResponse response = null;
try {
StringBuilder request = new StringBuilder();
request.append("<parameters>\n");
for (UniverseQueryPrompt parameter : parameters) {
- String answer = String.format(parameterAnswerTemplate, parameter.getConstrained(),
- parameter.getType(), parameter.getCardinality(), parameter.getKeepLastValues(),
- parameter.getValue());
- String id = parameter.getId() != null ? String.format("<id>%s</id>\n", parameter.getId()) :
- StringUtils.EMPTY;
- String technicalName = parameter.getTechnicalName() != null ?
- String.format("<technicalName>%s</technicalName>\n", parameter.getTechnicalName()) :
- StringUtils.EMPTY;
- String name = parameter.getTechnicalName() != null ?
- String.format("<name>%s</name>\n", parameter.getName()) :
- StringUtils.EMPTY;
+ String answer =
+ String.format(
+ parameterAnswerTemplate,
+ parameter.getConstrained(),
+ parameter.getType(),
+ parameter.getCardinality(),
+ parameter.getKeepLastValues(),
+ parameter.getValue());
+ String id =
+ parameter.getId() != null
+ ? String.format("<id>%s</id>\n", parameter.getId())
+ : StringUtils.EMPTY;
+ String technicalName =
+ parameter.getTechnicalName() != null
+ ? String.format("<technicalName>%s</technicalName>\n", parameter.getTechnicalName())
+ : StringUtils.EMPTY;
+ String name =
+ parameter.getTechnicalName() != null
+ ? String.format("<name>%s</name>\n", parameter.getName())
+ : StringUtils.EMPTY;
request.append(String.format(parameterTemplate, id, technicalName, name, answer));
}
request.append("</parameters>\n");
@@ -434,28 +509,37 @@ public class UniverseClient {
response = httpClient.execute(httpPut);
if (response.getStatusLine().getStatusCode() != 200) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(set parameters): Request failed\n", EntityUtils.toString(response.getEntity())));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(set parameters): Request failed\n",
+ EntityUtils.toString(response.getEntity())));
}
} catch (IOException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient " +
- "(set parameters): Request failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(set parameters): Request failed",
+ ExceptionUtils.getStackTrace(e)));
}
}
private void loadUniverses(String token, int offset, Map<String, UniverseInfo> universesMap)
throws UniverseException {
int limit = 50;
- HttpGet httpGet = new HttpGet(String.format("%s%s?offset=%s&limit=%s", apiUrl,
- "/sl/v1/universes",
- offset, limit));
+ HttpGet httpGet =
+ new HttpGet(
+ String.format("%s%s?offset=%s&limit=%s", apiUrl, "/sl/v1/universes", offset, limit));
setHeaders(httpGet, token);
HttpResponse response = null;
try {
response = httpClient.execute(httpGet);
} catch (Exception e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get universes): Request failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get universes): Request failed",
+ ExceptionUtils.getStackTrace(e)));
}
if (response != null && response.getStatusLine().getStatusCode() == 200) {
try (InputStream xmlStream = response.getEntity().getContent()) {
@@ -506,11 +590,17 @@ public class UniverseClient {
}
}
} catch (IOException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get universes): Response processing failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get universes): Response processing failed",
+ ExceptionUtils.getStackTrace(e)));
} catch (ParserConfigurationException | SAXException | XPathExpressionException e) {
- throw new UniverseException(String.format(errorMessageTemplate, "UniverseClient "
- + "(get universes): Response processing failed", ExceptionUtils.getStackTrace(e)));
+ throw new UniverseException(
+ String.format(
+ errorMessageTemplate,
+ "UniverseClient " + "(get universes): Response processing failed",
+ ExceptionUtils.getStackTrace(e)));
}
}
}
@@ -534,8 +624,8 @@ public class UniverseClient {
}
}
- private String getValue(String response, String xPathString) throws ParserConfigurationException,
- IOException, SAXException, XPathExpressionException {
+ private String getValue(String response, String xPathString)
+ throws ParserConfigurationException, IOException, SAXException, XPathExpressionException {
try (InputStream xmlStream = new ByteArrayInputStream(response.getBytes())) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
@@ -558,8 +648,9 @@ public class UniverseClient {
for (int i = 0; i < count; i++) {
Node parameterNode = parametersNodeList.item(i);
Node type = parameterNode.getAttributes().getNamedItem("type");
- if (type != null && type.getTextContent().equalsIgnoreCase("prompt") &&
- parameterNode.hasChildNodes()) {
+ if (type != null
+ && type.getTextContent().equalsIgnoreCase("prompt")
+ && parameterNode.hasChildNodes()) {
NodeList parameterInfoNodes = parameterNode.getChildNodes();
int childNodesCount = parameterInfoNodes.getLength();
String name = null;
@@ -612,8 +703,9 @@ public class UniverseClient {
}
}
if (name != null && id != null && cardinality != null) {
- parameters.add(new UniverseQueryPrompt(id, name, cardinality, constrained, valueType,
- technicalName, keepLastValues));
+ parameters.add(
+ new UniverseQueryPrompt(
+ id, name, cardinality, constrained, valueType, technicalName, keepLastValues));
break;
}
}
@@ -705,8 +797,8 @@ public class UniverseClient {
key.append("[");
key.append(StringUtils.join(path, "].["));
key.append(String.format("].[%s]", nodeName));
- nodes.put(key.toString(),
- new UniverseNodeInfo(nodeId, nodeName, nodeType, folder, nodePath));
+ nodes.put(
+ key.toString(), new UniverseNodeInfo(nodeId, nodeName, nodeType, folder, nodePath));
}
}
}
@@ -788,7 +880,8 @@ public class UniverseClient {
key.append(String.format("].[%s]", nodeName));
}
}
- nodes.put(key.toString(),
+ nodes.put(
+ key.toString(),
new UniverseNodeInfo(nodeId, nodeName, nodeType, folder, nodePath));
}
}
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/55f6c91c/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseCompleter.java
----------------------------------------------------------------------
diff --git a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseCompleter.java b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseCompleter.java
index e67011b..b1e304b 100644
--- a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseCompleter.java
+++ b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseCompleter.java
@@ -17,6 +17,11 @@
package org.apache.zeppelin.sap.universe;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.*;
+import java.util.regex.Pattern;
import jline.console.completer.ArgumentCompleter.ArgumentList;
import jline.console.completer.ArgumentCompleter.WhitespaceArgumentDelimiter;
import org.apache.commons.lang.StringUtils;
@@ -27,15 +32,7 @@ import org.apache.zeppelin.interpreter.thrift.InterpreterCompletion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.*;
-import java.util.regex.Pattern;
-
-/**
- * SAP Universe auto complete functionality.
- */
+/** SAP Universe auto complete functionality. */
public class UniverseCompleter {
private static Logger logger = LoggerFactory.getLogger(UniverseCompleter.class);
@@ -47,69 +44,63 @@ public class UniverseCompleter {
public static final String KW_UNIVERSE = "universe";
public static final String TYPE_FOLDER = "folder";
- private static final Comparator nodeInfoComparator = new Comparator<UniverseNodeInfo>() {
- @Override
- public int compare(UniverseNodeInfo o1, UniverseNodeInfo o2) {
- if (o1.getType().equalsIgnoreCase(TYPE_FOLDER)
- && o2.getType().equalsIgnoreCase(TYPE_FOLDER)) {
- return o1.getName().compareToIgnoreCase(o2.getName());
- }
- if (o1.getType().equalsIgnoreCase(TYPE_FOLDER)) {
- return -1;
- }
- if (o2.getType().equalsIgnoreCase(TYPE_FOLDER)) {
- return 1;
- }
- if (!o1.getType().equalsIgnoreCase(o2.getType())) {
- return o1.getType().compareToIgnoreCase(o2.getType());
- } else {
+ private static final Comparator nodeInfoComparator =
+ new Comparator<UniverseNodeInfo>() {
+ @Override
+ public int compare(UniverseNodeInfo o1, UniverseNodeInfo o2) {
+ if (o1.getType().equalsIgnoreCase(TYPE_FOLDER)
+ && o2.getType().equalsIgnoreCase(TYPE_FOLDER)) {
+ return o1.getName().compareToIgnoreCase(o2.getName());
+ }
+ if (o1.getType().equalsIgnoreCase(TYPE_FOLDER)) {
+ return -1;
+ }
+ if (o2.getType().equalsIgnoreCase(TYPE_FOLDER)) {
+ return 1;
+ }
+ if (!o1.getType().equalsIgnoreCase(o2.getType())) {
+ return o1.getType().compareToIgnoreCase(o2.getType());
+ } else {
- return o1.getName().compareToIgnoreCase(o2.getName());
- }
- }
- };
-
- /**
- * Delimiter that can split keyword list
- */
- private WhitespaceArgumentDelimiter sqlDelimiter = new WhitespaceArgumentDelimiter() {
-
- private Pattern pattern = Pattern.compile(",|;");
-
- @Override
- public boolean isDelimiterChar(CharSequence buffer, int pos) {
- char c = buffer.charAt(pos);
- boolean endName = false;
- for (int i = pos; i > 0; i--) {
- char ch = buffer.charAt(i);
- if (ch == '\n') {
- break;
- }
- if (ch == START_NAME && !endName) {
- return false;
- }
- if (ch == END_NAME) {
- break;
+ return o1.getName().compareToIgnoreCase(o2.getName());
+ }
}
- }
- return pattern.matcher(StringUtils.EMPTY + buffer.charAt(pos)).matches()
+ };
+
+ /** Delimiter that can split keyword list */
+ private WhitespaceArgumentDelimiter sqlDelimiter =
+ new WhitespaceArgumentDelimiter() {
+
+ private Pattern pattern = Pattern.compile(",|;");
+
+ @Override
+ public boolean isDelimiterChar(CharSequence buffer, int pos) {
+ char c = buffer.charAt(pos);
+ boolean endName = false;
+ for (int i = pos; i > 0; i--) {
+ char ch = buffer.charAt(i);
+ if (ch == '\n') {
+ break;
+ }
+ if (ch == START_NAME && !endName) {
+ return false;
+ }
+ if (ch == END_NAME) {
+ break;
+ }
+ }
+ return pattern.matcher(StringUtils.EMPTY + buffer.charAt(pos)).matches()
|| super.isDelimiterChar(buffer, pos);
- }
- };
+ }
+ };
- /**
- * Universe completer
- */
+ /** Universe completer */
private CachedCompleter universeCompleter;
- /**
- * Keywords completer
- */
+ /** Keywords completer */
private CachedCompleter keywordCompleter;
- /**
- * UniverseInfo completers
- */
+ /** UniverseInfo completers */
private Map<String, CachedCompleter> universeInfoCompletersMap = new HashMap<>();
private int ttlInSeconds;
@@ -124,8 +115,7 @@ public class UniverseCompleter {
String argument = cursorArgument.getCursorArgumentPartForComplete();
if (cursorArgument.isUniverseNamePosition()) {
List<CharSequence> universeCandidates = new ArrayList<>();
- universeCompleter.getCompleter().complete(argument, argument.length(),
- universeCandidates);
+ universeCompleter.getCompleter().complete(argument, argument.length(), universeCandidates);
addCompletions(candidates, universeCandidates, CompletionType.universe.name());
return universeCandidates.size();
}
@@ -142,8 +132,9 @@ public class UniverseCompleter {
}
List<CharSequence> keywordCandidates = new ArrayList<>();
- keywordCompleter.getCompleter().complete(argument,
- argument.length() > 0 ? argument.length() : 0, keywordCandidates);
+ keywordCompleter
+ .getCompleter()
+ .complete(argument, argument.length() > 0 ? argument.length() : 0, keywordCandidates);
addCompletions(candidates, keywordCandidates, CompletionType.keyword.name());
return keywordCandidates.size();
@@ -152,32 +143,36 @@ public class UniverseCompleter {
public void createOrUpdate(UniverseClient client, String token, String buffer, int cursor) {
try {
CursorArgument cursorArgument = parseCursorArgument(buffer, cursor);
- if (keywordCompleter == null || keywordCompleter.getCompleter() == null
+ if (keywordCompleter == null
+ || keywordCompleter.getCompleter() == null
|| keywordCompleter.isExpired()) {
Set<String> keywords = getKeywordsCompletions();
if (keywords != null && !keywords.isEmpty()) {
keywordCompleter = new CachedCompleter(new StringsCompleter(keywords), 0);
}
}
- if (cursorArgument.needLoadUniverses() || (universeCompleter == null
- || universeCompleter.getCompleter() == null || universeCompleter.isExpired())) {
+ if (cursorArgument.needLoadUniverses()
+ || (universeCompleter == null
+ || universeCompleter.getCompleter() == null
+ || universeCompleter.isExpired())) {
client.cleanUniverses();
client.loadUniverses(token);
if (client.getUniversesMap().size() > 0) {
- universeCompleter = new CachedCompleter(
- new StringsCompleter(client.getUniversesMap().keySet()), ttlInSeconds);
+ universeCompleter =
+ new CachedCompleter(
+ new StringsCompleter(client.getUniversesMap().keySet()), ttlInSeconds);
}
}
- if (cursorArgument.needLoadUniverseInfo() &&
- (!universeInfoCompletersMap.containsKey(cursorArgument.getUniverse()) ||
- universeInfoCompletersMap.get(cursorArgument.getUniverse()).getCompleter() == null ||
- universeInfoCompletersMap.get(cursorArgument.getUniverse()).isExpired())) {
+ if (cursorArgument.needLoadUniverseInfo()
+ && (!universeInfoCompletersMap.containsKey(cursorArgument.getUniverse())
+ || universeInfoCompletersMap.get(cursorArgument.getUniverse()).getCompleter() == null
+ || universeInfoCompletersMap.get(cursorArgument.getUniverse()).isExpired())) {
if (StringUtils.isNotBlank(cursorArgument.getUniverse())) {
client.removeUniverseInfo(cursorArgument.getUniverse());
- Map<String, UniverseNodeInfo> info = client.getUniverseNodesInfo(token, cursorArgument
- .getUniverse());
- CachedCompleter completer = new CachedCompleter(
- new UniverseNodeInfoCompleter(info.values()), ttlInSeconds);
+ Map<String, UniverseNodeInfo> info =
+ client.getUniverseNodesInfo(token, cursorArgument.getUniverse());
+ CachedCompleter completer =
+ new CachedCompleter(new UniverseNodeInfoCompleter(info.values()), ttlInSeconds);
universeInfoCompletersMap.put(cursorArgument.getUniverse(), completer);
}
}
@@ -188,8 +183,10 @@ public class UniverseCompleter {
private Set<String> getKeywordsCompletions() throws IOException {
String keywords =
- new BufferedReader(new InputStreamReader(
- UniverseCompleter.class.getResourceAsStream("/universe.keywords"))).readLine();
+ new BufferedReader(
+ new InputStreamReader(
+ UniverseCompleter.class.getResourceAsStream("/universe.keywords")))
+ .readLine();
Set<String> completions = new TreeSet<>();
@@ -217,8 +214,8 @@ public class UniverseCompleter {
if (argIndex > 0 && argList.getArguments()[argIndex - 1].equalsIgnoreCase(KW_UNIVERSE)) {
result.setUniverseNamePosition(true);
- result.setCursorArgumentPartForComplete(cleanName(argList.getCursorArgument()
- .substring(0, argList.getArgumentPosition())));
+ result.setCursorArgumentPartForComplete(
+ cleanName(argList.getCursorArgument().substring(0, argList.getArgumentPosition())));
return result;
}
if (argIndex > 1) {
@@ -236,8 +233,8 @@ public class UniverseCompleter {
result.setUniverseNodePosition(true);
return result;
} else {
- result.setCursorArgumentPartForComplete(argList.getCursorArgument()
- .substring(0, argList.getArgumentPosition()));
+ result.setCursorArgumentPartForComplete(
+ argList.getCursorArgument().substring(0, argList.getArgumentPosition()));
}
}
}
@@ -254,8 +251,10 @@ public class UniverseCompleter {
return name.replaceAll(CLEAN_NAME_REGEX, StringUtils.EMPTY);
}
- private void addCompletions(List<InterpreterCompletion> interpreterCompletions,
- List<CharSequence> candidates, String meta) {
+ private void addCompletions(
+ List<InterpreterCompletion> interpreterCompletions,
+ List<CharSequence> candidates,
+ String meta) {
for (CharSequence candidate : candidates) {
String value;
if (meta.equalsIgnoreCase(CompletionType.universe.name())) {
@@ -267,8 +266,8 @@ public class UniverseCompleter {
}
}
- private void addCompletions(List<InterpreterCompletion> interpreterCompletions,
- List<UniverseNodeInfo> candidates) {
+ private void addCompletions(
+ List<InterpreterCompletion> interpreterCompletions, List<UniverseNodeInfo> candidates) {
for (UniverseNodeInfo candidate : candidates) {
String value;
if (candidate.getType().equalsIgnoreCase(TYPE_FOLDER)) {
@@ -276,8 +275,8 @@ public class UniverseCompleter {
} else {
value = String.format("%s%s", candidate.getName(), END_NAME);
}
- interpreterCompletions.add(new InterpreterCompletion(candidate.getName(), value,
- candidate.getType()));
+ interpreterCompletions.add(
+ new InterpreterCompletion(candidate.getName(), value, candidate.getType()));
}
}
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/55f6c91c/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseException.java
----------------------------------------------------------------------
diff --git a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseException.java b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseException.java
index 8086f94..0a3a671 100644
--- a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseException.java
+++ b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseException.java
@@ -17,10 +17,7 @@
package org.apache.zeppelin.sap.universe;
-
-/**
- * Runtime Exception for SAP universe
- */
+/** Runtime Exception for SAP universe */
public class UniverseException extends Exception {
public UniverseException(Throwable e) {
@@ -34,5 +31,4 @@ public class UniverseException extends Exception {
public UniverseException(String msg, Throwable t) {
super(msg, t);
}
-
}
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/55f6c91c/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseInfo.java
----------------------------------------------------------------------
diff --git a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseInfo.java b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseInfo.java
index 4f40dce..76cc507 100644
--- a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseInfo.java
+++ b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseInfo.java
@@ -17,16 +17,13 @@
package org.apache.zeppelin.sap.universe;
-/**
- * Info about of universe node
- */
+/** Info about of universe node */
public class UniverseInfo {
private String id;
private String name;
private String type;
- public UniverseInfo() {
- }
+ public UniverseInfo() {}
public UniverseInfo(String id, String name, String type) {
this.id = id;
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/55f6c91c/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseNodeInfo.java
----------------------------------------------------------------------
diff --git a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseNodeInfo.java b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseNodeInfo.java
index fe0c97e..c9eda24 100644
--- a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseNodeInfo.java
+++ b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseNodeInfo.java
@@ -17,9 +17,7 @@
package org.apache.zeppelin.sap.universe;
-/**
- * Info about of universe item
- */
+/** Info about of universe item */
public class UniverseNodeInfo {
private String id;
private String name;
@@ -27,8 +25,7 @@ public class UniverseNodeInfo {
private String folder;
private String nodePath;
- public UniverseNodeInfo() {
- }
+ public UniverseNodeInfo() {}
public UniverseNodeInfo(String id, String name, String type, String folder, String nodePath) {
this.id = id;
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/55f6c91c/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseNodeInfoCompleter.java
----------------------------------------------------------------------
diff --git a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseNodeInfoCompleter.java b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseNodeInfoCompleter.java
index af46b46..2729440 100644
--- a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseNodeInfoCompleter.java
+++ b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseNodeInfoCompleter.java
@@ -16,20 +16,16 @@
*/
package org.apache.zeppelin.sap.universe;
+import java.util.*;
import jline.console.completer.Completer;
import jline.internal.Preconditions;
import org.apache.commons.lang.StringUtils;
-import java.util.*;
-
-/**
- * Case-insensitive completer.
- */
+/** Case-insensitive completer. */
public class UniverseNodeInfoCompleter implements Completer {
private final UniverseInfoTreeNode tree = new UniverseInfoTreeNode();
- public UniverseNodeInfoCompleter() {
- }
+ public UniverseNodeInfoCompleter() {}
public UniverseNodeInfoCompleter(final Collection<UniverseNodeInfo> nodes) {
Preconditions.checkNotNull(nodes);
@@ -56,8 +52,8 @@ public class UniverseNodeInfoCompleter implements Completer {
return completeCollection(buffer, cursor, candidates);
}
- private int completeCollection(final String buffer, final int cursor,
- final Collection candidates) {
+ private int completeCollection(
+ final String buffer, final int cursor, final Collection candidates) {
Preconditions.checkNotNull(candidates);
if (buffer == null) {
candidates.addAll(tree.getNodesInfo());
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/55f6c91c/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseQuery.java
----------------------------------------------------------------------
diff --git a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseQuery.java b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseQuery.java
index 43894b2..7347e65 100644
--- a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseQuery.java
+++ b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseQuery.java
@@ -17,13 +17,10 @@
package org.apache.zeppelin.sap.universe;
-import org.apache.commons.lang.StringUtils;
-
import java.util.OptionalInt;
+import org.apache.commons.lang.StringUtils;
-/**
- * Data of universe query
- */
+/** Data of universe query */
public class UniverseQuery {
private String select;
private String where;
@@ -31,8 +28,12 @@ public class UniverseQuery {
private boolean duplicatedRows = false;
private OptionalInt maxRowsRetrieved;
- public UniverseQuery(String select, String where, UniverseInfo universeInfo,
- boolean duplicatedRows, OptionalInt maxRowsRetrieved) {
+ public UniverseQuery(
+ String select,
+ String where,
+ UniverseInfo universeInfo,
+ boolean duplicatedRows,
+ OptionalInt maxRowsRetrieved) {
this.select = select;
this.where = where;
this.universeInfo = universeInfo;
@@ -41,8 +42,9 @@ public class UniverseQuery {
}
public boolean isCorrect() {
- return StringUtils.isNotBlank(select) && universeInfo != null &&
- StringUtils.isNotBlank(universeInfo.getId())
+ return StringUtils.isNotBlank(select)
+ && universeInfo != null
+ && StringUtils.isNotBlank(universeInfo.getId())
&& StringUtils.isNotBlank(universeInfo.getName());
}
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/55f6c91c/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseQueryPrompt.java
----------------------------------------------------------------------
diff --git a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseQueryPrompt.java b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseQueryPrompt.java
index 04b2b49..b143275 100644
--- a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseQueryPrompt.java
+++ b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseQueryPrompt.java
@@ -17,9 +17,7 @@
package org.apache.zeppelin.sap.universe;
-/**
- * Info about parameter of universe query
- */
+/** Info about parameter of universe query */
public class UniverseQueryPrompt {
private Integer id;
private String name;
@@ -30,11 +28,16 @@ public class UniverseQueryPrompt {
private String technicalName;
private String keepLastValues;
- public UniverseQueryPrompt() {
- }
+ public UniverseQueryPrompt() {}
- public UniverseQueryPrompt(Integer id, String name, String cardinality, String constrained,
- String type, String technicalName, String keepLastValues) {
+ public UniverseQueryPrompt(
+ Integer id,
+ String name,
+ String cardinality,
+ String constrained,
+ String type,
+ String technicalName,
+ String keepLastValues) {
this.id = id;
this.name = name;
this.cardinality = cardinality;
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/55f6c91c/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseUtil.java
----------------------------------------------------------------------
diff --git a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseUtil.java b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseUtil.java
index 6f24639..a727994 100644
--- a/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseUtil.java
+++ b/sap/src/main/java/org/apache/zeppelin/sap/universe/UniverseUtil.java
@@ -17,27 +17,24 @@
package org.apache.zeppelin.sap.universe;
+import java.util.*;
import jline.console.completer.ArgumentCompleter.WhitespaceArgumentDelimiter;
import org.apache.commons.lang.StringUtils;
-import java.util.*;
-
-/**
- * Util class for convert request from Zeppelin to SAP
- */
+/** Util class for convert request from Zeppelin to SAP */
public class UniverseUtil {
- private static final String COMPRASION_START_TEMPLATE = "<comparisonFilter path=\"%s\" " +
- "operator=\"%s\" id=\"%s\">\n";
+ private static final String COMPRASION_START_TEMPLATE =
+ "<comparisonFilter path=\"%s\" " + "operator=\"%s\" id=\"%s\">\n";
private static final String COMPRASION_END_TEMPLATE = "</comparisonFilter>\n";
- private static final String COMPARISON_FILTER = "<comparisonFilter id=\"%s\" path=\"%s\" " +
- "operator=\"%s\"/>\n";
+ private static final String COMPARISON_FILTER =
+ "<comparisonFilter id=\"%s\" path=\"%s\" " + "operator=\"%s\"/>\n";
private static final String CONST_OPERAND_START_TEMPLATE = "<constantOperand>\n";
private static final String CONST_OPERAND_END_TEMPLATE = "</constantOperand>\n";
- private static final String CONST_OPERAND_VALUE_TEMPLATE = "<value>\n" +
- "<caption type=\"%s\">%s</caption>\n</value>\n";
- private static final String PREDEFINED_FILTER_TEMPLATE = "<predefinedFilter path=\"%s\"" +
- " id=\"%s\"/>\n";
+ private static final String CONST_OPERAND_VALUE_TEMPLATE =
+ "<value>\n" + "<caption type=\"%s\">%s</caption>\n</value>\n";
+ private static final String PREDEFINED_FILTER_TEMPLATE =
+ "<predefinedFilter path=\"%s\"" + " id=\"%s\"/>\n";
private static final String OBJECT_OPERAND_TEMPLATE = "<objectOperand id=\"%s\" path=\"%s\"/>\n";
private static final String RESULT_START_TEMPLATE = "<resultObjects>\n";
private static final String RESULT_END_TEMPLATE = "</resultObjects>\n";
@@ -60,7 +57,6 @@ public class UniverseUtil {
private static final String MARKER_LEFT_BRACE = "#left_brace#";
private static final String MARKER_RIGHT_BRACE = "#right_brace#";
-
private static final String LEFT_BRACE = "(";
private static final String RIGHT_BRACE = ")";
@@ -120,8 +116,8 @@ public class UniverseUtil {
limit = parseInt(arguments[length - 2]);
} else if (arguments[length - 2].equals("limit")) {
final String toParse = arguments[length - 1];
- limit = parseInt(toParse.endsWith(";") ?
- toParse.substring(0, toParse.length() - 1) : toParse);
+ limit =
+ parseInt(toParse.endsWith(";") ? toParse.substring(0, toParse.length() - 1) : toParse);
}
text = text.substring(0, limitIndex);
}
@@ -149,8 +145,9 @@ public class UniverseUtil {
pathClosed = true;
if (wherePart) {
operatorPosition = true;
- if (i + 1 == array.length || (array[i + 1] != '.'
- && isFilter(String.format("%s]", whereBuf.toString()), text.substring(i + 1)))) {
+ if (i + 1 == array.length
+ || (array[i + 1] != '.'
+ && isFilter(String.format("%s]", whereBuf.toString()), text.substring(i + 1)))) {
whereBuf.append(c);
whereBuf.append(MARKER_FILTER);
if (i + 1 == array.length) {
@@ -181,8 +178,7 @@ public class UniverseUtil {
}
}
- if (!universePart && singleQuoteClosed
- && buf.toString().toLowerCase().endsWith("universe")) {
+ if (!universePart && singleQuoteClosed && buf.toString().toLowerCase().endsWith("universe")) {
universePart = true;
continue;
}
@@ -202,7 +198,9 @@ public class UniverseUtil {
continue;
}
- if (!selectPart && pathClosed && singleQuoteClosed
+ if (!selectPart
+ && pathClosed
+ && singleQuoteClosed
&& buf.toString().toLowerCase().endsWith("select")) {
if (StringUtils.isBlank(universe.toString())) {
throw new UniverseException("Not found universe name");
@@ -218,9 +216,10 @@ public class UniverseUtil {
}
if (buf.toString().toLowerCase().endsWith("where") || i == array.length - 1) {
selectPart = false;
- select.append(parseResultObj(resultObj.toString()
- .replaceAll("(?i)wher$", "").replaceAll("(?i)distinc", ""),
- nodeInfos));
+ select.append(
+ parseResultObj(
+ resultObj.toString().replaceAll("(?i)wher$", "").replaceAll("(?i)distinc", ""),
+ nodeInfos));
select.append(RESULT_END_TEMPLATE);
continue;
}
@@ -232,7 +231,8 @@ public class UniverseUtil {
continue;
}
if (pathClosed && singleQuoteClosed && c == ',') {
- select.append(parseResultObj(resultObj.toString().replaceAll("(?i)distinc", ""), nodeInfos));
+ select.append(
+ parseResultObj(resultObj.toString().replaceAll("(?i)distinc", ""), nodeInfos));
resultObj = new StringBuilder();
} else {
resultObj.append(c);
@@ -261,15 +261,17 @@ public class UniverseUtil {
whereBuf.append(c);
}
} else if (pathClosed) {
- if ((c == 'a' || c == 'A') && i < array.length - 2 &&
- text.substring(i, i + 3).equalsIgnoreCase("and")) {
+ if ((c == 'a' || c == 'A')
+ && i < array.length - 2
+ && text.substring(i, i + 3).equalsIgnoreCase("and")) {
i += 2;
whereBuf.append(MARKER_AND);
operatorPosition = false;
continue;
}
- if ((c == 'o' || c == 'O') && i < array.length - 1 &&
- text.substring(i, i + 2).equalsIgnoreCase("or")) {
+ if ((c == 'o' || c == 'O')
+ && i < array.length - 1
+ && text.substring(i, i + 2).equalsIgnoreCase("or")) {
i += 1;
whereBuf.append(MARKER_OR);
operatorPosition = false;
@@ -396,8 +398,8 @@ public class UniverseUtil {
throw new UniverseException("Incorrect block where");
}
- UniverseQuery universeQuery = new UniverseQuery(select.toString().trim(),
- where, universeInfo, duplicatedRows, limit);
+ UniverseQuery universeQuery =
+ new UniverseQuery(select.toString().trim(), where, universeInfo, duplicatedRows, limit);
if (!universeQuery.isCorrect()) {
throw new UniverseException("Incorrect query");
@@ -447,8 +449,9 @@ public class UniverseUtil {
}
stack.pop();
} else {
- while (!stack.empty() && !stack.peek().equals(LEFT_BRACE) &&
- (OPERATIONS.get(nextOperation) >= OPERATIONS.get(stack.peek()))) {
+ while (!stack.empty()
+ && !stack.peek().equals(LEFT_BRACE)
+ && (OPERATIONS.get(nextOperation) >= OPERATIONS.get(stack.peek()))) {
out.add(stack.pop());
}
stack.push(nextOperation);
@@ -463,10 +466,8 @@ public class UniverseUtil {
out.add(stack.pop());
}
StringBuffer result = new StringBuffer();
- if (!out.isEmpty())
- result.append(out.remove(0));
- while (!out.isEmpty())
- result.append(" ").append(out.remove(0));
+ if (!out.isEmpty()) result.append(out.remove(0));
+ while (!out.isEmpty()) result.append(" ").append(out.remove(0));
// result contains the reverse polish notation
return convertWhereToXml(result.toString(), nodeInfos);
@@ -479,8 +480,8 @@ public class UniverseUtil {
if (nodeInfo != null) {
return String.format(RESULT_OBJ_TEMPLATE, nodeInfo.getNodePath(), nodeInfo.getId());
}
- throw new UniverseException(String.format("Not found information about: \"%s\"",
- resultObj.trim()));
+ throw new UniverseException(
+ String.format("Not found information about: \"%s\"", resultObj.trim()));
}
return StringUtils.EMPTY;
@@ -503,15 +504,22 @@ public class UniverseUtil {
if (token.equalsIgnoreCase(MARKER_NOT_NULL) || token.equalsIgnoreCase(MARKER_NULL)) {
UniverseNodeInfo rightOperandInfo = nodeInfos.get(rightOperand);
- stack.push(String.format(COMPARISON_FILTER, rightOperandInfo.getId(),
- rightOperandInfo.getNodePath(), operator));
+ stack.push(
+ String.format(
+ COMPARISON_FILTER,
+ rightOperandInfo.getId(),
+ rightOperandInfo.getNodePath(),
+ operator));
continue;
}
if (token.equalsIgnoreCase(MARKER_FILTER)) {
UniverseNodeInfo rightOperandInfo = nodeInfos.get(rightOperand);
- stack.push(String.format(PREDEFINED_FILTER_TEMPLATE, rightOperandInfo.getNodePath(),
- rightOperandInfo.getId()));
+ stack.push(
+ String.format(
+ PREDEFINED_FILTER_TEMPLATE,
+ rightOperandInfo.getNodePath(),
+ rightOperandInfo.getId()));
continue;
}
@@ -521,20 +529,26 @@ public class UniverseUtil {
if (rightOperand.matches("^\\[.*\\]$")) {
UniverseNodeInfo rightOperandInfo = nodeInfos.get(rightOperand);
if (rightOperandInfo == null) {
- throw new UniverseException(String.format("Not found information about: \"%s\"",
- rightOperand));
+ throw new UniverseException(
+ String.format("Not found information about: \"%s\"", rightOperand));
}
- rightOperand = String.format(PREDEFINED_FILTER_TEMPLATE,
- rightOperandInfo.getNodePath(), rightOperandInfo.getId());
+ rightOperand =
+ String.format(
+ PREDEFINED_FILTER_TEMPLATE,
+ rightOperandInfo.getNodePath(),
+ rightOperandInfo.getId());
}
if (leftOperand.matches("^\\[.*\\]$")) {
UniverseNodeInfo leftOperandInfo = nodeInfos.get(leftOperand);
if (leftOperandInfo == null) {
- throw new UniverseException(String.format("Not found information about: \"%s\"",
- leftOperand));
+ throw new UniverseException(
+ String.format("Not found information about: \"%s\"", leftOperand));
}
- leftOperand = String.format(PREDEFINED_FILTER_TEMPLATE, leftOperandInfo.getNodePath(),
- leftOperandInfo.getId());
+ leftOperand =
+ String.format(
+ PREDEFINED_FILTER_TEMPLATE,
+ leftOperandInfo.getNodePath(),
+ leftOperandInfo.getId());
}
tmp.append(String.format("<%s>\n", operator));
tmp.append(leftOperand);
@@ -548,8 +562,8 @@ public class UniverseUtil {
UniverseNodeInfo leftOperandInfo = nodeInfos.get(leftOperand);
if (leftOperandInfo == null) {
- throw new UniverseException(String.format("Not found information about: \"%s\"",
- leftOperand));
+ throw new UniverseException(
+ String.format("Not found information about: \"%s\"", leftOperand));
}
if (token.equalsIgnoreCase(MARKER_IN) || token.equalsIgnoreCase(MARKER_NOT_IN)) {
String listValues = rightOperand.replaceAll("^\\(|\\)$", "").trim();
@@ -583,8 +597,12 @@ public class UniverseUtil {
}
if (!values.isEmpty()) {
- tmp.append(String.format(COMPRASION_START_TEMPLATE, leftOperandInfo.getNodePath(),
- operator, leftOperandInfo.getId()));
+ tmp.append(
+ String.format(
+ COMPRASION_START_TEMPLATE,
+ leftOperandInfo.getNodePath(),
+ operator,
+ leftOperandInfo.getId()));
tmp.append(CONST_OPERAND_START_TEMPLATE);
String type = isNumericList ? "Numeric" : "String";
for (String v : values) {
@@ -602,22 +620,33 @@ public class UniverseUtil {
if (rightOperand.startsWith("[") && rightOperand.endsWith("]")) {
rightOperandInfo = nodeInfos.get(rightOperand);
if (rightOperandInfo == null) {
- throw new UniverseException(String.format("Not found information about: \"%s\"",
- rightOperand));
+ throw new UniverseException(
+ String.format("Not found information about: \"%s\"", rightOperand));
}
}
if (OPERATIONS.containsKey(token)) {
if (rightOperandInfo != null) {
- tmp.append(String.format(COMPRASION_START_TEMPLATE, leftOperandInfo.getNodePath(),
- operator, leftOperandInfo.getId()));
- tmp.append(String.format(OBJECT_OPERAND_TEMPLATE, rightOperandInfo.getId(),
- rightOperandInfo.getNodePath()));
+ tmp.append(
+ String.format(
+ COMPRASION_START_TEMPLATE,
+ leftOperandInfo.getNodePath(),
+ operator,
+ leftOperandInfo.getId()));
+ tmp.append(
+ String.format(
+ OBJECT_OPERAND_TEMPLATE,
+ rightOperandInfo.getId(),
+ rightOperandInfo.getNodePath()));
tmp.append(COMPRASION_END_TEMPLATE);
} else {
String type = rightOperand.startsWith("'") ? "String" : "Numeric";
String value = rightOperand.replaceAll("^'|'$", "");
- tmp.append(String.format(COMPRASION_START_TEMPLATE, leftOperandInfo.getNodePath(),
- operator, leftOperandInfo.getId()));
+ tmp.append(
+ String.format(
+ COMPRASION_START_TEMPLATE,
+ leftOperandInfo.getNodePath(),
+ operator,
+ leftOperandInfo.getId()));
tmp.append(CONST_OPERAND_START_TEMPLATE);
tmp.append(String.format(CONST_OPERAND_VALUE_TEMPLATE, type, value));
tmp.append(CONST_OPERAND_END_TEMPLATE);
@@ -666,8 +695,11 @@ public class UniverseUtil {
}
after = after.trim();
// check after
- if (result && !after.startsWith("and") && !after.startsWith("or") &&
- !after.startsWith(";") && StringUtils.isNotBlank(after)) {
+ if (result
+ && !after.startsWith("and")
+ && !after.startsWith("or")
+ && !after.startsWith(";")
+ && StringUtils.isNotBlank(after)) {
result = false;
}
}
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/55f6c91c/sap/src/test/java/org/apache/zeppelin/sap/universe/UniverseCompleterTest.java
----------------------------------------------------------------------
diff --git a/sap/src/test/java/org/apache/zeppelin/sap/universe/UniverseCompleterTest.java b/sap/src/test/java/org/apache/zeppelin/sap/universe/UniverseCompleterTest.java
index 91a4217..1c0bbf2 100644
--- a/sap/src/test/java/org/apache/zeppelin/sap/universe/UniverseCompleterTest.java
+++ b/sap/src/test/java/org/apache/zeppelin/sap/universe/UniverseCompleterTest.java
@@ -5,30 +5,27 @@
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
+ * <p>Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing permissions and
+ * limitations under the License.
*/
package org.apache.zeppelin.sap.universe;
-import org.apache.commons.lang.StringUtils;
-import org.apache.zeppelin.completer.CachedCompleter;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.*;
-
import static org.junit.Assert.*;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-/**
- * Universe completer unit tests
- */
+import java.util.*;
+import org.apache.commons.lang.StringUtils;
+import org.apache.zeppelin.completer.CachedCompleter;
+import org.junit.Before;
+import org.junit.Test;
+
+/** Universe completer unit tests */
public class UniverseCompleterTest {
private UniverseCompleter universeCompleter;
@@ -46,21 +43,34 @@ public class UniverseCompleterTest {
universes.put("(GLOBAL) universe", new UniverseInfo("3", "(GLOBAL) universe", "uvx"));
UniverseInfo universeInfo = new UniverseInfo("1", "testUniverse", "uvx");
Map<String, UniverseNodeInfo> testUniverseNodes = new HashMap<>();
- testUniverseNodes.put("[Dimension].[Test].[name1]",
- new UniverseNodeInfo("name1id", "name1", "dimension", "Dimension\\Test",
+ testUniverseNodes.put(
+ "[Dimension].[Test].[name1]",
+ new UniverseNodeInfo(
+ "name1id",
+ "name1",
+ "dimension",
+ "Dimension\\Test",
"Dimension|folder\\Test|folder\\name1|dimension"));
- testUniverseNodes.put("[Dimension].[Test].[name2]",
- new UniverseNodeInfo("name2id", "name2", "dimension", "Dimension\\Test",
+ testUniverseNodes.put(
+ "[Dimension].[Test].[name2]",
+ new UniverseNodeInfo(
+ "name2id",
+ "name2",
+ "dimension",
+ "Dimension\\Test",
"Dimension|folder\\Test|folder\\name2|dimension"));
- testUniverseNodes.put("[Filter].[name3]",
- new UniverseNodeInfo("name3id", "name3", "filter", "Filter",
- "Filter|folder\\name3|filter"));
- testUniverseNodes.put("[Filter].[name4]",
- new UniverseNodeInfo("name4id", "name4", "filter", "Filter",
- "Filter|folder\\name4|filter"));
- testUniverseNodes.put("[Measure].[name5]",
- new UniverseNodeInfo("name5id", "name5", "measure", "Measure",
- "Measure|folder\\name5|measure"));
+ testUniverseNodes.put(
+ "[Filter].[name3]",
+ new UniverseNodeInfo(
+ "name3id", "name3", "filter", "Filter", "Filter|folder\\name3|filter"));
+ testUniverseNodes.put(
+ "[Filter].[name4]",
+ new UniverseNodeInfo(
+ "name4id", "name4", "filter", "Filter", "Filter|folder\\name4|filter"));
+ testUniverseNodes.put(
+ "[Measure].[name5]",
+ new UniverseNodeInfo(
+ "name5id", "name5", "measure", "Measure", "Measure|folder\\name5|measure"));
universeClient = mock(UniverseClient.class);
when(universeClient.getUniverseInfo(anyString())).thenReturn(universeInfo);