/*
* Created on Dec 16, 2003
*/
package hu.u_szeged.nbo.geometria.main;
import hu.u_szeged.nbo.geometria.element.GeomPlace;
import hu.u_szeged.nbo.geometria.element.GeomTeam;
import hu.u_szeged.nbo.geometria.element.GeomWork;
import hu.u_szeged.nbo.geometria.type.GeomHalmaz;
import hu.u_szeged.nbo.geometria.type.GeomPack;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
/**
* @author Sindely D�niel
*/
public class GeomResult {
private int utazasiDarab = 0;
private int utazasiOsszKoltseg = 0;
private int elvegzettMunkakSzama = 0;
private int elvegzetlenMunkakSzama = 0;
private int elvegzettMunkakOsszideje = 0;
private int elvegzetlenMunkakOsszideje = 0;
private int[] eroforrasKihasznaltsagDb = new int[11];
private int[] eroforrasKihasznaltsag = new int[11];
private int szummaEroforrasTeljesIdo = 0;
private int szummaEroforrasLefoglaltIdo = 0;
private int szummaVeszteseg = 0;
/**
* Writes the result to the consol.
*
*/
public String writeOut(String outFileName){
String result = "";
try {
System.out.println("A WRITEOUT-BAN...");
FileWriter out = new FileWriter(outFileName);
BufferedWriter buf = new BufferedWriter(out);
Iterator iter;
GeomResources res = GeomResources.getInstance();
for(int i=0; i<eroforrasKihasznaltsag.length; i++){
eroforrasKihasznaltsagDb[i] = 0;
eroforrasKihasznaltsag[i] = 0;
}
System.out.println();
System.out.println("Utemezes:");
result+="Utemezes:\n";
iter = res.getTeams().iterator();
while(iter.hasNext()){
GeomTeam team = (GeomTeam)iter.next();
GeomPlace place = team.getBasicPlace();
int lefoglaltIdo = 0;
write(buf,"");
result+="\n";
write(buf,"E" + team.getId()+" ("+place.getName()+"):");
result+="E" + team.getId()+" ("+place.getName()+"):\n";
for(int j=1; j<=team.getHozzarendeltMunkak().gmMeret(); j++){
GeomPack pack = (GeomPack)team.getHozzarendeltMunkak().gmIedikElem(j);
GeomPlace newplace = pack.getWork().getPlace();
if(!newplace.equals(place)){
int utazasiKoltseg = res.matrixRoadCost.getElementByIndex(place.getId(), newplace.getId());
write(buf," utazas: " + newplace.getName() + " (ktg:"+ utazasiKoltseg +")");
result+= " utazas: " + newplace.getName() + " (ktg:"+ utazasiKoltseg +")\n";
lefoglaltIdo += utazasiKoltseg;
place = newplace;
}
lefoglaltIdo += pack.getEnd()-pack.getBegin();
write(buf," M" + pack.getWork().getId()+" [" + pack.getBegin() + "-" + pack.getEnd() + "]");
result+= " M" + pack.getWork().getId()+" [" + pack.getBegin() + "-" + pack.getEnd() + "]\n";
}
int teljesIdo = team.getIdoablak().getY()-team.getIdoablakEredetiKezdete();
szummaEroforrasTeljesIdo += teljesIdo;
szummaEroforrasLefoglaltIdo += lefoglaltIdo;
int kihasznaltsag = (100*lefoglaltIdo) / teljesIdo;
write(buf," kihasznaltsag: " + kihasznaltsag+"% (" + lefoglaltIdo+"/"+teljesIdo+")");
result+= " kihasznaltsag: " + kihasznaltsag+"% (" + lefoglaltIdo+"/"+teljesIdo+")\n";
eroforrasKihasznaltsagDb[(kihasznaltsag+9)/10]++;
eroforrasKihasznaltsag[(kihasznaltsag+9)/10] += lefoglaltIdo;
}
write(buf,"");
result+="\n";
write(buf,"Ki nem osztott munkak:");
result+="Ki nem osztott munkak:\n";
iter = res.getWorks().iterator();
while(iter.hasNext()){
GeomWork work = (GeomWork)iter.next();
if(work.getHozzarendeltEroforras() == null){
write(buf," M" + work.getId());
result+=" M" + work.getId()+"\n";
}
}
vesztesegSzamitas(res.getWorks());
write(buf,"");
result+= "\n";
write(buf,"Utazasok szama: " + utazasiDarab);
result+="Utazasok szama: " + utazasiDarab + "\n";
write(buf,"Utazasok osszkoltsege: " + utazasiOsszKoltseg);
result+= "Utazasok osszkoltsege: " + utazasiOsszKoltseg + "\n";
write(buf,"Osszveszteseg: " + szummaVeszteseg);
result+= "Osszveszteseg: " + szummaVeszteseg + "\n";
write(buf,"Elvegzett munkak szama: " + elvegzettMunkakSzama);
result+= "Elvegzett munkak szama: " + elvegzettMunkakSzama + "\n";
write(buf,"Elvegzett munkak osszideje: " + elvegzettMunkakOsszideje);
result+= "Elvegzett munkak osszideje: " + elvegzettMunkakOsszideje + "\n";
write(buf,"Elvegzetlen munkak szama: " + elvegzetlenMunkakSzama);
result+="Elvegzetlen munkak szama: " + elvegzetlenMunkakSzama + "\n";
write(buf,"Elvegzetlen munkak osszideje: " + elvegzetlenMunkakOsszideje);
result+="Elvegzetlen munkak osszideje: " + elvegzetlenMunkakOsszideje + "\n";
write(buf,"");
result+="\n";
write(buf,"Elvegzett munkak aranya: "+(100*elvegzettMunkakSzama/(elvegzettMunkakSzama+elvegzetlenMunkakSzama))+"% ("+elvegzettMunkakSzama+"/"+(elvegzettMunkakSzama+elvegzetlenMunkakSzama)+")");
result+="Elvegzett munkak aranya: "+(100*elvegzettMunkakSzama/(elvegzettMunkakSzama+elvegzetlenMunkakSzama))+"% ("+elvegzettMunkakSzama+"/"+(elvegzettMunkakSzama+elvegzetlenMunkakSzama)+")\n";
write(buf,"Elvegzett munkak idoaranya: "+(100*elvegzettMunkakOsszideje/(elvegzettMunkakOsszideje+elvegzetlenMunkakOsszideje))+"% ("+elvegzettMunkakOsszideje+"/"+(elvegzettMunkakOsszideje+elvegzetlenMunkakOsszideje)+")");
result+="Elvegzett munkak idoaranya: "+(100*elvegzettMunkakOsszideje/(elvegzettMunkakOsszideje+elvegzetlenMunkakOsszideje))+"% ("+elvegzettMunkakOsszideje+"/"+(elvegzettMunkakOsszideje+elvegzetlenMunkakOsszideje)+")\n";
write(buf,"Eroforrasok kihasznaltsaga osszesen: "+(100*szummaEroforrasLefoglaltIdo/szummaEroforrasTeljesIdo)+"% ("+szummaEroforrasLefoglaltIdo+"/"+szummaEroforrasTeljesIdo+")");
result+="Eroforrasok kihasznaltsaga osszesen: "+(100*szummaEroforrasLefoglaltIdo/szummaEroforrasTeljesIdo)+"% ("+szummaEroforrasLefoglaltIdo+"/"+szummaEroforrasTeljesIdo+")\n";
write(buf,"Eroforrasok kihasznaltsaga reszletesen: ");
result+="Eroforrasok kihasznaltsaga reszletesen: \n";
write(buf," 0%: "+eroforrasKihasznaltsagDb[0]+" db");
result+=" 0%: "+eroforrasKihasznaltsagDb[0]+" db\n";
for(int i=1; i<eroforrasKihasznaltsag.length; i++){
write(buf," "+(i==1?" ":"")+(i*10-9)+"-"+(i==10?"":" ")+(i*10)+"%: "+
eroforrasKihasznaltsagDb[i]+" db"+
(eroforrasKihasznaltsagDb[i]==0?"":(", osszido: "+eroforrasKihasznaltsag[i])));
result+=" "+(i==1?" ":"")+(i*10-9)+"-"+(i==10?"":" ")+(i*10)+"%: "+
eroforrasKihasznaltsagDb[i]+" db"+
(eroforrasKihasznaltsagDb[i]==0?"":(", osszido: "+eroforrasKihasznaltsag[i]));
result+="\n";
}
buf.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/**
*
*/
private void vesztesegSzamitas(GeomHalmaz halmaz) {
Iterator iter = halmaz.iterator();
while(iter.hasNext()){
GeomWork work = (GeomWork)iter.next();
if(work.getKezdesiIdo()!=-1){
szummaVeszteseg += work.getEgysegnyiVeszteseg()*work.getKezdesiIdo();
}else{
/// el nem kezdett munk�k
szummaVeszteseg += work.getEgysegnyiVeszteseg()*GeomResources.getInstance().getNagyT();
}
}
}
/**
*
*
*/
private void write(BufferedWriter buf, String string) throws IOException{
System.out.println(string);
buf.write(string);
buf.newLine();
}
/**
* @param utazasiDarab The utazasiDarab to set.
*/
public void addUtazasiDarab() {
this.utazasiDarab++;
}
/**
* @param utazasiOsszKoltseg The utazasiOsszKoltseg to set.
*/
public void addUtazasiOsszKoltseg(int utazasiKoltseg) {
this.utazasiOsszKoltseg += utazasiKoltseg;
}
/**
* @param elvegzetlenMunkakSzama The elvegzetlenMunkakSzama to set.
*/
public void addElvegzetlenMunkakSzama() {
this.elvegzetlenMunkakSzama++;
}
/**
* @param elvegzettMunkakSzama The elvegzettMunkakSzama to set.
*/
public void addElvegzettMunkakSzama() {
this.elvegzettMunkakSzama++;
}
/**
* @param elvegzetlenMunkakOsszideje The elvegzetlenMunkakOsszideje to set.
*/
public void addElvegzetlenMunkakOsszideje(int munkaIdeje) {
this.elvegzetlenMunkakOsszideje += munkaIdeje;
}
/**
* @param elvegzettMunkakOsszideje The elvegzettMunkakOsszideje to set.
*/
public void addElvegzettMunkakOsszideje(int munkaIdeje) {
this.elvegzettMunkakOsszideje += munkaIdeje;
}
}