All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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