public void flush()

in mail-archive/stats/src/main/java/org/apache/sling/mailarchive/stats/impl/MailStatsProcessorImpl.java [176:210]


    public void flush() {
        try {
            ResourceResolver resolver = null;
            try {
                resolver = resourceResolverFactory.getAdministrativeResourceResolver(null);
                for(DataRecord r : data.values()) {
                    // Each org gets its own resource under our root
                    log.info("Storing {} at path {}", r, r.getPath());
                    ResourceUtil.getOrCreateResource(resolver, ROOT_PATH, DEFAULT_RESOURCE_TYPE, DEFAULT_RESOURCE_TYPE, false);
                    ResourceUtil.getOrCreateResource(resolver, r.getOrgPath(), DESTINATION_RESOURCE_TYPE, DEFAULT_RESOURCE_TYPE, false);
                    
                    // Properties are the message counts per source for this destination
                    final Map<String, Object> data = new HashMap<String, Object>();
                    for(Map.Entry<String, Integer> e : r.getSourceCounts().entrySet()) {
                        data.put(e.getKey(), e.getValue());
                    }
                    data.put(PERIOD_PROP, r.timestampPath);
                    data.put("sling:resourceType", DATA_RESOURCE_TYPE);
                    
                    // TODO for now this overwrites existing values,
                    // need to combine existing and new
                    ResourceUtil.getOrCreateResource(resolver, r.getPath(), data, DEFAULT_RESOURCE_TYPE, false);
                    
                }
                data.clear();
            } finally {
                if(resolver != null) {
                    resolver.commit();
                    resolver.close();
                }
            }
        } catch(Exception e) {
            log.warn("Exception in flush()", e);
        }
    }