package com.airlock.iam.system.version;

import java.util.Optional;
import java.util.jar.Manifest;
import java.util.jar.Attributes.Name;

public final class CurrentVersion {
   private static final String VERSION_UNDEFINED = "[VERSION UNDEFINED]";
   private static Optional<IamVersion> version = Optional.empty();

   public static void initialize(Optional<Manifest> manifest) {
      if (manifest.isEmpty()) {
         version = Optional.empty();
      } else {
         String versionString = manifest.get().getMainAttributes().getValue(Name.IMPLEMENTATION_VERSION);
         if (IamVersion.isValidVersion(versionString)) {
            version = Optional.of(IamVersion.fromString(versionString));
         } else {
            version = Optional.empty();
         }
      }
   }

   public static Optional<IamVersion> get() {
      return version;
   }

   public static String getDisplayString() {
      return version.isPresent() ? version.get().toFullVersionString() : "[VERSION UNDEFINED]";
   }

   private CurrentVersion() {
   }
}
