Rev 5711 | Rev 10689 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
/****/package in.shop2020.inventory.controllers;import in.shop2020.thrift.clients.WarehouseClient;import in.shop2020.warehouse.InventoryAge;import in.shop2020.warehouse.WarehouseService.Client;import java.io.BufferedInputStream;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import java.io.InputStream;import java.util.Date;import java.util.List;import javax.servlet.ServletOutputStream;import org.apache.commons.lang.StringUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/*** @author mandeep**/public class InventoryAgeController extends BaseController {private static Log logger = LogFactory.getLog(InventoryAgeController.class);public String index() {try {Client client = new WarehouseClient().getClient();List<InventoryAge> inventoryAge = client.getInventoryAge();byte[] buffer = null;File file = createFile(inventoryAge);buffer = new byte[(int) file.length()];InputStream input = null;try {int totalBytesRead = 0;input = new BufferedInputStream(new FileInputStream(file));while (totalBytesRead < buffer.length) {int bytesRemaining = buffer.length - totalBytesRead;// input.read() returns -1, 0, or more :int bytesRead = input.read(buffer, totalBytesRead,bytesRemaining);if (bytesRead > 0) {totalBytesRead = totalBytesRead + bytesRead;}}/** the above style is a bit tricky: it places bytes into the* 'buffer' array; 'buffer' is an output parameter; the while* loop usually has a single iteration only.*/} finally {input.close();}response.setContentType("application/vnd.ms-excel");response.setHeader("Content-disposition", "inline; filename="+ file.getName());ServletOutputStream sos = response.getOutputStream();sos.write(buffer);sos.flush();}catch (Exception e) {}return null;}/*** @param inventoryAge* @return*/private File createFile(List<InventoryAge> inventoryAge) {try {File file = new File("InventoryAge.xls");BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));bufferedWriter.write(StringUtils.join(new String[] {"Item Id","Category","Brand","Model Name","Model Number","Color","Fresh","1-2 week","2-3 week","3-4 week","4+ week","1+ week","1+ week cost","All","All cost" }, '\t'));for (InventoryAge item : inventoryAge) {bufferedWriter.newLine();bufferedWriter.write(StringUtils.join(new String[] {String.valueOf(item.getItemId()),item.getCategory(),item.getBrand(),item.getModelName(),item.getModelNumber(),item.getColor(),String.valueOf(item.getFreshCount()),String.valueOf(item.getOneToTwoCount()),String.valueOf(item.getTwoToThreeCount()),String.valueOf(item.getThreeToFourCount()),String.valueOf(item.getFourPlusCount()),String.valueOf(item.getOnePlusCount()),String.valueOf(item.getOnePlusCost()),String.valueOf(item.getZeroPlusCount()),String.valueOf(item.getZeroPlusCost())}, '\t'));}bufferedWriter.close();return file;} catch (Exception e) {return null;}}}