TypeRegistration.java

  1. package no.nav.data.common.storage.domain;

  2. import no.nav.data.common.mail.MailTask;
  3. import no.nav.data.common.security.azure.support.MailLog;
  4. import no.nav.data.common.validator.RequestElement;
  5. import no.nav.data.team.cluster.domain.Cluster;
  6. import no.nav.data.team.notify.domain.GenericNotificationTask;
  7. import no.nav.data.team.notify.domain.Notification;
  8. import no.nav.data.team.notify.domain.NotificationState;
  9. import no.nav.data.team.notify.domain.NotificationTask;
  10. import no.nav.data.team.po.domain.ProductArea;
  11. import no.nav.data.team.resource.domain.Resource;
  12. import no.nav.data.team.resource.domain.ResourceEvent;
  13. import no.nav.data.team.resource.domain.ResourcePhoto;
  14. import no.nav.data.team.settings.dto.Settings;
  15. import no.nav.data.team.team.domain.Team;

  16. import java.util.HashMap;
  17. import java.util.HashSet;
  18. import java.util.Map;
  19. import java.util.Set;

  20. public final class TypeRegistration {

  21.     private static final Map<Class<?>, String> classToType = new HashMap<>();
  22.     private static final Map<String, Class<?>> typeToClass = new HashMap<>();
  23.     private static final Set<String> auditedTypes = new HashSet<>();

  24.     static {
  25.         addDomainClass(Team.class, true);
  26.         addDomainClass(ProductArea.class, true);
  27.         addDomainClass(Cluster.class, true);
  28.         addDomainClass(Settings.class, true);

  29.         addDomainClass(ResourcePhoto.class, false);
  30.         addDomainClass(Resource.class, false);
  31.         addDomainClass(ResourceEvent.class, false);
  32.         addDomainClass(MailTask.class, false);
  33.         addDomainClass(MailLog.class, false);
  34.         addDomainClass(GenericNotificationTask.class, false);

  35.         addDomainClass(Notification.class, false);
  36.         addDomainClass(NotificationState.class, false);
  37.         addDomainClass(NotificationTask.class, false);
  38.     }

  39.     private TypeRegistration() {
  40.     }

  41.     private static void addDomainClass(Class<? extends DomainObject> aClass, boolean audited) {
  42.         String typeName = aClass.getSimpleName();
  43.         classToType.put(aClass, typeName);
  44.         typeToClass.put(typeName, aClass);
  45.         if (audited) {
  46.             auditedTypes.add(typeName);
  47.         }
  48.     }

  49.     public static boolean isAudited(String type) {
  50.         return auditedTypes.contains(type);
  51.     }

  52.     public static String typeOf(Class<?> clazz) {
  53.         return classToType.get(clazz);
  54.     }

  55.     public static String typeOfRequest(RequestElement request) {
  56.         return request.getRequestType();
  57.     }

  58.     @SuppressWarnings("unchecked")
  59.     public static <T> Class<T> classFrom(String type) {
  60.         Class<?> aClass = typeToClass.get(type);
  61.         return (Class<T>) aClass;
  62.     }
  63. }