public List<FileItem> getFileList() throws SearchLibException {
    synchronized (this) {
      if (fileList != null) return fileList;

      FileManager fileManager = getFileManager();
      if (fileManager == null) return null;

      fileList = new ArrayList<FileItem>();
      AbstractSearchRequest searchRequest =
          getSearchRequest(fileManager, SearchTemplate.fileSearch);

      totalSize =
          (int)
              fileManager.getFiles(
                  searchRequest,
                  FileItemFieldEnum.INSTANCE.uri,
                  true,
                  getPageSize() * getActivePage(),
                  getPageSize(),
                  fileList);
      return fileList;
    }
  }
 private AbstractSearchRequest getSearchRequest(
     FileManager fileManager, SearchTemplate fileSearchTemplate) throws SearchLibException {
   return fileManager.fileQuery(
       fileSearchTemplate,
       getRepository(),
       getFileName(),
       getLang(),
       null,
       getMinContentLength(),
       getMaxContentLength(),
       getExtension(),
       getFetchStatus(),
       getParserStatus(),
       getIndexStatus(),
       getCrawlDateStart(),
       getCrawlDateEnd(),
       getDateModifiedStart(),
       getDateModifiedEnd(),
       getFileType(),
       null,
       getMinTime(),
       getMaxTime(),
       getParser());
 }