/*
* Copyright (c) 2012 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.api.service.utils;
import java.io.PrintWriter;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.core.MediaType;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.emc.storageos.api.service.impl.resource.utils.MarshallingExcetion;
import com.emc.storageos.api.service.impl.resource.utils.StatMarshaller;
import com.emc.storageos.api.service.impl.resource.utils.StatMarshallerFactory;
import com.emc.storageos.api.service.impl.resource.utils.StatRetriever;
import com.emc.storageos.db.client.TimeSeriesMetadata.TimeBucket;
import com.emc.storageos.db.client.model.Stat;
/**
* Implemation of StatRetriever to retrieve stats locally instead of getting from
* Cassandra database.
*
* @author rvobugar
*
*/
public class DummyStatRetriever implements StatRetriever {
final private Logger _logger = LoggerFactory
.getLogger(DummyStatRetriever.class);
private List<Stat> getDummyStats() throws URISyntaxException {
// Creates dummy stats for tests
List<Stat> stlist = new ArrayList<Stat>();
for (int i = 0; i < 100; i++) {
Stat st = new Stat();
st.setProject(new URI("http://mypoject"));
st.setTenant(new URI("http://mytenant"));
st.setUser(new URI("http://myuser"));
st.setVirtualPool(new URI("http://vpool.gold"));
st.setResourceId(new URI("http://resourceId"));
stlist.add(st);
}
return stlist;
}
@Override
public void getBulkStats(DateTime timeBucket, TimeBucket granularity,
MediaType mediaType, PrintWriter out) throws MarshallingExcetion {
StatMarshaller marshaller = StatMarshallerFactory
.getMarshaller(mediaType);
marshaller.header(out);
List<Stat> stats = null;
try {
stats = getDummyStats();
} catch (URISyntaxException e) {
_logger.error("Error getting stats", e);
}
for (Stat stat : stats) {
if (mediaType == MediaType.APPLICATION_XML_TYPE) {
try {
marshaller.marshall(stat, out);
} catch (Exception e) {
_logger.error(e.getMessage(), e);
}
} else if (mediaType == MediaType.APPLICATION_JSON_TYPE) {
try {
marshaller.marshall(stat, out);
} catch (Exception e) {
_logger.error(e.getMessage(), e);
}
}
}
marshaller.tailer(out);
}
}