Android Open Source - latrobe-datacapture-dir Interval Aggregator Data Transform






From Project

Back to project page latrobe-datacapture-dir.

License

The source code is released under:

MIT License

If you think the Android project latrobe-datacapture-dir listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.example.DataCaptureApp.transforms;
/*from   w  ww. ja  v a2s. com*/
import android.util.Log;
import com.example.DataCaptureApp.data.Data;
import com.example.DataCaptureApp.data.DataTransform;

import java.util.LinkedList;
import java.util.List;

/**
 * Created by Tom on 26/10/2014.
 */
public class IntervalAggregatorDataTransform extends DataTransform
{
    private String mIntervalKey;
    private int mIntervalTime;
    private String[] mAggregatorKeys;

    private long mTimeOffset;

    private List<AggregatorDataTransform> mAggregators = new LinkedList<AggregatorDataTransform>();
    private List<Integer> mAggregatorIntervals = new LinkedList<Integer>();


    public IntervalAggregatorDataTransform(String intervalKey, int intervalTime, long timeOffset, String[] aggregatorKeys)
    {
        mIntervalKey = intervalKey;
        mIntervalTime = intervalTime;
        mAggregatorKeys = aggregatorKeys;
        mTimeOffset = timeOffset;
    }

    public void setTimeOffset(long newOffset)
    {
        mTimeOffset = newOffset;
    }

    public void clear()
    {
        mAggregators.clear();
        mAggregatorIntervals.clear();
    }

    @Override
    public synchronized Data transform(Data data)
    {
        Data aggregated = aggregate(data);
        return aggregated;
    }

    private synchronized Data aggregate(Data data)
    {
        long sampleTimestamp = data.get(mIntervalKey);
        long elapsedTime = sampleTimestamp - mTimeOffset;
        int sampleTimeslice = (int)(elapsedTime / mIntervalTime);
        int index = 0;
        AggregatorDataTransform aggregator = null;
        for(int timeslice : mAggregatorIntervals)
        {
            if(timeslice == sampleTimeslice)
            {
                // Correct timeslice found
                aggregator = mAggregators.get(index);
                break;
            }
            else if (timeslice > sampleTimeslice)
            {
                break; // This is the correct index to add at
            }
            ++index;
        }
        if(aggregator == null)
        {
            // Add new aggregator
            mAggregatorIntervals.add(index, sampleTimeslice);
            aggregator = new AggregatorDataTransform(mAggregatorKeys);
            mAggregators.add(index, aggregator);
        }
        // Aggregate this sample
        Data aggregatedData = aggregator.transform(data);
        if(aggregatedData != null)
        {
            // Notify listener with complete
            aggregatedData.set(mIntervalKey, mTimeOffset + (sampleTimeslice * mIntervalTime));
            // Remove completed aggregator and timeslice
            mAggregatorIntervals.remove(index);
            mAggregators.remove(index);
        }
        return aggregatedData;
    }
}




Java Source Code List

com.example.DataCaptureApp.AdvConfigActivity.java
com.example.DataCaptureApp.ConfigActivity.java
com.example.DataCaptureApp.MasterActivity.java
com.example.DataCaptureApp.MasterService.java
com.example.DataCaptureApp.SlaveActivity.java
com.example.DataCaptureApp.SlaveService.java
com.example.DataCaptureApp.data.DataServiceConnection.java
com.example.DataCaptureApp.data.DataService.java
com.example.DataCaptureApp.data.DataTransform.java
com.example.DataCaptureApp.data.Data.java
com.example.DataCaptureApp.data.Event.java
com.example.DataCaptureApp.data.FailedInitialisationException.java
com.example.DataCaptureApp.data.IDataEventListener.java
com.example.DataCaptureApp.data.IDataListener.java
com.example.DataCaptureApp.data.IDataSource.java
com.example.DataCaptureApp.data.IDataTransform.java
com.example.DataCaptureApp.data.IEventListener.java
com.example.DataCaptureApp.data.IEventSource.java
com.example.DataCaptureApp.services.BluetoothConnectivityService.java
com.example.DataCaptureApp.services.BluetoothThread.java
com.example.DataCaptureApp.services.DataDbContract.java
com.example.DataCaptureApp.services.DataDbHelper.java
com.example.DataCaptureApp.services.DataStoreService.java
com.example.DataCaptureApp.services.HttpThread.java
com.example.DataCaptureApp.services.RemoteConnectivityService.java
com.example.DataCaptureApp.services.SensorSampleService.java
com.example.DataCaptureApp.services.SensorSampler.java
com.example.DataCaptureApp.testing.BluetoothActivity.java
com.example.DataCaptureApp.testing.DataStoreActivity.java
com.example.DataCaptureApp.testing.DataTester.java
com.example.DataCaptureApp.testing.IServiceListener.java
com.example.DataCaptureApp.testing.MainService.java
com.example.DataCaptureApp.testing.MasterTestActivity.java
com.example.DataCaptureApp.testing.RandomService.java
com.example.DataCaptureApp.testing.RemoteActivity.java
com.example.DataCaptureApp.testing.SensorSampleActivity.java
com.example.DataCaptureApp.testing.ServiceTestActivity.java
com.example.DataCaptureApp.testing.SlaveTestActivity.java
com.example.DataCaptureApp.testing.TestActivity.java
com.example.DataCaptureApp.transforms.AggregatorDataTransform.java
com.example.DataCaptureApp.transforms.ArithmeticDataTransform.java
com.example.DataCaptureApp.transforms.ArrayCollectDataTransform.java
com.example.DataCaptureApp.transforms.ArraySplitDataTransform.java
com.example.DataCaptureApp.transforms.DeserialiseDataTransform.java
com.example.DataCaptureApp.transforms.FieldCopyDataTransform.java
com.example.DataCaptureApp.transforms.FieldModifyDataTransform.java
com.example.DataCaptureApp.transforms.FieldRenameDataTransform.java
com.example.DataCaptureApp.transforms.IntervalAggregatorDataTransform.java
com.example.DataCaptureApp.transforms.PackDataTransform.java
com.example.DataCaptureApp.transforms.QuaternionDifferenceDataTransform.java
com.example.DataCaptureApp.transforms.RemoveDataTransform.java
com.example.DataCaptureApp.transforms.SetDataTransform.java
com.example.DataCaptureApp.transforms.UnpackDataTransform.java
com.example.DataCaptureApp.utils.BroadcastDataSource.java
com.example.DataCaptureApp.utils.ByteUtils.java
com.example.DataCaptureApp.utils.DataEventHandler.java
com.example.DataCaptureApp.utils.DataHandlerThread.java
com.example.DataCaptureApp.utils.JSONReader.java
com.example.DataCaptureApp.utils.Quaternion.java
com.example.DataCaptureApp.utils.SerialisationUtils.java