package org.oransc.enrichment.repository;
+import java.lang.invoke.MethodHandles;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
import org.oransc.enrichment.exceptions.ServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Dynamic representation of all EI Types in the system.
*/
+@SuppressWarnings("squid:S2629") // Invoke method(s) only conditionally
public class EiTypes {
- Map<String, EiType> allEiTypes = new HashMap<>();
+ private final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+ private final Map<String, EiType> allEiTypes = new HashMap<>();
public synchronized void put(EiType type) {
- allEiTypes.put(type.id(), type);
+ allEiTypes.put(type.getId(), type);
}
public synchronized Collection<EiType> getAllEiTypes() {
public synchronized EiType getType(String id) throws ServiceException {
EiType type = allEiTypes.get(id);
if (type == null) {
- throw new ServiceException("Could not find EI Job: " + id);
+ throw new ServiceException("Could not find EI type: " + id);
}
return type;
}
allEiTypes.remove(id);
}
+ public synchronized void remove(EiType type) {
+ this.remove(type.getId());
+ }
+
public synchronized int size() {
return allEiTypes.size();
}
this.allEiTypes.clear();
}
+ public void deregisterType(EiType type, EiJobs eiJobs) {
+ this.remove(type);
+ for (EiJob job : eiJobs.getJobsForType(type.getId())) {
+ eiJobs.remove(job);
+ this.logger.warn("Deleted job {} because no producers left", job.id());
+ }
+ }
+
}