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