@Override public Table table(final String name) { return this.origin.table( new StringBuilder(this.prefix).append(name).toString() ); } }
@Override public Table table(final String name) { return this.origin.table( new StringBuilder(this.prefix).append(name).toString() ); } }
@Override public Table table(final String name) { try { return Dynamo.live().table(name); } catch (final IOException ex) { throw new IllegalStateException(ex); } }
@Override public Locks locks() { return new DyLocks(this.region.table(DyLocks.TBL), this.name); } }
Region region = new Region.Simple(credentials); Table table = region.table("my-table"); Collection<Item> items = table.frame().where("name", "Jeff"); for (Item item : items) { System.out.println(item.get("salary").getS()); }
@Override @RetryOnFailure(verbose = false, delay = Tv.FIVE, unit = TimeUnit.SECONDS) public Table table(final String name) { return new ReTable(this.origin.table(name)); } }
@Override @RetryOnFailure(verbose = false, delay = Tv.FIVE, unit = TimeUnit.SECONDS) public Table table(final String name) { return new ReTable(this.origin.table(name)); } }
Credentials credentials = new Credentials.Simple("AWS key", "AWS secret"); Region region = new Region.Simple(credentials); Table table = region.table("foo"); Collection<Item> items = table.frame().where("id", Conditions.equalTo(123)); for (Item item : items) { System.out.println(item.get("name").getS()); }
Credentials credentials = new Credentials.Simple("AWS key", "AWS secret"); Region region = new Region.Simple(credentials); Table table = region.table("foo"); Collection<Item> items = table.frame().where("id", Conditions.equalTo(123)); for (Item item : items) { System.out.println(item.get("name").getS()); }
@Override @Cacheable(lifetime = 1, unit = TimeUnit.HOURS) public Counters counters() { return new DyCounters(this.region.table(DyCounters.TBL), this.name); }
@Override @Cacheable.FlushBefore public boolean remove(@NotNull final Domain domain) { final Iterator<Item> items = this.region.table(this.table).frame() .where(DefaultDynamo.NAME, domain.name()) .through(new ScanValve().withLimit(Tv.MILLION)) .iterator(); boolean removed = false; while (items.hasNext()) { items.next(); items.remove(); removed = true; } return removed; }
@Override @Cacheable.FlushBefore public boolean add(@NotNull final URN user, @NotNull final Domain domain) throws IOException { final ConcurrentMap<String, AttributeValue> attrs = new ConcurrentHashMap<String, AttributeValue>(0); attrs.put(DefaultDynamo.USER, new AttributeValue(user.toString())); attrs.put(DefaultDynamo.NAME, new AttributeValue(domain.name())); attrs.put(DefaultDynamo.KEY, new AttributeValue(domain.key())); attrs.put(DefaultDynamo.SECRET, new AttributeValue(domain.secret())); attrs.put(DefaultDynamo.REGION, new AttributeValue(domain.region())); attrs.put(DefaultDynamo.SYSLOG, new AttributeValue(domain.syslog())); attrs.put(DefaultDynamo.BUCKET, new AttributeValue(domain.bucket())); this.region.table(this.table).put(attrs); return true; }
@Override @Cacheable.FlushAfter public void refresh() throws IOException { this.region.table(DefaultUser.TOKENS).put( new Attributes() .with(DefaultUser.HASH, this.name) .with( DefaultUser.ATTR_TOKEN, Joiner.on('-').join( Iterables.limit( Splitter.fixedLength(Tv.FOUR).split( DigestUtils.md5Hex( RandomStringUtils.random(Tv.TEN) ).toUpperCase(Locale.ENGLISH) ), Tv.FOUR ) ) ) ); }
@Override @Cacheable(forever = true) public boolean exists() { return this.region.table(DefaultUser.TOKENS) .frame().through(new QueryValve()) .where(DefaultUser.HASH, Conditions.equalTo(this.name)) .iterator().hasNext(); }
@Override @NotNull @SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops") @Cacheable(lifetime = Tv.FIVE, unit = TimeUnit.MINUTES) public ConcurrentMap<URN, Domains> load() throws IOException { final ConcurrentMap<URN, Domains> domains = new ConcurrentHashMap<URN, Domains>(0); final Iterable<Item> items = this.region .table(this.table) .frame() .through( new ScanValve().withAttributeToGet( DefaultDynamo.USER, DefaultDynamo.NAME, DefaultDynamo.KEY, DefaultDynamo.SECRET, DefaultDynamo.BUCKET, DefaultDynamo.REGION, DefaultDynamo.SYSLOG ).withLimit(Tv.MILLION) ); for (final Item item : items) { final URN user = URN.create(item.get(DefaultDynamo.USER).getS()); domains.putIfAbsent(user, new Domains()); domains.get(user).add(DefaultDynamo.domain(item)); } return domains; }
@Override @Cacheable(lifetime = 1, unit = TimeUnit.HOURS) public String token() throws IOException { final Iterator<Item> items = this.region.table(DefaultUser.TOKENS) .frame().through(new QueryValve()) .where(DefaultUser.HASH, Conditions.equalTo(this.name)) .iterator(); final String token; if (items.hasNext()) { token = items.next().get(DefaultUser.ATTR_TOKEN).getS(); } else { this.refresh(); token = this.token(); } return token; }