private String getLeftTerm(Relation relation) { String leftTerm = relation.getLeftTerm().getStringValue().substring(relation.getLeftTerm() .getStringValue().lastIndexOf('.') + 1, relation.getLeftTerm().getStringValue().length()); return leftTerm; }
private void getStringRangeFunction(FunctionSelector function, ColumnSelector leftSelector) { if (luceneIndexExist) { luceneIndex.append(","); } List<Selector> functionSelectors = function.getFunctionColumns().getSelectorList(); String arg1 = functionSelectors.get(0).getStringValue(); String arg2 = functionSelectors.get(1).getStringValue(); String column = Utils.toCaseSensitive(leftSelector.getName().getName()); luceneIndex.append("{type:\"range\", field:").append(column).append(", " + "lower:\"").append(arg1).append("\", upper:\"").append(arg2) .append("\",include_upper: true, include_lower: true }"); luceneIndexExist = true; }
private void getStringShouldFunction(FunctionSelector function, Relation relation) { if (luceneIndexExist) { luceneIndex.append(","); } StringBuilder sbLucene = new StringBuilder(); sbLucene.append(" {type: \"boolean\", should:["); Selector left=relation.getLeftTerm(); String luceneOrIndex=""; boolean first=true; for(Selector s:function.getFunctionColumns().getSelectorList()) { if (!first){ sbLucene.append(","); } Relation r=new Relation(left, Operator.MATCH, s); luceneOrIndex = getLuceneWhereClause(r); sbLucene.append(luceneOrIndex); first=false; } sbLucene.append(" ]}"); luceneIndex.append(sbLucene); luceneIndexExist = true; }
switch (relation.getOperator()) { case BETWEEN: break; default: Selector right = relation.getRightTerm(); if (right instanceof FunctionSelector) { FunctionSelector function = (FunctionSelector) right; if ("range".equalsIgnoreCase(function.getFunctionName())) { getStringRangeFunction(function, (ColumnSelector) relation.getLeftTerm()); }else if("should".equalsIgnoreCase(function.getFunctionName())) { getStringShouldFunction(function, relation); }else { ColumnSelector left = (ColumnSelector) relation.getLeftTerm(); String column = Utils.toCaseSensitive(left.getColumnName().getName()); sb.append(column).append(" ").append(relation.getOperator().toString()).append(" "); sb.append(function.toString()); ColumnSelector left = (ColumnSelector) relation.getLeftTerm(); String column = Utils.toCaseSensitive(left.getColumnName().getName()); sb.append(column).append(" ").append(relation.getOperator().toString()).append(" "); sb.append(Utils.getFormatType(left, right, session));
for (Relation relation : assignations) { String leftTerm = getLeftTerm(relation); if (ListSelector.class.isInstance(relation.getRightTerm())) { sb.append(Utils.toCaseSensitive(leftTerm)).append(relation.getOperator().toString()).append (relation.getRightTerm().toString().replaceAll("\\(", "[").replaceAll("\\)", "]")).append(", "); }else if(RelationSelector.class.isInstance(relation.getRightTerm())){ RelationSelector newRel=(RelationSelector)relation.getRightTerm(); String newLeft=((ColumnSelector)newRel.getRelation().getLeftTerm()).getColumnName().getName(); String newOp=newRel.getRelation().getOperator().toString(); String newRight; if (ListSelector.class.isInstance(newRel.getRelation().getRightTerm())){ newRight=newRel.getRelation().getRightTerm().toString().replaceAll("\\(", "[").replaceAll("\\)", "]"); }else{ newRight=newRel.getRelation().getRightTerm().toString(); sb.append(Utils.toCaseSensitive(leftTerm)).append(relation.getOperator().toString()).append (newRelation).append(", "); }else { sb.append(Utils.toCaseSensitive(leftTerm)).append(relation.getOperator().toString()).append (relation.getRightTerm().toString()).append(", "); Relation relation = filter.getRelation(); String leftTerm = getLeftTerm(relation); sb.append(Utils.toCaseSensitive(leftTerm)).append(relation.getOperator().toString()).append (relation.getRightTerm().toString()).append(" AND ");
@Override public String toString() { StringBuilder sb = new StringBuilder("DELETE FROM "); if (catalogInc) { sb.append(Utils.toCaseSensitive(catalog)).append("."); } sb.append(Utils.toCaseSensitive(tableName.getName())); if (!whereClauses.isEmpty()) { sb.append(" WHERE "); for (Filter filter : whereClauses) { Relation relation = filter.getRelation(); String leftTerm = relation.getLeftTerm().getStringValue().substring(relation.getLeftTerm() .getStringValue().lastIndexOf('.') + 1, relation.getLeftTerm().getStringValue().length()); sb.append(Utils.toCaseSensitive(leftTerm)).append(relation.getOperator().toString()).append (relation.getRightTerm().toString()).append(" AND "); } sb.delete(sb.lastIndexOf(" AND"), sb.length()); } return sb.toString(); }
private String getOrderByClause() { StringBuilder sb = new StringBuilder(); sb.append(" ORDER BY "); int count = 0; for (OrderByClause orderByClause : orderByColumns) { if (count != 0) { sb.append(","); } count = 1; ColumnSelector columnSelector = (ColumnSelector) orderByClause.getSelector(); sb.append(Utils.toCaseSensitive(columnSelector.getName().getName())).append(" ").append(orderByClause .getDirection().name()); } return sb.toString(); }
private String getFunctionString(FunctionSelector selectorFunction) { String result; StringBuilder sb = new StringBuilder(); switch (selectorFunction.getFunctionName().toUpperCase()) { case "COUNT": result = selectorFunction.getFunctionName() + "(*)"; break; case "NOW": result = selectorFunction.getFunctionName() + "()"; break; default: List<Selector> columns = selectorFunction.getFunctionColumns().getSelectorList(); sb.append(selectorFunction.getFunctionName()).append("("); for (Selector s : columns) { if (s instanceof ColumnSelector) { ColumnSelector columnSelector = (ColumnSelector) s; sb.append(Utils.toCaseSensitive(columnSelector.getColumnName().getName())); sb.append(","); } else if (s instanceof FunctionSelector) {
private String getLuceneWhereClause(Relation relation) { String result; StringBuilder sb = new StringBuilder(); String column = relation.getLeftTerm().toString() .substring(relation.getLeftTerm().toString().lastIndexOf('.') + 1); String value = relation.getRightTerm().toSQLString(false); // Generate query for column String[] processedQuery = processLuceneQueryType(value); sb.append("{type:\""); sb.append(processedQuery[0]); sb.append("\",field:\""); sb.append(column); sb.append("\",value:\""); sb.append(processedQuery[1]); sb.append("\"},"); sb.replace(sb.length() - 1, sb.length(), ""); result = sb.toString(); return result; }
public static String getFormatType(ColumnSelector left, Selector right, Session session) { switch (session.getCluster().getMetadata().getKeyspace(Utils.toCaseSensitive(left.getColumnName().getTableName() .getCatalogName().getName())).getTable( Utils.toCaseSensitive(left.getColumnName().getTableName().getName())).getColumn (Utils.toCaseSensitive(left.getColumnName().getName())).getType().getName()) { return right.toString(); case TIMEUUID: return right.getStringValue();
String schema = map.get(new StringSelector("schema")).getStringValue(); String fieldsString = schema.substring(schema.indexOf("fields:{") + 8); String[] fields = fieldsString.split(",");
private String getAliasClause() { StringBuilder sb = new StringBuilder(); int i = 0; for (Map.Entry<Selector, String> entry : aliasColumns.entrySet()) { if (i != 0) { sb.append(","); } i = 1; if (!(entry.getKey() instanceof FunctionSelector)) { sb.append(Utils.toCaseSensitive(entry.getKey().getColumnName().getName())); } else if (sb.length() == 0) { i = 0; } } for (FunctionSelector selectorFunction : functions) { String functionString = getFunctionString(selectorFunction); if (i != 0) { sb.append(","); } i = 1; sb.append(functionString); } return sb.toString(); }
/** * Obtain the existing keyspaces in cassandra. * * @param session The cassandra session. * @return A list of {@link com.stratio.crossdata.common.metadata.CatalogMetadata} . */ public static List<CatalogMetadata> getKeyspaces(Session session, String cluster) { List<CatalogMetadata> catalogMetadataList = new ArrayList<>(); List<KeyspaceMetadata> keyspaceMetadataList = session.getCluster().getMetadata().getKeyspaces(); for (KeyspaceMetadata keyspaceMetadata : keyspaceMetadataList) { //Catalogs CatalogName name = new CatalogName(keyspaceMetadata.getName()); Map<Selector, Selector> options = new HashMap<>(); Map<String, String> replicationOptions = new HashMap<>(); for (Map.Entry<String, String> entry : replicationOptions.entrySet()) { options.put(new StringSelector(entry.getKey()), new StringSelector(entry.getValue())); } //Tables Map<TableName, TableMetadata> tables = getTablesFromKeyspace(session, keyspaceMetadata, cluster); CatalogMetadata catalogMetadata = new CatalogMetadata(name, options, tables); catalogMetadataList.add(catalogMetadata); } return catalogMetadataList; }
private String getStringOptions(Map<Selector, Selector> options) { StringBuilder stringOptions = new StringBuilder(); if ((options != null) && (!options.isEmpty())) { int i = 0; for (Map.Entry<Selector, Selector> entry : options.entrySet()) { StringSelector stringKeySelector = (StringSelector) entry.getKey(); StringSelector optionSelector = (StringSelector) entry.getValue(); if (i != 0) { stringOptions.append(" AND "); } i = 1; //Analyze if it is a pair {key,value} or its only a key String key = stringKeySelector.getValue(); stringOptions.append(getStyleStringOption(key, optionSelector.getValue())); } } return stringOptions.toString(); }
sb.append(" WITH "); for(Map.Entry<Selector,Selector> entry: properties.entrySet()) { sb.append(entry.getKey().getStringValue()).append(" = ").append(entry.getValue().toString()).append(" AND ");
ColumnName cassandraColumnName = new ColumnName(def.getKeyspace(), def.getTable(), def.getName()); for (Map.Entry<Selector, String> entry : alias.entrySet()) { if (entry.getKey().getColumnName().getQualifiedName().equals(cassandraColumnName.getQualifiedName())) { columnMetadata = new ColumnMetadata(columnName, null, type); columnMetadata.getName().setAlias(entry.getValue()); boolean findIt = false; for (Map.Entry<Selector, String> entry : alias.entrySet()) { if (entry.getKey().getColumnName().getQualifiedName() .equals(cassandraColumnName.getQualifiedName())) { metaRow.addCell(entry.getValue(), metaCell);
/** * Get the specified Catalog from the cassandra keyspace. * * @param session The cassandra session. * @param catalogName The catalog name of the cassandra keyspace. * @return A {@link com.stratio.crossdata.common.metadata.CatalogMetadata} . */ public static CatalogMetadata getKeyspacesByName(Session session, CatalogName catalogName, String cluster) { KeyspaceMetadata keyspace = session.getCluster().getMetadata().getKeyspace(Utils.toCaseSensitive(catalogName .getName())); CatalogName name = new CatalogName(keyspace.getName()); Map<Selector, Selector> options = new HashMap<>(); Map<String, String> replicationOptions = new HashMap<>(); for (Map.Entry<String, String> entry : replicationOptions.entrySet()) { options.put(new StringSelector(entry.getKey()), new StringSelector(entry.getValue())); } Map<TableName, TableMetadata> tables = getTablesFromKeyspace(session, keyspace, cluster); CatalogMetadata catalogMetadata = new CatalogMetadata(name, options, tables); return catalogMetadata; }
if (entry.getKey().getColumnName().getQualifiedName().equals(cassandraColumnName.getQualifiedName())) { columnMetadata = new ColumnMetadata(columnName, null, type); columnMetadata.getName().setAlias(entry.getValue()); boolean findIt = false; for (Map.Entry<Selector, String> entry : alias.entrySet()) { if (entry.getKey().getColumnName().getQualifiedName() .equals(cassandraColumnName.getQualifiedName())) { metaRow.addCell(entry.getValue(), metaCell);