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/29 10:07:35 UTC
[39/50] [abbrv] zeppelin git commit: Revert "[ZEPPELIN-3740] Adopt
`google-java-format` and `fmt-maven-plugin`"
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/0d746fa2/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 8c87fbc..c397f45 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,20 +18,6 @@
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;
@@ -52,7 +38,24 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
-/** Client for API SAP Universe */
+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
+ */
public class UniverseClient {
private static Logger logger = LoggerFactory.getLogger(UniverseClient.class);
@@ -73,7 +76,8 @@ 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();
@@ -83,55 +87,53 @@ 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;
@@ -148,98 +150,68 @@ 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()) {
@@ -253,23 +225,15 @@ 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)));
}
}
@@ -281,31 +245,23 @@ 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)));
}
}
@@ -322,11 +278,8 @@ 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);
}
@@ -341,9 +294,8 @@ 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<>();
@@ -373,19 +325,14 @@ 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());
@@ -393,6 +340,7 @@ public class UniverseClient {
return universeNodeInfoMap;
}
return Collections.emptyMap();
+
}
public void loadUniverses(String token) throws UniverseException {
@@ -419,25 +367,19 @@ 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()) {
@@ -451,56 +393,39 @@ 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");
@@ -509,37 +434,28 @@ 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()) {
@@ -590,17 +506,11 @@ 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)));
}
}
}
@@ -624,8 +534,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();
@@ -648,9 +558,8 @@ 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;
@@ -703,9 +612,8 @@ 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;
}
}
@@ -797,8 +705,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));
}
}
}
@@ -880,8 +788,7 @@ 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/0d746fa2/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 b1e304b..e67011b 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,11 +17,6 @@
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;
@@ -32,7 +27,15 @@ import org.apache.zeppelin.interpreter.thrift.InterpreterCompletion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-/** SAP Universe auto complete functionality. */
+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.
+ */
public class UniverseCompleter {
private static Logger logger = LoggerFactory.getLogger(UniverseCompleter.class);
@@ -44,63 +47,69 @@ 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());
- }
+ 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;
}
- };
-
- /** 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);
+ 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;
@@ -115,7 +124,8 @@ 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();
}
@@ -132,9 +142,8 @@ 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();
@@ -143,36 +152,32 @@ 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);
}
}
@@ -183,10 +188,8 @@ 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<>();
@@ -214,8 +217,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) {
@@ -233,8 +236,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()));
}
}
}
@@ -251,10 +254,8 @@ 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())) {
@@ -266,8 +267,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)) {
@@ -275,8 +276,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/0d746fa2/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 0a3a671..8086f94 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,7 +17,10 @@
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) {
@@ -31,4 +34,5 @@ public class UniverseException extends Exception {
public UniverseException(String msg, Throwable t) {
super(msg, t);
}
+
}
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/0d746fa2/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 76cc507..4f40dce 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,13 +17,16 @@
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/0d746fa2/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 c9eda24..fe0c97e 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,7 +17,9 @@
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;
@@ -25,7 +27,8 @@ 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/0d746fa2/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 2729440..af46b46 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,16 +16,20 @@
*/
package org.apache.zeppelin.sap.universe;
-import java.util.*;
import jline.console.completer.Completer;
import jline.internal.Preconditions;
import org.apache.commons.lang.StringUtils;
-/** Case-insensitive completer. */
+import java.util.*;
+
+/**
+ * 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);
@@ -52,8 +56,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/0d746fa2/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 7347e65..43894b2 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,10 +17,13 @@
package org.apache.zeppelin.sap.universe;
-import java.util.OptionalInt;
import org.apache.commons.lang.StringUtils;
-/** Data of universe query */
+import java.util.OptionalInt;
+
+/**
+ * Data of universe query
+ */
public class UniverseQuery {
private String select;
private String where;
@@ -28,12 +31,8 @@ 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;
@@ -42,9 +41,8 @@ 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/0d746fa2/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 b143275..04b2b49 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,7 +17,9 @@
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;
@@ -28,16 +30,11 @@ 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/0d746fa2/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 a727994..6f24639 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,24 +17,27 @@
package org.apache.zeppelin.sap.universe;
-import java.util.*;
import jline.console.completer.ArgumentCompleter.WhitespaceArgumentDelimiter;
import org.apache.commons.lang.StringUtils;
-/** Util class for convert request from Zeppelin to SAP */
+import java.util.*;
+
+/**
+ * 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";
@@ -57,6 +60,7 @@ 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 = ")";
@@ -116,8 +120,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);
}
@@ -145,9 +149,8 @@ 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) {
@@ -178,7 +181,8 @@ public class UniverseUtil {
}
}
- if (!universePart && singleQuoteClosed && buf.toString().toLowerCase().endsWith("universe")) {
+ if (!universePart && singleQuoteClosed
+ && buf.toString().toLowerCase().endsWith("universe")) {
universePart = true;
continue;
}
@@ -198,9 +202,7 @@ 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");
@@ -216,10 +218,9 @@ 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;
}
@@ -231,8 +232,7 @@ 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,17 +261,15 @@ 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;
@@ -398,8 +396,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");
@@ -449,9 +447,8 @@ 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);
@@ -466,8 +463,10 @@ 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);
@@ -480,8 +479,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;
@@ -504,22 +503,15 @@ 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;
}
@@ -529,26 +521,20 @@ 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);
@@ -562,8 +548,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();
@@ -597,12 +583,8 @@ 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) {
@@ -620,33 +602,22 @@ 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);
@@ -695,11 +666,8 @@ 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/0d746fa2/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 1c0bbf2..91a4217 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,27 +5,30 @@
* "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at
*
- * <p>http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * <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.
+ * 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 static org.junit.Assert.*;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-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 */
+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
+ */
public class UniverseCompleterTest {
private UniverseCompleter universeCompleter;
@@ -43,34 +46,21 @@ 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);