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 urlGetXml = GDE_URL + "/" + "get-xml";
......@@ -6,4 +6,5 @@ export let urlWriteXml = GDE_URL + "/" + "write-xml";
export let urlUpdateEob = GDE_URL + "/" + "update-eob";
export let urlUpdateException = GDE_URL + "/" + "update-exception";
export let urlWriteMetrics = GDE_URL + "/" + "write-metrics";
export let urlGetFields = GDE_URL + "/" + "get-fields";
\ No newline at end of file
export let urlGetFields = GDE_URL + "/" + "get-fields";
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";
import { schema } from "../../DataInputWidget/generateFields.js";
import { IS_RETRIEVE_FROM_BPO } from "../../config.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";
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]
localStorage.setItem("submit", "1");
if (IS_RETRIEVE_FROM_BPO == "Y") {
let fields = {};
let fields = {};
for (var i=0;i<Nodes.length;i++) {
if (Nodes[i].style.display === 'none') continue
let fid = Nodes[i].id;
......@@ -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;
}
await createOutputXml(fields, myArray, doctype, section);
}
let response = await createOutputXml(fields, myArray, doctype, section);
return response;
}
catch(Err) {
createInfoModal(null, 'OK', "Error: " + Err.description +" while writing form.");
......@@ -33,8 +32,73 @@ export async function WriteForm(e,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 xmlData = {
......@@ -42,7 +106,6 @@ async function createOutputXml(fields, metrics, doctype, section) {
"userId": sessionStorage.getItem("user_id"),
"elementId": elementId,
"schema": SCHEMA_FILE_PATH,
// "totalRec": 0,
"totalRec":filePaths.length,
"maxRec": "1",
"totalKeystroke": metrics[0],
......@@ -53,10 +116,9 @@ async function createOutputXml(fields, metrics, doctype, section) {
"recordNo": parseInt(sessionStorage.getItem("display_counter")) + 1,
"totalSubRec": "1",
"maxSubRec": "1",
//"imageName": "test",
"imageName": filePaths[parseInt(sessionStorage.getItem("display_counter"))],
"subRecordNo": "1",
"eor": "Y",
"eor": "N",
"fields": fields,
"outputDir": sessionStorage.getItem("element_file_loc") + "/" + (ENCODING_PASS == "PASS1" ? elementId + ".DTA" : elementId + ".DTB"),
"doctype": doctype,
......@@ -71,28 +133,11 @@ async function createOutputXml(fields, metrics, doctype, section) {
body: JSON.stringify(xmlData)
});
if (completenessCheck(await response.text())) {
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");
}
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));
}
export const PROJECT_CODE = "PROJCODE01";
export const ENCODING_PASS = "PASS1";
export const GDE_URL = "http://localhost:8080" + "/WebGde/svc/gfs-rest";
\ No newline at end of file
export const GDE_URL = "http://3.86.184.209:8080" + "/WebGde/svc/gfs-rest";
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 { urlUpdateEob } from "../BPO/gfsService.js";
import { saveForm } from "../DataInputWidget/generateFields.js";
import { checkValidValues, validateInput } from "../DataInputWidget/validateInput.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 { Settings } from "./XMLWriter/Global.js";
import { urlGetFile } from "./XMLWriter/WebServices.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) => {
try {
......@@ -69,7 +73,7 @@ export const submitForm = async (e) => {
if (error) {
if (errorMsg !== null) {
createInfoModal(null, 'OK',errorMsg);
createInfoModal(null, 'OK', errorMsg);
} else {
createInfoModal(null, 'OK', 'Invalid or Missing data on highlighted fields!');
}
......@@ -77,7 +81,52 @@ export const submitForm = async (e) => {
}
else {
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"));
}
return true
......@@ -107,3 +156,80 @@ export async function completeToNextNode(elementId) {
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.
export const ROOT_FOLDER = "/WebGde-Widgets";
//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 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 DOWNLOAD_URL = DOMAIN + "/" + CONTEXTROOT + "/svc/gfs-rest/get-download-link"
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
export const IS_RETRIEVE_FROM_BPO = "Y"
// export const BPO_URL = "http://35.171.20.94:8080/bpo-sqa/"
// 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 ENCODING_PASS = "PASS1"
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