/** 申請ファイルアップロード準備 */ private String prepareUploadDate(Shinsei shinsei, File toDir) { File receivedFile = null; byte[] receivedData = shinsei.getShinseiData(); String outDirPath = toDir.getAbsolutePath(); InputStream in = null; OutputStream out = null; try { receivedFile = File.createTempFile("dataset", ".zip"); in = new ByteArrayInputStream(receivedData); out = new FileOutputStream(receivedFile); IOUtils.copy(in, out); if (receivedFile.length() > MAX_ZIP_FILE_SIZE) { log.debug("ZIPファイルサイズの制限超過しています。[" + receivedFile.length() + "]"); return "TOO_LARGE_FILE"; } new ZipFile(receivedFile.getAbsolutePath(), "UTF-8").extract(outDirPath); log.debug("申請データの展開先:" + outDirPath); } catch (IOException e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(in); IOUtils.closeQuietly(out); if (!receivedFile.delete()) { log.info("申請ファイルが削除できませんでした。:" + receivedFile.getAbsolutePath()); } } return "SUCCESS"; }
/** 勤務表XMLファイル保存 */ @Override public Shinsei saveShinsei(Shinsei shinsei) { Shinsei reload; // sessionIdを使用し、tmp directory作成 File tmpDir = SystemUtiltity.getTemporaryDirectory(); log.debug("path : " + tmpDir.getAbsolutePath()); prepareUploadDate(shinsei, tmpDir); File kinmuhyoFile = null; String[] files = tmpDir.list(); for (int i = 0; i < files.length; i++) { if (files[i].endsWith(".xml")) { kinmuhyoFile = new File(tmpDir.getAbsoluteFile() + File.separator + files[i]); } } XmlDocument kinmuhyoXml = new XmlDocument(kinmuhyoFile); // 申請番号生成 String shinseiKubun = kinmuhyoXml.getAttributeValue(XPATH_SHINSEI_KUBUN); // 申請区分が「勤務表」の場合 if (shinseiKubun.equals(ShinseiKubun.KINMUHYO.getValue())) { String nengetsu = kinmuhyoXml.getAttributeValue(XPATH_NENGETSU).replace("-", ""); String shainBango = kinmuhyoXml.getAttributeValue(XPATH_SHAIN_ID); String shinseiBango = nengetsu + shainBango + ShinseiKubun.KINMUHYO; shinsei.setShinseiBango(shinseiBango); shinsei.setShinseiKubun(ShinseiKubun.KINMUHYO); shinsei.setShinseiJokyo(ShinseiJokyo.UKETSUKE_KANRYO); shinsei.setShinseiFile(kinmuhyoXml.toString()); // DB保存 reload = shinseiDao.addShinsei(shinsei); } else { log.error("申請書が勤務表ではありません。"); return null; } // tmp directory削除 SystemUtiltity.deleteFile(tmpDir); return reload; }