public static final String PROC_FLAG_CSV_DL =
"SalePartNumStockConfirmTotalAction.csvdl";
public static final String CSV_ENCODING = "Windows-31J";
/** CSVファイル ダウンロードデフォルトファイル名 */
public static final String CSV_FILENAME = "csvfileout.csv";
/**
* プロテクション額連絡入力送信Action
*
* @param mapping
* ActionMapping object
* @param form
* ActionForm object
* @param request
* HttpServletRequest object
* @param response
* HttpServletResponse object
* @return ActionForward object
* @throws Exception
* exception
*/
public ActionForward exec(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//FORMの取得
@SuppressWarnings("unused")
ProconInputActionFrom proconInputFrom = (ProconInputActionFrom) form;
// ログイン情報の取得
NetEquityContext context = getNetEquityContext(request);
if (context == null) {
return mapping.findForward("NotLogin");
}
long stockId;
stockId = context.getStock().getStockId();
CsvOutService csvOutService =(CsvOutService) getBean("csvOutService");
// CSV ダウンロード
String csvData = csvOutService.getCsvDataList(stockId);
OutputStream outStream = response.getOutputStream();
byte[] byteArray = csvData.getBytes(CSV_ENCODING);
setResponseHeader(response, CSV_FILENAME, byteArray.length);
outStream.write(byteArray);
outStream.flush();
outStream.close();
return null;
}
private void setResponseHeader(
HttpServletResponse response
, String filename
, int fileLength
) {
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "p_w_upload; filename=" + filename);
response.setHeader("Content-Type", "text/plain; charset=Shift_JIS");
response.setDateHeader("Expires", 0);
response.setContentLength(fileLength);
}
}
private EntrySDao dao;
/** DAOセッター */
public void setEntrySDao(EntrySDao dao) {
this.dao = dao;
}
/** 日付文字列フォーマット用Object */
private SimpleDateFormat sdf;
/** 株 CSVファイルヘッダ */
private static final String[] ARY_CSV_HEADER_STOCK =
{
"シ団名"
, "希望額"
, "プロテクション額"
, "ホールド"
, "記名"
, "登録時刻"
};
* コンストラクタ
*/
public CsvOutServiceImpl() {
sdf = new SimpleDateFormat("MM/dd HH:mm");
}
public String getCsvDataList(long stockId) {
List < EntrySData > listRecord =dao.SelectList(stockId, null);
StringBuffer sb = new StringBuffer();
sb.append(getCsvHeader());
// データ行
for (Iterator < EntrySData > iter = listRecord.iterator(); iter.hasNext();) {
EntrySData entrySData = iter.next();
sb.append(getDataRow(entrySData));
}
return sb.toString();
}
/**
* CSV データ行の作成
*
* @param row 行データ
* @param kind 商品種類
* @param mode 作成CSVの種類(販売分擔數入力-確認畫面用のCSV or 集計確認畫面用のCSV)
* @return デリミタ挿入後の行データ
* @throws IllegalStateException 商品種類が判別できない場合(株,REIT,CB 以外)
*/
private String getDataRow(EntrySData entrySData) {
StringBuffer sb = new StringBuffer();
sb.append(QUOT+trimEx(entrySData.getName())+QUOT);
sb.append(DELIMITER);
sb.append(QUOT+entrySData.getProtectionHope()+QUOT);
sb.append(DELIMITER);
sb.append(QUOT+trimEx(entrySData.getProtectionAmount())+QUOT);
sb.append(DELIMITER);
sb.append(QUOT+trimEx(entrySData.getProtectionAmountHold())+QUOT);
sb.append(DELIMITER);
sb.append(QUOT+trimEx(entrySData.getUpdaterId())+QUOT);
sb.append(DELIMITER);
sb.append(QUOT+dateFormat(entrySData.getUpdateTime())+QUOT);
sb.append(CRLF);
return sb.toString();
}
private String trimEx(String s) {
if (s == null) {
return "";
} else {
return s.trim();
}
}
private String dateFormat(Timestamp ts) {
if (ts != null) {
return sdf.format(ts);
} else {
return "";
}
}
/**
* CSV ヘッダ行の作成
*
* @param stockId 商品ID
* @param kind 商品種類
* @param mode 作成CSVの種類(販売分擔數入力-確認畫面用のCSV or 集計確認畫面用のCSV)
* @return
* @throws IllegalStateException 商品種類が判別できない場合(株,REIT,CB 以外)
*/
private String getCsvHeader() throws IllegalStateException {
StringBuffer sb = new StringBuffer();
String[] headerArray = null;
headerArray = ARY_CSV_HEADER_STOCK;
// ヘッダ行生成 - 商品種類別
for (int i = 0; i < headerArray.length; i++) {
if (i != 0 ) {
sb.append(DELIMITER);
}
sb.append(QUOT+headerArray[i]+QUOT);
}
sb.append(CRLF);
return sb.toString();
}
public List < EntrySData > entrySData(long stockId) {
return dao.SelectList(stockId, null);
}