package edu.harvard.iq.dataverse.engine.command;
import edu.harvard.iq.dataverse.DOIDataCiteServiceBean;
import edu.harvard.iq.dataverse.DOIEZIdServiceBean;
import edu.harvard.iq.dataverse.HandlenetServiceBean;
import edu.harvard.iq.dataverse.DataFileServiceBean;
import edu.harvard.iq.dataverse.DatasetLinkingServiceBean;
import edu.harvard.iq.dataverse.DatasetServiceBean;
import edu.harvard.iq.dataverse.DataverseFacetServiceBean;
import edu.harvard.iq.dataverse.DataverseFieldTypeInputLevelServiceBean;
import edu.harvard.iq.dataverse.DataverseLinkingServiceBean;
import edu.harvard.iq.dataverse.DataverseRoleServiceBean;
import edu.harvard.iq.dataverse.DataverseServiceBean;
import edu.harvard.iq.dataverse.authorization.providers.builtin.BuiltinUserServiceBean;
import edu.harvard.iq.dataverse.DvObjectServiceBean;
import edu.harvard.iq.dataverse.FeaturedDataverseServiceBean;
import edu.harvard.iq.dataverse.GuestbookResponseServiceBean;
import edu.harvard.iq.dataverse.GuestbookServiceBean;
import edu.harvard.iq.dataverse.search.IndexServiceBean;
import edu.harvard.iq.dataverse.PermissionServiceBean;
import edu.harvard.iq.dataverse.RoleAssigneeServiceBean;
import edu.harvard.iq.dataverse.search.SearchServiceBean;
import edu.harvard.iq.dataverse.TemplateServiceBean;
import edu.harvard.iq.dataverse.UserNotificationServiceBean;
import edu.harvard.iq.dataverse.authorization.AuthenticationServiceBean;
import edu.harvard.iq.dataverse.authorization.groups.impl.explicit.ExplicitGroupServiceBean;
import edu.harvard.iq.dataverse.engine.DataverseEngine;
import edu.harvard.iq.dataverse.ingest.IngestServiceBean;
import edu.harvard.iq.dataverse.privateurl.PrivateUrlServiceBean;
import edu.harvard.iq.dataverse.search.SolrIndexServiceBean;
import edu.harvard.iq.dataverse.search.savedsearch.SavedSearchServiceBean;
import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
import edu.harvard.iq.dataverse.util.SystemConfig;
import javax.persistence.EntityManager;
/**
* An interface for accessing Dataverse's resources, user info etc. Used by the
* {@link Command} implementations to perform their intended actions.
*
* @author michael
*/
public interface CommandContext {
/**
* Note: While this method is not deprecated *yet*, please consider not
* using it, and using a method on the service bean instead. Using the em
* directly makes the command less testable.
*
* @return the entity manager
*/
public EntityManager em();
public DataverseEngine engine();
public DvObjectServiceBean dvObjects();
public DatasetServiceBean datasets();
public DataverseServiceBean dataverses();
public DataverseRoleServiceBean roles();
public BuiltinUserServiceBean builtinUsers();
public IndexServiceBean index();
public SolrIndexServiceBean solrIndex();
public SearchServiceBean search();
public IngestServiceBean ingest();
public PermissionServiceBean permissions();
public RoleAssigneeServiceBean roleAssignees();
public DataverseFacetServiceBean facets();
public FeaturedDataverseServiceBean featuredDataverses();
public DataFileServiceBean files();
public TemplateServiceBean templates();
public SavedSearchServiceBean savedSearches();
public DataverseFieldTypeInputLevelServiceBean fieldTypeInputLevels();
public DOIEZIdServiceBean doiEZId();
public DOIDataCiteServiceBean doiDataCite();
public HandlenetServiceBean handleNet();
public GuestbookServiceBean guestbooks();
public GuestbookResponseServiceBean responses();
public DataverseLinkingServiceBean dvLinking();
public DatasetLinkingServiceBean dsLinking();
public SettingsServiceBean settings();
public ExplicitGroupServiceBean explicitGroups();
public UserNotificationServiceBean notifications();
public AuthenticationServiceBean authentication();
public SystemConfig systemConfig();
public PrivateUrlServiceBean privateUrl();
}