@Override protected RowProcessingQueryOptimizer fetch() { final Datastore datastore = _publishers.getDatastore(); try (final DatastoreConnection con = datastore.openConnection()) { final DataContext dataContext = con.getDataContext(); final Column[] columnArray = _physicalColumns.toArray(new Column[_physicalColumns.size()]); final Query baseQuery = dataContext.query().from(_table).select(columnArray).toQuery(); logger.debug("Base query for row processing: {}", baseQuery); final List<RowProcessingConsumer> sortedConsumers = sortConsumers(_consumers); final RowProcessingQueryOptimizer optimizer = new RowProcessingQueryOptimizer(datastore, sortedConsumers, baseQuery); return optimizer; } catch (RuntimeException e) { logger.error("Failed to build query optimizer! {}", e.getMessage(), e); throw e; } } };
@Override protected RowProcessingQueryOptimizer fetch() { final Datastore datastore = getAnalysisJob().getDatastore(); try (DatastoreConnection con = datastore.openConnection()) { final DataContext dataContext = con.getDataContext(); final Column[] columnArray = _physicalColumns.toArray(new Column[_physicalColumns.size()]); final Query baseQuery = dataContext.query().from(getTable()).select(columnArray).toQuery(); logger.debug("Base query for row processing: {}", baseQuery); // try to optimize return new RowProcessingQueryOptimizerImpl(datastore, getConsumersSorted(), baseQuery); } catch (final RuntimeException e) { logger.error("Failed to build query optimizer! {}", e.getMessage(), e); throw e; } } };
@Override public void actionPerformed(final ActionEvent e) { List<Column> columns = _columns; if (_columns == null) { final List<Column> cols = new ArrayList<>(); for (final InputColumn<?> col : _inputColumns) { if (col.isPhysicalColumn()) { cols.add(col.getPhysicalColumn()); } } columns = cols; } if (columns.isEmpty()) { throw new IllegalStateException("No columns found - could not determine which columns to query"); } try (DatastoreConnection con = _datastore.openConnection()) { final DataContext dc = con.getDataContext(); final Query q = dc.query().from(columns.get(0).getTable()).select(columns).toQuery(); final DataSetWindow window = new DataSetWindow(q, dc, PAGE_SIZE, _windowContext); window.open(); } } }
private DataSet getPreviewData(final Resource resource) { if (!isPreviewDataAvailable()) { logger.info("Not displaying preview table because isPreviewDataAvailable() returned false"); return null; } logger.info("Attempting to fetch preview data from resource: {}", resource); final D datastore = getPreviewDatastore(resource); try (DatastoreConnection con = datastore.openConnection()) { final DataContext dc = con.getDataContext(); final Table table = getPreviewTable(dc); if (table == null) { logger.info("Not displaying preview because getPreviewTable(..) returned null"); return null; } List<Column> columns = table.getColumns(); if (columns.size() > getPreviewColumns()) { // include max 10 columns columns = columns.stream().limit(getPreviewColumns()).collect(Collectors.toList()); } final Query q = dc.query().from(table).select(columns).toQuery(); q.setMaxRows(PREVIEW_ROWS); return dc.executeQuery(q); } }
private DataSet getPreviewData(final String filename) { if (!isPreviewDataAvailable()) { logger.info("Not displaying preview table because isPreviewDataAvailable() returned false"); return null; } final D datastore = getPreviewDatastore(filename); try (DatastoreConnection con = datastore.openConnection()) { final DataContext dc = con.getDataContext(); final Table table = getPreviewTable(dc); List<Column> columns = table.getColumns(); if (columns.size() > getPreviewColumns()) { // include max 10 columns columns = columns.stream().limit(getPreviewColumns()).collect(Collectors.toList()); } final Query q = dc.query().from(table).select(columns).toQuery(); q.setMaxRows(7); return dc.executeQuery(q); } }
@Override public Collection<String> getValues() { try (final DatastoreConnection con = _datastore.openConnection()) { final DataContext dataContext = con.getDataContext(); final Query q = dataContext.query().from(_column.getTable()).select(_column).toQuery(); q.selectDistinct(); try (final DataSet dataSet = dataContext.executeQuery(q)) { final List<String> values = new ArrayList<String>(); while (dataSet.next()) { final Row row = dataSet.getRow(); Object value = row.getValue(0); if (value != null) { value = value.toString(); } values.add((String) value); } return values; } } } }
public static List<LicensedProject> getLicensedProjects() { final List<LicensedProject> result = new ArrayList<>(); final URL url = resourceManager.getUrl("licenses/dependency-licenses.csv"); if (url == null) { throw new IllegalStateException("Could not find dependencies file"); } try { final DataContext dc = DataContextFactory.createCsvDataContext(url.openStream(), ',', '"'); final Table table = dc.getDefaultSchema().getTable(0); final Column projectColumn = table.getColumnByName("Project"); final Column websiteColumn = table.getColumnByName("Website"); final Column licenseColumn = table.getColumnByName("License"); final Query q = dc.query().from(table).select(table.getColumns()).orderBy(projectColumn).asc().toQuery(); final DataSet ds = dc.executeQuery(q); while (ds.next()) { final LicensedProject licensedProject = new LicensedProject(); final Row row = ds.getRow(); final String licenseName = row.getValue(licenseColumn).toString(); licensedProject.name = row.getValue(projectColumn).toString(); licensedProject.websiteUrl = row.getValue(websiteColumn).toString(); licensedProject.license = getLicense(licenseName); result.add(licensedProject); } } catch (final IOException e) { throw new IllegalStateException("Error occurred while reading dependencies file", e); } return result; }
protected List<Row> getRowsToUpdate() { final DataContext dc = _updateCallback.getDataContext(); final Table table = getTable(); final List<FilterItem> whereItems = getWhereItems(); final DataSet dataSet = dc.query() .from(table) .select(table.getColumns()) .where(whereItems).execute(); final List<Row> rows = dataSet.toRows(); return rows; }
protected List<Row> getRowsToUpdate() { final DataContext dc = _updateCallback.getDataContext(); final Table table = getTable(); final List<FilterItem> whereItems = getWhereItems(); final DataSet dataSet = dc.query() .from(table) .select(table.getColumns()) .where(whereItems).execute(); final List<Row> rows = dataSet.toRows(); return rows; }
public SimpleDictionary loadIntoMemory(final DatastoreConnection datastoreConnection) { final DataContext dataContext = datastoreConnection.getDataContext(); final Column column = getColumn(datastoreConnection); final Query query = dataContext.query().from(column.getTable()).select(column).toQuery(); if (datastoreConnection.getDatastore().getPerformanceCharacteristics().isQueryOptimizationPreferred()) { query.getSelectClause().setDistinct(true); } final Set<String> values = new HashSet<>(); try (DataSet dataSet = dataContext.executeQuery(query)) { while (dataSet.next()) { final Object value = dataSet.getRow().getValue(0); if (value != null) { values.add(value.toString()); } } } return new SimpleDictionary(getName(), values); }
public SimpleSynonymCatalog loadIntoMemory(final DatastoreConnection datastoreConnection) { final Map<String, String> synonymMap = new HashMap<>(); final Column masterTermColumn = getMasterTermColumn(datastoreConnection); final Column[] columns = getSynonymColumns(datastoreConnection); try (DataSet dataSet = datastoreConnection.getDataContext().query().from(masterTermColumn.getTable().getName()) .select(masterTermColumn).select(columns).execute()) { while (dataSet.next()) { final Row row = dataSet.getRow(); final String masterTerm = getMasterTerm(row, masterTermColumn); final String[] synonyms = getSynonyms(row, columns); for (final String synonym : synonyms) { synonymMap.put(synonym, masterTerm); } } } return new SimpleSynonymCatalog(getName(), synonymMap); }
@Override public boolean containsValue(final String value) { final DataContext dataContext = _datastoreConnection.getDataContext(); final Column column = _dictionary.getColumn(_datastoreConnection); try (DataSet dataSet = dataContext.query().from(column.getTable()).select(column).where(column).eq(value) .maxRows(1).execute()) { if (dataSet.next()) { return true; } return false; } }
@Override public Collection<Synonym> getSynonyms() { final Datastore datastore = getDatastore(); try (DatastoreConnection datastoreConnection = datastore.openConnection()) { final DataContext dataContext = datastoreConnection.getDataContext(); final SchemaNavigator schemaNavigator = datastoreConnection.getSchemaNavigator(); final Column masterTermColumn = schemaNavigator.convertToColumn(_masterTermColumnPath); final Column[] columns = schemaNavigator.convertToColumns(_synonymColumnPaths); final Table table = masterTermColumn.getTable(); final Query query = dataContext.query().from(table.getName()).select(masterTermColumn).select(columns) .toQuery(); final DataSet results = dataContext.executeQuery(query); final List<Synonym> synonyms = new ArrayList<Synonym>(); while (results.next()) { final Row row = results.getRow(); synonyms.add(new SimpleSynonym(getMasterTerm(row, masterTermColumn), getSynonyms(row, table.getColumns()))); } return synonyms; } }
@Override public String getMasterTerm(final String term) { final DataContext dataContext = _datastoreConnection.getDataContext(); final Column masterTermColumn = _synonymCatalog.getMasterTermColumn(_datastoreConnection); final Column[] columns = _synonymCatalog.getSynonymColumns(_datastoreConnection); SatisfiedWhereBuilder<?> queryBuilder = dataContext.query().from(masterTermColumn.getTable()).select(masterTermColumn).where(columns[0]) .eq(term); for (int i = 1; i < columns.length; i++) { final Column column = columns[i]; queryBuilder = queryBuilder.or(column).eq(term); } queryBuilder.maxRows(1); try (DataSet dataSet = queryBuilder.execute()) { while (dataSet.next()) { final Object value = dataSet.getRow().getValue(0); if (value != null) { return value.toString(); } } } return null; }
@Override public void execute() throws MetaModelException { final DataSet dataSet = _dataContext.query().from(getTable()).select(getTable().getColumns()).execute(); final PojoDataSet<?> pojoDataSet = (PojoDataSet<?>) dataSet; final List<FilterItem> whereItems = getWhereItems(); while (pojoDataSet.next()) { boolean delete = true; final Row row = pojoDataSet.getRow(); for (FilterItem whereItem : whereItems) { if (!whereItem.evaluate(row)) { delete = false; break; } } if (delete) { pojoDataSet.remove(); } } } };
@Override public void execute() throws MetaModelException { final DataSet dataSet = _dataContext.query().from(getTable()).select(getTable().getColumns()).execute(); final PojoDataSet<?> pojoDataSet = (PojoDataSet<?>) dataSet; final List<FilterItem> whereItems = getWhereItems(); while (pojoDataSet.next()) { boolean delete = true; final Row row = pojoDataSet.getRow(); for (FilterItem whereItem : whereItems) { if (!whereItem.evaluate(row)) { delete = false; break; } } if (delete) { pojoDataSet.remove(); } } } };
public PojoTableType createPojoTable(final DataContext dataContext, final Table table, final List<Column> usedColumns, final int maxRows) { final PojoTableType tableType = new PojoTableType(); tableType.setName(table.getName()); // read columns final Columns columnsType = new Columns(); for (final Column column : usedColumns) { columnsType.getColumn().add(createPojoColumn(column.getName(), column.getType())); } tableType.setColumns(columnsType); if (maxRows > 0) { // read values final Query q = dataContext.query().from(table).select(usedColumns).toQuery(); q.setMaxRows(maxRows); final Document document = XmlUtils.createDocument(); final Rows rowsType = new Rows(); try (DataSet ds = dataContext.executeQuery(q)) { while (ds.next()) { final Row row = ds.getRow(); rowsType.getRow().add(createPojoRow(row, document)); } } tableType.setRows(rowsType); } return tableType; }
@Override public void execute() throws MetaModelException { Table table = getTable(); List<FilterItem> whereItems = getWhereItems(); CouchDbConnector connector = _updateCallback.getConnector(table.getName()); CouchDbDataContext dataContext = _updateCallback.getDataContext(); DataSet dataSet = dataContext.query().from(table) .select(CouchDbDataContext.FIELD_ID, CouchDbDataContext.FIELD_REV).where(whereItems).execute(); try { while (dataSet.next()) { Row row = dataSet.getRow(); String id = (String) row.getValue(0); String revision = (String) row.getValue(1); connector.delete(id, revision); } } finally { dataSet.close(); } }
@Override public void run(UpdateCallback callback) { final Table originalTable = getTable(); final Table copyTable = callback.createTable(copyDataContext.getDefaultSchema(), originalTable.getName()) .like(originalTable).execute(); if (isTruncateTableOperation()) { // no need to iterate old records, they should all be // removed return; } final DataSet dataSet = _updateCallback.getDataContext().query().from(originalTable) .select(originalTable.getColumns()).execute(); try { while (dataSet.next()) { final Row row = dataSet.getRow(); if (!deleteRow(row)) { callback.insertInto(copyTable).like(row).execute(); } } } finally { dataSet.close(); } } });
@Override public void run(UpdateCallback callback) { final Table originalTable = getTable(); final Table copyTable = callback.createTable(copyDataContext.getDefaultSchema(), originalTable.getName()) .like(originalTable).execute(); if (isTruncateTableOperation()) { // no need to iterate old records, they should all be // removed return; } final DataSet dataSet = _updateCallback.getDataContext().query().from(originalTable) .select(originalTable.getColumns()).execute(); try { while (dataSet.next()) { final Row row = dataSet.getRow(); if (!deleteRow(row)) { callback.insertInto(copyTable).like(row).execute(); } } } finally { dataSet.close(); } } });