package com.appengine.dockstats.factory; import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import com.appengine.dockstats.entities.DockStation; import com.csvreader.CsvWriter; import com.google.appengine.api.memcache.MemcacheService; import com.google.appengine.api.memcache.MemcacheServiceFactory; public class CSVBikeData extends BikeData { @Override public String getData() { String temp = "CSV"; StringWriter strWriter = new StringWriter(); char delimeter = ','; CsvWriter writer = new CsvWriter(strWriter, delimeter); MemcacheService memcache = MemcacheServiceFactory.getMemcacheService(); String[] columnName = { "ID", "Name", "Latitude", "Longitude", "BikesAvailable", "EmptySlots", "Installed", "Locked", "Temporary", "UpdateTime" }; try { writer.writeRecord(columnName); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } 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"); List<String> columnValues = null; // writer.writeRecord(columns); while (it.hasNext()) { columnValues = new ArrayList<String>(); Map.Entry pairs = (Map.Entry) it.next(); DockStation ds = (DockStation) pairs.getValue(); columnValues.add(ds.getId() + ""); columnValues.add(ds.getName() + ""); columnValues.add(ds.getLatitude() + ""); columnValues.add(ds.getLongitude() + ""); columnValues.add(ds.getNbBikeAvailable() + ""); columnValues.add(ds.getNbEmptyDocks() + ""); columnValues.add(ds.isInstalled() + ""); columnValues.add(ds.isLocked() + ""); columnValues.add(ds.isTemporary() + ""); columnValues.add(updateTime); String str[] = (String[]) columnValues.toArray(new String[columnValues.size()]); try { writer.writeRecord(str); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } else { // buffer.append("<error>Data Feed not available</error>"); } temp = strWriter.toString(); return temp; } @Override public String getData(int id) { // TODO Auto-generated method stub return null; } }