MatomoProviderConfiguration.java

/*
 * Licensed to The Apereo Foundation under one or more contributor license
 * agreements. See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 *
 *
 * The Apereo Foundation licenses this file to you under the Educational
 * Community License, Version 2.0 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of the License
 * at:
 *
 *   http://opensource.org/licenses/ecl2.txt
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
 * License for the specific language governing permissions and limitations under
 * the License.
 *
 */

package org.opencastproject.statistics.provider.matomo.provider;

import org.opencastproject.statistics.api.DataResolution;
import org.opencastproject.statistics.api.ProviderConfiguration;
import org.opencastproject.statistics.api.ResourceType;

import com.google.gson.Gson;

import java.util.Set;

public class MatomoProviderConfiguration extends ProviderConfiguration {
  private static final Gson gson = new Gson();

  public static class MatomoProviderSource {
    private String siteId;
    private String method;
    private String dimensionId;
    private String aggregation;
    private String aggregationVariable;
    private Set<DataResolution> resolutions;

    public MatomoProviderSource() {
      // needed for gson
    }

    public MatomoProviderSource(
        String siteId,
        String method,
        String dimensionId,
        String aggregation,
        String aggregationVariable,
        Set<DataResolution> resolutions
    ) {
      this.siteId = siteId;
      this.method = method;
      this.dimensionId = dimensionId;
      this.aggregation = aggregation;
      this.aggregationVariable = aggregationVariable;
      this.resolutions = resolutions;
    }

    public String getSiteId() {
      return siteId;
    }

    public String getMethod() {
      return method;
    }

    public String getDimensionId() {
      return dimensionId;
    }

    public String getAggregation() {
      return aggregation;
    }

    public String getAggregationVariable() {
      return aggregationVariable;
    }

    public Set<DataResolution> getResolutions() {
      return resolutions;
    }
  }

  private Set<MatomoProviderSource> sources;

  public MatomoProviderConfiguration() {
    // needed for gson
  }

  public MatomoProviderConfiguration(
      String id,
      String title,
      String description,
      ResourceType resourceType,
      String type,
      Set<MatomoProviderSource> sources
  ) {
    super(id, title, description, resourceType, type);
    this.sources = sources;
  }

  public Set<MatomoProviderSource> getSources() {
    return sources;
  }

  public static MatomoProviderConfiguration fromJson(String json) {
    return gson.fromJson(json, MatomoProviderConfiguration.class);
  }
}