Convierta la duración del lenguaje simple al período Joda o ISO 8601

Tengo una cadena que se parece a esto: "n AÑOS n MESES SEMANAS n DÍAS" (tenga en cuenta que las constantes pueden o no estar pluralizadas)

Necesito convertir esto en un objeto Periodo Joda o una Cadena con formato ISO 8601 (que a su vez se puede convertir en un objeto Periodo).

¿Alguien tiene algún código, o pueden indicarme una biblioteca para hacer esto?

Actualizar : en caso de que alguien necesite hacer esto, aquí está el código de trabajo. Desafortunadamente, tuve que construir dinámicamente PeriodFormatterBuilder ya que los campos eran opcionales. Un poco feo, pero funciona.

Actualización2 : Se corrigió el error señalado en los comentarios.

String text = expr1a.getText();
System.out.println(text);

PeriodFormatterBuilder pfb = new PeriodFormatterBuilder().printZeroAlways();

int yearIndex = text.indexOf("YEAR");
int monthIndex = text.indexOf("MONTH");
int weekIndex = text.indexOf("WEEK");
int dayIndex = text.indexOf("DAY");

if (yearIndex > -1) {
  pfb = pfb.appendYears().appendSuffix(" YEAR"," YEARS");
}

if (monthIndex > -1) {
  if (yearIndex > -1) {
    pfb = pfb.appendPrefix(" ").appendMonths().appendSuffix(" MONTH", " MONTHS");
  } else {
    pfb = pfb.appendMonths().appendSuffix(" MONTH", " MONTHS");
  }
} 

if (weekIndex > -1) {
  if (yearIndex > -1 || monthIndex > -1) {
    pfb = pfb.appendPrefix(" ").appendWeeks().appendSuffix(" WEEK", " WEEKS");
  } else {
    pfb = pfb.appendWeeks().appendSuffix(" WEEK", " WEEKS");
  }
}

if (dayIndex > -1) {
  if (yearIndex > -1 || monthIndex > -1 || weekIndex > -1) {
     pfb = pfb.appendPrefix(" ").appendDays().appendSuffix(" DAY"," DAYS");
  } else {
    pfb = pfb.appendDays().appendSuffix(" DAY"," DAYS");
  }
}

PeriodFormatter pf = pfb.toFormatter();

Period period = Period.parse(text, pf);
return period;
Respuesta 1

Si tengo las siguientes propiedades en application.yaml: myPro: prop1: prop1value prop2: prop2value .... ¿Hay alguna forma de cargar esto en un objeto de Propiedades de Java?

Estoy tratando de usar la última versión 3.4.0 de Selenium en un proyecto maven. Importé todos los frascos de Selenium usando la siguiente dependencia: - <dependencia> <groupId> org.seleniumhq.selenium </ ...

Si quiero totalizar una lista de los saldos actuales de las cuentas, puedo hacer: accountOverview.setCurrentBalance (account.stream (). Filter (a -> a.getCurrentBalance ()! = Null) ...

No estoy seguro de si este es el lugar, pero estoy fuera de ideas, el siguiente es un código de actualización para mi programa, es simple, pero por alguna razón no funciona. privado vacío txt_updateActionPerformed (java.awt ....