Commit 06154f56 by Lynette Lizardo

add upload file to GFS

parent fc42c1b5
import { GDE_URL } from "../config"; import { GDE_URL } from "../config.js";
export let urlGetIfExisting = GDE_URL + "/" + "get-if-existing"; export let urlGetIfExisting = GDE_URL + "/" + "get-if-existing";
export let urlGetXml = GDE_URL + "/" + "get-xml"; export let urlGetXml = GDE_URL + "/" + "get-xml";
...@@ -6,4 +6,5 @@ export let urlWriteXml = GDE_URL + "/" + "write-xml"; ...@@ -6,4 +6,5 @@ export let urlWriteXml = GDE_URL + "/" + "write-xml";
export let urlUpdateEob = GDE_URL + "/" + "update-eob"; export let urlUpdateEob = GDE_URL + "/" + "update-eob";
export let urlUpdateException = GDE_URL + "/" + "update-exception"; export let urlUpdateException = GDE_URL + "/" + "update-exception";
export let urlWriteMetrics = GDE_URL + "/" + "write-metrics"; export let urlWriteMetrics = GDE_URL + "/" + "write-metrics";
export let urlGetFields = GDE_URL + "/" + "get-fields"; export let urlGetFields = GDE_URL + "/" + "get-fields";
\ No newline at end of file export let urlGetFile = GDE_URL + "/" + "get-file";
\ No newline at end of file
...@@ -3,7 +3,7 @@ import { SCHEMA_FILE_PATH } from "../../DataInputWidget/config.js"; ...@@ -3,7 +3,7 @@ import { SCHEMA_FILE_PATH } from "../../DataInputWidget/config.js";
import { schema } from "../../DataInputWidget/generateFields.js"; import { schema } from "../../DataInputWidget/generateFields.js";
import { IS_RETRIEVE_FROM_BPO } from "../../config.js"; import { IS_RETRIEVE_FROM_BPO } from "../../config.js";
import { createInfoModal } from "../../genericPopup/genericPopup.js"; import { createInfoModal } from "../../genericPopup/genericPopup.js";
import { PROJECT_CODE, ENCODING_PASS } from "../config.js"; import { PROJECT_CODE, ENCODING_PASS, TEMPORARY_FOLDER } from "../config.js";
import { completeToNextNode } from "../submit.js"; import { completeToNextNode } from "../submit.js";
export async function WriteForm(e,metrics,doctype,section) { export async function WriteForm(e,metrics,doctype,section) {
...@@ -14,8 +14,7 @@ export async function WriteForm(e,metrics,doctype,section) { ...@@ -14,8 +14,7 @@ export async function WriteForm(e,metrics,doctype,section) {
const lookup = schema[doctype][section] const lookup = schema[doctype][section]
localStorage.setItem("submit", "1"); localStorage.setItem("submit", "1");
if (IS_RETRIEVE_FROM_BPO == "Y") { let fields = {};
let fields = {};
for (var i=0;i<Nodes.length;i++) { for (var i=0;i<Nodes.length;i++) {
if (Nodes[i].style.display === 'none') continue if (Nodes[i].style.display === 'none') continue
let fid = Nodes[i].id; let fid = Nodes[i].id;
...@@ -23,8 +22,8 @@ export async function WriteForm(e,metrics,doctype,section) { ...@@ -23,8 +22,8 @@ export async function WriteForm(e,metrics,doctype,section) {
fields[Object.keys(lookup[fid]).includes('aka') ? lookup[fid].aka.replace("field", "") : fid] = Nodes[i].value; fields[Object.keys(lookup[fid]).includes('aka') ? lookup[fid].aka.replace("field", "") : fid] = Nodes[i].value;
} }
await createOutputXml(fields, myArray, doctype, section); let response = await createOutputXml(fields, myArray, doctype, section);
} return response;
} }
catch(Err) { catch(Err) {
createInfoModal(null, 'OK', "Error: " + Err.description +" while writing form."); createInfoModal(null, 'OK', "Error: " + Err.description +" while writing form.");
...@@ -33,8 +32,73 @@ export async function WriteForm(e,metrics,doctype,section) { ...@@ -33,8 +32,73 @@ export async function WriteForm(e,metrics,doctype,section) {
} }
async function createOutputXml(fields, metrics, doctype, section) { async function createOutputXml(fields, metrics, doctype, section) {
let elementId = sessionStorage.getItem("element_id"); let response = null;
if (IS_RETRIEVE_FROM_BPO == "Y") {
response = await createNonBPOXML(fields, metrics, doctype, section);
} else{
response = await createNonBPOXML(fields, metrics, doctype, section);
}
return response;
}
async function createNonBPOXML(fields, metrics, doctype, section){
let fileExt = "";
switch(ENCODING_PASS){
case "PASS1":
fileExt = ".DTA"
break;
case "PASS2":
fileExt = ".DTB"
break;
default:
fileExt = ".xml"
break;
}
let userID = sessionStorage.getItem("user_id");
let fileName = userID + "_" + Date.now() + "_" + PROJECT_CODE + fileExt;
sessionStorage.setItem("recentlySavedFileName", fileName);
let xmlData = {
"projCode": PROJECT_CODE,
"userId": userID,
"elementId": "",
"schema": SCHEMA_FILE_PATH,
"totalRec":"0",
"maxRec": "1",
"totalKeystroke": metrics[0],
"procTime": "",
"procDuration": metrics[1],
"eob": "",
"exceptionRemark": "",
"recordNo": "0",
"totalSubRec": "1",
"maxSubRec": "1",
"imageName": "",
"subRecordNo": "1",
"eor": "N",
"fields": fields,
"outputDir": TEMPORARY_FOLDER + "/" + fileName,
"doctype": doctype,
"section": section
}
let response = await fetch(urlWriteXml, {
method: "POST",
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(xmlData)
});
return response;
}
async function createBPOXML(fields, metrics, doctype, section){
let elementId = sessionStorage.getItem("element_id");
let filePaths = JSON.parse(sessionStorage.getItem("dir_files")); let filePaths = JSON.parse(sessionStorage.getItem("dir_files"));
let xmlData = { let xmlData = {
...@@ -42,7 +106,6 @@ async function createOutputXml(fields, metrics, doctype, section) { ...@@ -42,7 +106,6 @@ async function createOutputXml(fields, metrics, doctype, section) {
"userId": sessionStorage.getItem("user_id"), "userId": sessionStorage.getItem("user_id"),
"elementId": elementId, "elementId": elementId,
"schema": SCHEMA_FILE_PATH, "schema": SCHEMA_FILE_PATH,
// "totalRec": 0,
"totalRec":filePaths.length, "totalRec":filePaths.length,
"maxRec": "1", "maxRec": "1",
"totalKeystroke": metrics[0], "totalKeystroke": metrics[0],
...@@ -53,10 +116,9 @@ async function createOutputXml(fields, metrics, doctype, section) { ...@@ -53,10 +116,9 @@ async function createOutputXml(fields, metrics, doctype, section) {
"recordNo": parseInt(sessionStorage.getItem("display_counter")) + 1, "recordNo": parseInt(sessionStorage.getItem("display_counter")) + 1,
"totalSubRec": "1", "totalSubRec": "1",
"maxSubRec": "1", "maxSubRec": "1",
//"imageName": "test",
"imageName": filePaths[parseInt(sessionStorage.getItem("display_counter"))], "imageName": filePaths[parseInt(sessionStorage.getItem("display_counter"))],
"subRecordNo": "1", "subRecordNo": "1",
"eor": "Y", "eor": "N",
"fields": fields, "fields": fields,
"outputDir": sessionStorage.getItem("element_file_loc") + "/" + (ENCODING_PASS == "PASS1" ? elementId + ".DTA" : elementId + ".DTB"), "outputDir": sessionStorage.getItem("element_file_loc") + "/" + (ENCODING_PASS == "PASS1" ? elementId + ".DTA" : elementId + ".DTB"),
"doctype": doctype, "doctype": doctype,
...@@ -71,28 +133,11 @@ async function createOutputXml(fields, metrics, doctype, section) { ...@@ -71,28 +133,11 @@ async function createOutputXml(fields, metrics, doctype, section) {
body: JSON.stringify(xmlData) body: JSON.stringify(xmlData)
}); });
if (completenessCheck(await response.text())) { return response;
let response = await fetch(urlUpdateEob, {
method: "POST",
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(xmlData)
});
await completeToNextNode(elementId);
sessionStorage.setItem("isElementComplete", true);
}else{
sessionStorage.removeItem("isElementComplete");
}
} }
function completenessCheck(xml) {
let lst = JSON.parse(sessionStorage.getItem("dir_files"));
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xml, "text/xml");
let files = [...xmlDoc.getElementsByTagName("imagename")].map((name) => name.childNodes[0].nodeValue)
return lst.every(file => files.includes(file));
}
export const PROJECT_CODE = "PROJCODE01"; export const PROJECT_CODE = "PROJCODE01";
export const ENCODING_PASS = "PASS1"; export const ENCODING_PASS = "PASS1";
export const GDE_URL = "http://localhost:8080" + "/WebGde/svc/gfs-rest"; export const GDE_URL = "http://3.86.184.209:8080" + "/WebGde/svc/gfs-rest";
\ No newline at end of file export const GFS_URL = "http://107.20.193.188/gfs-explorer-ws/svc/gfs-rest/";
export const TEMPORARY_FOLDER = "/home/NonBPOFiles";
export const GFS_ROOT_FOLDER = "/Users";
\ No newline at end of file
import { getUrlCompleteToNextNode } from "../BPO/bpoService.js"; import { getUrlCompleteToNextNode } from "../BPO/bpoService.js";
import { urlUpdateEob } from "../BPO/gfsService.js";
import { saveForm } from "../DataInputWidget/generateFields.js"; import { saveForm } from "../DataInputWidget/generateFields.js";
import { checkValidValues, validateInput } from "../DataInputWidget/validateInput.js"; import { checkValidValues, validateInput } from "../DataInputWidget/validateInput.js";
import { global_end_time, saveMetrics, stopMetricCapture, setGlobalEndTime, interval } from "../captureMetrics/captureMetrics.js"; import { global_end_time, saveMetrics, stopMetricCapture, setGlobalEndTime, interval } from "../captureMetrics/captureMetrics.js";
import { IS_RETRIEVE_FROM_BPO, IS_RETRIEVE_FROM_GFS } from "../config.js";
import { createInfoModal } from "../genericPopup/genericPopup.js"; import { createInfoModal } from "../genericPopup/genericPopup.js";
import { Settings } from "./XMLWriter/Global.js"; import { Settings } from "./XMLWriter/Global.js";
import { urlGetFile } from "./XMLWriter/WebServices.js";
import { WriteForm } from "./XMLWriter/XML_Saver.js"; import { WriteForm } from "./XMLWriter/XML_Saver.js";
import { GFS_ROOT_FOLDER, PROJECT_CODE, TEMPORARY_FOLDER, GFS_URL } from "./config.js";
export const submitForm = async (e) => { export const submitForm = async (e) => {
try { try {
...@@ -69,7 +73,7 @@ export const submitForm = async (e) => { ...@@ -69,7 +73,7 @@ export const submitForm = async (e) => {
if (error) { if (error) {
if (errorMsg !== null) { if (errorMsg !== null) {
createInfoModal(null, 'OK',errorMsg); createInfoModal(null, 'OK', errorMsg);
} else { } else {
createInfoModal(null, 'OK', 'Invalid or Missing data on highlighted fields!'); createInfoModal(null, 'OK', 'Invalid or Missing data on highlighted fields!');
} }
...@@ -77,7 +81,52 @@ export const submitForm = async (e) => { ...@@ -77,7 +81,52 @@ export const submitForm = async (e) => {
} }
else { else {
const metrics = stopMetricCapture(); const metrics = stopMetricCapture();
await WriteForm(e, metrics, doctype, section); let response = await WriteForm(e, metrics, doctype, section);
if (response !== false) {
if (IS_RETRIEVE_FROM_BPO === "Y") {
let filePath= {"filePath": TEMPORARY_FOLDER +"/"+sessionStorage.getItem("recentlySavedFileName")};
let getFile = await fetch(urlGetFile, {
method: "POST",
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(filePath)
});
await uploadTOGFS(await getFile.text(), sessionStorage.getItem("recentlySavedFileName"));
// if (completenessCheck(await response.text())) {
// let response = await fetch(urlUpdateEob, {
// method: "POST",
// headers: {
// 'Content-Type': 'application/json'
// },
// body: JSON.stringify(xmlData)
// });
// await completeToNextNode(sessionStorage.getItem("element_id"));
// sessionStorage.setItem("isElementComplete", true);
// }else{
// sessionStorage.removeItem("isElementComplete");
// }
}else if(IS_RETRIEVE_FROM_GFS === "Y"){
let filePath= {"filePath": TEMPORARY_FOLDER +"/"+sessionStorage.getItem("recentlySavedFileName")};
let getFile = await fetch(urlGetFile, {
method: "POST",
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(filePath)
});
await uploadTOGFS(await getFile.text(), sessionStorage.getItem("recentlySavedFileName"));
}
}
saveForm(sessionStorage.getItem("display_counter")); saveForm(sessionStorage.getItem("display_counter"));
} }
return true return true
...@@ -107,3 +156,80 @@ export async function completeToNextNode(elementId) { ...@@ -107,3 +156,80 @@ export async function completeToNextNode(elementId) {
return response; return response;
} }
function completenessCheck(xml) {
let lst = JSON.parse(sessionStorage.getItem("dir_files"));
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xml, "text/xml");
let files = [...xmlDoc.getElementsByTagName("imagename")].map((name) => name.childNodes[0].nodeValue)
return lst.every(file => files.includes(file));
}
async function uploadTOGFS(stream, filename){
await checkIfFolderExists(GFS_ROOT_FOLDER+"/"+sessionStorage.getItem("user_id"), "uploads");
await checkIfFolderExists(GFS_ROOT_FOLDER+"/"+sessionStorage.getItem("user_id")+"/uploads", PROJECT_CODE);
let xml = new File([stream], filename, {type: "text/plain"});
let formData = new FormData();
formData.append("file", xml);
formData.append("parentPath", GFS_ROOT_FOLDER+"/"+sessionStorage.getItem("user_id")+ "/uploads/"+PROJECT_CODE);
formData.append("extraData", "{}");
// formData.append("remarks", "Non-BPO Upload");
// formData.append("description", "");
formData.append("isSudo", false);
// formData.append("inheritFolderMetadata", "");
// formData.append("hash", "");
// formData.append("isSigned", "");
let response = await fetch(GFS_URL + "add-file", {
method: "PUT",
headers: {
'Authorization': sessionStorage.getItem("token"),
//'Authorization': token,
'Accept-Encoding': "gzip, deflate, utf-8",
'Accept': "*/*"
},
body: formData
});
}
async function checkIfFolderExists(parentPath, folderName ){
let url = GFS_URL + "check-folder?" + new URLSearchParams({folderPath: parentPath+"/"+folderName , isSudo: false });
let response = await fetch(url, {
method: "GET",
headers: {
'Authorization': sessionStorage.getItem("token"),
},
});
let result = await response.json;
if(result !== null && result.isExists === false){
let createObj = {
"folderName": folderName,
"parentPath": parentPath,
"extraData": "{}",
"isSudo": false,
// "remarks": "Non-BPO Upload",
// "description": "",
// "inheritFolderMetadata":"",
// "hash":"",
// "isSigned": ""
}
await createGFSFolder(jsonObj);
}
}
async function createGFSFolder(jsonObj){
let response = await fetch(GFS_URL + "add-folder", {
method: "PUT",
headers: {
'Authorization': sessionStorage.getItem("token"),
},
body: jsonObj
});
}
...@@ -38,9 +38,9 @@ export const HIGH_LIGHT_SCHEMA = "./WebGde-Widgets/sample_schema/dbSchema_anno. ...@@ -38,9 +38,9 @@ export const HIGH_LIGHT_SCHEMA = "./WebGde-Widgets/sample_schema/dbSchema_anno.
export const ROOT_FOLDER = "/WebGde-Widgets"; export const ROOT_FOLDER = "/WebGde-Widgets";
//this determines if the images will be retrieved from the gfs //this determines if the images will be retrieved from the gfs
export const DOMAIN = "http://3.84.23.136:8080" export const DOMAIN = "http://3.86.184.209:8080"
export const CONTEXTROOT = "gfs-explorer-ws" export const CONTEXTROOT = "gfs-explorer-ws"
export const GFS_URL = "http://3.84.23.136:8080" + "/Web-GDE/svc/gfs-rest" export const GFS_URL = "http://3.86.184.209:8080" + "/Web-GDE/svc/gfs-rest"
export const FOLDER_URL = DOMAIN + "/" + CONTEXTROOT + "/svc/gfs-rest/get-folder?parentPath=/Users/" export const FOLDER_URL = DOMAIN + "/" + CONTEXTROOT + "/svc/gfs-rest/get-folder?parentPath=/Users/"
export const DOWNLOAD_URL = DOMAIN + "/" + CONTEXTROOT + "/svc/gfs-rest/get-download-link" export const DOWNLOAD_URL = DOMAIN + "/" + CONTEXTROOT + "/svc/gfs-rest/get-download-link"
export const IS_RETRIEVE_FROM_GFS = "N" export const IS_RETRIEVE_FROM_GFS = "N"
...@@ -51,7 +51,7 @@ export const INVALID_KEYS = "F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,PrintScreen ...@@ -51,7 +51,7 @@ export const INVALID_KEYS = "F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12,PrintScreen
export const IS_RETRIEVE_FROM_BPO = "Y" export const IS_RETRIEVE_FROM_BPO = "Y"
// export const BPO_URL = "http://35.171.20.94:8080/bpo-sqa/" // export const BPO_URL = "http://35.171.20.94:8080/bpo-sqa/"
// export const CURRENT_NODE = "Web GDE" // export const CURRENT_NODE = "Web GDE"
export const BPO_URL = "http://3.84.23.136:8080/bpo/" export const BPO_URL = "http://3.86.184.209:8080/bpo/"
export const CURRENT_NODE = "Web_GDE_DEV" export const CURRENT_NODE = "Web_GDE_DEV"
export const ENCODING_PASS = "PASS1" export const ENCODING_PASS = "PASS1"
export const NEXT_NODE = "Complete" export const NEXT_NODE = "Complete"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment