JAL-1432 updated copyright notices
[jalview.git] / src / jalview / io / packed / DataProvider.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
3  * Copyright (C) 2014 The Jalview Authors
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  * The Jalview Authors are detailed in the 'AUTHORS' file.
18  */
19 package jalview.io.packed;
20
21 /**
22  * API for a data provider that can be used with
23  * jalview.io.packed.ParsePackedSet
24  * 
25  * @author JimP
26  * 
27  */
28 public interface DataProvider
29 {
30   /**
31    * class of data expected to be provided by datasource
32    * 
33    * @author JimP
34    * 
35    */
36   public enum JvDataType
37   {
38     /**
39      * any alignment flatfile recognisable by jalview.io.IdentifyFile
40      */
41     ALIGNMENT,
42     /**
43      * a jalview annotation file
44      */
45     ANNOTATION,
46     /**
47      * a GFF or Jalview features file
48      */
49     FEATURES,
50     /**
51      * a tree representation understood by the NewickFile parser
52      */
53     TREE,
54     /**
55      * any file that provides data that should be associated with a specified
56      * sequence.
57      */
58     SEQASSOCATED;
59   }
60
61   /**
62    * data to be parsed according to its type. Each call to getDataSource should
63    * return a new instance of the same data stream initialised to the beginning
64    * of the chunk of data that is to be parsed.
65    * 
66    * @return
67    */
68   jalview.io.FileParse getDataSource();
69
70   /**
71    * association context for data. Either null or a specific sequence.
72    * 
73    * @return
74    */
75   Object getSequenceTarget();
76
77   /**
78    * type of data
79    * 
80    * @return
81    */
82   DataProvider.JvDataType getType();
83 }