proxiesEnabled = repositoryDescriptor.getProxiesEnabled(); database = new Database(dialect);
protected TableMaker(String tableName) { this.tableName = tableName; table = database.addTable(tableName); orderBy = model.getCollectionOrderBy(tableName); }
@Override public int getTableSize(String tableName) { return sqlInfo.getDatabase().getTable(tableName).getColumns().size(); }
Map<String, List<Column>> added = new HashMap<>(); for (Table table : database.getTables()) { String tableName = getTableName(table.getPhysicalName()); if (!tableNames.contains(tableName.toUpperCase())) {
/** * Adds a more general JOIN: * <p> * (LEFT) JOIN fragmentName _F123 ON contextTable.id = _F123.fragmentColumn */ protected Table getFragmentTable(int joinKind, Table contextTable, String contextKey, String fragmentName, String fragmentColumn, int index, boolean skipJoin, String primaryType) { Table table = propertyFragmentTables.get(contextKey); if (table == null) { Table baseTable = database.getTable(fragmentName); String alias = TABLE_FRAG_ALIAS + ++fragJoinCount; table = new TableAlias(baseTable, alias); propertyFragmentTables.put(contextKey, table); if (!skipJoin) { addJoin(joinKind, alias, table, fragmentColumn, contextTable, Model.MAIN_KEY, null, index, primaryType); } } return table; }
/** * Returns null or {@code AND isdeleted IS NULL} if soft delete is activated. * * @return the clause, or null */ public String getSoftDeleteClause() { if (softDeleteEnabled) { return database.getTable(Model.HIER_TABLE_NAME).getColumn(Model.MAIN_IS_DELETED_KEY).getFullQuotedName() + " IS NULL"; } else { return null; } }
/** * Returns the clause used to match a given row by id in the given table. * <p> * Takes into account soft deletes. * * @param tableName the table name * @return the clause, like {@code table.id = ?} */ public String getIdEqualsClause(String tableName) { return database.getTable(tableName).getColumn(Model.MAIN_KEY).getQuotedName() + " = ?" + getSoftDeleteClause(tableName); }
public Update getUpdateByIdForKeys(String tableName, List<String> keys) { Table table = database.getTable(tableName); List<Column> columns = new LinkedList<>(); for (String key : keys) { columns.add(table.getColumn(key)); } Update update = new Update(table); update.setUpdatedColumns(columns); update.setWhere(getIdEqualsClause(tableName)); return update; }
/** * Select all ancestors ids for several fragments. * <p> * Fast alternative to the slowest iterative {@link #getSelectParentIds}. * * @return null if it's not possible in one call in this dialect */ public SQLInfoSelect getSelectAncestorsIds() { String sql = dialect.getAncestorsIdsSql(); if (sql == null) { return null; } Table table = database.getTable(Model.HIER_TABLE_NAME); Column mainColumn = table.getColumn(Model.MAIN_KEY); // no soft-delete check needed, as ancestors of a non-deleted doc // aren't deleted either return new SQLInfoSelect(sql, Collections.singletonList(mainColumn), null, null); }
properties.put("softDeleteEnabled", Boolean.valueOf(softDeleteEnabled)); if (!fulltextSearchDisabled) { Table ft = database.getTable(Model.FULLTEXT_TABLE_NAME); properties.put("fulltextTable", ft.getQuotedName()); FulltextConfiguration fti = model.getFulltextConfiguration();
Table table = database.getTable(tableName); Delete delete = new Delete(table); String where = null;
properties.put("arrayColumnsEnabled", Boolean.valueOf(arrayColumnsEnabled)); if (!fulltextSearchDisabled) { Table ft = database.getTable(Model.FULLTEXT_TABLE_NAME); FulltextConfiguration fti = model.getFulltextConfiguration(); List<String> lines = new ArrayList<>(fti.indexNames.size());
@Override public FulltextMatchInfo getFulltextScoredMatchInfo(String fulltextQuery, String indexName, int nthMatch, Column mainColumn, Model model, Database database) { String phftname = database.getTable(Model.FULLTEXT_TABLE_NAME).getPhysicalName(); String fullIndexName = "PUBLIC_" + phftname + "_" + indexName; String nthSuffix = nthMatch == 1 ? "" : String.valueOf(nthMatch); String tableAlias = "_NXFTTBL" + nthSuffix; String quotedTableAlias = openQuote() + tableAlias + closeQuote(); FulltextMatchInfo info = new FulltextMatchInfo(); info.joins = Collections.singletonList( // new Join(Join.LEFT, // String.format("NXFT_SEARCH('%s', ?)", fullIndexName), tableAlias, // alias fulltextQuery, // param String.format("%s.KEY", quotedTableAlias), // on1 mainColumn.getFullQuotedName() // on2 )); info.whereExpr = String.format("%s.KEY IS NOT NULL", quotedTableAlias); info.scoreExpr = "1"; info.scoreAlias = "_NXSCORE" + nthSuffix; info.scoreCol = new Column(mainColumn.getTable(), null, ColumnType.DOUBLE, null); return info; }
/** * Select parentid by ids for all values of several fragments. */ public SQLInfoSelect getSelectParentIds(int nids) { Table table = database.getTable(Model.HIER_TABLE_NAME); Column whatColumn = table.getColumn(Model.HIER_PARENT_KEY); Column whereColumn = table.getColumn(Model.MAIN_KEY); StringBuilder wherebuf = new StringBuilder(whereColumn.getQuotedName()); wherebuf.append(" IN ("); for (int i = 0; i < nids; i++) { if (i != 0) { wherebuf.append(", "); } wherebuf.append('?'); } wherebuf.append(')'); wherebuf.append(getSoftDeleteClause(Model.HIER_TABLE_NAME)); Select select = new Select(table); select.setWhat("DISTINCT " + whatColumn.getQuotedName()); select.setFrom(table.getQuotedName()); select.setWhere(wherebuf.toString()); return new SQLInfoSelect(select.getStatement(), Collections.singletonList(whatColumn), Collections.singletonList(whereColumn), null); }
Table table = database.getTable(tableName); List<Column> whatColumns = new LinkedList<>(); List<String> whats = new LinkedList<>();
Table table = database.getTable(tableName); Update update = new Update(table);
Table hierTable = database.getTable(Model.HIER_TABLE_NAME); Column mainColumn = hierTable.getColumn(Model.MAIN_KEY); List<Column> whatColumns = new ArrayList<>(); Table proxyTable = null; if (proxiesEnabled) { proxyTable = database.getTable(Model.PROXY_TABLE_NAME); whatColumns.add(proxyTable.getColumn(Model.PROXY_TARGET_KEY)); whatColumns.add(proxyTable.getColumn(Model.PROXY_VERSIONABLE_KEY));
Column mainColumn, Model model, Database database) { Table ft = database.getTable(Model.FULLTEXT_TABLE_NAME); Column ftMain = ft.getColumn(Model.MAIN_KEY); String nthSuffix = nthMatch == 1 ? "" : String.valueOf(nthMatch);
Column mainColumn, Model model, Database database) { String indexSuffix = model.getFulltextIndexSuffix(indexName); Table ft = database.getTable(Model.FULLTEXT_TABLE_NAME); Column ftMain = ft.getColumn(Model.MAIN_KEY); Column ftColumn = ft.getColumn(Model.FULLTEXT_FULLTEXT_KEY + indexSuffix);
public SQLInfoSelect getCopyHier(boolean explicitName, boolean resetVersion) { Table table = database.getTable(Model.HIER_TABLE_NAME); Collection<Column> columns = table.getColumns(); List<String> selectWhats = new ArrayList<>(columns.size());