package jhaushalt.service.factories; import jhaushalt.service.factories.buchung.BuchungStrategy; import jhaushalt.service.factories.buchung.SplitBuchungStrategy; import jhaushalt.service.factories.buchung.StandardBuchungStrategy; import jhaushalt.service.factories.buchung.StandardOrSplitBuchungStrategy; import jhaushalt.service.factories.buchung.UmbuchungStrategy; public enum BuchungType { UMBUCHUNG("Umbuchung", new UmbuchungStrategy()), STANDARD_OR_SPLIT_BUCHUNG("Standardbuchung", new StandardOrSplitBuchungStrategy()), STANDARD_BUCHUNG("StandardBuchung2", new StandardBuchungStrategy()), SPLIT_BUCHUNG("SplitBuchung", new SplitBuchungStrategy()); private String fileRepresentation; private BuchungStrategy buchungStrategy; private BuchungType(String filePattern, BuchungStrategy buchungStrategy) { this.fileRepresentation = filePattern; this.buchungStrategy = buchungStrategy; } public String getFileRepresentation() { return fileRepresentation; } public BuchungStrategy getBuchungStrategy() { return buchungStrategy; } static BuchungType getBuchungTpeByFileRepresentation(String fileRepresentation) throws UnknownBuchungTypeException { for(BuchungType buchungType: BuchungType.values()) { if (buchungType.getFileRepresentation().equals(fileRepresentation)) { return buchungType; } } throw new UnknownBuchungTypeException("The following name is unknown: " + fileRepresentation); } }