Gender.java
/*
* Copyright (C) 2022-2023 Dipl.-Inform. Kai Hofmann. All rights reserved!
*/
package de.powerstat.validation.values;
import de.powerstat.validation.interfaces.IValueObject;
/**
* Gender/Sex.
*
* This is my own derivation of the following website:
* https://at.wikimannia.org/60_Geschlechtsidentit%C3%A4ten
* From my point of view trans-gender is not a gender - it is a change of the gender over time.
* For example when someone is born as male he will become a female after a transformation.
* During the transformation BOTH or VARIABLE might be used.
* This will be handled in the Person class by a history of the gender.
*
* @see <a href="https://at.wikimannia.org/60_Geschlechtsidentitäten">Geschlechtsidentitäten</a>
*
* Not DSGVO relevant.
*/
public enum Gender implements IValueObject
{
/**
* Unknown/undefined gender.
*/
UNKNOWN(0),
/**
* Female.
*/
FEMALE(1),
/**
* Male.
*/
MALE(2),
/**
* Both female and male at the same time.
*/
BOTH(3),
/**
* Variable, female today, male tomorrow for example (not trans).
*/
VARIABLE(4),
/**
* Without a gender/sex.
*/
NEUTRAL(5),
/**
* Other not here named gender.
*/
OTHER(6);
/**
* Action number.
*/
private final int action;
/**
* Ordinal constructor.
*
* @param action Action number
*/
Gender(final int action)
{
this.action = action;
}
/**
* Gender factory.
*
* @param value Gender name string
* @return Gender object
*/
public static Gender of(final String value)
{
return Gender.valueOf(value);
}
/**
* Get action number.
*
* @return Action number
*/
public int getAction()
{
return this.action;
}
/**
* Returns the value of this Gender as a string.
*
* @return The text value represented by this object after conversion to type string.
*/
@Override
public String stringValue()
{
return this.name();
}
}