ParserViewDefinition viewDefinition = (ParserViewDefinition) optionalViewDefinition.get(); List<QualifiedAttributeID> columnIds = viewDefinition.getAttributes().stream() .map(Attribute::getQualifiedID) .collect(Collectors.toList()); int mainColumnIndex = columnIds.indexOf(mainColumn) + 1; Attribute typeColumn = viewDefinition.getAttribute(mainColumnIndex + relativeIndexWrtMainColumn); return Optional.of(typeColumn.getQualifiedID());
@Override public String toString() { StringBuilder bf = new StringBuilder(); bf.append(getID()).append(" ["); Joiner.on(", ").appendTo(bf, attributes); bf.append("]").append(" (").append(statement).append(")"); return bf.toString(); }
ImmutableList<Map.Entry<QualifiedAttributeID,Variable>> list = view.getAttributes().stream() .map(att -> new AbstractMap.SimpleEntry<>( new QualifiedAttributeID(null, att.getID()), // strip off the ParserViewDefinitionName body.add(termFactory.getFunction(view.getAtomPredicate(), arguments));
/** * creates a view for SQLQueryParser * (NOTE: these views are simply names for complex non-parsable subqueries, not database views) * * TODO: make the second argument a callback (which is called only when needed) * TODO: make it re-use parser views for the same SQL * * @param sql * @return */ public ParserViewDefinition createParserView(String sql, ImmutableList<QuotedID> attributes) { if (!isStillMutable()) { throw new IllegalStateException("Too late! Parser views must be created before freezing the DBMetadata"); } RelationID id = getQuotedIDFactory().createRelationID(null, String.format("view_%s", parserViewCounter++)); ParserViewDefinition view = new ParserViewDefinition(id, attributes, sql); // UGLY!! add(view, relations); return view; }
return String.format("(%s) %s", ((ParserViewDefinition) def).getStatement(), viewNames.get(atom).getSQLRendering());
ImmutableList<Map.Entry<QualifiedAttributeID,Variable>> list = view.getAttributes().stream() .map(att -> new AbstractMap.SimpleEntry<>( new QualifiedAttributeID(null, att.getID()), // strip off the ParserViewDefinitionName
/** * creates a view for SQLQueryParser * (NOTE: these views are simply names for complex non-parsable subqueries, not database views) * * TODO: make the second argument a callback (which is called only when needed) * TODO: make it re-use parser views for the same SQL * * @param sql * @return */ public ParserViewDefinition createParserView(String sql, ImmutableList<QuotedID> attributes) { if (!isStillMutable()) { throw new IllegalStateException("Too late! Parser views must be created before freezing the DBMetadata"); } RelationID id = getQuotedIDFactory().createRelationID(null, String.format("view_%s", parserViewCounter++)); ParserViewDefinition view = new ParserViewDefinition(id, attributes, sql, typeFactory.getXsdStringDatatype()); // UGLY!! add(view, relations); return view; }
relation instanceof DatabaseRelationDefinition ? relation.getID().getSQLRendering() : inBrackets(((ParserViewDefinition)relation).getStatement()), relation.getAttributes().stream() .map(a -> new QualifiedAttributeID(relationAlias, a.getID()))
@Override public String toString() { StringBuilder bf = new StringBuilder(); bf.append(getID()).append(" ["); Joiner.on(", ").appendTo(bf, attributes); bf.append("]").append(" (").append(statement).append(")"); return bf.toString(); }
ParserViewDefinition view = new ParserViewDefinition(viewId, unionView); columnIds.stream().forEach(view::addAttribute);
relation instanceof DatabaseRelationDefinition ? relation.getID().getSQLRendering() : inBrackets(((ParserViewDefinition)relation).getStatement()), relation.getAttributes().stream() .map(a -> new QualifiedAttributeID(relationAlias, a.getID()))
@Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); final int tableSize = list.getModel().getSize(); if (tableSize == 0) { label.setText("<No table found>"); return label; } else { if (index == -1) { label.setText("<Select database table>"); return label; } else { if (value instanceof DatabaseRelationDefinition) { DatabaseRelationDefinition td = (DatabaseRelationDefinition) value; ImageIcon icon = IconLoader.getImageIcon("images/db_table.png"); label.setIcon(icon); label.setText(td.getID().getSQLRendering()); } else if (value instanceof ParserViewDefinition) { // ROMAN (7 Oct 2015): I'm not sure we need "views" -- they are // created by SQLQueryParser for complex queries that cannot be parsed ParserViewDefinition vd = (ParserViewDefinition) value; ImageIcon icon = IconLoader.getImageIcon("images/db_view.png"); label.setIcon(icon); label.setText(vd.getID().getSQLRendering()); } return label; } } } }