private long getIdOfAvatar(final String avatarFilename) { // i'm looking in database - default avatar may exist - be created in previous (i.e. broken) upgrade final ImmutableMap<String, Object> systemIssueTypeAvatarSearchCriteria = ImmutableMap.<String, Object>builder(). put(CachingTaggingAvatarStore.SYSTEM_AVATAR, 1). put(CachingTaggingAvatarStore.AVATAR_TYPE, Avatar.Type.ISSUETYPE.getName()). put(CachingTaggingAvatarStore.FILE_NAME, avatarFilename). build(); final List<GenericValue> defaultIssueTypeAvatar = ofBizDelegator.findByAnd( CachingTaggingAvatarStore.AVATAR_ENTITY, systemIssueTypeAvatarSearchCriteria); if (defaultIssueTypeAvatar.size() == 0) { throw new RuntimeException("Expected default avatar not found in database: " + systemIssueTypeAvatarSearchCriteria); } // if there is more i'm just picking first final GenericValue firstMatchingAvatar = defaultIssueTypeAvatar.get(0); return firstMatchingAvatar.getLong(CachingTaggingAvatarStore.ID); }
final @QueryParam ("size") Long size, final @Context HttpServletRequest request) return avatarResourceHelper.storeTemporaryAvatar(Avatar.Type.getByName(type), null, filename, size, request);
public static boolean isOldSystemAvatar(Avatar.Type type, String filename) { if (StringUtils.isBlank(filename)) { return false; } if (type.equals(Type.PROJECT)) { return demotedSystemProjectAvatars.contains(filename.toLowerCase()); } return false; }
final Avatar.Type avatarsType = Avatar.Type.getByName(avatarType); if (null == avatarsType)
final Avatar.Type avatarsType = Avatar.Type.getByName(avatarType); if (null == avatarsType)
if (typeAvatars == null) throwWebException(i18nHelper.getText("rest.error.invalid.avatar.type", type.getName()), com.atlassian.jira.util.ErrorCollection.Reason.VALIDATION_FAILED);
!avatarType.equals(Avatar.Type.USER.getName()) || fileName.endsWith(TAGGED_AVATAR_FILE_SUFFIX))
@Override public void doUpgrade(boolean setupMode) throws Exception { final List<GenericValue> avatars = delegator.findByAnd(AVATAR_ENTITY, FieldMap.build(SYSTEM_AVATAR, NOT_SYSTEM, AVATAR_TYPE, Avatar.Type.USER.getName())); if (avatars == null) { return; } LOG.info(String.format("Analysing %d Avatars...", avatars.size())); for (GenericValue gv : avatars) { final String owner = gv.getString(OWNER); if (owner != null) { final String lowercase_owner = IdentifierUtils.toLowerCase(owner); if (!owner.equals(lowercase_owner)) { gv.setString(OWNER, lowercase_owner); try { gv.store(); } catch (GenericEntityException e) { throw new DataAccessException(e); } } } } }
return avatarResourceHelper.cropTemporaryAvatar(Avatar.Type.getByName(type), null, croppingInstructions);
public Response getAllSystemAvatars(final @PathParam ("type") String type) return avatarResourceHelper.getAllSystemAvatars(Avatar.Type.getByName(type));
/** * @since v6.3 */ @GET @Path ("type/{type}/owner/{owningObjectId}") public Response getAvatars(final @PathParam ("type") String avatarType, final @PathParam ("owningObjectId") String owningObjectId) { final Avatar.Type avatarsType = Avatar.Type.getByName(avatarType); final TypeAvatarService avatarsForType = universalAvatars.getAvatars(avatarsType); if (null == avatarsForType) { return Response.status(Response.Status.NOT_FOUND).entity("avatarType").build(); } final AvatarImageResolver uriResolver = universalAvatars.getImages(avatarsType); if (null == uriResolver) { return Response.status(Response.Status.NOT_FOUND).entity("avatarType").build(); } final SystemAndCustomAvatars allAvatars = avatarsForType.getAvatars(authContext.getUser(), owningObjectId); final ApplicationUser remoteUser = authContext.getUser(); final List<AvatarBean> systemAvatarBeans = createAvatarBeans(allAvatars.getSystemAvatars(), remoteUser, uriResolver); final List<AvatarBean> customAvatarBeans = createAvatarBeans(allAvatars.getCustomAvatars(), remoteUser, uriResolver); Map<String, List<AvatarBean>> result = ImmutableMap.<String, List<AvatarBean>>builder(). put(SYSTEM_AVATARS_FIELD, systemAvatarBeans). put(CUSTOM_AVATARS_FIELD, customAvatarBeans). build(); return Response.ok(result).build(); }
@POST @Path ("type/{type}/owner/{owningObjectId}/avatar") public Response createAvatarFromTemporary(final @PathParam ("type") String avatarType, final @PathParam ("owningObjectId") String owningObjectId, final AvatarCroppingBean croppingInstructions) { try { final Avatar.Type avatarsType = Avatar.Type.getByName(avatarType); if (null == avatarsType) { throw new NoSuchElementException("avatarType"); } final ApplicationUser remoteUser = authContext.getUser(); final AvatarBean avatarFromTemporary = avatarTemporaryHelper.createAvatarFromTemporary( remoteUser, avatarsType, owningObjectId, croppingInstructions); return Response.status(Response.Status.CREATED).entity(avatarFromTemporary).cacheControl(never()).build(); } catch (NoSuchElementException x) { return Response.status(Response.Status.NOT_FOUND).entity(x.getMessage()).build(); } }
/** * Deletes avatar * * @param avatarType Project id or project key * @param id database id for avatar * @return temporary avatar cropping instructions * @since v5.0 */ @DELETE @Path ("type/{type}/owner/{owningObjectId}/avatar/{id}") public Response deleteAvatar(final @PathParam ("type") String avatarType, final @PathParam ("owningObjectId") String owningObjectId, @PathParam ("id") final Long id) { final Avatar.Type avatarsType = Avatar.Type.getByName(avatarType); final TypeAvatarService avatarsForType = universalAvatars.getAvatars(avatarsType); if (null == avatarsForType) { return Response.status(Response.Status.NOT_FOUND).build(); } if (!avatarsForType.canUserCreateAvatar(authContext.getUser(), owningObjectId)) { return Response.status(Response.Status.FORBIDDEN).build(); } final Response avatarFromTemporaryResponse = avatarResourceHelper.deleteAvatar(id); return avatarFromTemporaryResponse; }
RemoteAvatar createRemoteAvatar(final Avatar a, final boolean large, final Base64InputStreamConsumer data) { final long id = a.getId(); final String contentType = a.getContentType(); final String type = a.getAvatarType().getName(); try { if (large) { avatarManager.readAvatarData(a, AvatarManager.ImageSize.LARGE, data); } else { avatarManager.readAvatarData(a, AvatarManager.ImageSize.SMALL, data); } } catch (IOException e) { log.error("Exception trying to get Avatar image data, continuing without it", e); } return new RemoteAvatar(id, contentType, a.getOwner(), a.isSystemAvatar(), type, data.getEncoded()); }
@Override public boolean apply(@Nullable final Avatar input) { if (null == input) { return false; } if (Avatar.Type.PROJECT.equals(type)) { return !Avatar.demotedSystemProjectAvatars.contains(input.getFileName()); } if (Avatar.Type.USER.equals(type)) { return !Avatar.demotedSystemUserAvatars.contains(input.getFileName()); } return true; } };
private Set<String> findExistingSystemAvatarFileNames() { final ImmutableMap<String, Object> systemIssueTypeAvatarSearchCriteria = ImmutableMap.<String, Object>builder(). put(CachingTaggingAvatarStore.SYSTEM_AVATAR, 1). put(CachingTaggingAvatarStore.AVATAR_TYPE, Avatar.Type.ISSUETYPE.getName()). build(); final List<GenericValue> existingSystemAvatars = ofBizDelegator.findByAnd( CachingTaggingAvatarStore.AVATAR_ENTITY, systemIssueTypeAvatarSearchCriteria); final Function<GenericValue, String> extractItemFileName = GenericValueFunctions.getString(CachingTaggingAvatarStore.FILE_NAME); return Sets.newHashSet(Iterables.transform(existingSystemAvatars, extractItemFileName)); }
public List<Avatar> getAllSystemAvatars(final Avatar.Type type) { return getAvatars(FieldMap.build(SYSTEM_AVATAR, IS_SYSTEM, AVATAR_TYPE, type.getName())); }
public Long getDefaultAvatarId(Avatar.Type ofType) { return ofType.getDefaultId(applicationProperties); }
@Override public String asRelativeLinkForDefaultSize(final Avatar.Type type) { return String.format("/secure/viewavatar?avatarId=%dl&avatarType=%s", avatarId, type.getName()); } }
public List<Avatar> getCustomAvatarsForOwner(final Avatar.Type type, final String ownerId) { Assertions.notNull("type", type); Assertions.notNull("ownerId", ownerId); return getAvatars(FieldMap.build(SYSTEM_AVATAR, NOT_SYSTEM, AVATAR_TYPE, type.getName(), OWNER, ownerId)); }