public UserId getLastModifiedBy(ProjectId projectId) {
   String userName = getPropertyValue(projectId, LAST_MODIFIED_BY_PROPERTY_NAME, null);
   if (userName == null) {
     return UserId.getGuest();
   } else {
     return UserId.getUserId(userName);
   }
 }
 private static ProjectDetails createProjectDetailsFromProjectInstance(
     ProjectInstance projectInstance) {
   final ProjectId projectId = ProjectId.get(projectInstance.getName());
   final String description = projectInstance.getDescription();
   final User projectOwner = projectInstance.getOwner();
   final UserId ownerId =
       projectOwner != null ? UserId.getUserId(projectOwner.getName()) : UserId.getGuest();
   final boolean inTrash = isInTrash(projectInstance);
   final Slot displayNameSlot =
       projectInstance.getProtegeInstance().getKnowledgeBase().getSlot("displayName");
   final String displayName =
       (String) projectInstance.getProtegeInstance().getOwnSlotValue(displayNameSlot);
   return new ProjectDetails(projectId, displayName, description, ownerId, inTrash);
 }
 public UserData registerUser(String userName, String email, String password)
     throws UserRegistrationException {
   checkNotNull(userName);
   checkNotNull(email);
   checkNotNull(password);
   User existingUser = metaproject.getUser(userName);
   if (existingUser != null) {
     throw new UserNameAlreadyExistsException(userName);
   }
   for (User user : metaproject.getUsers()) {
     if (email.equals(user.getEmail())) {
       throw new UserEmailAlreadyExistsException(email);
     }
   }
   User newUser = metaproject.createUser(userName, password);
   return AuthenticationUtil.createUserData(UserId.getUserId(newUser.getName()));
 }
 private UserId getOwner(ProjectId projectId) {
   ProjectInstance pi = getProjectInstance(projectId);
   User owner = pi.getOwner();
   return UserId.getUserId(owner.getName());
 }