package org.yaac.server.service;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.yaac.client.service.StatisticsService;
import org.yaac.shared.stat.StatDTO;
import org.yaac.shared.stat.StatDTO.KindWrapper;
import org.yaac.shared.stat.models.Kind;
import org.yaac.shared.stat.models.KindIsRootEntity;
import org.yaac.shared.stat.models.KindNonRootEntity;
import org.yaac.shared.stat.models.NSPropertyTypePropertyNameKind;
import org.yaac.shared.stat.models.NSTotal;
import org.yaac.shared.stat.models.PropertyType;
import org.yaac.shared.stat.models.Total;
/**
* since we don't have datastore statistics in local environment,
* this mock service will mock a set of statistics
*
* @author Max Zhu (thebbsky@gmail.com)
*
*/
public class MockStatisticsService implements StatisticsService {
@Override
public StatDTO loadStat() {
Date timestamp = new Date();
Total total = new Total(1000L, 10L, timestamp);
Map<String, Iterable<KindWrapper>> kindsMap = new HashMap<String, Iterable<KindWrapper>>();
{
List<KindWrapper> kinds = new LinkedList<KindWrapper>();
{
KindWrapper kind = new KindWrapper();
kind.setKind(new Kind(500L, 5L, timestamp, "Kind_A"));
kind.setNonRootKind(new KindNonRootEntity(400L, 3L, timestamp, "Kind_A"));
kind.setRootKind(new KindIsRootEntity(100L, 2L, timestamp, "Kind_A"));
kinds.add(kind);
}
{
KindWrapper kind = new KindWrapper();
kind.setKind(new Kind(400L, 3L, timestamp, "Kind_B"));
kind.setNonRootKind(new KindNonRootEntity(400L, 3L, timestamp, "Kind_B"));
kinds.add(kind);
}
{
KindWrapper kind = new KindWrapper();
kind.setKind(new Kind(100L, 2L, timestamp, "Kind_C"));
kind.setRootKind(new KindIsRootEntity(100L, 2L, timestamp, "Kind_C"));
kinds.add(kind);
}
kindsMap.put("", kinds);
}
{
List<KindWrapper> kinds = new LinkedList<KindWrapper>();
{
KindWrapper kind = new KindWrapper();
kind.setKind(new Kind(5000L, 42L, timestamp, "Kind_A"));
kind.setNonRootKind(new KindNonRootEntity(4000L, 30L, timestamp, "Kind_A"));
kind.setRootKind(new KindIsRootEntity(1000L, 12L, timestamp, "Kind_A"));
kinds.add(kind);
}
{
KindWrapper kind = new KindWrapper();
kind.setKind(new Kind(50000L, 300L, timestamp, "Kind_B"));
kind.setNonRootKind(new KindNonRootEntity(50000L, 300L, timestamp, "Kind_B"));
kinds.add(kind);
}
kindsMap.put("namespace_A", kinds);
}
Map<String, Iterable<NSPropertyTypePropertyNameKind>> propMap =
new HashMap<String, Iterable<NSPropertyTypePropertyNameKind>>();
{
List<NSPropertyTypePropertyNameKind> props = new LinkedList<NSPropertyTypePropertyNameKind>();
props.add(new NSPropertyTypePropertyNameKind(1000L, 10L, timestamp, "Kind_A", "Prop_A", "INT"));
props.add(new NSPropertyTypePropertyNameKind(2000L, 20L, timestamp, "Kind_A", "Prop_A", "COMPLEX"));
props.add(new NSPropertyTypePropertyNameKind(2000L, 20L, timestamp, "Kind_B", "Prop_A", "INT"));
props.add(new NSPropertyTypePropertyNameKind(2000L, 20L, timestamp, "Kind_B", "Prop_B", "INT"));
props.add(new NSPropertyTypePropertyNameKind(2000L, 20L, timestamp, "Kind_B", "Prop_C", "INT"));
propMap.put("", props);
}
{
List<NSPropertyTypePropertyNameKind> props = new LinkedList<NSPropertyTypePropertyNameKind>();
props.add(new NSPropertyTypePropertyNameKind(2000L, 10L, timestamp, "Kind_A", "Prop_A", "INT"));
props.add(new NSPropertyTypePropertyNameKind(3000L, 20L, timestamp, "Kind_A", "Prop_A", "COMPLEX"));
props.add(new NSPropertyTypePropertyNameKind(4000L, 20L, timestamp, "Kind_B", "Prop_A", "INT"));
props.add(new NSPropertyTypePropertyNameKind(5000L, 20L, timestamp, "Kind_B", "Prop_B", "INT"));
props.add(new NSPropertyTypePropertyNameKind(6000L, 20L, timestamp, "Kind_B", "Prop_C", "INT"));
propMap.put("namespace_A", props);
}
return new StatDTO(total, kindsMap, propMap);
}
@SuppressWarnings("unused")
private StatDTO oldVersionMockData() {
Date timestamp = new Date();
Total total = new Total(1000L, 10L, timestamp);
Map<String, NSTotal> nsTotalsMap = new HashMap<String, NSTotal>();
nsTotalsMap.put("", new NSTotal(500L, 3L, new Date()));
nsTotalsMap.put("namespace_1", new NSTotal(200L, 3L, timestamp));
nsTotalsMap.put("namespace_2", new NSTotal(300L, 4L, timestamp));
List<PropertyType> propertyTypes = new LinkedList<PropertyType>();
propertyTypes.add(new PropertyType(200L, 10L, timestamp, "Date/Time"));
propertyTypes.add(new PropertyType(200L, 10L, timestamp, "Integer"));
propertyTypes.add(new PropertyType(200L, 10L, timestamp, "String"));
propertyTypes.add(new PropertyType(200L, 10L, timestamp, "Float"));
propertyTypes.add(new PropertyType(200L, 10L, timestamp, "Category"));
List<KindWrapper> kinds = new LinkedList<KindWrapper>();
{
KindWrapper kind = new KindWrapper();
kind.setKind(new Kind(500L, 5L, timestamp, "Kind_A"));
kind.setNonRootKind(new KindNonRootEntity(400L, 3L, timestamp, "Kind_A"));
kind.setRootKind(new KindIsRootEntity(100L, 2L, timestamp, "Kind_A"));
kinds.add(kind);
}
{
KindWrapper kind = new KindWrapper();
kind.setKind(new Kind(400L, 3L, timestamp, "Kind_B"));
kind.setNonRootKind(new KindNonRootEntity(400L, 3L, timestamp, "Kind_B"));
kinds.add(kind);
}
{
KindWrapper kind = new KindWrapper();
kind.setKind(new Kind(100L, 2L, timestamp, "Kind_C"));
kind.setRootKind(new KindIsRootEntity(100L, 2L, timestamp, "Kind_C"));
kinds.add(kind);
}
// return new StatDTO(total, nsTotalsMap, propertyTypes, kinds);
return null;
}
}