update author list in license for (JAL-826)
[jalview.git] / src / jalview / io / packed / DataProvider.java
1 /*******************************************************************************
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
3  * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
4  *
5  * This file is part of Jalview.
6  *
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
10  *
11  * Jalview is distributed in the hope that it will be useful, but 
12  * WITHOUT ANY WARRANTY; without even the implied warranty 
13  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
14  * PURPOSE.  See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
17  *******************************************************************************/
18 package jalview.io.packed;
19
20 /**
21  * API for a data provider that can be used with jalview.io.packed.ParsePackedSet
22  * @author JimP
23  *
24  */
25 public interface DataProvider
26 {
27   /**
28    * class of data expected to be provided by datasource
29    * @author JimP
30    *
31    */
32   public enum JvDataType
33   {
34     /**
35      * any alignment flatfile recognisable by jalview.io.IdentifyFile
36      */
37     ALIGNMENT,
38     /**
39      * a jalview annotation file
40      */
41     ANNOTATION, 
42     /**
43      * a GFF or Jalview features file 
44      */
45     FEATURES,
46     /**
47      * a tree representation understood by the NewickFile parser
48      */
49     TREE,
50     /**
51      * any file that provides data that should be associated with a specified sequence.
52      */
53     SEQASSOCATED;
54   }
55
56   /**
57    * data to be parsed according to its type. Each call to getDataSource
58    * should return a new instance of the same data stream initialised to the
59    * beginning of the chunk of data that is to be parsed.
60    * 
61    * @return
62    */
63   jalview.io.FileParse getDataSource();
64
65   /**
66    * association context for data. Either null or a specific sequence.
67    * 
68    * @return
69    */
70   Object getSequenceTarget();
71
72   /**
73    * type of data
74    * 
75    * @return
76    */
77   DataProvider.JvDataType getType();
78 }