package jhaushalt.service.factories;
import java.io.IOException;
import jhaushalt.domain.kategorie.EinzelKategorie;
import jhaushalt.service.factories.io.DataInputFacade;
public class CategoryFactory {
public static EinzelKategorie getInstance(DataInputFacade in) throws IOException {
return createCategoryTree(in.getDataString());
}
private static EinzelKategorie createCategoryTree(final String vollerName) {
final int n = vollerName.indexOf(":");
if (n == -1) {
return createOneTreeNodeOrLeave(vollerName, null);
}
final EinzelKategorie hauptkategorie = createOneTreeNodeOrLeave(vollerName.substring(0, n), null);
return createOneTreeNodeOrLeave(vollerName.substring(n + 1), hauptkategorie);
}
/**
* Liefert die IKategorie mit dem angegebene Namen zurück.
* Wenn sie noch nicht existiert, wird sie erzeugt.
*
* @param name
* Name der IKategorie
* @param hauptkategorie
* Hauptkategorie
* @return gesuchte IKategorie
*/
private static EinzelKategorie createOneTreeNodeOrLeave(final String name, final EinzelKategorie hauptkategorie) {
return new EinzelKategorie(name, hauptkategorie);
}
}