@Override public BrowseResult<Asset> browseAssets( final Repository repository, @Nullable final String filter, @Nullable final String sortProperty, @Nullable final String sortDirection, @Nullable final Integer start, @Nullable final Integer limit) { checkNotNull(repository); final List<Repository> repositories = getRepositories(repository); try (StorageTx storageTx = repository.facet(StorageFacet.class).txSupplier().get()) { storageTx.begin(); QueryOptions options = new QueryOptions(filter, sortProperty, sortDirection, start, limit, repository.getName()); BrowseAssetsSqlBuilder builder = new BrowseAssetsSqlBuilder(options); return new BrowseResult<>( storageTx.countAssets( builder.buildWhereClause(), builder.buildSqlParams(), repositories, null), Lists.newArrayList( storageTx.findAssets( builder.buildWhereClause(), builder.buildSqlParams(), repositories, builder.buildQuerySuffix()))); } }
@Override public BrowseResult<Asset> browseComponentAssets( final Repository repository, final String componentId) { checkNotNull(repository); checkNotNull(componentId); try (StorageTx storageTx = repository.facet(StorageFacet.class).txSupplier().get()) { storageTx.begin(); Component component = storageTx.findComponent(new DetachedEntityId(componentId)); if (component == null) { return new BrowseResult<>(0, Collections.emptyList()); } VariableResolverAdapter variableResolverAdapter = variableResolverAdapterManager.get(component.format()); List<Asset> assets = StreamSupport.stream(storageTx.browseAssets(component).spliterator(), false) .filter( (Asset asset) -> contentPermissionChecker.isPermitted( repository.getName(), asset.format(), BreadActions.BROWSE, variableResolverAdapter.fromAsset(asset))) .collect(Collectors.toList()); return new BrowseResult<>(assets.size(), assets); } }
@Override public BrowseResult<Asset> previewAssets( final List<Repository> repositories, final String jexlExpression, @Nullable final String filter, @Nullable final String sortProperty, @Nullable final String sortDirection, @Nullable final Integer start, @Nullable final Integer limit) { checkNotNull(repositories); checkNotNull(jexlExpression); final Repository repository = repositories.get(0); try (StorageTx storageTx = repository.facet(StorageFacet.class).txSupplier().get()) { storageTx.begin(); List<Repository> previewRepositories; if (repositories.size() == 1 && groupType.equals(repository.getType())) { previewRepositories = repository.facet(GroupFacet.class).leafMembers(); } else { previewRepositories = repositories; } QueryOptions options = new QueryOptions(filter, sortProperty, sortDirection, start, limit, repository.getName()); PreviewAssetsSqlBuilder builder = new PreviewAssetsSqlBuilder( repository.getName(), jexlExpression, previewRepositories.stream().map(Repository::getName).collect(Collectors.toList()), options); return new BrowseResult<>( storageTx.countAssets( builder.buildWhereClause(), builder.buildSqlParams(), repositories, null), Lists.newArrayList( storageTx.findAssets( builder.buildWhereClause(), builder.buildSqlParams(), previewRepositories, builder.buildQuerySuffix()))); } }
@Override @Guarded(by = STARTED) public List<Repository> members() { final Repository repository = getRepository(); List<Repository> members = new ArrayList<>(config.memberNames.size()); for (String name : config.memberNames) { Repository member = repositoryManager.get(name); if (member == null) { log.warn("Ignoring missing member repository: {}", name); } else if (!repository.getFormat().equals(member.getFormat())) { log.warn( "Group {} includes an incompatible-format member: {} with format {}", repository.getName(), name, member.getFormat()); } else { members.add(member); } } return members; }
@Override public BrowseResult<Component> browseComponents( final Repository repository, @Nullable final String filter, @Nullable final String sortProperty, @Nullable final String sortDirection, @Nullable final Integer start, @Nullable final Integer limit) { checkNotNull(repository); final List<Repository> repositories = getRepositories(repository); try (StorageTx storageTx = repository.facet(StorageFacet.class).txSupplier().get()) { storageTx.begin(); List<Bucket> buckets = getBuckets(storageTx, repositories); QueryOptions options = new QueryOptions(filter, sortProperty, sortDirection, start, limit, repository.getName()); BrowseComponentsSqlBuilder builder = new BrowseComponentsSqlBuilder(groupType.equals(repository.getType()), buckets, options); return new BrowseResult<>( getCount(storageTx.browse(builder.buildCountSql(), builder.buildSqlParams())), getComponents(storageTx.browse(builder.buildBrowseSql(), builder.buildSqlParams()))); } }
@Override @Guarded(by = STARTED) public boolean member(final Repository repository) { checkNotNull(repository); return config.memberNames.contains(repository.getName()); }
public boolean contains(final Repository repository) { return dispatched.contains(repository.getName()); }
public void add(final Repository repository) { dispatched.add(repository.getName()); }