001/* Copyright (C) 2013 TU Dortmund
002 * This file is part of LearnLib, http://www.learnlib.de/.
003 * 
004 * LearnLib is free software; you can redistribute it and/or
005 * modify it under the terms of the GNU Lesser General Public
006 * License version 3.0 as published by the Free Software Foundation.
007 * 
008 * LearnLib is distributed in the hope that it will be useful,
009 * but WITHOUT ANY WARRANTY; without even the implied warranty of
010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
011 * Lesser General Public License for more details.
012 * 
013 * You should have received a copy of the GNU Lesser General Public
014 * License along with LearnLib; if not, see
015 * <http://www.gnu.de/documents/lgpl.en.html>.
016 */
017package de.learnlib.oracles;
018
019import net.automatalib.words.Word;
020import de.learnlib.api.Query;
021
022/**
023 * A query is a container for tests a learning algorithms performs, containing
024 * the actual test and the corresponding result.
025 *
026 * @param <I> input symbol class.
027 * @param <O> output class. 
028 * 
029 * @author Maik Merten <maikmerten@googlemail.com>
030 */
031public class DefaultQuery<I, O> extends AbstractQuery<I,O> {
032    
033    private O output;
034    
035    public DefaultQuery(Word<I> prefix, Word<I> suffix) {
036        super(prefix, suffix);
037    }
038    
039    public DefaultQuery(Word<I> prefix, Word<I> suffix, O output) {
040        this(prefix, suffix);
041        this.output = output;
042    }
043    
044    public DefaultQuery(Word<I> input) {
045        super(input);
046    }
047    
048    public DefaultQuery(Word<I> input, O output) {
049        super(input);
050        this.output = output;
051    }
052    
053    public DefaultQuery(Query<I,?> query) {
054        super(query);
055    }
056
057    public O getOutput() {
058        return output;
059    }
060
061    /*
062     * (non-Javadoc)
063     * @see de.learnlib.api.Query#setOutput(java.lang.Object)
064     */
065    @Override
066    public void answer(O output) {
067        this.output = output;
068    }
069}