001 package util.redshift; 002 003 import util.Star; 004 import util.Line; 005 import java.io.*; 006 import java.text.DecimalFormat; 007 import java.util.*; 008 009 /** 010 * A data container to hold the quasar instances from the Veron-Cetty catalog 011 * 2003 012 */ 013 public class Quasar implements Star, Comparable<Quasar> { 014 public String name; 015 public String ra; 016 public String dec; 017 public String mag; 018 public String zem; 019 protected double zemValue = 0.0; 020 public String refs; 021 022 public Quasar(double z) { 023 zemValue = z; 024 } 025 026 public Quasar(String aRow) { 027 name = aRow.substring(2, 18); // columns 3-19 028 ra = aRow.substring(21, 30); // columns 22-31 029 dec = aRow.substring(32, 40); // columns 33-41 030 mag = aRow.substring(82, 98); // columns 83-99 031 refs = aRow.substring(106, 119); // columns 107-120 032 zem = aRow.substring(70, 75); // columns 71-76 033 zemValue = Double.parseDouble(zem); 034 } 035 036 public int compareTo(Quasar aQuasar) { 037 if (aQuasar == null) { 038 System.out.println("null pointer for quasar"); 039 throw(new NullPointerException("Compare to null quasar instance")); 040 } 041 double w = ((Quasar) aQuasar).getZem(); 042 if (getZem() > w) return 1; 043 else if (getZem() < w) return -1; 044 else return 0; 045 } 046 /* 047 public int compareTo(Object aQuasar) { 048 if (aQuasar == null) { 049 System.out.println("null pointer for quasar"); 050 throw(new NullPointerException("Compare to null quasar instance")); 051 } else if (aQuasar instanceof Quasar) { 052 double w = ((Quasar) aQuasar).getZem(); 053 if (getZem() > w) return 1; 054 else if (getZem() < w) return -1; 055 } 056 return 0; 057 } 058 */ 059 public double getZem() { 060 return zemValue; 061 } 062 063 /** Get a list of quasars sorted by redshift from Veron (2003) 064 * @return list of quasars 065 */ 066 public static List<Quasar> readQuasars() throws java.io.IOException { 067 FileReader reader = new FileReader("data/table1.dat"); 068 BufferedReader in = new BufferedReader(reader); 069 int count = 1; 070 List<Quasar> quasars = new ArrayList<Quasar>(48000); 071 while (true) { 072 String row = in.readLine(); 073 if (row.indexOf("ZZZ") > -1) break; // last line 074 Quasar qso = new Quasar(row); 075 quasars.add(qso); 076 //System.out.println(qso); 077 count++; 078 } 079 reader.close(); 080 Collections.sort(quasars); 081 return quasars; 082 } 083 084 public String toString() { 085 return zem + " " + name + " " + " " + ra + " " + dec + " " + mag + " " + refs; 086 } 087 088 public List<Line> getEmissionLines() { 089 return null; 090 } 091 092 public List<Line> getAbsorptionLines() { 093 return null; 094 } 095 } 096 097