package met2007; import java.util.ArrayList; import java.text.*; import javax.swing.table.*; /** * TabellModell.java * Utvidelse av tabellmodell. * * @author Øyvind Buer(oyvind@gmail.com), Tore Minsaas(toreminsaas@hotmail.com), Israr Khan(v-iskhan@microsoft.com) * @version 1.00 - Sist oppdatert: 05.05.07 * */ class Tabellmodell extends AbstractTableModel { private Register reg; private String[] kolonneNavn = {"Fylke", "Sted", "Snitt maxtemp", "Snitt mintemp", "Nedbør" }; private ArrayList tempFylke = new ArrayList(); private ArrayList tempSted; private År tempÅr; private int år; private int antallRader; private Object[][] celler; private DecimalFormat df; public Tabellmodell() { celler = new Object[1][1]; celler[0][0] = new String(""); } public Tabellmodell(Register r, int å) { reg = r; år = å; opprettCeller(); } //Metode for å fylle cellene i tabellen public void opprettCeller() { df = new DecimalFormat("0.0"); antallRader = 0; tempFylke = reg.getFylkeListe(); tempFylke.trimToSize(); //Går gjennom en gang for å finne antall rader tabellen skal bestå av for (int i = 0; i < tempFylke.size(); i++) { tempSted = tempFylke.get(i).getStedListe(); tempSted.trimToSize(); for (int j = 0; j < tempSted.size(); j++) { tempÅr = tempSted.get(j).getÅrObj(år); if (tempÅr != null) { antallRader++; } } } celler = new Object[antallRader][kolonneNavn.length]; int index = 0; String minS, maxS, mmS; double min, max, mm; tempFylke = reg.getFylkeListe(); tempFylke.trimToSize(); for (int i = 0; i < tempFylke.size(); i++) { tempSted = tempFylke.get(i).getStedListe(); tempSted.trimToSize(); for (int j = 0; j < tempSted.size(); j++) { År tempÅr = tempSted.get(j).getÅrObj(år); if (tempÅr != null) { maxS = df.format(tempÅr.getÅrMaxTempSnitt()); minS = df.format(tempÅr.getÅrMinTempSnitt()); mmS = df.format(tempÅr.getÅrTotalMm()); //For å unngå problemer med norsk vs. engelsk oppsett med komma/punktum som skilletegn på datamaskinen maxS = maxS.replace( ',', '.' ); minS = minS.replace( ',', '.' ); mmS = mmS.replace( ',', '.' ); max = Double.parseDouble(maxS); min = Double.parseDouble(minS); mm = Double.parseDouble(mmS); //Fyller opp cellene celler[index][0] = new String(tempFylke.get(i).getNavn()); celler[index][1] = new String(tempSted.get(j).getNavn()); celler[index][2] = new Double(max); celler[index][3] = new Double(min); celler[index][4] = new Double(mm); index++; } } } } //For å få satt vårt eget kolonnenavn. public String getColumnName( int kolonne ) { return kolonneNavn[ kolonne ]; } //For å informere tabellmodellen om kolonnenes datatyper. public Class getColumnClass( int kolonne ) { return celler[ 0 ][ kolonne ].getClass(); } public int getColumnCount() { return celler[ 0 ].length; } public int getRowCount() { return celler.length; } public Object getValueAt( int rad, int kolonne ) { return celler[ rad ][ kolonne ]; } }