001/* Copyright (C) 2014 konik.io
002 *
003 * This file is part of the Konik library.
004 *
005 * The Konik library is free software: you can redistribute it and/or modify
006 * it under the terms of the GNU Affero General Public License as
007 * published by the Free Software Foundation, either version 3 of the
008 * License, or (at your option) any later version.
009 *
010 * The Konik library is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
013 * GNU Affero General Public License for more details.
014 *
015 * You should have received a copy of the GNU Affero General Public License
016 * along with the Konik library. If not, see <http://www.gnu.org/licenses/>.
017 */
018package io.konik.zugferd.profile;
019
020import static io.konik.util.Strings.isNullOrEmpty;
021
022/**
023 * The latest Version Invoice Profiles.
024 */
025public enum ConformanceLevel {
026
027   /** The conformance level basic*/
028   BASIC,
029   /** The conformance level profile */
030   COMFORT,
031   /** The conformance level extended */
032   EXTENDED;
033
034   private static final String DELIMITER = ":";
035
036   /**
037    * Instantiates a new profile type.
038    */
039   ConformanceLevel() {
040   }
041   
042   @Override
043   public String toString() {
044      return name().toLowerCase();
045   }
046
047   /**
048    * Parses the full name and extract the conformance level
049    *
050    * @param fullName the full name
051    * @return the conformance level
052    */
053   public static ConformanceLevel extractConformanceLevel(String fullName) {
054      if (isNullOrEmpty(fullName)) {throw new EnumConstantNotPresentException(ConformanceLevel.class, fullName);}
055      String[] tokens = fullName.split(DELIMITER);
056      int lastTokenPosition = tokens.length-1;
057      String level = tokens[lastTokenPosition];
058      return valueOf(level.toUpperCase());
059   }
060
061}