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

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); } }