Jump to content
  • Synchronize organization folders from folder template


    Jim W
    • Features: JasperReports Server Version: v7.1 Product: Aperte Reports

    Description:

    You are following this example in the TIBCO JasperReports® Server Ultimate Guide v6.3.0, "Repository Service API"

    [toc]
    ===========
    FilterCriteria filterCriteria = FilterCriteria.createFilter();
    filterCriteria.addFilterElement(FilterCriteria.createParentFolderFilter(folderURI));
    List resources = repositoryService.loadResourcesList(context, filterCriteria);
    ===========
    FilterCriteria filterCriteria = FilterCriteria.createFilter(FileResource.class);
    filterCriteria.addFilterElement(FilterCriteria.createParentFolderFilter(folderURI));
    FilterElementDisjunction fileTypeDisj = filterCriteria.addDisjunction();
    fileTypeDisj.addFilterElement(FilterCriteria.createPropertyEqualsFilter("fileType",FileResource.TYPE_IMAGE);
    fileTypeDisj.addFilterElement(FilterCriteria.createPropertyEqualsFilter("fileType",FileResource.TYPE_JRXML);
    List resources = repositoryService.loadResourcesList(context, filterCriteria);

    The following code would not work when using URI:

    ExecutionContext ctx = new ExecutionContextImpl();
    List<String> contextAttributes = new ArrayList<>();
    contextAttributes.add(ObjectPermissionService.PRIVILEGED_OPERATION);
    ctx.setAttributes(contextAttributes);
    
    FilterCriteria filterCriteria = FilterCriteria.createFilter();
    filterCriteria.addFilterElement(FilterCriteria.createParentFolderFilter(folder.getURI()));
    List resources = this.repositoryService.loadResourcesList(ctx, filterCriteria);

    Resolution:

    Create the ParentFolderFilter by folder path instead of folder URI.

    Repository Search Documentation Update

    You get the list of child resources within a given folder by using filter criteria. The server expects an instance of the com.jaspersoft.jasperserver.api.metadata.view.domain.FilterCriteria class as a parameter in the method call. The list of returned resources matches the selected filter conditions. The only required condition for a FilterCriteria instance is that the returned resources’ parent folder must match a given folder. You will need to set the path to the parent folder. For example:

    FilterCriteria filterCriteria = FilterCriteria.createFilter();
    filterCriteria.addFilterElement(FilterCriteria.createParentFolderFilter("/examples"));
    List resources = repositoryService.loadResourcesList(context, filterCriteria);

    The loadResourcesList method returns a list of ResourceLookup objects that contain basic resource attributes like the name and label. To retrieve the full resource definition, you must use the getResource method. You can apply further filtering to get a refined list of resources based on a given resource type or other conditions. For example, the following retrieves all the images and JRXML files in a folder:

    FilterCriteria filterCriteria = FilterCriteria.createFilter(FileResource.class);
    filterCriteria.addFilterElement(FilterCriteria.createParentFolderFilter("/examples"));
    FilterElementDisjunction fileTypeDisj = filterCriteria.addDisjunction();
    fileTypeDisj.addFilterElement(FilterCriteria.createPropertyEqualsFilter("fileType", FileResource.TYPE_IMAGE);
    fileTypeDisj.addFilterElement(FilterCriteria.createPropertyEqualsFilter("fileType", FileResource.TYPE_JRXML);
    List resources = repositoryService.loadResourcesList(context, filterCriteria);

     


    User Feedback

    Recommended Comments

    There are no comments to display.



    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

×
×
  • Create New...