Tuesday, October 1, 2013

MetaIndexerReceiverService -> Web traffic, glitches slow Obamacare exchanges launch -> tought on food again.



A not yet finished but already readable Java Class.

package org.nanotek.mq.receive;

import org.nanotek.Kong;
import org.nanotek.cms.domain.lucene.Index;
import org.nanotek.cms.domain.message.MessageType;
import org.nanotek.lucene.index.manage.LuceneIndexWriteService;
import org.nanotek.mq.MessageException;
import org.nanotek.mq.Receiver;
import org.nanotek.mq.ReceiverService;
import org.nanotek.util.Base;
//import org.springframework.jms.listener.DefaultMessageListenerContainer;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageProperties;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

//T extends MessageType

public class MetaIndexerReceiverService implements ReceiverService  <Base<Kong<String>>,Message,MessageProperties>, ApplicationContextAware   {

        private ApplicationContext context;
        LuceneIndexWriteService<Base<?>> indexWriteService;

        public MetaIndexerReceiverService() {
        }

        @Override
        public void setApplicationContext(ApplicationContext context)
                        throws BeansException {
                this.context = context;
        }

        @Override
        public void processMessage(Base<Kong<String>> messageType,
                        Message bodyMessage) {
                MessageProperties parameters = (MessageProperties) context.getBean("defaultReceiverParameter");
                processMessage (messageType , bodyMessage , parameters);
        }


        @Override
        public void processMessage(Base<Kong<String>> messageType,
                        Message bodyMessage, MessageProperties parameters) {

now what...//
processMessage(MessageTransformer.getMessage(bodyMessage));
        }


        public void processMessage(MessageType messageType,
                        Base<?> bodyMessage) throws MessageException {
                try{
                        switch(messageType) {
                        case IndexCreate:
                                System.err.println("INDEX REQUEST CREATE INDEX");
                                createIndex(bodyMessage);
                                break;
                        case IndexDelete:
                                System.err.println("INDEX REQUEST DELETE NOT YET IMPLEMENTED");
                        case DocumentCreate:
                                System.err.println("INDEX REQUEST DOCUMENT CREATED");
                                addDocument(bodyMessage);
                                break;
                        case IndexClose:
                                System.err.println("INDEX REQUEST DOCUMENT CREATED");
                                closeIndex(bodyMessage);
                                break;
                        default:
                                break;
                        }
                }catch(Exception ex){
                        throw new MessageException(ex);
                }
        }

        private void closeIndex(Base<?> bodyMessage) {
                indexWriteService.shutDownService();
        }

        private void addDocument(Base<?> bodyMessage) {
                if (indexWriteService.getStarted() == true)
                        indexWriteService.indexDocument(bodyMessage);
                else
                        throw new MessageException("Service NOT YET STARTED");
        }

        private void createIndex(Base<?> bodyMessage) {
                Index index = (Index) bodyMessage;
//              if (indexWriteService.getStarted() == false)
                indexWriteService.initService(index);
//              else
//              indexWriteService.createIndexWriter(index);
        }

        public LuceneIndexWriteService<?> getIndexWriteService() {
                return indexWriteService;
        }

        public void setIndexWriteService(LuceneIndexWriteService<?> indexWriteService) {
                this.indexWriteService = (LuceneIndexWriteService<Base<?>>) indexWriteService;
        }

}