public void setRating()

in slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/impl/RatingsServiceImpl.java [103:124]


    public void setRating(final Resource resource, final String userId, final double rating)
    throws PersistenceException {
        final String ratingsPath = getRatingsResourcePath(resource) ;

        final Map<String, Object> props = new HashMap<String, Object>();
        props.put(ResourceResolver.PROPERTY_RESOURCE_TYPE, RESOURCETYPE_RATINGS);
        final Resource ratingsResource = ResourceUtil.getOrCreateResource(resource.getResourceResolver(),
                ratingsPath, props, null, true);

        final Resource ratingRsrc = resource.getResourceResolver().getResource(ratingsResource, userId);
        if ( ratingRsrc == null ) {
            props.clear();
            props.put(ResourceResolver.PROPERTY_RESOURCE_TYPE, RatingsUtil.RESOURCETYPE_RATING);
            props.put(RatingsUtil.PROPERTY_RATING, String.valueOf(rating));

            resource.getResourceResolver().create(ratingsResource, userId, props);
        } else {
            final ModifiableValueMap mvm = ratingRsrc.adaptTo(ModifiableValueMap.class);
            mvm.put(RatingsUtil.PROPERTY_RATING, String.valueOf(rating));
        }
        resource.getResourceResolver().commit();
    }