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

ru.taskurotta.service.config.impl.MemoryConfigService Maven / Gradle / Ivy

package ru.taskurotta.service.config.impl;

import ru.taskurotta.service.config.ConfigService;
import ru.taskurotta.service.config.ConfigServiceUtils;
import ru.taskurotta.service.config.model.ActorPreferences;
import ru.taskurotta.service.config.model.ExpirationPolicyConfig;

import java.util.Arrays;
import java.util.Collection;
import java.util.concurrent.TimeUnit;

/**
 * Configuration storing
 */
public class MemoryConfigService implements ConfigService {

	private Collection actorPreferences;
	private Collection expirationPolicies;

	private int defaultTimeout = 1;
	private TimeUnit defaultTimeunit  = TimeUnit.SECONDS;

	public boolean isActorBlocked(String actorId) {
        boolean result = false;
        Collection actorPreferences = getAllActorPreferences();
        if (actorPreferences!=null && !actorPreferences.isEmpty()) {
            for(ActorPreferences aPref: actorPreferences) {
                if (aPref.getId().equals(actorId)) {
                    result = aPref.isBlocked();
                    break;
                }
            }
        }
        return result;

	}

    @Override
    public void blockActor(String actorId) {
        setBlockedState(actorId, true);
    }

    private void setBlockedState(String actorId, boolean isBlocked) {
        Collection actorPreferences = getAllActorPreferences();
        boolean checked = false;
        if (actorPreferences!=null && !actorPreferences.isEmpty()) {
            for(ActorPreferences aPref: actorPreferences) {
                if (aPref.getId().equals(actorId)) {
                    aPref.setBlocked(isBlocked);
                    checked = true;
                    break;
                }
            }

            if (!checked) {
                ActorPreferences ap = new ActorPreferences();
                ap.setId(actorId);
                ap.setBlocked(isBlocked);
                actorPreferences.add(ap);
            }

        }
    }

    @Override
    public void unblockActor(String actorId) {
        setBlockedState(actorId, false);
    }

	public Collection getAllActorPreferences() {
	    if (actorPreferences == null) {
	        actorPreferences = ConfigServiceUtils.getDefaultActorPreferences();
	    }
		return actorPreferences;
	}

	public void setActorPreferences(ActorPreferences[] actorPreferences) {
        if (actorPreferences!=null) {
            this.actorPreferences = Arrays.asList(actorPreferences);
        } else {
            this.actorPreferences = null;
        }
	}

    public void setActorPreferencesCollection(Collection actorPreferences) {
        this.actorPreferences = actorPreferences;
    }

    public Collection getAllExpirationPolicies() {
	    if (expirationPolicies == null) {
	        expirationPolicies = ConfigServiceUtils.getDefaultPolicies(defaultTimeout, defaultTimeunit);
	    }
        return expirationPolicies;
    }

    public ActorPreferences getActorPreferences(String actorId) {
        ActorPreferences result = null;
        if (actorPreferences!=null) {
            for(ActorPreferences ap: actorPreferences) {
                if (ap.getId()!=null && ap.getId().equals(actorId)) {
                    result = ap;
                    break;
                }
            }
        }
        return result;
    }

    public void setExpirationPolicies(ExpirationPolicyConfig[] expirationPolicies) {
        if (expirationPolicies!=null) {
            this.expirationPolicies = Arrays.asList(expirationPolicies);
        } else {
            this.expirationPolicies = null;
        }

    }

    public void setExpirationPoliciesCollection(Collection expirationPolicies) {
        this.expirationPolicies = expirationPolicies;
    }

    public void setDefaultTimeout(int defaultTimeout) {
        this.defaultTimeout = defaultTimeout;
    }

    public void setDefaultTimeunit(TimeUnit defaultTimeunit) {
        this.defaultTimeunit = defaultTimeunit;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy