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