
edu.stanford.protege.webprotege.crud.EntityCrudKitRegistry Maven / Gradle / Ivy
The newest version!
package edu.stanford.protege.webprotege.crud;
import com.google.common.collect.Maps;
import edu.stanford.protege.webprotege.inject.ProjectSingleton;
import javax.annotation.Nonnull;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.google.common.base.Preconditions.checkNotNull;
/**
* Author: Matthew Horridge
* Stanford University
* Bio-Medical Informatics Research Group
* Date: 8/19/13
*/
@ProjectSingleton
public class EntityCrudKitRegistry {
private final List> kits = new ArrayList<>();
private final Map> id2CrudKit = new HashMap<>();
private final Map> id2Plugin = Maps.newHashMap();
@Inject
public EntityCrudKitRegistry(@Nonnull EntityCrudKitPluginManager pluginManager) {
List> plugins = pluginManager.getPlugins();
for(EntityCrudKitPlugin,?,?> plugin : plugins) {
EntityCrudKit> kit = plugin.getEntityCrudKit();
kits.add(kit);
id2CrudKit.put(kit.getKitId(), kit);
id2Plugin.put(kit.getKitId(), plugin);
}
}
public List> getKits() {
return new ArrayList<>(kits);
}
private boolean isValidKitId(EntityCrudKitId id) {
return id2CrudKit.containsKey(id);
}
private void checkValidKitId(EntityCrudKitId id) {
checkNotNull(id);
if(!isValidKitId(id)) {
throw new RuntimeException("Invalid kit id: " + id);
}
}
@SuppressWarnings("unchecked")
private EntityCrudKit getKit(EntityCrudKitId id) {
checkValidKitId(id);
return (EntityCrudKit) id2CrudKit.get(id);
}
@SuppressWarnings("unchecked")
private , S extends EntityCrudKitSuffixSettings, C extends ChangeSetEntityCrudSession> EntityCrudKitPlugin getPlugin(EntityCrudKitId kitId) {
checkValidKitId(kitId);
return (EntityCrudKitPlugin) id2Plugin.get(kitId);
}
@SuppressWarnings("unchecked")
public EntityCrudKitHandler getHandler(EntityCrudKitId id) {
EntityCrudKit kit = getKit(id);
return getHandler(EntityCrudKitSettings.get(kit.getDefaultPrefixSettings(), kit.getDefaultSuffixSettings(), kit.getDefaultGeneratedAnnotationsSettings()));
}
public , S extends EntityCrudKitSuffixSettings, C extends ChangeSetEntityCrudSession> EntityCrudKitHandler getHandler(EntityCrudKitSettings settings) {
EntityCrudKitId kitId = settings.getSuffixSettings().getKitId();
EntityCrudKitPlugin plugin = getPlugin(kitId);
return plugin.getEntityCrudKitHandler(settings);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy