下面列出了怎么用com.amazonaws.services.s3.model.lifecycle.LifecycleFilterPredicate的API类实例代码及写法,或者点击链接到github查看源代码。
boolean isExpirationLifecycleConfigurationPresent(BucketLifecycleConfiguration lifecycleConfiguration) {
return lifecycleConfiguration != null &&
lifecycleConfiguration.getRules() != null &&
lifecycleConfiguration.getRules().stream()
.filter(r -> r.getExpirationInDays() == getConfiguredExpirationInDays())
.filter(r -> {
LifecycleFilterPredicate predicate = r.getFilter().getPredicate();
if (predicate instanceof LifecycleTagPredicate) {
LifecycleTagPredicate tagPredicate = (LifecycleTagPredicate) predicate;
return DELETED_TAG.equals(tagPredicate.getTag());
}
return false;
})
.findAny().isPresent();
}
private boolean isDeletedTagPredicate(final LifecycleFilterPredicate filterPredicate, final String bucketPrefix) {
if (filterPredicate instanceof LifecycleTagPredicate) {
LifecycleTagPredicate tagPredicate = (LifecycleTagPredicate) filterPredicate;
return S3BlobStore.DELETED_TAG.equals(tagPredicate.getTag());
}
else if (filterPredicate instanceof LifecycleAndOperator) {
LifecycleAndOperator andOperator = (LifecycleAndOperator) filterPredicate;
return
andOperator.getOperands().stream().anyMatch(op -> isDeletedTagPredicate(op, bucketPrefix)) &&
andOperator.getOperands().stream().anyMatch(op -> isBucketPrefixPredicate(op, bucketPrefix));
}
else {
return false;
}
}
private boolean isBucketPrefixPredicate(final LifecycleFilterPredicate filterPredicate, final String bucketPrefix) {
if (filterPredicate instanceof LifecyclePrefixPredicate) {
LifecyclePrefixPredicate prefixPredicate = (LifecyclePrefixPredicate) filterPredicate;
return prefixPredicate.getPrefix().equals(bucketPrefix);
}
else {
return false;
}
}
@Override
protected void doStartElement(
String uri,
String name,
String qName,
Attributes attrs) {
if (in("LifecycleConfiguration")) {
if (name.equals("Rule")) {
currentRule = new Rule();
}
} else if (in("LifecycleConfiguration", "Rule")) {
if (name.equals("Transition")) {
currentTransition = new Transition();
} else if (name.equals("NoncurrentVersionTransition")) {
currentNcvTransition = new NoncurrentVersionTransition();
} else if (name.equals("AbortIncompleteMultipartUpload")) {
abortIncompleteMultipartUpload = new
AbortIncompleteMultipartUpload();
} else if (name.equals("Filter")) {
currentFilter = new LifecycleFilter();
}
} else if (in("LifecycleConfiguration", "Rule", "Filter")) {
if (name.equals("And")) {
andOperandsList = new ArrayList<LifecycleFilterPredicate>();
}
}
}