
com.talanlabs.taskmanager.engine.configuration.registry.TaskObjectManagerRegistryBuilder Maven / Gradle / Ivy
The newest version!
package com.talanlabs.taskmanager.engine.configuration.registry;
import com.talanlabs.taskmanager.engine.manager.ITaskObjectManager;
import com.talanlabs.taskmanager.model.ITaskObject;
import org.apache.commons.lang3.builder.ToStringBuilder;
import java.util.HashMap;
import java.util.Map;
public class TaskObjectManagerRegistryBuilder {
private MyObjectManagerRegistry objectManagerRegistry;
private TaskObjectManagerRegistryBuilder() {
super();
this.objectManagerRegistry = new MyObjectManagerRegistry();
}
public static TaskObjectManagerRegistryBuilder newBuilder() {
return new TaskObjectManagerRegistryBuilder();
}
public TaskObjectManagerRegistryBuilder instanceToClass(IInstanceToClass instanceToClass) {
objectManagerRegistry.instanceToClass = instanceToClass;
return this;
}
public TaskObjectManagerRegistryBuilder addTaskObjectManager(ITaskObjectManager, ?> taskObjectManager) {
objectManagerRegistry.taskObjectManagerMap.put(taskObjectManager.getTaskObjectClass(), taskObjectManager);
return this;
}
public ITaskObjectManagerRegistry build() {
return objectManagerRegistry;
}
public interface IInstanceToClass {
Class instanceToClass(F taskObject);
}
private static class MyObjectManagerRegistry extends AbstractTaskObjectManagerRegistry {
private final Map, ITaskObjectManager, ?>> taskObjectManagerMap;
private IInstanceToClass instanceToClass;
public MyObjectManagerRegistry() {
super();
this.taskObjectManagerMap = new HashMap<>();
}
@SuppressWarnings("unchecked")
@Override
public ITaskObjectManager getTaskObjectManager(F taskObject) {
if (instanceToClass != null) {
return getTaskObjectManager(instanceToClass.instanceToClass(taskObject));
}
return getTaskObjectManager((Class) taskObject.getClass());
}
@SuppressWarnings("unchecked")
@Override
public ITaskObjectManager getTaskObjectManager(Class taskObjectClass) {
return (ITaskObjectManager) taskObjectManagerMap.get(taskObjectClass);
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy