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