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 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; } } } }
@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; } }
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); }
@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; }
final Query query = dataContext.query().from(table.getName()).select(masterTermColumn).toQuery(); final List<FilterItem> filterItems = new ArrayList<FilterItem>(); for (int i = 0; i < columns.length; i++) {