Boolean bucketFound = false; for (Bucket bucket : buckets.getBuckets()) { if (bucket.getLabel().equals(desiredBucketLabel) && !bucket.getState().equals(Bucket.State.EMPTY)) { bucketFound = true; break;
if (b.getState() != null) { args.add(b.getLabel().toString()); args.add(b.getState().toString());
if (b.getState() != null) { CQL += "state = ?,"; args.add(b.getState().name());
boolean isBucketEmpty = false; if (bucketLabel != null && experimentRepository.getBucket(experimentID, t.getBucketLabel()).getState().equals(Bucket.State.EMPTY)) { bucketLabel = null; isBucketEmpty = true;
+ " to " + entry.getAfter() : "removed payload from bucket " + entry.getBucketLabel(); case "state": return entry.getAfter().equals(Bucket.State.CLOSED.toString()) ? "closed bucket " + entry.getBucketLabel() : "changed state of bucket " + entry.getBucketLabel() + " to " + entry.getAfter();
@Override public void createBucket(Bucket newBucket) throws RepositoryException { final String SQL = "insert into bucket (" + "experiment_id, description, label, allocation_percent, is_control, payload, state) " + "values (?,?,?,?,?,?,?)"; try { newTransaction().insert( SQL, newBucket.getExperimentID(), newBucket.getDescription() != null ? newBucket.getDescription() : "", newBucket.getLabel().toString(), newBucket.getAllocationPercent(), newBucket.isControl() != null ? newBucket.isControl() : false, newBucket.getPayload() != null ? newBucket.getPayload() : "", Bucket.State.OPEN.toString()); } catch (WasabiException e) { throw e; } catch (Exception e) { throw new RepositoryException("Could not create bucket \"" + newBucket + "\"", e); } }
/** * {@inheritDoc} */ @Override public void createBucket(Bucket newBucket) { LOGGER.debug("Creating bucket {}", newBucket); Preconditions.checkNotNull(newBucket, "Parameter \"newBucket\" cannot be null"); final Bucket.State STATE = Bucket.State.OPEN; try { bucketAccessor.insert(newBucket.getExperimentID().getRawID(), newBucket.getLabel().toString(), newBucket.getDescription(), newBucket.getAllocationPercent(), newBucket.isControl(), newBucket.getPayload(), STATE.name()); } catch (Exception e) { LOGGER.error("Error creating bucket {}", newBucket, e); throw new RepositoryException("Could not create bucket \"" + newBucket + "\" because " + e, e); } }
/** * {@inheritDoc} */ @Override public Bucket updateBucketState(Bucket bucket, Bucket.State desiredState) { LOGGER.debug("Updating bucket {} state {}", new Object[]{bucket, desiredState}); try { bucketAccessor.updateState(desiredState.name(), bucket .getExperimentID().getRawID(), bucket.getLabel().toString()); Result<com.intuit.wasabi.repository.cassandra.pojo.Bucket> bucketPojo = bucketAccessor.getBucketByExperimentIdAndBucket(bucket.getExperimentID() .getRawID(), bucket.getLabel().toString()); return BucketHelper.makeBucket(bucketPojo.one()); } catch (Exception e) { LOGGER.error("Error while updating bucket {} state {}", new Object[]{bucket, desiredState}, e); throw new RepositoryException("Exception while updating bucket state " + bucket + " state " + desiredState, e); } }
/** * {@inheritDoc} */ @Override public void validateBucketChanges(Bucket bucket, Bucket updates) { if (updates.getExperimentID() != null && !updates.getExperimentID().equals(bucket.getExperimentID())) { throw new IllegalArgumentException("Invalid value for experimentID \"" + updates.getExperimentID() + " \"." + " Cannot update ExperimentID"); } if (updates.getLabel() != null && !updates.getLabel().equals(bucket.getLabel())) { throw new IllegalArgumentException("Invalid value for bucket label \"" + updates.getLabel() + " \". " + "Cannot update bucket label"); } if (updates.getState() != null && !updates.getState().equals(bucket.getState())) { throw new IllegalArgumentException("Cannot update the state of a bucket using this api"); } }
public boolean isStateTransitionValid(State desiredState) { if (state.equals(desiredState)) { return true; } switch (state) { case OPEN: return desiredState.equals(State.CLOSED) || desiredState.equals(State.EMPTY); case CLOSED: return desiredState.equals(State.EMPTY); default: assert false : "Unhandled bucket state case"; } return false; }
@Override public Bucket updateBucketState(Bucket bucket, Bucket.State desiredState) throws RepositoryException { final String SQL = "update bucket " + "set state = ? " + "where experiment_id=? and label=?"; newTransaction().update( SQL, desiredState.toString(), bucket.getExperimentID(), bucket.getLabel().toString()); return bucket; }
public static Bucket makeBucket( com.intuit.wasabi.repository.cassandra.pojo.Bucket bucketPojo) { Bucket bucket = Bucket.newInstance(Experiment.ID.valueOf(bucketPojo.getExperimentId()), Bucket.Label.valueOf(bucketPojo.getLabel())) .withAllocationPercent(bucketPojo.getAllocation()) .withControl(bucketPojo.isControl()) .withDescription(bucketPojo.getDescription()) .withPayload(bucketPojo.getPayload()) .withState(Bucket.State.valueOf(bucketPojo.getState())) .build(); return bucket; }
public boolean isStateTransitionValid(State desiredState) { if (state.equals(desiredState)) { return true; } switch (state) { case OPEN: return desiredState.equals(State.CLOSED) || desiredState.equals(State.EMPTY); case CLOSED: return desiredState.equals(State.EMPTY); default: assert false : "Unhandled bucket state case"; } return false; }