Projektin moduulirakenteen formatointi

Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
This commit is contained in:
2026-04-12 20:25:49 +03:00
parent 1179abbcd1
commit 1cdef78244
33 changed files with 82 additions and 92 deletions
@@ -0,0 +1,56 @@
package fi.lpam.ruokamanageri.tulostajat;
import fi.lpam.ruokamanageri.dataluokat.Kuljetus;
import javafx.collections.ObservableList;
import java.io.IOException;
import java.time.format.DateTimeFormatter;
@SuppressWarnings("DuplicatedCode")
public class KuljetusListaTulostaja extends Tulostaja{
final float NIMEN_LEVEYS = 200;
final float OSOITTEEN_LEVEYS = 200;
public void luoKuljetusLista(ObservableList<Kuljetus> kuljetukset, int kierrosnumero) {
try {
sisältö.showText(kuljetukset.getFirst().getKuljetusPäivämäärä().format(DateTimeFormatter.ofPattern("dd/MM/yyyy")) + ", kierros: " + kierrosnumero);
uusiRivi();
for (Kuljetus kuljetus : kuljetukset) {
//Tyhjää kuljetusta ei tulosteta
if (!kuljetus.kuljetetaan()) {continue;}
if (yOffset - MARGINAALI < 4 * RIVI_KORKEUS) {
uusiSivu();
}
//Ensimmäinen rivi
uusiRivi();
sisältö.showText(kuljetus.getNimi());
siirräOsoitinta(NIMEN_LEVEYS);
sisältö.showText(kuljetus.getOsoite());
siirräOsoitinta(OSOITTEEN_LEVEYS);
sisältö.showText(kuljetus.getAvainTieto());
//Toinen rivi
uusiRivi();
sisältö.showText("Sal: " + kuljetus.getSalaatit()
+ " Pr: " + kuljetus.getPääruoat()
+ " Jr: " + kuljetus.getJälkiruoat());
siirräOsoitinta(NIMEN_LEVEYS);
sisältö.showText(kuljetus.getRuokarajoite());
//Kolmas rivi
uusiRivi();
siirräOsoitinta(NIMEN_LEVEYS);
sisältö.showText(kuljetus.getLisätieto());
uusiRivi(RIVI_KORKEUS*0.1F);
sisältö.showText("___________________________________________________________________");
}
tulosta();
}
catch (IOException e) {
handleIOException(e);
}
}
}
@@ -0,0 +1,35 @@
package fi.lpam.ruokamanageri.tulostajat;
import fi.lpam.ruokamanageri.dataluokat.RaporttiRivi;
import java.io.IOException;
import java.time.LocalDate;
import java.util.ArrayList;
@SuppressWarnings("DuplicatedCode")
public class KuljetusRaporttiTulostaja extends Tulostaja {
public void luoRaportti(ArrayList<RaporttiRivi> raporttiRivit, LocalDate alkuPvm, LocalDate loppuPvm) {
try {
sisältö.showText("Raportti aikaväliltä " + alkuPvm + " - " + loppuPvm);
uusiRivi();
uusiRivi();
for (RaporttiRivi rivi : raporttiRivit) {
String[] teksti = rivi.toString().split("\n");
for (String t : teksti) {
if (yOffset - MARGINAALI < 0) {
uusiSivu();
}
sisältö.showText(t);
uusiRivi();
}
uusiRivi();
}
tulosta();
}
catch (IOException e) {
handleIOException(e);
}
}
}
@@ -0,0 +1,114 @@
package fi.lpam.ruokamanageri.tulostajat;
import fi.lpam.ruokamanageri.gui.virheDialogit.SiirtoVirhe;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.font.Standard14Fonts;
import org.apache.pdfbox.printing.PDFPageable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.IOException;
public abstract class Tulostaja {
PDRectangle SIVUKOKO = PDRectangle.A4;
final PDFont FONTTI = new PDType1Font(Standard14Fonts.FontName.HELVETICA);
final float FONTTI_KOKO = 13;
final float MARGINAALI = 50;
final float RIVI_KORKEUS = FONTTI_KOKO * 1.2F;
PDDocument dokumentti;
PDPage nykyinenSivu = null;
PDPageContentStream sisältö = null;
float sivunLeveys;
float startX;
float startY;
float yOffset;
float xOffset;
public Tulostaja() {
dokumentti = new PDDocument();
sivunLeveys = SIVUKOKO.getWidth() - 2 * MARGINAALI;
startX = SIVUKOKO.getLowerLeftX() + MARGINAALI;
startY = SIVUKOKO.getUpperRightY() - MARGINAALI;
yOffset = startY;
xOffset = 0;
uusiSivu();
}
/**Luo uuden sivun dokumenttiin ja alustaa sisältö muuttujan valmiiksi*/
void uusiSivu() {
try {
if (sisältö != null) {
sisältö.endText();
sisältö.close();
}
PDPage uusiSivu = new PDPage(SIVUKOKO);
dokumentti.addPage(uusiSivu);
nykyinenSivu = uusiSivu;
sisältö = new PDPageContentStream(dokumentti, uusiSivu);
sisältö.setFont(FONTTI, FONTTI_KOKO);
sisältö.beginText();
sisältö.newLineAtOffset(startX, startY);
yOffset = startY;
} catch (IOException e) {
handleIOException(e);
}
}
/**Siirtää osoittimen rivin alkuun, siirtää riviä alaspäin tY verran*/
void uusiRivi(float tY) {
try {
sisältö.newLineAtOffset(-xOffset, -tY);
xOffset = 0;
yOffset -= tY;
}
catch (IOException e) {
handleIOException(e);
}
}
/**Siirtää osoittimen uuden rivin alkuun*/
void uusiRivi() {
uusiRivi(RIVI_KORKEUS);
}
/**Siirtää osoitinta sivulla. + oikealle, - vasemmalle*/
void siirräOsoitinta(float tX) {
try {
sisältö.newLineAtOffset(tX, 0);
xOffset += tX;
}
catch (IOException e) {
handleIOException(e);
}
}
/**Avaa järjestelmän tulostusikkunan dokumentille*/
void tulosta() {
try {
sisältö.endText();
sisältö.close();
PrinterJob tuloste = PrinterJob.getPrinterJob();
tuloste.setPageable(new PDFPageable(dokumentti));
if (tuloste.printDialog()) {
tuloste.print();
}
}
catch (PrinterException ex) {
System.out.println("Error: " + ex.getMessage());
}
catch (IOException ex) {
handleIOException(ex);
}
}
/**Käsittelee pdfboxin IOExceptionit*/
void handleIOException(IOException e) {
SiirtoVirhe virhe = new SiirtoVirhe(e);
virhe.showAndWait();
}
}