001/*
002 The contents of this file are subject to the Mozilla Public License Version 1.1
003 (the "License"); you may not use this file except in compliance with the License.
004 You may obtain a copy of the License at http://www.mozilla.org/MPL/
005 Software distributed under the License is distributed on an "AS IS" basis,
006 WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the
007 specific language governing rights and limitations under the License.
008
009 The Original Code is "DelegatingMessageVisitor.java ".  Description:
010 "Delegating visitor base class"
011
012 The Initial Developer of the Original Code is University Health Network. Copyright (C)
013 2013.  All Rights Reserved.
014
015 Contributor(s): ______________________________________.
016
017 Alternatively, the contents of this file may be used under the terms of the
018 GNU General Public License (the "GPL"), in which case the provisions of the GPL are
019 applicable instead of those above.  If you wish to allow use of your version of this
020 file only under the terms of the GPL and not to allow others to use your version
021 of this file under the MPL, indicate your decision by deleting  the provisions above
022 and replace  them with the notice and other provisions required by the GPL License.
023 If you do not delete the provisions above, a recipient may use your version of
024 this file under either the MPL or the GPL.
025 */
026
027package ca.uhn.hl7v2.model;
028
029import ca.uhn.hl7v2.HL7Exception;
030import ca.uhn.hl7v2.Location;
031
032import org.slf4j.Logger;
033import org.slf4j.LoggerFactory;
034
035/**
036 * Delegates all visit method calls to the wrapped MessageVisitor. This class can be used
037 */
038public class DelegatingMessageVisitor<T extends MessageVisitor> implements MessageVisitor {
039
040    private T delegate;
041    protected static final Logger LOG = LoggerFactory.getLogger(DelegatingMessageVisitor.class);
042
043    /**
044     * @param delegate MessageVisitor to which all calls are delegated to
045     */
046    public DelegatingMessageVisitor(T delegate) {
047        this.delegate = delegate;
048    }
049
050    /**
051     * @return MessageVisitor to which all calls are delegated to
052     */
053    public T getDelegate() {
054        return delegate;
055    }
056
057    public boolean start(Message message) throws HL7Exception {
058        return delegate.start(message);
059    }
060
061    public boolean end(Message message) throws HL7Exception {
062        return delegate.end(message);
063    }
064
065    public boolean start(Group group, Location location) throws HL7Exception {
066        return delegate.start(group, location);
067    }
068
069    public boolean end(Group group, Location location) throws HL7Exception {
070        return delegate.end(group, location);
071    }
072
073    public boolean start(Segment segment, Location location) throws HL7Exception {
074        return delegate.start(segment, location);
075    }
076
077    public boolean end(Segment segment, Location location) throws HL7Exception {
078        return delegate.end(segment, location);
079    }
080
081    public boolean start(Field field, Location location) throws HL7Exception {
082        return delegate.start(field, location);
083    }
084
085    public boolean end(Field Field, Location location) throws HL7Exception {
086        return delegate.end(Field, location);
087    }
088    
089    public boolean start(Composite type, Location location) throws HL7Exception {
090        return delegate.start(type, location);
091    }
092
093    public boolean end(Composite type, Location location) throws HL7Exception {
094        return delegate.end(type, location);
095    }
096
097    public boolean visit(Primitive type, Location location) throws HL7Exception {
098        return delegate.visit(type, location);
099    }
100
101}