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

no.bekk.bekkopen.person.Navn 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;

/**
 * This class represents a name according to Norwegian rules. A legal Norwegian
 * name consist of at least a Fornavn and an Etternavn. Etternavn can also
 * optionally be used as a Mellomnavn.
 */
public class Navn {

	private final String fornavn;
	private String mellomnavn;
	private final String etternavn;

	Navn(final String fornavn, final String mellomnavn, final String etternavn) {
		this(fornavn, etternavn);
		if (null != mellomnavn) {
			this.mellomnavn = korrigerCasing(mellomnavn);
		}

	}

	public Navn(final String fornavn, final String etternavn) {
		if (null == fornavn || null == etternavn) {
			throw new IllegalArgumentException("fornavn or etternavn can not be null: " + "fornavn=" + fornavn
					+ ",etternavn=" + etternavn);
		}
		this.fornavn = korrigerCasing(fornavn);
		this.etternavn = korrigerCasing(etternavn);
	}

	public String getFornavn() {
		return this.fornavn;
	}

	public String getMellomnavn() {
		return this.mellomnavn;
	}

	public String getEtternavn() {
		return this.etternavn;
	}

	public String getNavn() {
		StringBuilder navn = new StringBuilder(fornavn);
		if (null != mellomnavn) {
			navn.append(" ").append(mellomnavn);
		}
		navn.append(" ").append(etternavn);
		return navn.toString();
	}

	@Override
	public String toString() {
		return getNavn();
	}

	private String korrigerCasing(final String navn) {
		if (navn.length() == 0) {
			return "";
		}
		if (navn.length() == 1) {
			return navn.toUpperCase();
		}
		StringBuilder korrigetNavn = new StringBuilder(navn.substring(0, 1).toUpperCase());
		korrigetNavn.append(navn.substring(1, navn.length()).toLowerCase());
		return korrigetNavn.toString();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy