@Override protected Resource parse(String argument) throws NumberFormatException, CmdLineException { return new Resource(argument); }
@Override public int hashCode() { return Objects.hashCode(getId(), getAttributes()); }
private Resource resourceFor(String name) { return new Resource(String.format("%s-%s", this.name, name)); }
@Override public String toString() { return String.format("%s[%s]", getClass().getSimpleName(), getId()); }
private void maybeIndexResourceAttributes(Map<Context, Map<Resource, ResourceMetadata>> cacheQueue, Set<StatementGenerator> generators, Context context, Resource resource) { if (!resource.getAttributes().isPresent()) { return; } Optional<ResourceMetadata> cached = m_cache.get(context, resource); for (Entry<String, String> field : resource.getAttributes().get().entrySet()) { if (!(cached.isPresent() && cached.get().containsAttribute(field.getKey(), field.getValue()))) { LOG.trace("Resource attribute for resource '{}' in context '{}' for entry '{}' is not present is cache. Cached meta-data is: {}", resource, context, field, cached); // Search indexing if (m_options.shouldIndexUsingDefaultTerm()) { generators.add(new TermInsert(context, resource.getId(), Constants.DEFAULT_TERM_FIELD, field.getValue())); } generators.add(new TermInsert(context, resource.getId(), field.getKey(), field.getValue())); // Storage generators.add(new AttributeInsert(context, resource.getId(), field.getKey(), field.getValue())); getOrCreateResourceMetadata(context, resource, cacheQueue).putAttribute(field.getKey(), field.getValue()); } } }
private Resource resourceFor(String name) { return new Resource(String.format("%s-%s", this.name, name)); }
@Override public String toString() { // We wrap this in a toString() method to avoid build the string // unless the log message is actually printed return samples.stream() .map(s -> s.getResource().getId()) .distinct() .collect(Collectors.joining(", ")); } });
private void maybeIndexResourceAttributes(Map<Context, Map<Resource, ResourceMetadata>> cacheQueue, Set<StatementGenerator> generators, Context context, Resource resource) { if (!resource.getAttributes().isPresent()) { return; } Optional<ResourceMetadata> cached = m_cache.get(context, resource); for (Entry<String, String> field : resource.getAttributes().get().entrySet()) { if (!(cached.isPresent() && cached.get().containsAttribute(field.getKey(), field.getValue()))) { LOG.trace("Resource attribute for resource '{}' in context '{}' for entry '{}' is not present is cache. Cached meta-data is: {}", resource, context, field, cached); // Search indexing if (m_options.shouldIndexUsingDefaultTerm()) { generators.add(new TermInsert(context, resource.getId(), Constants.DEFAULT_TERM_FIELD, field.getValue())); } generators.add(new TermInsert(context, resource.getId(), field.getKey(), field.getValue())); // Storage generators.add(new AttributeInsert(context, resource.getId(), field.getKey(), field.getValue())); getOrCreateResourceMetadata(context, resource, cacheQueue).putAttribute(field.getKey(), field.getValue()); } } }
Query(String resource, Timestamp start, Timestamp end, Duration resolution) { m_resource = new Resource(checkNotNull(resource, "resource argument")); m_start = checkNotNull(start, "start argument"); m_end = checkNotNull(end, "end argument"); m_resolution = checkNotNull(resolution, "resolution argument"); }
@Override public Optional<ResourceMetadata> get(Context context, Resource resource) { ResourceMetadata r = m_cache.getIfPresent(key(context, resource.getId())); return (r != null) ? Optional.of(r) : Optional.<ResourceMetadata>absent(); }
private void definitelyUnindexResourceAttributes(List<RegularStatement> statement, Context context, Resource resource, ConsistencyLevel writeConsistency) { if (!resource.getAttributes().isPresent()) { return; } for (Entry<String, String> field : resource.getAttributes().get().entrySet()) { // Search unindexing RegularStatement delete = QueryBuilder.delete().from(Constants.Schema.T_TERMS) .where(QueryBuilder.eq(Constants.Schema.C_TERMS_CONTEXT, context.getId())) .and(QueryBuilder.eq(Constants.Schema.C_TERMS_FIELD, Constants.DEFAULT_TERM_FIELD)) .and(QueryBuilder.eq(Constants.Schema.C_TERMS_VALUE, field.getValue())) .and(QueryBuilder.eq(Constants.Schema.C_TERMS_RESOURCE, resource.getId())); delete.setConsistencyLevel(writeConsistency); statement.add(delete); delete = QueryBuilder.delete().from(Constants.Schema.T_TERMS) .where(QueryBuilder.eq(Constants.Schema.C_TERMS_CONTEXT, context.getId())) .and(QueryBuilder.eq(Constants.Schema.C_TERMS_FIELD, field.getKey())) .and(QueryBuilder.eq(Constants.Schema.C_TERMS_VALUE, field.getValue())) .and(QueryBuilder.eq(Constants.Schema.C_TERMS_RESOURCE, resource.getId())); delete.setConsistencyLevel(writeConsistency); statement.add(delete); // Storage delete = QueryBuilder.delete().from(Constants.Schema.T_ATTRS) .where(QueryBuilder.eq(Constants.Schema.C_ATTRS_CONTEXT, context.getId())) .and(QueryBuilder.eq(Constants.Schema.C_ATTRS_RESOURCE, resource.getId())) .and(QueryBuilder.eq(Constants.Schema.C_ATTRS_ATTR, field.getKey())); delete.setConsistencyLevel(writeConsistency); statement.add(delete); } }
static Resource parseResource(String[] path) { Map<String, String> attributes = Maps.newHashMap(); for (int i = 0; i < path.length; i++) { attributes.put(index(i), path[i]); } return new Resource(s_pathJoiner.join(path), Optional.of(attributes)); }
@Override public String toString() { // We wrap this in a toString() method to avoid build the string // unless the log message is actually printed return samples.stream() .map(s -> s.getResource().getId()) .distinct() .collect(Collectors.joining(", ")); } });
private void definitelyUnindexResourceAttributes(List<RegularStatement> statement, Context context, Resource resource, ConsistencyLevel writeConsistency) { if (!resource.getAttributes().isPresent()) { return; } for (Entry<String, String> field : resource.getAttributes().get().entrySet()) { // Search unindexing RegularStatement delete = QueryBuilder.delete().from(Constants.Schema.T_TERMS) .where(QueryBuilder.eq(Constants.Schema.C_TERMS_CONTEXT, context.getId())) .and(QueryBuilder.eq(Constants.Schema.C_TERMS_FIELD, Constants.DEFAULT_TERM_FIELD)) .and(QueryBuilder.eq(Constants.Schema.C_TERMS_VALUE, field.getValue())) .and(QueryBuilder.eq(Constants.Schema.C_TERMS_RESOURCE, resource.getId())); delete.setConsistencyLevel(writeConsistency); statement.add(delete); delete = QueryBuilder.delete().from(Constants.Schema.T_TERMS) .where(QueryBuilder.eq(Constants.Schema.C_TERMS_CONTEXT, context.getId())) .and(QueryBuilder.eq(Constants.Schema.C_TERMS_FIELD, field.getKey())) .and(QueryBuilder.eq(Constants.Schema.C_TERMS_VALUE, field.getValue())) .and(QueryBuilder.eq(Constants.Schema.C_TERMS_RESOURCE, resource.getId())); delete.setConsistencyLevel(writeConsistency); statement.add(delete); // Storage delete = QueryBuilder.delete().from(Constants.Schema.T_ATTRS) .where(QueryBuilder.eq(Constants.Schema.C_ATTRS_CONTEXT, context.getId())) .and(QueryBuilder.eq(Constants.Schema.C_ATTRS_RESOURCE, resource.getId())) .and(QueryBuilder.eq(Constants.Schema.C_ATTRS_ATTR, field.getKey())); delete.setConsistencyLevel(writeConsistency); statement.add(delete); } }
public SampleGenerator(String resource, String metric, Timestamp start, Timestamp end, Duration interval) { m_resource = new Resource(checkNotNull(resource, "resource argument")); m_metric = checkNotNull(metric, "metric argument"); checkNotNull(start, "start argument"); checkNotNull(end, "end argument"); checkNotNull(interval, "interval argument"); m_intervals = new IntervalGenerator(start, end, interval); }
@Override public Optional<ResourceMetadata> get(Context context, Resource resource) { ResourceMetadata r = m_cache.getIfPresent(key(context, resource.getId())); return (r != null) ? Optional.of(r) : Optional.<ResourceMetadata>absent(); }
private static Resource getResource(com.datastax.driver.core.Row row) { return new Resource(row.getString(SchemaConstants.F_RESOURCE)); }
@Override public void delete(final Context context, final Resource resource) { m_cache.invalidate(key(context, resource.getId())); }
public List<Sample> getSamplesToIndex() { final List<Sample> samples = Lists.newLinkedList(); // Convert string attributes to samples for (Entry<ResourcePath, Map<String, String>> entry : m_stringAttributesByPath.entrySet()) { Resource resource = new Resource(toResourceId(entry.getKey()), Optional.of(entry.getValue())); samples.add(NewtsUtils.createSampleForIndexingStrings(m_context, resource)); } return samples; }