jp.co.opentone.bsol.linkbinder.subscriber.ElasticsearchDocumentSubscriber.java Source code

Java tutorial

Introduction

Here is the source code for jp.co.opentone.bsol.linkbinder.subscriber.ElasticsearchDocumentSubscriber.java

Source

/*
 * Copyright 2016 OPEN TONE Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package jp.co.opentone.bsol.linkbinder.subscriber;

import jp.co.opentone.bsol.framework.core.service.ServiceAbortException;
import jp.co.opentone.bsol.linkbinder.dto.Attachment;
import jp.co.opentone.bsol.linkbinder.dto.Correspon;
import jp.co.opentone.bsol.linkbinder.event.CorresponAttachmentChanged;
import jp.co.opentone.bsol.linkbinder.event.CorresponCreated;
import jp.co.opentone.bsol.linkbinder.event.CorresponDeleted;
import jp.co.opentone.bsol.linkbinder.event.CorresponEvent;
import jp.co.opentone.bsol.linkbinder.event.CorresponIssued;
import jp.co.opentone.bsol.linkbinder.event.CorresponUpdated;
import jp.co.opentone.bsol.linkbinder.event.CorresponWorkflowStatusChanged;
import jp.co.opentone.bsol.linkbinder.service.correspon.CorresponFullTextSearchService;
import jp.co.opentone.bsol.linkbinder.service.correspon.CorresponService;
import jp.co.opentone.bsol.linkbinder.service.correspon.ImageTextDetectionService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @author opentone
 */
@Component
public class ElasticsearchDocumentSubscriber extends Subscriber {

    /** . */
    @Autowired
    private CorresponService corresponService;
    /** . */
    @Autowired
    private CorresponFullTextSearchService service;
    /** ?. */
    @Autowired
    private ImageTextDetectionService imageTextDetectionService;

    /*
     * (? Javadoc)
     * @see jp.co.opentone.bsol.linkbinder.event.DomainEventListener#getMyEvents()
     */
    @Override
    public String[] getMyEvents() {
        return new String[] { CorresponCreated.NAME, CorresponUpdated.NAME, CorresponDeleted.NAME,
                CorresponIssued.NAME, CorresponAttachmentChanged.NAME, CorresponWorkflowStatusChanged.NAME };
    }

    /* (? Javadoc)
     * @see redis.clients.jedis.JedisPubSub#onMessage(java.lang.String, java.lang.String)
     */
    @Override
    public void onMessage(String channel, String message) {
        log.info("[{}] RECEIVED: {}, {}", new Object[] { getClass().getSimpleName(), channel, message });
        CorresponEvent event = parseJsonMessage(message, CorresponEvent.class);
        try {
            setupProcessContext(event.getProjectId());

            Correspon correspon = corresponService.find(event.getId());
            List<Attachment> attachments = corresponService.findAttachments(correspon.getId());

            if (StringUtils.equals(CorresponDeleted.NAME, event.getEventName())) {
                log.info("[{}] DELETE from index: {}", getClass().getSimpleName(), correspon.getId());
                service.deleteFromIndex(correspon, attachments);
            } else {
                log.info("[{}] ADD to index: {}", getClass().getSimpleName(), correspon.getId());
                imageTextDetectionService.detectTextAndFill(attachments);
                service.addToIndex(correspon, attachments);
            }

        } catch (ServiceAbortException | RuntimeException e) {
            log.error("index??????", e);
        }
    }
}