diff --git a/src/main/java/schule/ngb/zm/util/Faker.java b/src/main/java/schule/ngb/zm/util/Faker.java index 08d1349..2500682 100644 --- a/src/main/java/schule/ngb/zm/util/Faker.java +++ b/src/main/java/schule/ngb/zm/util/Faker.java @@ -4,29 +4,30 @@ import schule.ngb.zm.Color; import schule.ngb.zm.Constants; import schule.ngb.zm.Zeichenmaschine; import schule.ngb.zm.util.io.FileLoader; -import schule.ngb.zm.util.io.FontLoader; import schule.ngb.zm.util.io.ImageLoader; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.font.LineMetrics; -import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; +/** + * Hilfsklasse, um zufällige Beispieldaten zu erzeugen. + *
+ * Die Klasse kann verschiedene Arten realistischer Beispieldaten erzeugen, + * unter anderem Namen, E-Mail-Adressen, Passwörter oder Platzhalterbilder. + */ public final class Faker { public static final String FAKE_IMG_URL = "https://loremflickr.com/%d/%d"; - - - public static void main( String[] args ) { - Zeichenmaschine zm = new Zeichenmaschine(640, 480, "Faker"); - zm.getDrawingLayer().setAnchor(Constants.NORTHWEST); - zm.getDrawingLayer().image(Faker.fakeImage(zm.getWidth(), zm.getHeight()), 0, 0); - zm.redraw(); - } - + /** + * Erzeugt ein Array mit den angegebenen Anzahl zufälliger Nutzernamen. + * + * @param n Anzahl der Beispieldaten. + * @return Ein Array mit den Beispieldaten. + */ public static String[][] fakeUsers( int n ) { String[][] data = loadMockfile("users"); String[][] result = new String[n][]; @@ -36,6 +37,12 @@ public final class Faker { return result; } + /** + * Erzeugt ein Array mit den angegebenen Anzahl zufälliger Vornamen. + * + * @param n Anzahl der Beispieldaten. + * @return Ein Array mit den Beispieldaten. + */ public static String[] fakeNames( int n ) { String[][] data = loadMockfile("users"); String[] result = new String[n]; @@ -46,6 +53,14 @@ public final class Faker { return result; } + + /** + * Erzeugt ein Array mit den angegebenen Anzahl zufälliger Namen (Vor- und + * Nachname). + * + * @param n Anzahl der Beispieldaten. + * @return Ein Array mit den Beispieldaten. + */ public static String[] fakeFullnames( int n ) { String[][] data = loadMockfile("users"); String[] result = new String[n]; @@ -56,6 +71,13 @@ public final class Faker { return result; } + + /** + * Erzeugt ein Array mit den angegebenen Anzahl zufälliger Nutzernamen. + * + * @param n Anzahl der Beispieldaten. + * @return Ein Array mit den Beispieldaten. + */ public static String[] fakeUsernames( int n ) { String[][] data = loadMockfile("users"); String[] result = new String[n]; @@ -66,6 +88,12 @@ public final class Faker { return result; } + /** + * Erzeugt ein Array mit den angegebenen Anzahl zufälliger Passwörter. + * + * @param n Anzahl der Beispieldaten. + * @return Ein Array mit den Beispieldaten. + */ public static String[] fakePasswords( int n ) { String[][] data = loadMockfile("users"); String[] result = new String[n]; @@ -76,6 +104,12 @@ public final class Faker { return result; } + /** + * Erzeugt ein Array mit den angegebenen Anzahl zufälliger E-Mail-Adressen. + * + * @param n Anzahl der Beispieldaten. + * @return Ein Array mit den Beispieldaten. + */ public static String[] fakeEmails( int n ) { String[][] data = loadMockfile("users"); String[] result = new String[n]; @@ -86,16 +120,36 @@ public final class Faker { return result; } + + /** + * Erzeugt ein Platzhalterbild in der angegebenen Größe. + *
+ * Das Bild ist ein aus dem Internet geladenes, zufälliges Motiv, dass unter + * einer freien Lizenz (Creative Commons) steht. + * + * @param width Breite des Bildes. + * @param height Höhe des Bildes. + * @return Ein zufälliges Bild in der angegebenen Größe. + */ public static BufferedImage fakeImage( int width, int height ) { return fakeImage(width, height, true); } + /** + * Erzeugt ein Platzhalterbild in der angegebenen Größe. + * + * @param width Breite des Bildes. + * @param height Höhe des Bildes. + * @param fromWeb Bei {@code true} wird das Bild aus dem Internet geladen, + * bei {@code false} wird das Bild lokal erzeugt. + * @return Ein zufälliges Bild in der angegebenen Größe. + */ public static BufferedImage fakeImage( int width, int height, boolean fromWeb ) { if( !fromWeb ) { BufferedImage img = ImageLoader.createImage(width, height); - Graphics2D graphics = (Graphics2D)img.getGraphics().create(); + Graphics2D graphics = (Graphics2D) img.getGraphics().create(); - String text = width+" x "+height; + String text = width + " x " + height; Color clr = Constants.randomNiceColor(); @@ -103,12 +157,12 @@ public final class Faker { graphics.clearRect(0, 0, width, height); graphics.setColor(clr.textcolor().getJavaColor()); - graphics.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, (int)((width+height)*0.05))); + graphics.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, (int) ((width + height) * 0.05))); FontMetrics fontMerics = graphics.getFontMetrics(); LineMetrics lineMetrics = fontMerics.getLineMetrics(text, graphics); graphics.drawString(text, - (int)((width - fontMerics.stringWidth(text))/2), - (int)(height/2 - lineMetrics.getDescent() + lineMetrics.getAscent()/2) + (int) ((width - fontMerics.stringWidth(text)) / 2), + (int) (height / 2 - lineMetrics.getDescent() + lineMetrics.getAscent() / 2) ); graphics.dispose(); @@ -123,7 +177,10 @@ public final class Faker { } private static String[][] loadMockfile( String name ) { - return FileLoader.loadCsv("schule/ngb/zm/util/mock-"+name+".csv", true); + return FileLoader.loadCsv("schule/ngb/zm/util/mock-" + name + ".csv", true); + } + + private Faker() { } }