Commons Functor
  1. Commons Functor
  2. FUNCTOR-1

[functor] New components: summarize and aggregate

    Details

    • Type: New Feature New Feature
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.0
    • Labels:
    • Environment:

      JDK 1.6.0_25 but should work with any JDK 5+ (possibly 1.4 though I haven't tested).

      Description

      This is the next step from https://issues.apache.org/jira/browse/SANDBOX-340 – as instructed I'm finally hoping to get the code in the right place and hopefully this is something that the functor component could do with.
      Whereas initially I just started with the summarizer component, I have added now the second one, the "aggregator" as they are somehow related. If this code proves to be useful to functor in any way, it would actually be good to get some feedback on these 2 to see if the class hierarchy can in fact be changed to share some common functionality as I feel (probably due to the similar needs that lead to writing/using these components) that somehow they should share a common base.
      In brief, the 2 components:

      • aggregator: this just allows for data to be aggregated in a user defined way (e.g. stored in a list for the purpose of averaging, computing the arithmetic median etc). The classes provided actually offer the implementation for storing data in a list and computing the above-mentioned values or summing up everything.
      • timed summarizer: this is another variation of the aggreator, however, it adds the idea of regular "flushes", so based on a timer it will reset the value and start summing/aggregating the data again. Rather than using an aggregator which would store the whole data series (possibly for applying more complex formulas), this component just computes on the fly on each request the formula and stores the result of it. (Which does mean things like computing arithmetic mean, median etc would be difficult to compute without knowing upfront how many calls will be received – i.e. how many elements we will be required to summarize/aggregate.) So the memory footprint of running this is much smaller – even though, as I said, it achieves similar results. I have only provided a summarizer which operates on integers, but obviously others for float, double etc can be created if we go ahead with this design.
        Hopefully the above make sense; this code has resulted from finding myself writing similar components to these a few times and because it's always been either one type (e.g. aggregator) or another (summarizer) I haven't given quite possibly enough thought to the class design to join these 2. Also, unfortunately, the time I sat down to make these components a bit more general and submitted issue 340 was nearly 3 months ago so I'm trying to remember myself all the ideas I had at a time so bear with me please if these are still a bit fuzzy However, if you can make use of these I'm quite happy to elaborate on areas that are unclear and obviously put some effort into getting these components to the standards required to put these into a release.
      1. commons-functor.patch.bz2
        14 kB
        Liviu Tudor
      2. commons-functor-aggregate+summarizer.zip
        5 kB
        Liviu Tudor
      3. functor.22-may-2012.patch.bz2
        23 kB
        Liviu Tudor
      4. functor.patch.bz2
        22 kB
        Liviu Tudor
      5. functor.patch.bz2
        18 kB
        Liviu Tudor

        Activity

        Liviu Tudor created issue -
        Liviu Tudor made changes -
        Field Original Value New Value
        Attachment commons-functor-aggregate+summarizer.zip [ 12492156 ]
        Liviu Tudor made changes -
        Attachment commons-functor.patch.bz2 [ 12493524 ]
        Simone Tripodi made changes -
        Project Commons Sandbox [ 12310491 ] Commons Functor [ 12312520 ]
        Key SANDBOX-341 FUNCTOR-1
        Issue Type Improvement [ 4 ] New Feature [ 2 ]
        Component/s Functor [ 12312256 ]
        Simone Tripodi made changes -
        Assignee Simone Tripodi [ simone.tripodi ]
        Liviu Tudor made changes -
        Attachment functor.patch.bz2 [ 12515337 ]
        Liviu Tudor made changes -
        Attachment functor.patch.bz2 [ 12516078 ]
        Liviu Tudor made changes -
        Attachment functor.22-may-2012.patch.bz2 [ 12528708 ]
        Simone Tripodi made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Fix Version/s 1.0 [ 12319504 ]
        Resolution Fixed [ 1 ]

          People

          • Assignee:
            Simone Tripodi
            Reporter:
            Liviu Tudor
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development