Package org.timepedia.chronoscope.client.data.mock

Source Code of org.timepedia.chronoscope.client.data.mock.MockDatasetFactory

package org.timepedia.chronoscope.client.data.mock;

import com.google.inject.Inject;

import org.timepedia.chronoscope.client.Dataset;
import org.timepedia.chronoscope.client.data.DatasetFactory;
import org.timepedia.chronoscope.client.data.DatasetRequest;
import org.timepedia.chronoscope.client.util.TimeUnit;
import org.timepedia.chronoscope.client.util.date.ChronoDate;

/**
* Factory for creating in-memory mock datasets for testing.
*
* @author chad takahashi
*/
public class MockDatasetFactory {

  private DatasetFactory dsFactory;

  public MockDatasetFactory(DatasetFactory datasetFactory) {

    dsFactory = datasetFactory;
  }

  @Inject
  public void setDsFactory(DatasetFactory dsFactory) {
    this.dsFactory = dsFactory;
  }

  /**
   * Creates a basic sine wave composed of 1000 points spaced 1 day apart
   * starting at year 1970.
   */
  public Dataset getBasicDataset() {
    int numSamples = 1000;

    ChronoDate d = ChronoDate.get(1970, 0, 1);

    double[] domainValues = new double[numSamples];
    double[] rangeValues = new double[numSamples];

    for (int i = 0; i < numSamples; i++) {
      double tmp = 5.0 * (double) i / (double) numSamples;
      double ry = Math.sin(Math.PI * tmp) / Math.exp(tmp / 5.0);

      domainValues[i] = d.getTime();
      rangeValues[i] = ry;
      d.add(TimeUnit.DAY, 1);
    }

    DatasetRequest.Basic request = new DatasetRequest.Basic();
    request.setIdentifier("mock");
    request.setAxisId("none");
    request.setRangeLabel("Mock");
    request.setDomain(domainValues);
    request.addRangeTupleSlice(rangeValues);

    return dsFactory.create(request);
  }
}
TOP

Related Classes of org.timepedia.chronoscope.client.data.mock.MockDatasetFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.