View Javadoc

1   /*
2    * This file is a part of CAST project.
3    * (c) Copyright 2007, AGH University of Science & Technology
4    * https://caribou.iisg.agh.edu.pl/trac/cast
5    *
6    * Licensed under the Eclipse Public License, Version 1.0 (the "License").
7    * You may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    * http://www.eclipse.org/legal/epl-v10.html
10   */
11  /*
12   * File: IConverter.java
13   * Created: 2009-08-04
14   * Author: tmilos
15   * $Id$
16   */
17  
18  package pl.edu.agh.cast.data.converter;
19  
20  import java.util.List;
21  
22  import pl.edu.agh.cast.common.collections.MultiMap;
23  import pl.edu.agh.cast.data.model.IDataSet;
24  import pl.edu.agh.cast.data.model.IElement;
25  
26  /**
27   * An interface of a data set converter.
28   *
29   * <p>
30   * Converters allow for transforming one or more (input) data sets of specified type into a new (output) data set of
31   * specified type. Information about input entries and output type are encapsulated in converter specification.
32   *
33   * @see ConverterSpecification
34   *
35   * @author AGH CAST Team
36   */
37  public interface IConverter {
38  
39  	/**
40  	 * Returns the converter specification.
41  	 *
42  	 * @return the converter specification
43  	 */
44  	public ConverterSpecification getSpecification();
45  
46  	/**
47  	 * Converts given input data sets into a new output data set.
48  	 *
49  	 * @param <T>
50  	 *            the type of conversion output data set
51  	 * @param dataSets
52  	 *            a map of data sets indexed by the input entries returned by the {@link #getInputEntries()} method
53  	 * @return an instance of a data set of the same type as returned by the {@link #getOutputType()} method
54  	 *
55  	 * @throws ConverterException
56  	 *             if the input data sets do not conform to the input entry specification or a data set conversion
57  	 *             failed
58  	 */
59  	public <T extends IDataSet<? extends IElement>> T convert(
60  	        MultiMap<ConverterInputEntry, ? extends IDataSet<? extends IElement>> dataSets) throws ConverterException;
61  
62  	/**
63  	 * Converts given input data sets into a new output data set.
64  	 *
65  	 * @param <T>
66  	 *            the type of conversion output data set
67  	 * @param dataSets
68  	 *            a list of data sets
69  	 * @return an instance of a data set of the same type as returned by the {@link #getOutputType()} method
70  	 *
71  	 * @throws ConverterException
72  	 *             if the input data sets do not conform to the input entry specification or a data set conversion
73  	 *             failed
74  	 */
75  	public <T extends IDataSet<? extends IElement>> T convert(List<? extends IDataSet<? extends IElement>> dataSets)
76  	        throws ConverterException;
77  
78  }