@Transactional(readOnly=true) public class AdminImpl extends AbstractLevel2Service implements LocalAdmin, ApplicationContextAware
SecuritySystem, 
Permissions| Modifier and Type | Field and Description | 
|---|---|
| protected ACLVoter | aclVoter | 
| protected ChmodStrategy | chmod | 
| protected OmeroContext | context | 
| protected ChecksumProviderFactory | cpf | 
| protected LdapImpl | ldapUtil | 
| protected MailSender | mailSender | 
| protected static String | NSEXPERIMENTERPHOTO | 
| protected SessionFactory | osf | 
| protected PasswordProvider | passwordProvider | 
| protected PasswordUtil | passwordUtil | 
| protected RoleProvider | roleProvider | 
| protected SqlAction | sql | 
| protected SimpleMailMessage | templateMessage | 
iQuery, iUpdate, metadata, queryFactory, sec| Constructor and Description | 
|---|
| AdminImpl(SqlAction sql,
         SessionFactory osf,
         MailSender mailSender,
         SimpleMailMessage templateMessage,
         ACLVoter aclVoter,
         PasswordProvider passwordProvider,
         RoleProvider roleProvider,
         LdapImpl ldapUtil,
         PasswordUtil passwordUtil,
         ChmodStrategy chmod,
         ChecksumProviderFactory cpf) | 
| Modifier and Type | Method and Description | 
|---|---|
| void | addGroupOwners(ExperimenterGroup group,
              Experimenter... owner)adds the given users to the owner list for this group. | 
| void | addGroups(Experimenter user,
         ExperimenterGroup... groups)adds a user to the given groups. | 
| protected void | assertManaged(IObject o) | 
| boolean | canAnnotate(IObject obj)Companion to  IAdmin.canUpdate(IObject)but not yet remotely
 accessible. | 
| boolean | canUpdate(IObject obj)Returns true if the currently logged in user can modify the given
  IObject. | 
| void | changeExpiredCredentials(String name,
                        String oldCred,
                        String newCred)Used after an  ExpiredCredentialExceptioninstance is thrown. | 
| void | changeGroup(IObject iObject,
           String groupName)call
  details.setGroup()on this instance. | 
| void | changeOwner(IObject iObject,
           String omeName)call
  details.setOwner()on this instance. | 
| void | changePassword(String newPassword)change the password for the current user. | 
| void | changePasswordWithOldPassword(String oldPassword,
                             String newPassword)change the password for the current user by passing the old password. | 
| void | changePermissions(IObject iObject,
                 Permissions perms)the implementation of this method is somewhat tricky in that
  Permissionschanges must be allowed even when other updates are
 not. | 
| void | changeUserPassword(String user,
                  String newPassword)change the password for the a given user. | 
| boolean | checkPassword(String name,
             String password,
             boolean readOnly)If ldap plugin turned, creates Ldap accounts and authentication by LDAP
 available. | 
| Experimenter[] | containedExperimenters(long groupId)fetch all  userscontained in this group. | 
| ExperimenterGroup[] | containedGroups(long experimenterId)fetch all  groupsof which the given user is a
 member. | 
| long | createExperimenter(Experimenter experimenter,
                  ExperimenterGroup defaultGroup,
                  ExperimenterGroup... otherGroups)create and return a new user in the given groups. | 
| long | createExperimenterWithPassword(Experimenter experimenter,
                              String password,
                              ExperimenterGroup defaultGroup,
                              ExperimenterGroup... otherGroups)create and return a new user in the given groups with password. | 
| long | createGroup(ExperimenterGroup group)create and return a new group. | 
| long | createSystemUser(Experimenter newSystemUser)create and return a new system user. | 
| long | createUser(Experimenter newUser,
          String defaultGroup)create and return a new user. | 
| void | deleteExperimenter(Experimenter user)removes a user by removing the password information for that user as well
 as all  GroupExperimenterMapinstances. | 
| void | deleteGroup(ExperimenterGroup group)removes a group by first removing all users in the group, and then
 deleting the actual  ExperimenterGroupinstance. | 
| ExperimenterGroup | getDefaultGroup(long experimenterId)retrieve the default  groupfor the given user
 id. | 
| EventContext | getEventContext()returns an implementation of  EventContextloaded with the
 security for the current user and thread. | 
| EventContext | getEventContextQuiet()Like  IAdmin.getEventContext()but will not reload the context. | 
| Experimenter | getExperimenter(long id)fetch an  Experimenterand all relatedgroups. | 
| ExperimenterGroup | getGroup(long id)fetch an  ExperimenterGroupand all containedusers. | 
| List<Long> | getLeaderOfGroupIds(Experimenter e)Finds the ids for all groups for which the given  Experimenteris
 owner/leader. | 
| Map<String,Long> | getLockingIds(Class<IObject> type,
             long id,
             Long groupId) | 
| Map<String,Long> | getLockingIds(IObject object) | 
| List<Long> | getMemberOfGroupIds(Experimenter e)Finds the ids for all groups for which the given  Experimenteris
 a member. | 
| List<OriginalFile> | getMyUserPhotos()Retrieve the  OriginalFileobject attached to this
 user as specified byIAdmin.uploadMyUserPhoto(String, String, byte[]). | 
| Roles | getSecurityRoles()returns the active  Rolesin use by the server. | 
| Class<? extends ServiceInterface> | getServiceInterface() | 
| List<String> | getUserRoles(Experimenter e)Finds the group names for all groups for which the given  Experimenteris
 a member. | 
| ExperimenterGroup | groupProxy(Long id)returns a possibly uninitialized proxy for the given
  group id. | 
| ExperimenterGroup | groupProxy(String groupName)returns a possibly uninitialized proxy for the given
  group name. | 
| void | internalMoveToCommonSpace(IObject obj)Helpers which unconditionally moves the object to the common space. | 
| Experimenter | lookupExperimenter(String omeName)look up an  Experimenterand all relatedgroupsby name. | 
| List<Experimenter> | lookupExperimenters()Looks up all  experimenterspresent and all relatedgroups. | 
| ExperimenterGroup | lookupGroup(String groupName)look up an  ExperimenterGroupand all containedusersby name. | 
| List<ExperimenterGroup> | lookupGroups()Looks up all  groupspresent and all relatedexperimenters. | 
| String | lookupLdapAuthExperimenter(long id)Looks up  experimenterswho uses LDAP authentication
 (has set dn on password table). | 
| List<Map<String,Object>> | lookupLdapAuthExperimenters()Looks up all id of  experimenterswho uses LDAP
 authentication (has set dn on password table). | 
| void | moveToCommonSpace(IObject... iObjects)Moves the given objects into the "user" group to make them visible
 and linkable from all security contexts. | 
| void | removeGroupOwners(ExperimenterGroup group,
                 Experimenter... owner)removes the given users from the owner list for this group. | 
| void | removeGroups(Experimenter user,
            ExperimenterGroup... groups)Removes an experimenter from the given groups. | 
| void | reportForgottenPassword(String name,
                       String email)Can be used after repeated  AuthenticationExceptioninstances are
 thrown, to request that an email with a temporary password be sent. | 
| void | setApplicationContext(ApplicationContext ctx) | 
| void | setDefaultGroup(Experimenter user,
               ExperimenterGroup group)sets the default group for a given user. | 
| void | setGroupOwner(ExperimenterGroup group,
             Experimenter owner)adds the user to the owner list for this group. | 
| void | synchronizeLoginCache()uses JMX to refresh the login cache if supported. | 
| void | unsetGroupOwner(ExperimenterGroup group,
               Experimenter owner)removes the user from the owner list for this group. | 
| void | updateExperimenter(Experimenter experimenter)Updates an experimenter if admin or owner of group. | 
| void | updateExperimenterWithPassword(Experimenter experimenter,
                              String password)Updates an experimenter if admin or owner of group. | 
| void | updateGroup(ExperimenterGroup group)Updates an experimenter group if admin or owner of group. | 
| void | updateSelf(Experimenter e)Allows a user to update his/her own information. | 
| long | uploadMyUserPhoto(String filename,
                 String mimetype,
                 byte[] data)Uploads a photo for the user which will be displayed on his/her profile. | 
| Experimenter | userProxy(Long id)returns a possibly uninitialized proxy for the given
  user id. | 
| Experimenter | userProxy(String omeName)returns a possibly uninitialized proxy for the given
  user name. | 
getBeanHelper, getExtendedMetadata, getQueryFactory, getSecuritySystem, selfConfigure, setExtendedMetadata, setQueryFactory, setQueryService, setSecuritySystem, setUpdateServiceprotected final SqlAction sql
protected final SessionFactory osf
protected final MailSender mailSender
protected final SimpleMailMessage templateMessage
protected final ACLVoter aclVoter
protected final PasswordProvider passwordProvider
protected final RoleProvider roleProvider
protected final PasswordUtil passwordUtil
protected final LdapImpl ldapUtil
protected final ChmodStrategy chmod
protected final ChecksumProviderFactory cpf
protected OmeroContext context
protected static final String NSEXPERIMENTERPHOTO
public AdminImpl(SqlAction sql, SessionFactory osf, MailSender mailSender, SimpleMailMessage templateMessage, ACLVoter aclVoter, PasswordProvider passwordProvider, RoleProvider roleProvider, LdapImpl ldapUtil, PasswordUtil passwordUtil, ChmodStrategy chmod, ChecksumProviderFactory cpf)
public void setApplicationContext(ApplicationContext ctx) throws BeansException
setApplicationContext in interface ApplicationContextAwareBeansExceptionpublic Class<? extends ServiceInterface> getServiceInterface()
getServiceInterface in interface SelfConfigurableServicepublic Experimenter userProxy(Long id)
LocalAdminuser id. Use of the Experimenter
 instance will initialize its values.userProxy in interface LocalAdminid - the ID of a userpublic Experimenter userProxy(String omeName)
LocalAdminuser name. Use of the
 Experimenter instance will initialize its values.userProxy in interface LocalAdminomeName - the name of a userpublic ExperimenterGroup groupProxy(Long id)
LocalAdmingroup id. Use of the
 Experimenter instance will initialize its values.groupProxy in interface LocalAdminid - the ID of a grouppublic ExperimenterGroup groupProxy(String groupName)
LocalAdmingroup name. Use of the
 Experimenter instance will initialize its values.groupProxy in interface LocalAdmingroupName - the name of a grouppublic List<Long> getLeaderOfGroupIds(Experimenter e)
IAdminExperimenter is
 owner/leader.getLeaderOfGroupIds in interface IAdmine - Non-null, managed (i.e. with id) ExperimenterExperimenterGroup.getDetails(), 
Details.getOwner()public List<Long> getMemberOfGroupIds(Experimenter e)
IAdminExperimenter is
 a member.getMemberOfGroupIds in interface IAdmine - Non-null, managed (i.e. with id) ExperimenterExperimenterGroup.getDetails(), 
Details.getOwner()public List<String> getUserRoles(Experimenter e)
LocalAdminExperimenter is
 a member.getUserRoles in interface LocalAdmine - Non-null, managed (i.e. with id) ExperimenterExperimenterGroup.getDetails(), 
Details.getOwner()public boolean canAnnotate(IObject obj)
LocalAdminIAdmin.canUpdate(IObject) but not yet remotely
 accessible.canAnnotate in interface LocalAdminobj - Not null.public boolean canUpdate(IObject obj)
IAdminIObject. This uses the same logic that would be applied during
 a Hibernate flush to the database.public Experimenter getExperimenter(long id)
IAdminExperimenter and all related
 groups.getExperimenter in interface IAdminid - id of the Experimenterpublic Experimenter lookupExperimenter(String omeName)
IAdminExperimenter and all related
 groups by name.lookupExperimenter in interface IAdminomeName - Name of the Experimenterpublic List<Experimenter> lookupExperimenters()
IAdminexperimenters present and all related
 groups.lookupExperimenters in interface IAdminpublic List<Map<String,Object>> lookupLdapAuthExperimenters()
IAdminexperimenters who uses LDAP
 authentication (has set dn on password table).lookupLdapAuthExperimenters in interface IAdminpublic String lookupLdapAuthExperimenter(long id)
IAdminexperimenters who uses LDAP authentication
 (has set dn on password table).lookupLdapAuthExperimenter in interface IAdminpublic ExperimenterGroup getGroup(long id)
IAdminExperimenterGroup and all contained
 users.public ExperimenterGroup lookupGroup(String groupName)
IAdminExperimenterGroup and all contained
 users by name.lookupGroup in interface IAdmingroupName - Name of the ExperimenterGrouppublic List<ExperimenterGroup> lookupGroups()
IAdmingroups present and all related
 experimenters. The experimenters' groups are also
 loaded.lookupGroups in interface IAdminpublic Experimenter[] containedExperimenters(long groupId)
IAdminusers contained in this group. The
 returned users will have all fields filled in and all collections
 unloaded.containedExperimenters in interface IAdmingroupId - id of the ExperimenterGroupusers in this group.public ExperimenterGroup[] containedGroups(long experimenterId)
IAdmingroups of which the given user is a
 member. The returned groups will have all fields filled in and all
 collections unloaded.containedGroups in interface IAdminexperimenterId - id of the Experimenter. Not null.groups for this
         user.@Transactional(readOnly=false) public void synchronizeLoginCache()
IAdminsynchronizeLoginCache in interface IAdmin@Transactional(readOnly=false) public void updateSelf(Experimenter e)
IAdminIAdmin.setDefaultGroup(Experimenter, ExperimenterGroup)updateSelf in interface IAdmine - A data transfer object. Only the fields: firstName,
            middleName, lastName, email, and institution are checked. Not
            null.IAdmin.setDefaultGroup(Experimenter, ExperimenterGroup)public List<OriginalFile> getMyUserPhotos()
IAdminOriginalFile object attached to this
 user as specified by IAdmin.uploadMyUserPhoto(String, String, byte[]).
 The return value is order by the most recently modified file first.getMyUserPhotos in interface IAdmin@Transactional(readOnly=false) public long uploadMyUserPhoto(String filename, String mimetype, byte[] data)
IAdminOriginalFile object
 with the given format, and attached to the user's Experimenter
 object via an FileAnnotation with
 the namespace: "openmicroscopy.org/omero/experimenter/photo" (NSEXPERIMENTERPHOTO).
 If such an OriginalFile instance already exists,
 it will be overwritten. If more than one photo is present, the oldest
 version will be modified (i.e. the highest updateEvent id).
 Note: as outlined in ticket:1794, this photo will be placed in the "user"
 group and therefore will be visible to everyone on the system.uploadMyUserPhoto in interface IAdminfilename - Not null. String name which will be used.mimetype - Not null. Format.value string. 'image/jpeg' and 'image/png' are common values.data - Not null. Data from the image. This will be written to disk.@Transactional(readOnly=false) public void updateExperimenter(Experimenter experimenter)
IAdminIAdmin.updateSelf(Experimenter) if the current user
 matches the given experimenter.updateExperimenter in interface IAdminexperimenter - the Experimenter to update.@Transactional(readOnly=false) public void updateExperimenterWithPassword(Experimenter experimenter, String password)
IAdminupdateExperimenterWithPassword in interface IAdminexperimenter - the Experimenter to update.password - Not-null. Must pass validation in the security sub-system.@Transactional(readOnly=false) public void updateGroup(ExperimenterGroup group)
IAdminupdateGroup in interface IAdmingroup - the ExperimenterGroup to update.@Transactional(readOnly=false) public long createUser(Experimenter newUser, String defaultGroup)
IAdmincreateUser in interface IAdminnewUser - a new Experimenter instancedefaultGroup - group name of the default group for this userExperimenter@Transactional(readOnly=false) public long createSystemUser(Experimenter newSystemUser)
IAdmincreateSystemUser in interface IAdminnewSystemUser - a new Experimenter instanceExperimenter@Transactional(readOnly=false) public long createExperimenter(Experimenter experimenter, ExperimenterGroup defaultGroup, ExperimenterGroup... otherGroups)
IAdmincreateExperimenter in interface IAdminexperimenter - A new Experimenter instance. Not null.defaultGroup - Instance of ExperimenterGroup. Not null.otherGroups - Array of ExperimenterGroup instances. Can be null.Experimenter Not null.@Transactional(readOnly=false) public long createExperimenterWithPassword(Experimenter experimenter, String password, ExperimenterGroup defaultGroup, ExperimenterGroup... otherGroups)
IAdmincreateExperimenterWithPassword in interface IAdminexperimenter - A new Experimenter instance. Not null.password - Not-null. Must pass validation in the security sub-system.defaultGroup - Instance of ExperimenterGroup. Not null.otherGroups - Array of ExperimenterGroup instances. Can be null.Experimenter Not null.@Transactional(readOnly=false) public long createGroup(ExperimenterGroup group)
IAdminDetails.setPermissions(Permissions)
 method should be called on the instance which is passed. The given
 Permissions will become the default for all objects created while
 logged into this group, possibly modified by the user's umask settings.
 If no permissions is set, the default will be Permissions.USER_PRIVATE,
 i.e. a group in which no user can see the other group member's data.createGroup in interface IAdmingroup - a new ExperimenterGroup instance. Not null.ExperimenterGroup@Transactional(readOnly=false) public void addGroups(Experimenter user, ExperimenterGroup... groups)
IAdmin@Transactional(readOnly=false) public void removeGroups(Experimenter user, ExperimenterGroup... groups)
IAdminremoveGroups in interface IAdminuser - A currently managed entity. Not null.groups - Groups from which the user will be removed. Not null.@Transactional(readOnly=false) public void setDefaultGroup(Experimenter user, ExperimenterGroup group)
IAdminsetDefaultGroup in interface IAdminuser - A currently managed Experimenter. Not null.group - The group which should be set as default group for this user.
            Not null.@Transactional(readOnly=false) public void setGroupOwner(ExperimenterGroup group, Experimenter owner)
IAdminsetGroupOwner in interface IAdmingroup - A currently managed ExperimenterGroup. Not null.owner - A currently managed Experimenter. Not null.@Transactional(readOnly=false) public void unsetGroupOwner(ExperimenterGroup group, Experimenter owner)
IAdminunsetGroupOwner in interface IAdmingroup - A currently managed ExperimenterGroup. Not null.owner - A currently managed Experimenter. Not null.@Transactional(readOnly=false) public void addGroupOwners(ExperimenterGroup group, Experimenter... owner)
IAdminaddGroupOwners in interface IAdmingroup - A currently managed ExperimenterGroup. Not null.owner - A set of currently managed Experimenters. Not null.@Transactional(readOnly=false) public void removeGroupOwners(ExperimenterGroup group, Experimenter... owner)
IAdminremoveGroupOwners in interface IAdmingroup - A currently managed ExperimenterGroup. Not null.owner - A set of currently managed Experimenters. Not null.public ExperimenterGroup getDefaultGroup(long experimenterId)
IAdmingroup for the given user
 id.getDefaultGroup in interface IAdminexperimenterId - of the Experimenter. Not null.ExperimenterGroup. If no default group is
         found, an exception will be thrown.@Transactional(readOnly=false) public void deleteExperimenter(Experimenter user)
IAdminGroupExperimenterMap instances.deleteExperimenter in interface IAdminuser - Experimenter to be deleted. Not null.@Transactional(readOnly=false) public void deleteGroup(ExperimenterGroup group)
IAdminExperimenterGroup instance.deleteGroup in interface IAdmingroup - ExperimenterGroup to be deleted. Not null.@Transactional(readOnly=false) public void changeOwner(IObject iObject, String omeName)
IAdmindetails.setOwner()
 on this instance. It is valid for the instance to be
 unloaded (or constructed with an
 unloading-constructor.)changeOwner in interface IAdminiObject - An entity or an unloaded reference to an entity. Not null.omeName - The user name who should gain ownership of this entity. Not
            null.@Transactional(readOnly=false) public void changeGroup(IObject iObject, String groupName)
IAdmindetails.setGroup()
 on this instance. It is valid for the instance to be
 unloaded (or constructed with an
 unloading-constructor.)changeGroup in interface IAdminiObject - An entity or an unloaded reference to an entity. Not null.groupName - The group name who should gain ownership of this entity. Not
            null.@Transactional(readOnly=false) public void changePermissions(IObject iObject, Permissions perms)
Permissions changes must be allowed even when other updates are
 not. Therefore, we must manually check if the object belongs to this user
 or is admin (before the call to
 SecuritySystem.runAsAdmin(AdminAction)
 
 This logic is duplicated in
 BasicSecuritySystem.checkManagedDetails(IObject, ome.model.internal.Details).
 
 As of OMERO 4.2 (ticket:1434), this method has special handling for an
 instance of ExperimenterGroup and limited capabilities
 for changing any other object type (ticket:1776).
 For groups, the permission changes will be propagated to all the
 contained objects. For other objects, changes may not override group
 settings.changePermissions in interface IAdminiObject - An entity or an unloaded reference to an entity. Not null.perms - The permissions value for this entity. Not null.IAdmin.changePermissions(IObject, Permissions), 
ticket:293, 
ticket:1434@Transactional(readOnly=false) public void moveToCommonSpace(IObject... iObjects)
IAdminmoveToCommonSpace in interface IAdminpublic void internalMoveToCommonSpace(IObject obj)
uploadMyUserPhoto(String, String, byte[])internalMoveToCommonSpace in interface LocalAdminobj - a model object, linked to the current session; never nullpublic Map<String,Long> getLockingIds(Class<IObject> type, long id, Long groupId)
LocalAdminClass (as string) to a count for all entities
 which point to the given IObject. The String "*" is mapped to
 the sum of all the locks.getLockingIds in interface LocalAdmintype - the name of a model classid - the ID of an instance of klassgroupId - the ID of a group to omit from the results, may be null@Transactional(readOnly=false) public void reportForgottenPassword(String name, String email) throws AuthenticationException
IAdminAuthenticationException instances are
 thrown, to request that an email with a temporary password be sent. The
 given email must match the email for the user listed under the name
 argument.
 
 Does not require a session to be active.reportForgottenPassword in interface IAdminAuthenticationException - when name and email do not match@Transactional(readOnly=false) public void changeExpiredCredentials(String name, String oldCred, String newCred) throws AuthenticationException
IAdminExpiredCredentialException instance is thrown.
 
 Does not requirechangeExpiredCredentials in interface IAdminAuthenticationException@Transactional(readOnly=false) public void changePassword(String newPassword)
IAdmin
 Warning:This method requires the user to be authenticated
 with a password and not with a one-time session id. To avoid this
 problem, use IAdmin.changePasswordWithOldPassword(String, String).
 
changePassword in interface IAdminnewPassword - Possibly null to allow logging in with no password.@Transactional(readOnly=false) public void changePasswordWithOldPassword(String oldPassword, String newPassword)
IAdminchangePasswordWithOldPassword in interface IAdminoldPassword - Not-null. Must pass validation in the security sub-system.newPassword - Possibly null to allow logging in with no password.@Transactional(readOnly=false) public void changeUserPassword(String user, String newPassword)
IAdminchangeUserPassword in interface IAdminnewPassword - Not-null. Might must pass validation in the security
            sub-system.public boolean checkPassword(String name, String password, boolean readOnly)
checkPassword in interface LocalAdminname - the name of a userpassword - the user's passwordreadOnly - if the password check should be transactionally read-onlypublic Roles getSecurityRoles()
IAdminRoles in use by the server.getSecurityRoles in interface IAdminRoles instance.public EventContext getEventContext()
IAdminEventContext loaded with the
 security for the current user and thread. If called remotely, not all
 values of EventContext will be sensible.getEventContext in interface IAdminEventContext instancepublic EventContext getEventContextQuiet()
LocalAdminIAdmin.getEventContext() but will not reload the context.
 This also has the result that values from the current call context
 will be applied as simply the session context.getEventContextQuiet in interface LocalAdminprotected void assertManaged(IObject o)
                
                
Version: 5.2.1-ice35-b15
Copyright © 2015 The University of Dundee & Open Microscopy Environment. All Rights Reserved.