TypeRegistration.java
package no.nav.data.common.storage.domain;
import no.nav.data.common.mail.MailTask;
import no.nav.data.common.security.azure.support.MailLog;
import no.nav.data.common.validator.RequestElement;
import no.nav.data.team.cluster.domain.Cluster;
import no.nav.data.team.notify.domain.GenericNotificationTask;
import no.nav.data.team.notify.domain.Notification;
import no.nav.data.team.notify.domain.NotificationState;
import no.nav.data.team.notify.domain.NotificationTask;
import no.nav.data.team.po.domain.ProductArea;
import no.nav.data.team.resource.domain.Resource;
import no.nav.data.team.resource.domain.ResourceEvent;
import no.nav.data.team.settings.dto.Settings;
import no.nav.data.team.team.domain.Team;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public final class TypeRegistration {
private static final Map<Class<?>, String> classToType = new HashMap<>();
private static final Map<String, Class<?>> typeToClass = new HashMap<>();
private static final Set<String> auditedTypes = new HashSet<>();
static {
addDomainClass(Team.class, true);
addDomainClass(ProductArea.class, true);
addDomainClass(Cluster.class, true);
addDomainClass(Settings.class, true);
addDomainClass(Resource.class, false);
addDomainClass(ResourceEvent.class, false);
addDomainClass(MailTask.class, false);
addDomainClass(MailLog.class, false);
addDomainClass(GenericNotificationTask.class, false);
addDomainClass(Notification.class, false);
addDomainClass(NotificationState.class, false);
addDomainClass(NotificationTask.class, false);
}
private TypeRegistration() {
}
private static void addDomainClass(Class<? extends DomainObject> aClass, boolean audited) {
String typeName = aClass.getSimpleName();
classToType.put(aClass, typeName);
typeToClass.put(typeName, aClass);
if (audited) {
auditedTypes.add(typeName);
}
}
public static boolean isAudited(String type) {
return auditedTypes.contains(type);
}
public static String typeOf(Class<?> clazz) {
return classToType.get(clazz);
}
public static String typeOfRequest(RequestElement request) {
return request.getRequestType();
}
@SuppressWarnings("unchecked")
public static <T> Class<T> classFrom(String type) {
Class<?> aClass = typeToClass.get(type);
return (Class<T>) aClass;
}
}