0
|
1 package datastructures;
|
|
2
|
|
3 import java.util.Scanner;
|
|
4
|
|
5 import exceptions.ChromosomeFormatException;
|
|
6 import exceptions.ChromosomeNotFoundException;
|
|
7 import exceptions.NullOrNegativeRangeException;
|
|
8 import exceptions.RangeFormatException;
|
|
9 import exceptions.RangeLimitNotFoundException;
|
|
10
|
|
11 /**
|
|
12 * Represents a target Line from the target file.
|
|
13 *
|
|
14 * @author Ali Abdallah
|
|
15 * @version 19.07.2011
|
|
16 * @since Java 1.6
|
|
17 */
|
|
18
|
|
19 public class TargetLine {
|
|
20
|
|
21 String line;
|
|
22 String chrom;
|
|
23 int start, end;
|
|
24
|
|
25 public TargetLine(String line) throws RangeFormatException,
|
|
26 ChromosomeFormatException,
|
|
27 ChromosomeNotFoundException,
|
|
28 RangeLimitNotFoundException,
|
|
29 NullOrNegativeRangeException {
|
|
30 this.line = line;
|
|
31 Scanner s = new Scanner(line);
|
|
32 if(s.hasNext()){
|
|
33 chrom = s.next();
|
|
34 if(!(chrom.toLowerCase().startsWith("chr") || chrom.equals("*")))
|
|
35 throw new ChromosomeFormatException(chrom);
|
|
36 }
|
|
37 else
|
|
38 throw new ChromosomeNotFoundException();
|
|
39
|
|
40 if(s.hasNextInt()){
|
|
41 start = s.nextInt();
|
|
42 if(start < 0){
|
|
43 throw new RangeFormatException("Start position of the target must be a " +
|
|
44 "positive integer.");
|
|
45 }
|
|
46 }
|
|
47 else if(!s.hasNext())
|
|
48 throw new RangeLimitNotFoundException("No target range start found!");
|
|
49 else
|
|
50 throw new RangeFormatException("Target start position" +
|
|
51 " is not an integer. It must be a positive" +
|
|
52 " integer."+ " Found: "+start);
|
|
53
|
|
54 if(s.hasNextInt()){
|
|
55 end = s.nextInt();
|
|
56 if(end < 0){
|
|
57 throw new RangeFormatException("Target end position must be a positive " +
|
|
58 "integer."+ " Found: "+end);
|
|
59 }
|
|
60 }
|
|
61 else if(!s.hasNext())
|
|
62 throw new RangeLimitNotFoundException("No range end found!");
|
|
63 else
|
|
64 throw new RangeFormatException("Found: "+end+". End position ist not an integer. " +
|
|
65 "It must be a positive integer.");
|
|
66
|
|
67 if(start >= end)
|
|
68 throw new NullOrNegativeRangeException("Target line \""+line+"\"");
|
|
69 }
|
|
70
|
|
71 public String chrom(){
|
|
72 return chrom;
|
|
73 }
|
|
74
|
|
75 public int start(){
|
|
76 return start;
|
|
77 }
|
|
78
|
|
79 public int end(){
|
|
80 return end;
|
|
81 }
|
|
82
|
|
83 public String toString(){
|
|
84 return line;
|
|
85 }
|
|
86
|
|
87 }
|