package com.appengine.dockstats.factory;
//~--- non-JDK imports --------------------------------------------------------
import com.appengine.dockstats.entities.DockStation;
import com.appengine.dockstats.resource.StringBufferOutputStream;
import com.google.appengine.api.memcache.MemcacheService;
import com.google.appengine.api.memcache.MemcacheServiceFactory;
import org.ho.yaml.YamlEncoder;
//~--- JDK imports ------------------------------------------------------------
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class YAMLBikeData extends BikeData {
@Override
public String getData() {
String temp = "YAML";
MemcacheService memcache = MemcacheServiceFactory.getMemcacheService();
StringBufferOutputStream outputStream = new StringBufferOutputStream();
YamlEncoder enc = new YamlEncoder(outputStream);
HashMap<String, String> columnValues = null;
if (memcache.contains("cycleData")) {
// buffer.append("<updatedOn>" + memcache.get("updateTime") + "</updatedOn>");
Map<Integer, DockStation> mp = (Map<Integer, DockStation>) memcache.get("cycleData");
Iterator it = mp.entrySet().iterator();
String updateTime = (String) memcache.get("updateTime");
while (it.hasNext()) {
columnValues = new HashMap<String, String>();
Map.Entry pairs = (Map.Entry) it.next();
DockStation ds = (DockStation) pairs.getValue();
columnValues.put("ID", ds.getId() + "");
columnValues.put("Name", ds.getName() + "");
columnValues.put("Latitude", ds.getLatitude() + "");
columnValues.put("Longitude", ds.getLongitude() + "");
columnValues.put("BikesAvailable", ds.getNbBikeAvailable() + "");
columnValues.put("EmptySlots", ds.getNbEmptyDocks() + "");
columnValues.put("Installed", ds.isInstalled() + "");
columnValues.put("Locked", ds.isLocked() + "");
columnValues.put("Temporary", ds.isTemporary() + "");
columnValues.put("UpdateTime", updateTime + "");
enc.writeObject(columnValues);
}
} else {
columnValues = new HashMap<String, String>();
columnValues.put("Error", "Data Feed not available");
enc.writeObject(columnValues);
}
enc.close();
temp = outputStream.toString();
return temp;
}
@Override
public String getData(int id) {
// TODO Auto-generated method stub
return null;
}
}