package met2007; import java.io.Serializable; import java.util.ArrayList; import javax.swing.*; import java.text.DecimalFormat; /** * Register.java * Registerklasse med referanser til all data registrert. * Inneholder metoder for legge til, fjerne og oppdatere data. * * @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 * */ public class Register implements Serializable { /** * */ private static final long serialVersionUID = -168972780585470662L; private ArrayList fylkeListe; private DecimalFormat df; public Register() { fylkeListe = new ArrayList(); df = new DecimalFormat("#0.00"); System.out.println("i knost: " + df); } public boolean insertFylke(Fylke fylke) { return fylkeListe.add(fylke); } public boolean insertSted(String fylke, Sted sted) { if (fylkeListe.isEmpty()) { Fylke nyttFylke = new Fylke(fylke); fylkeListe.add(nyttFylke); return fylkeListe.get(0).insert(sted); } else { for (int i = 0; i < fylkeListe.size(); i++) { if (fylkeListe.get(i).getNavn().equals(fylke)) { return fylkeListe.get(i).insert(sted); } } Fylke nyttFylke = new Fylke(fylke); fylkeListe.add(nyttFylke); for (int i = 0; i < fylkeListe.size(); i++) { if (fylkeListe.get(i).getNavn().equals(fylke)) { return fylkeListe.get(i).insert(sted); } } return false; } } public boolean insertDato(String fylke, String sted, int år, int mnd, Dag dag) { Fylke tempF = getFylke(fylke); Sted tempS = tempF.getStedObj(sted); if (tempS.getÅrObj(år) == null) { År nyttÅr = new År(år); tempS.insertÅr(nyttÅr); Mnd nyMnd = new Mnd(mnd); tempS.getÅrObj(år).insertMnd(nyMnd); tempS.getÅrObj(år).getMndObj(mnd).insertDag(dag); return true; } else { År tempÅ = tempS.getÅrObj(år); if (tempÅ.getMndObj(mnd) == null) { Mnd nyMnd = new Mnd(mnd); tempÅ.insertMnd(nyMnd); tempÅ.getMndObj(mnd).insertDag(dag); return true; } else { int dagI = dag.getDag(); if(tempÅ.getMndObj(mnd).getDagObj(dagI) == null) { tempÅ.getMndObj(mnd).insertDag(dag); return true; } else { int svar = JOptionPane.showOptionDialog(null, "Observasjon på denne dagen finnes fra før\nVil du overskrive?", "Overskrive?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null); if(svar == JOptionPane.YES_OPTION) { double max = dag.getMax(); double min = dag.getMin(); double mm = dag.getMm(); tempÅ.getMndObj(mnd).getDagObj(dagI).update(max, min, mm); return true; } else return false; } } } } public Fylke getFylke(String fylke) { if (fylkeListe.isEmpty()) { return null; } else { for (int i = 0; i < fylkeListe.size(); i++) { if (fylkeListe.get(i) != null && fylkeListe.get(i).getNavn().equalsIgnoreCase(fylke)) { return fylkeListe.get(i); } } return null; } } public Sted getSted(String sted) { for (int i = 0; i < fylkeListe.size(); i++) { if (fylkeListe.get(i) != null) { Sted temp = fylkeListe.get(i).getStedObj(sted); if (temp != null) return temp; } } return null; } //////////////////////////////////////// //////////////////////////////////////// public År getÅrObj(Sted sted, int år) { return sted.getÅrObj(år); } public Mnd getMndObj(År år, int mnd) { return år.getMndObj(mnd); } public Dag getDagObj(Mnd mnd, int dag) { return mnd.getDagObj(dag); } public String getÅrsMinTempAlleSteder(int år) { Fylke tempF; Sted tempS; År tempÅ; Mnd[] tempMnd; String utskrift = "Laveste registrerte minimumstemperatur for " + år + ":\n\n"; double minTemp = 999; ArrayList tempStedListe; if (fylkeListe.isEmpty()) { return "Ingen registrerte data"; } else { for (int i = 0; i < fylkeListe.size(); i++) { if (fylkeListe.get(i) != null) { tempF = fylkeListe.get(i); tempStedListe = tempF.getStedListe(); if (!tempStedListe.isEmpty()) { for (int j = 0; j < tempStedListe.size(); j++) { if (tempStedListe.get(j) != null) { if (tempStedListe.get(j).getÅrObj(år) != null) { tempÅ = tempStedListe.get(j).getÅrObj(år); if (tempÅ.getÅrMinTemp() < minTemp) { minTemp = tempÅ.getÅrMinTemp(); } } } } } } } for (int i = 0; i < fylkeListe.size(); i++) { if (fylkeListe.get(i) != null) { tempF = fylkeListe.get(i); tempStedListe = tempF.getStedListe(); if (!tempStedListe.isEmpty()) { for (int j = 0; j < tempStedListe.size(); j++) { tempS = tempStedListe.get(j); if (tempS != null) { tempÅ = tempS.getÅrObj(år); if (tempÅ != null && tempÅ.getÅrMinTemp() == minTemp) { tempMnd = tempÅ.getMndMinTemp(); for (int k = 0; k < tempMnd.length; k++) { Dag[] tempDag = tempMnd[k].getMinTempObj(); for (int l = 0; l < tempDag.length; l++) { utskrift += ("Fylke: \t" + tempF.getNavn() + "\nSted: \t" + tempS.getNavn() + "\nDato: \t" + tempDag[l].getDag() + "." + tempMnd[k].getMnd() + tempÅ.getÅr()+ "." + "\nTemperatur: \t" + minTemp + " ºC\n\n"); } } } } } } } } return utskrift; } } public String getÅrsMaxTempAlleSteder(int år) { Fylke tempF; Sted tempS; År tempÅ; Mnd[] tempMnd; String utskrift = "Høyeste registrerte maksimumstemperatur for " + år + ":\n\n"; double maxTemp = -999; ArrayList tempStedListe; if (fylkeListe.isEmpty()) { return "Ingen registrerte data"; } else { for (int i = 0; i < fylkeListe.size(); i++) { if (fylkeListe.get(i) != null) { tempF = fylkeListe.get(i); tempStedListe = tempF.getStedListe(); if (!tempStedListe.isEmpty()) { for (int j = 0; j < tempStedListe.size(); j++) { if (tempStedListe.get(j) != null) { if (tempStedListe.get(j).getÅrObj(år) != null) { tempÅ = tempStedListe.get(j).getÅrObj(år); if (tempÅ.getÅrMaxTemp() > maxTemp) { maxTemp = tempÅ.getÅrMaxTemp(); } } } } } } } for (int i = 0; i < fylkeListe.size(); i++) { if (fylkeListe.get(i) != null) { tempF = fylkeListe.get(i); tempStedListe = tempF.getStedListe(); if (!tempStedListe.isEmpty()) { for (int j = 0; j < tempStedListe.size(); j++) { tempS = tempStedListe.get(j); if (tempS != null) { tempÅ = tempS.getÅrObj(år); if (tempÅ != null && tempÅ.getÅrMaxTemp() == maxTemp) { tempMnd = tempÅ.getMndMaxTemp(); for (int k = 0; k < tempMnd.length; k++) { Dag[] tempDag = tempMnd[k].getMaxTempObj(); for (int l = 0; l < tempDag.length; l++) { utskrift += ("Fylke: \t" + tempF.getNavn() + "\nSted: \t" + tempS.getNavn() + "\nDato: \t" + tempDag[l].getDag()+ "." + tempMnd[k].getMnd() + "." + tempÅ.getÅr() + "\nTemperatur: \t" + maxTemp + " ºC\n\n"); } } } } } } } } return utskrift; } } public String getÅrsMinMmAlleSteder(int år) { Fylke tempF; Sted tempS; År tempÅ; String utskrift = "Laveste totale nedbørsmengde for " + år + ":\n\n"; double minMm = 999; ArrayList tempStedListe; if (fylkeListe.isEmpty()) { return "Ingen registrerte data"; } else { for (int i = 0; i < fylkeListe.size(); i++) { if (fylkeListe.get(i) != null) { tempF = fylkeListe.get(i); tempStedListe = tempF.getStedListe(); if (!tempStedListe.isEmpty()) { for (int j = 0; j < tempStedListe.size(); j++) { if (tempStedListe.get(j) != null) { if (tempStedListe.get(j).getÅrObj(år) != null) { tempÅ = tempStedListe.get(j).getÅrObj(år); if (tempÅ.getÅrTotalMm() < minMm) { minMm = tempÅ.getÅrTotalMm(); } } } } } } } for (int i = 0; i < fylkeListe.size(); i++) { if (fylkeListe.get(i) != null) { tempF = fylkeListe.get(i); tempStedListe = tempF.getStedListe(); if (!tempStedListe.isEmpty()) { for (int j = 0; j < tempStedListe.size(); j++) { tempS = tempStedListe.get(j); if (tempS != null) { tempÅ = tempS.getÅrObj(år); if (tempÅ != null && tempÅ.getÅrTotalMm() == minMm) { utskrift += "Fylke: \t" + tempF.getNavn() + "\nSted: \t" + tempS.getNavn() + "\nNedbør: \t" + tempÅ.getÅrTotalMm() + " mm\n\n"; } } } } } } return utskrift; } } public String getÅrsMaxMmAlleSteder(int år) { Fylke tempF; Sted tempS; År tempÅ; String utskrift = "Høyeste totale nedbørsmengde for " + år + ":\n\n"; double maxMm = -999; ArrayList tempStedListe; if (fylkeListe.isEmpty()) { return "Ingen registrerte data"; } else { for (int i = 0; i < fylkeListe.size(); i++) { if (fylkeListe.get(i) != null) { tempF = fylkeListe.get(i); tempStedListe = tempF.getStedListe(); if (!tempStedListe.isEmpty()) { for (int j = 0; j < tempStedListe.size(); j++) { if (tempStedListe.get(j) != null) { if (tempStedListe.get(j).getÅrObj(år) != null) { tempÅ = tempStedListe.get(j).getÅrObj(år); if (tempÅ.getÅrTotalMm() > maxMm) { maxMm = tempÅ.getÅrTotalMm(); } } } } } } } for (int i = 0; i < fylkeListe.size(); i++) { if (fylkeListe.get(i) != null) { tempF = fylkeListe.get(i); tempStedListe = tempF.getStedListe(); if (!tempStedListe.isEmpty()) { for (int j = 0; j < tempStedListe.size(); j++) { tempS = tempStedListe.get(j); if (tempS != null) { tempÅ = tempS.getÅrObj(år); if (tempÅ != null && tempÅ.getÅrTotalMm() == maxMm) { utskrift += "Fylke: \t" + tempF.getNavn() + "\nSted: \t" + tempS.getNavn() + "\nNedbør: \t" + tempÅ.getÅrTotalMm() + " mm\n\n"; } } } } } } return utskrift; } } public String getÅrsMaxTemp(String fylke, String sted, int år) { String utskrift = "Høyeste registrerte maksimumstemperatur for " + sted + " (" + fylke + ") " + år + ":\n\n"; Sted tempSted = getSted(sted); År tempÅr = tempSted.getÅrObj(år); Mnd[] tempMnd = tempÅr.getMndMaxTemp(); for (int i = 0; i < tempMnd.length; i++) { Dag[] tempDag = tempMnd[i].getMaxTempObj(); for (int k = 0; k < tempDag.length; k++) { utskrift += "Dato: \t" + tempDag[k].getDag()+ "." + tempMnd[i].getMnd() + "." + tempÅr.getÅr() + "\nTemperatur:\t" + tempDag[k].getMax() + " ºC\n\n"; } } return utskrift; } public String getÅrsMinTemp(String fylke, String sted, int år) { String utskrift = "Laveste registrerte minimumstemperatur for " + sted + " (" + fylke + ") " + år + ":\n\n"; Sted tempSted = getSted(sted); År tempÅr = tempSted.getÅrObj(år); Mnd[] tempMnd = tempÅr.getMndMinTemp(); for (int i = 0; i < tempMnd.length; i++) { Dag[] tempDag = tempMnd[i].getMinTempObj(); for (int k = 0; k < tempDag.length; k++) { utskrift += "Dato: \t" + tempDag[k].getDag()+ "." + tempMnd[i].getMnd() + "." + tempÅr.getÅr() + "\nTemperatur: \t" + tempDag[k].getMin() + " ºC\n\n"; } } return utskrift; } public String getMaxMmÅr(String fylke, String sted, int år) { String utskrift = "Største registrerte nedbørsmengde for " + sted + " (" + fylke + ") "+ år + ":\n\n"; Sted tempSted = getSted(sted); År tempÅr = tempSted.getÅrObj(år); Mnd[] tempMnd = tempÅr.getMndMaxMm(); for (int i = 0; i < tempMnd.length; i++) { Dag[] tempDag = tempMnd[i].getMaxMmObj(); for (int k = 0; k < tempDag.length; k++) { utskrift += "Dato: \t" + tempDag[k].getDag()+ "." + tempMnd[i].getMnd() + "." + tempÅr.getÅr() + "\nNedbør: \t" + tempDag[k].getMm() + " mm\n\n"; } } return utskrift; } public String getTotMmMndGittStedÅrMnd(String fylke, String sted, int år, int mnd) { Sted tempSted = getSted(sted); År tempÅr = tempSted.getÅrObj(år); Mnd tempMnd = tempÅr.getMndObj(mnd); return "Nedbør i " + sted + " (" + fylke + ") " + mnd + "." + år + ":\n\n" + "Total: \t" + tempMnd.getMndTotalMm() + " mm\n"; } public String getTotalMmÅrGittStedÅr(String fylke, String sted, int år) { Sted tempSted = getSted(sted); År tempÅr = tempSted.getÅrObj(år); return "Nedbør i " + sted + " (" + fylke + ") " + år + ":\n\n" + "Total: \t" + tempÅr.getÅrTotalMm() + " mm\n"; } public String getSnittMinTempÅrGittStedÅr(String fylke, String sted, int år) { df = new DecimalFormat("#0.00"); return "Gjennomsnitts minimumstemperatur for " + sted + " (" + fylke + ") " + år + ":\n\n" + "Temperatur: \t" + df.format(getSted(sted).getÅrObj(år).getÅrMinTempSnitt()) + " ºC"; } public String getSnittMaxTempÅrGittStedÅr(String fylke, String sted, int år) { //double temp = getSted(sted).getÅrObj(år).getÅrMaxTempSnitt(); return "Gjennomsnitts maksimumstemperatur for " + sted + " (" + fylke + ") " + år + ":\n\n" + "Temperatur: \t" + getSted(sted).getÅrObj(år).getÅrMaxTempSnitt() + " ºC"; } public String getDag(String fylke, String sted, int år, int mnd, int dag) { return "Registrerte data for " + sted + " (" + fylke + ") " + getSted(sted).getÅrObj(år).getMndObj(mnd).getDagObj(dag).getDag() + "." + getSted(sted).getÅrObj(år).getMndObj(mnd).getMnd() + "." + getSted(sted).getÅrObj(år).getÅr() + ":\n\nMinimumstemperatur: \t" + getSted(sted).getÅrObj(år).getMndObj(mnd).getDagObj(dag).getMin() + " ºC" + "\nMaksimumstemperatur: \t" + getSted(sted).getÅrObj(år).getMndObj(mnd).getDagObj(dag).getMax() + " ºC" + "\nNedbør: \t\t" + getSted(sted).getÅrObj(år).getMndObj(mnd).getDagObj(dag).getMm() + " mm"; } public String getMinMndTempGittStedÅrMnd(String fylke, String sted, int år, int mnd) { String utskrift = "Laveste registrerte minimumstemperatur for " + sted + " (" + fylke + ") " + mnd + "." + år + ":\n\n"; Sted tempSted = getSted(sted); År tempÅr = tempSted.getÅrObj(år); Mnd tempMnd = tempÅr.getMndObj(mnd); Dag[] tempDag = tempMnd.getMinTempObj(); for (int i = 0; i < tempDag.length; i++) { utskrift += ("Dato: \t" + tempDag[i].getDag() + "." + tempMnd.getMnd() + "." + tempÅr.getÅr() + "\nTemperatur: \t" + tempMnd.getMndMinTemp() + " ºC\n\n"); } return utskrift; } public String getMaxMndTempGittStedÅrMnd(String fylke, String sted, int år, int mnd) { String utskrift = "Høyeste registrerte maksimumstemperatur for " + sted + " (" + fylke + ") " + mnd + "." + år + ":\n\n"; Sted tempSted = getSted(sted); År tempÅr = tempSted.getÅrObj(år); Mnd tempMnd = tempÅr.getMndObj(mnd); Dag[] tempDag = tempMnd.getMaxTempObj(); for (int i = 0; i < tempDag.length; i++) { utskrift += ("Dato: \t" + tempDag[i].getDag() + "." + tempMnd.getMnd() + "." + tempÅr.getÅr() + "\nTemperatur: \t" + tempMnd.getMndMaxTemp() + " ºC\n\n"); } return utskrift; } public ArrayList getFylkeListe() { return fylkeListe; } }