Search in sources :

Example 1 with Tuple4

use of org.codelibs.core.misc.Tuple4 in project fess by codelibs.

the class HtmlTagBasedGenerator method createTask.

@Override
public Tuple4<String, String, String, String> createTask(final String path, final Map<String, Object> docMap) {
    final FessConfig fessConfig = ComponentUtil.getFessConfig();
    final String thumbnailId = DocumentUtil.getValue(docMap, fessConfig.getIndexFieldId(), String.class);
    final String url = DocumentUtil.getValue(docMap, fessConfig.getIndexFieldThumbnail(), String.class);
    if (StringUtil.isBlank(url)) {
        return null;
    }
    return new Tuple4<>(getName(), thumbnailId, url, path);
}
Also used : Tuple4(org.codelibs.core.misc.Tuple4) FessConfig(org.codelibs.fess.mylasta.direction.FessConfig)

Example 2 with Tuple4

use of org.codelibs.core.misc.Tuple4 in project fess by codelibs.

the class BaseThumbnailGenerator method createTask.

@Override
public Tuple4<String, String, String, String> createTask(final String path, final Map<String, Object> docMap) {
    final FessConfig fessConfig = ComponentUtil.getFessConfig();
    final String thumbnailId = DocumentUtil.getValue(docMap, fessConfig.getIndexFieldId(), String.class);
    final String url = DocumentUtil.getValue(docMap, fessConfig.getIndexFieldUrl(), String.class);
    return new Tuple4<>(getName(), thumbnailId, url, path);
}
Also used : Tuple4(org.codelibs.core.misc.Tuple4) FessConfig(org.codelibs.fess.mylasta.direction.FessConfig)

Example 3 with Tuple4

use of org.codelibs.core.misc.Tuple4 in project fess by codelibs.

the class ThumbnailManager method init.

@PostConstruct
public void init() {
    final String thumbnailPath = System.getProperty(FESS_THUMBNAIL_PATH);
    if (thumbnailPath != null) {
        baseDir = new File(thumbnailPath);
    } else {
        final String varPath = System.getProperty(FESS_VAR_PATH);
        if (varPath != null) {
            baseDir = new File(varPath, "thumbnails");
        } else {
            baseDir = ResourceUtil.getThumbnailPath().toFile();
        }
    }
    if (baseDir.mkdirs()) {
        logger.info("Created: " + baseDir.getAbsolutePath());
    }
    if (!baseDir.isDirectory()) {
        throw new FessSystemException("Not found: " + baseDir.getAbsolutePath());
    }
    if (logger.isDebugEnabled()) {
        logger.debug("Thumbnail Directory: " + baseDir.getAbsolutePath());
    }
    thumbnailTaskQueue = new LinkedBlockingQueue<>(thumbnailTaskQueueSize);
    generating = true;
    thumbnailQueueThread = new Thread((Runnable) () -> {
        final List<Tuple4<String, String, String, String>> taskList = new ArrayList<>();
        while (generating) {
            try {
                final Tuple4<String, String, String, String> task = thumbnailTaskQueue.poll(thumbnailTaskQueueTimeout, TimeUnit.MILLISECONDS);
                if (task == null) {
                    if (!taskList.isEmpty()) {
                        storeQueue(taskList);
                    }
                } else if (!taskList.contains(task)) {
                    taskList.add(task);
                    if (taskList.size() > thumbnailTaskBulkSize) {
                        storeQueue(taskList);
                    }
                }
            } catch (final InterruptedException e) {
                logger.debug("Interupted task.", e);
            } catch (final Exception e) {
                if (generating) {
                    logger.warn("Failed to generage a thumbnail.", e);
                }
            }
        }
    }, "ThumbnailGenerator");
    thumbnailQueueThread.start();
}
Also used : Tuple4(org.codelibs.core.misc.Tuple4) ArrayList(java.util.ArrayList) File(java.io.File) FessSystemException(org.codelibs.fess.exception.FessSystemException) JobProcessingException(org.codelibs.fess.exception.JobProcessingException) IOException(java.io.IOException) FessSystemException(org.codelibs.fess.exception.FessSystemException) PostConstruct(javax.annotation.PostConstruct)

Example 4 with Tuple4

use of org.codelibs.core.misc.Tuple4 in project fess by codelibs.

the class ThumbnailManager method storeQueue.

protected void storeQueue(final List<Tuple4<String, String, String, String>> taskList) {
    final FessConfig fessConfig = ComponentUtil.getFessConfig();
    final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
    final String[] targets = fessConfig.getThumbnailGeneratorTargetsAsArray();
    final List<ThumbnailQueue> list = new ArrayList<>();
    taskList.stream().filter(entity -> entity != null).forEach(task -> {
        for (final String target : targets) {
            final ThumbnailQueue entity = new ThumbnailQueue();
            entity.setGenerator(task.getValue1());
            entity.setThumbnailId(task.getValue2());
            entity.setUrl(task.getValue3());
            entity.setPath(task.getValue4());
            entity.setTarget(target);
            entity.setCreatedBy(Constants.SYSTEM_USER);
            entity.setCreatedTime(systemHelper.getCurrentTimeAsLong());
            list.add(entity);
        }
    });
    taskList.clear();
    final ThumbnailQueueBhv thumbnailQueueBhv = ComponentUtil.getComponent(ThumbnailQueueBhv.class);
    thumbnailQueueBhv.batchInsert(list);
}
Also used : ThumbnailQueueBhv(org.codelibs.fess.es.config.exbhv.ThumbnailQueueBhv) Constants(org.codelibs.fess.Constants) DocumentUtil(org.codelibs.fess.util.DocumentUtil) FessSystemException(org.codelibs.fess.exception.FessSystemException) LoggerFactory(org.slf4j.LoggerFactory) HashMap(java.util.HashMap) LruHashMap(org.codelibs.core.collection.LruHashMap) LaRequestUtil(org.lastaflute.web.util.LaRequestUtil) ArrayList(java.util.ArrayList) ThumbnailQueue(org.codelibs.fess.es.config.exentity.ThumbnailQueue) PreDestroy(javax.annotation.PreDestroy) ResourceUtil(org.codelibs.fess.util.ResourceUtil) FessConfig(org.codelibs.fess.mylasta.direction.FessConfig) Lists(com.google.common.collect.Lists) Map(java.util.Map) JobProcessingException(org.codelibs.fess.exception.JobProcessingException) Path(java.nio.file.Path) HttpSession(javax.servlet.http.HttpSession) Tuple4(org.codelibs.core.misc.Tuple4) Logger(org.slf4j.Logger) FileVisitor(java.nio.file.FileVisitor) Files(java.nio.file.Files) StringUtil(org.codelibs.core.lang.StringUtil) IOException(java.io.IOException) BlockingQueue(java.util.concurrent.BlockingQueue) BasicFileAttributes(java.nio.file.attribute.BasicFileAttributes) LinkedBlockingQueue(java.util.concurrent.LinkedBlockingQueue) File(java.io.File) TimeUnit(java.util.concurrent.TimeUnit) FileVisitResult(java.nio.file.FileVisitResult) List(java.util.List) ComponentUtil(org.codelibs.fess.util.ComponentUtil) SystemHelper(org.codelibs.fess.helper.SystemHelper) PostConstruct(javax.annotation.PostConstruct) ThumbnailQueueBhv(org.codelibs.fess.es.config.exbhv.ThumbnailQueueBhv) SystemHelper(org.codelibs.fess.helper.SystemHelper) ArrayList(java.util.ArrayList) ThumbnailQueue(org.codelibs.fess.es.config.exentity.ThumbnailQueue) FessConfig(org.codelibs.fess.mylasta.direction.FessConfig)

Aggregations

Tuple4 (org.codelibs.core.misc.Tuple4)4 FessConfig (org.codelibs.fess.mylasta.direction.FessConfig)3 File (java.io.File)2 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 PostConstruct (javax.annotation.PostConstruct)2 FessSystemException (org.codelibs.fess.exception.FessSystemException)2 JobProcessingException (org.codelibs.fess.exception.JobProcessingException)2 Lists (com.google.common.collect.Lists)1 FileVisitResult (java.nio.file.FileVisitResult)1 FileVisitor (java.nio.file.FileVisitor)1 Files (java.nio.file.Files)1 Path (java.nio.file.Path)1 BasicFileAttributes (java.nio.file.attribute.BasicFileAttributes)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 BlockingQueue (java.util.concurrent.BlockingQueue)1 LinkedBlockingQueue (java.util.concurrent.LinkedBlockingQueue)1 TimeUnit (java.util.concurrent.TimeUnit)1