All Downloads are FREE. Search and download functionalities are using the official Maven repository.

no.bekk.bekkopen.person.NavnGenerator Maven / Gradle / Ivy

Go to download

The NoCommons library is a collection of helper classes for manipulation and validation of data specific to Norway and Norwegian citizens.

There is a newer version: 0.16.0
Show newest version
package no.bekk.bekkopen.person;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * Generator for Norwegian names - a {@link Navn}.
 * 
 * Picks random names from the most common names in 2009.
 * 
 * 

Sources:

* * */ public class NavnGenerator { private final static int caAntallKvinnerSomHarMellomnavnIProsent = 22; private final static int caAntallMennSomHarMellomnavnIProsent = 14; private final static List kvinnenavn = csv2List(NavnGenerator.class .getResourceAsStream("/fornavn_kvinner.csv")); private final static List mannsnavn = csv2List(NavnGenerator.class.getResourceAsStream("/fornavn_menn.csv")); private final static List etternavn = csv2List(NavnGenerator.class.getResourceAsStream("/etternavn.csv")); private NavnGenerator() { super(); } public static Navn genererMannsnavn() { return genererNavn(1, KJONN.MANN).get(0); } public static Navn genererKvinnenavn() { return genererNavn(1, KJONN.KVINNE).get(0); } public static List genererMannsnavn(int antall) { return genererNavn(antall, KJONN.MANN); } public static List genererKvinnenavn(int antall) { return genererNavn(antall, KJONN.KVINNE); } public static List genererNavn(int antall) { return genererNavn(antall, KJONN.BEGGE); } private static List genererNavn(final int antall, final KJONN kjonn) { List navneliste = new ArrayList(antall); KJONN kjonnSwitch = kjonn; while (navneliste.size() < antall) { if (KJONN.erBegge(kjonn)) { kjonnSwitch = KJONN.byttKjonn(kjonn); } Navn navn = genererNavn(kjonnSwitch); if (!navneliste.contains(navn)) { navneliste.add(navn); } } return navneliste; } private static Navn genererNavn(final KJONN kjonn) { String fnavn, mnavn = null, enavn; int indexF = 0; if (KJONN.erKvinne(kjonn)) { indexF = new Random().nextInt(kvinnenavn.size() - 1); fnavn = kvinnenavn.get(indexF); } else { indexF = new Random().nextInt(mannsnavn.size() - 1); fnavn = mannsnavn.get(indexF); } if (genererMellomnavn(kjonn)) { int indexM = new Random().nextInt(etternavn.size() - 1); mnavn = etternavn.get(indexM); } int indexE = new Random().nextInt(etternavn.size() - 1); enavn = etternavn.get(indexE); return new Navn(fnavn, mnavn, enavn); } private static boolean genererMellomnavn(KJONN kjonn) { if (KJONN.erKvinne(kjonn)) { if (new Random().nextInt(100) <= caAntallKvinnerSomHarMellomnavnIProsent) { return true; } } else { if (new Random().nextInt(100) <= caAntallMennSomHarMellomnavnIProsent) { return true; } } return false; } private static List csv2List(InputStream is) { InputStreamReader isr = new InputStreamReader(is, Charset.forName("UTF-8")); BufferedReader br = new BufferedReader(isr); List vList = new ArrayList(); String[] array; String line; try { while ((line = br.readLine()) != null) { array = line.split("[ ]*,[ ]*"); for (int i = 0; i < array.length; i++) { vList.add(array[i]); } } br.close(); isr.close(); } catch (IOException e) { e.printStackTrace(); } return vList; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy