package uk.nhs.kch.rassyeyanie.framework; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.springframework.beans.factory.annotation.Autowired; import uk.nhs.kch.rassyeyanie.framework.dto.KeyValuePairItem; import uk.nhs.kch.rassyeyanie.framework.repository.RepositoryFactoryInterface; import uk.nhs.kch.rassyeyanie.framework.repository.RepositoryInterface; import ca.uhn.hl7v2.HL7Exception; import ca.uhn.hl7v2.model.AbstractMessage; import ca.uhn.hl7v2.model.Segment; import ca.uhn.hl7v2.parser.PipeParser; import ca.uhn.hl7v2.util.DeepCopy; @Deprecated public abstract class AbstractProcessor implements Processor { @Autowired private RepositoryFactoryInterface repositoryFactory; public PipeParser getParser() { return Util.createVersionedParser("2.4"); } public RepositoryFactoryInterface getRepositoryFactory() { return this.repositoryFactory; } protected String lookupContextValueFromKey(String context, String key) { RepositoryInterface<KeyValuePairItem> keyValueItemRepository = this.getRepositoryFactory().getKeyValuePairItemRepository(); KeyValuePairItem keyValuePairItem = keyValueItemRepository.Get(context, key); if (keyValuePairItem == null) return null; return keyValuePairItem.getItemValue(); } @Override public void process(Exchange exchange) throws Exception { AbstractMessage workingMessage = exchange.getIn().getBody(AbstractMessage.class); this.dispatchProcessFixture(workingMessage); } protected abstract void dispatchProcessFixture(AbstractMessage workingMessage) throws HL7Exception; public void setRepositoryFactory(RepositoryFactoryInterface repositoryFactory) { this.repositoryFactory = repositoryFactory; } protected <T extends Segment> T copySegment(T originalSegment, T clonedSegment) throws HL7Exception { DeepCopy.copy(originalSegment, clonedSegment); return clonedSegment; } }