From da277a2fcfa403b075be329f5d513f692dbd70c3 Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Fri, 24 Jan 2025 09:17:04 +0000 Subject: [PATCH 01/17] working program, transaction, localfile trees and commands Signed-off-by: Andrew Twydell --- .../src/commands/clearPlexFilterCommand.ts | 99 ++++----- .../commands/clearResourceFilterCommand.ts | 12 +- .../src/commands/closeLocalFileCommand.ts | 19 +- .../disableLocalFileCommand.ts | 23 +- .../disableCommands/disableProgramCommand.ts | 24 +-- .../disableTransactionCommand.ts | 19 +- .../enableCommands/enableLocalFileCommand.ts | 17 +- .../enableCommands/enableProgramCommand.ts | 17 +- .../enableTransactionCommand.ts | 17 +- .../src/commands/filterAllResourceCommand.ts | 10 +- .../src/commands/filterResourceCommands.ts | 19 +- .../src/commands/getFilterPlexResources.ts | 68 +++--- packages/vsce/src/commands/inquireProgram.ts | 26 ++- .../vsce/src/commands/inquireTransaction.ts | 8 +- .../vsce/src/commands/manageSessionCommand.ts | 2 +- packages/vsce/src/commands/newCopyCommand.ts | 15 +- .../vsce/src/commands/openLocalFileCommand.ts | 19 +- packages/vsce/src/commands/phaseInCommand.ts | 17 +- .../vsce/src/commands/purgeTaskCommand.ts | 10 +- packages/vsce/src/commands/refreshCommand.ts | 37 ---- .../src/commands/showAttributesCommand.ts | 25 +-- packages/vsce/src/doc/ILocalFile.ts | 30 +++ packages/vsce/src/doc/IProgram.ts | 25 +++ packages/vsce/src/doc/IRegion.ts | 10 + packages/vsce/src/doc/IResourceTypes.ts | 64 ++++++ packages/vsce/src/doc/ITransaction.ts | 23 ++ .../CICSCombinedLocalFileTree.ts | 201 ----------------- ...ramTree.ts => CICSCombinedResourceTree.ts} | 108 +++++----- .../CICSCombinedTransactionTree.ts | 202 ------------------ packages/vsce/src/trees/CICSLocalFileTree.ts | 102 --------- packages/vsce/src/trees/CICSPlexTree.ts | 26 ++- packages/vsce/src/trees/CICSProgramTree.ts | 98 --------- packages/vsce/src/trees/CICSRegionTree.ts | 16 +- packages/vsce/src/trees/CICSResourceTree.ts | 111 ++++++++++ .../vsce/src/trees/CICSTransactionTree.ts | 100 --------- packages/vsce/src/trees/CICSTree.ts | 34 +-- .../trees/treeItems/CICSLibraryDatasets.ts | 12 +- .../trees/treeItems/CICSLocalFileTreeItem.ts | 58 ----- .../trees/treeItems/CICSProgramTreeItem.ts | 53 ----- ...ionTreeItem.ts => CICSResourceTreeItem.ts} | 25 ++- packages/vsce/src/utils/commandUtils.ts | 6 +- packages/vsce/src/utils/filterUtils.ts | 9 + packages/vsce/src/utils/iconUtils.ts | 9 +- 43 files changed, 637 insertions(+), 1188 deletions(-) create mode 100644 packages/vsce/src/doc/ILocalFile.ts create mode 100644 packages/vsce/src/doc/IProgram.ts create mode 100644 packages/vsce/src/doc/IRegion.ts create mode 100644 packages/vsce/src/doc/IResourceTypes.ts create mode 100644 packages/vsce/src/doc/ITransaction.ts delete mode 100644 packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedLocalFileTree.ts rename packages/vsce/src/trees/CICSCombinedTrees/{CICSCombinedProgramTree.ts => CICSCombinedResourceTree.ts} (60%) delete mode 100644 packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedTransactionTree.ts delete mode 100644 packages/vsce/src/trees/CICSLocalFileTree.ts delete mode 100644 packages/vsce/src/trees/CICSProgramTree.ts create mode 100644 packages/vsce/src/trees/CICSResourceTree.ts delete mode 100644 packages/vsce/src/trees/CICSTransactionTree.ts delete mode 100644 packages/vsce/src/trees/treeItems/CICSLocalFileTreeItem.ts delete mode 100644 packages/vsce/src/trees/treeItems/CICSProgramTreeItem.ts rename packages/vsce/src/trees/treeItems/{CICSTransactionTreeItem.ts => CICSResourceTreeItem.ts} (59%) diff --git a/packages/vsce/src/commands/clearPlexFilterCommand.ts b/packages/vsce/src/commands/clearPlexFilterCommand.ts index 0c29d425..c2c8b309 100644 --- a/packages/vsce/src/commands/clearPlexFilterCommand.ts +++ b/packages/vsce/src/commands/clearPlexFilterCommand.ts @@ -9,12 +9,49 @@ * */ +import { imperative } from "@zowe/zowe-explorer-api"; import { commands, TreeView, window } from "vscode"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSTree } from "../trees/CICSTree"; import { findSelectedNodes } from "../utils/commandUtils"; +const doClear = async (region: CICSRegionTree, context: string) => { + const treeToClear = region.children.filter((child: any) => child.contextValue.includes(`${context}.`))[0]; + treeToClear.clearFilter(); + await treeToClear.loadContents(); +}; + +const clearResourcesMethodMap: { [key: string]: (region: CICSRegionTree) => Promise; } = { + "Programs": async (region: CICSRegionTree) => doClear(region, "cicstreeprogram"), + "Local Transactions": async (region: CICSRegionTree) => doClear(region, "cicstreetransaction"), + "Local Files": async (region: CICSRegionTree) => doClear(region, "cicstreelocalfile"), + "Tasks": async (region: CICSRegionTree) => doClear(region, "cicstreetask"), + "Libraries": async (region: CICSRegionTree) => doClear(region, "cicstreelibrary"), + "TCPIP Services": async (region: CICSRegionTree) => doClear(region, "cicstreetcpips"), + "URI Maps": async (region: CICSRegionTree) => doClear(region, "cicstreeurimaps"), + "All": async (region: CICSRegionTree) => { + for (const child of region.children) { + child.clearFilter(); + await child.loadContents(); + } + }, +}; + +const getResourceToClear = async (profile: imperative.IProfile) => { + let clearOptions = ["Programs", "Local Transactions", "Local Files", "Tasks", "Libraries", "All"]; + if (profile.regionName && profile.cicsPlex) { + clearOptions = ["Regions", ...clearOptions]; + } + + const resourceToClear = await window.showQuickPick(clearOptions); + if (!resourceToClear) { + window.showInformationMessage("No option selected"); + return null; + } + return resourceToClear; +}; + /** * Clear filter for a Regions Container (previously this was available on a plex) * @param tree @@ -23,7 +60,7 @@ import { findSelectedNodes } from "../utils/commandUtils"; */ export function getClearPlexFilterCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.clearPlexFilter", async (node) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSRegionsContainer, node); + const allSelectedNodes: CICSRegionsContainer[] = findSelectedNodes(treeview, CICSRegionsContainer, node); if (!allSelectedNodes || !allSelectedNodes.length) { window.showErrorMessage("No CICSPlex tree selected"); return; @@ -31,64 +68,20 @@ export function getClearPlexFilterCommand(tree: CICSTree, treeview: TreeView child.contextValue.includes("cicstreeprogram."))[0]; - treeToClear.clearFilter(); - await treeToClear.loadContents(); - } else if (resourceToClear === "Local Transactions") { - treeToClear = region.children.filter((child: any) => child.contextValue.includes("cicstreetransaction."))[0]; - treeToClear.clearFilter(); - await treeToClear.loadContents(); - } else if (resourceToClear === "Local Files") { - treeToClear = region.children.filter((child: any) => child.contextValue.includes("cicstreelocalfile."))[0]; - treeToClear.clearFilter(); - await treeToClear.loadContents(); - } else if (resourceToClear === "Tasks") { - treeToClear = region.children.filter((child: any) => child.contextValue.includes("cicstreetask."))[0]; - treeToClear.clearFilter(); - await treeToClear.loadContents(); - } else if (resourceToClear === "Libraries") { - treeToClear = region.children.filter((child: any) => child.contextValue.includes("cicstreelibrary."))[0]; - treeToClear.clearFilter(); - await treeToClear.loadContents(); - } else if (resourceToClear === "TCPIP Services") { - treeToClear = region.children.filter((child: any) => child.contextValue.includes("cicstreetcpips."))[0]; - treeToClear.clearFilter(); - await treeToClear.loadContents(); - } else if (resourceToClear === "URI Maps") { - treeToClear = region.children.filter((child: any) => child.contextValue.includes("cicstreeurimaps."))[0]; - treeToClear.clearFilter(); - await treeToClear.loadContents(); - } else if (resourceToClear === "All") { - for (const child of region.children) { - child.clearFilter(); - await child.loadContents(); - } - } - } - } + if (region instanceof CICSRegionTree && region.getIsActive() && region.children && resourceToClear in clearResourcesMethodMap) { + clearResourcesMethodMap[resourceToClear](region); } - tree._onDidChangeTreeData.fire(undefined); } + tree._onDidChangeTreeData.fire(undefined); } } }); diff --git a/packages/vsce/src/commands/clearResourceFilterCommand.ts b/packages/vsce/src/commands/clearResourceFilterCommand.ts index 6742397f..07ac4c3d 100644 --- a/packages/vsce/src/commands/clearResourceFilterCommand.ts +++ b/packages/vsce/src/commands/clearResourceFilterCommand.ts @@ -11,10 +11,8 @@ import { commands, ProgressLocation, TreeView, window } from "vscode"; import { CICSLibraryTree } from "../trees/CICSLibraryTree"; -import { CICSLocalFileTree } from "../trees/CICSLocalFileTree"; -import { CICSProgramTree } from "../trees/CICSProgramTree"; +import { CICSResourceTree } from "../trees/CICSResourceTree"; import { CICSTaskTree } from "../trees/CICSTaskTree"; -import { CICSTransactionTree } from "../trees/CICSTransactionTree"; import { CICSTree } from "../trees/CICSTree"; import { CICSLibraryDatasets } from "../trees/treeItems/CICSLibraryDatasets"; import { CICSLibraryTreeItem } from "../trees/treeItems/CICSLibraryTreeItem"; @@ -26,9 +24,7 @@ import { findSelectedNodes } from "../utils/commandUtils"; export function getClearResourceFilterCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.clearFilter", async (node) => { - const allSelectedProgramTreeNodes = findSelectedNodes(treeview, CICSProgramTree, node); - const allSelectedTransactionTreeNodes = findSelectedNodes(treeview, CICSTransactionTree, node); - const allSelectedLocalFileTreeNodes = findSelectedNodes(treeview, CICSLocalFileTree, node); + const allSelectedResourceTreeNodes = findSelectedNodes(treeview, CICSResourceTree, node); const allSelectedTaskTreeNodes = findSelectedNodes(treeview, CICSTaskTree, node); const allSelectedLibraryTreeNodes = findSelectedNodes(treeview, CICSLibraryTree, node); const allSelectedDatasetTreeNodes = findSelectedNodes(treeview, CICSLibraryTreeItem, node); @@ -38,9 +34,7 @@ export function getClearResourceFilterCommand(tree: CICSTree, treeview: TreeView const allSelectedWebServiceTreeNodes = findSelectedNodes(treeview, CICSWebServiceTree, node); const allSelectedPipelineTreeNodes = findSelectedNodes(treeview, CICSPipelineTree, node); const allSelectedNodes = [ - ...allSelectedProgramTreeNodes, - ...allSelectedTransactionTreeNodes, - ...allSelectedLocalFileTreeNodes, + ...allSelectedResourceTreeNodes, ...allSelectedTaskTreeNodes, ...allSelectedLibraryTreeNodes, ...allSelectedDatasetTreeNodes, diff --git a/packages/vsce/src/commands/closeLocalFileCommand.ts b/packages/vsce/src/commands/closeLocalFileCommand.ts index d9c165cb..3884b1a8 100644 --- a/packages/vsce/src/commands/closeLocalFileCommand.ts +++ b/packages/vsce/src/commands/closeLocalFileCommand.ts @@ -9,21 +9,22 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, Utils, IGetResourceUriOptions } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { CICSCombinedLocalFileTree } from "../trees/CICSCombinedTrees/CICSCombinedLocalFileTree"; +import { ILocalFile } from "../doc/ILocalFile"; +import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSTree } from "../trees/CICSTree"; -import { CICSLocalFileTreeItem } from "../trees/treeItems/CICSLocalFileTreeItem"; +import { CICSResourceTreeItem } from "../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes, splitCmciErrorMessage } from "../utils/commandUtils"; -import { ICommandParams } from "./ICommandParams"; import constants from "../utils/constants"; +import { ICommandParams } from "./ICommandParams"; export function getCloseLocalFileCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.closeLocalFile", async (clickedNode) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSLocalFileTreeItem, clickedNode); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, clickedNode); if (!allSelectedNodes || !allSelectedNodes.length) { window.showErrorMessage("No CICS local file selected"); return; @@ -55,8 +56,8 @@ export function getCloseLocalFileCommand(tree: CICSTree, treeview: TreeView await closeLocalFile( currentNode.parentRegion.parentSession.session, { - name: currentNode.localFile.file, - regionName: currentNode.parentRegion.label, + name: currentNode.resource.file, + regionName: currentNode.parentRegion.region.applid, cicsPlex: currentNode.parentRegion.parentPlex ? currentNode.parentRegion.parentPlex.getPlexName() : undefined, }, busyDecision @@ -71,7 +72,7 @@ export function getCloseLocalFileCommand(tree: CICSTree, treeview: TreeView const [_resp, resp2, respAlt, eibfnAlt] = splitCmciErrorMessage(error.mMessage); window.showErrorMessage( - `Perform CLOSE on local file "${allSelectedNodes[parseInt(index)].localFile.file + `Perform CLOSE on local file "${allSelectedNodes[parseInt(index)].resource.file }" failed: EXEC CICS command (${eibfnAlt}) RESP(${respAlt}) RESP2(${resp2})` ); } else { @@ -95,7 +96,7 @@ export function getCloseLocalFileCommand(tree: CICSTree, treeview: TreeView if (parentRegion.parentPlex && parentRegion.parentPlex.children.some((child) => child instanceof CICSRegionsContainer)) { const allLocalFileTreeTree = parentRegion.parentPlex.children.filter((child: any) => child.contextValue.includes("cicscombinedlocalfiletree.") - )[0] as CICSCombinedLocalFileTree; + )[0] as CICSCombinedResourceTree; if (allLocalFileTreeTree.collapsibleState === 2 && allLocalFileTreeTree.getActiveFilter()) { await allLocalFileTreeTree.loadContents(tree); } diff --git a/packages/vsce/src/commands/disableCommands/disableLocalFileCommand.ts b/packages/vsce/src/commands/disableCommands/disableLocalFileCommand.ts index 8ab01f2e..94436426 100644 --- a/packages/vsce/src/commands/disableCommands/disableLocalFileCommand.ts +++ b/packages/vsce/src/commands/disableCommands/disableLocalFileCommand.ts @@ -9,26 +9,27 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, Utils, IGetResourceUriOptions } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { CICSCombinedLocalFileTree } from "../../trees/CICSCombinedTrees/CICSCombinedLocalFileTree"; +import { ILocalFile } from "../../doc/ILocalFile"; +import { CICSCombinedResourceTree } from "../../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../../trees/CICSRegionTree"; import { CICSTree } from "../../trees/CICSTree"; +import { CICSResourceTreeItem } from "../../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes } from "../../utils/commandUtils"; -import { ICommandParams } from "../ICommandParams"; -import { CICSLocalFileTreeItem } from "../../trees/treeItems/CICSLocalFileTreeItem"; import constants from "../../utils/constants"; +import { ICommandParams } from "../ICommandParams"; export function getDisableLocalFileCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.disableLocalFile", async (clickedNode) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSLocalFileTreeItem, clickedNode); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, clickedNode); if (!allSelectedNodes || !allSelectedNodes.length) { window.showErrorMessage("No CICS local file selected"); return; } - const parentRegions: CICSRegionTree[] = []; + const parentRegions = new Set(); let busyDecision = await window.showInformationMessage( `Choose one of the following for the file busy condition`, ...["Wait", "No Wait", "Force"] @@ -55,15 +56,13 @@ export function getDisableLocalFileCommand(tree: CICSTree, treeview: TreeView child instanceof CICSRegionsContainer)) { const allLocalFileTreeTree = parentRegion.parentPlex.children.filter((child: any) => child.contextValue.includes("cicscombinedlocalfiletree.") - )[0] as CICSCombinedLocalFileTree; + )[0] as CICSCombinedResourceTree; if (allLocalFileTreeTree.collapsibleState === 2 && allLocalFileTreeTree.getActiveFilter()) { await allLocalFileTreeTree.loadContents(tree); } diff --git a/packages/vsce/src/commands/disableCommands/disableProgramCommand.ts b/packages/vsce/src/commands/disableCommands/disableProgramCommand.ts index 0e93cc17..389093b9 100644 --- a/packages/vsce/src/commands/disableCommands/disableProgramCommand.ts +++ b/packages/vsce/src/commands/disableCommands/disableProgramCommand.ts @@ -9,17 +9,18 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, Utils, IGetResourceUriOptions } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { CICSCombinedProgramTree } from "../../trees/CICSCombinedTrees/CICSCombinedProgramTree"; +import { IProgram } from "../../doc/IProgram"; +import { CICSCombinedResourceTree } from "../../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../../trees/CICSRegionTree"; import { CICSTree } from "../../trees/CICSTree"; +import { CICSResourceTreeItem } from "../../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes } from "../../utils/commandUtils"; -import { CICSProgramTreeItem } from "../../trees/treeItems/CICSProgramTreeItem"; -import { ICommandParams } from "../ICommandParams"; import constants from "../../utils/constants"; +import { ICommandParams } from "../ICommandParams"; /** * Performs disable on selected CICSProgram nodes. @@ -28,12 +29,12 @@ import constants from "../../utils/constants"; */ export function getDisableProgramCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.disableProgram", async (clickedNode) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSProgramTreeItem, clickedNode); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, clickedNode); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS program selected"); return; } - const parentRegions: CICSRegionTree[] = []; + const parentRegions = new Set(); await window.withProgress( { title: "Disable", @@ -52,15 +53,12 @@ export function getDisableProgramCommand(tree: CICSTree, treeview: TreeView try { await disableProgram(currentNode.parentRegion.parentSession.session, { - name: currentNode.program.program, - regionName: currentNode.parentRegion.label, + name: currentNode.resource.program, + regionName: currentNode.parentRegion.region.applid, cicsPlex: currentNode.parentRegion.parentPlex ? currentNode.parentRegion.parentPlex.getPlexName() : undefined, }); - if (!parentRegions.includes(currentNode.parentRegion)) { - parentRegions.push(currentNode.parentRegion); - } + parentRegions.add(currentNode.parentRegion); } catch (error) { - // @ts-ignore window.showErrorMessage( `Something went wrong when performing a disable - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( /(\\n\t|\\n|\\t)/gm, @@ -81,7 +79,7 @@ export function getDisableProgramCommand(tree: CICSTree, treeview: TreeView if (parentRegion.parentPlex && parentRegion.parentPlex.children.some((child) => child instanceof CICSRegionsContainer)) { const allProgramsTree = parentRegion.parentPlex.children.filter((child: any) => child.contextValue.includes("cicscombinedprogramtree.") - )[0] as CICSCombinedProgramTree; + )[0] as CICSCombinedResourceTree; if (allProgramsTree.collapsibleState === 2 && allProgramsTree.getActiveFilter()) { await allProgramsTree.loadContents(tree); } diff --git a/packages/vsce/src/commands/disableCommands/disableTransactionCommand.ts b/packages/vsce/src/commands/disableCommands/disableTransactionCommand.ts index 256cb35d..c19d7bb1 100644 --- a/packages/vsce/src/commands/disableCommands/disableTransactionCommand.ts +++ b/packages/vsce/src/commands/disableCommands/disableTransactionCommand.ts @@ -9,21 +9,22 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, Utils, IGetResourceUriOptions } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { CICSCombinedTransactionsTree } from "../../trees/CICSCombinedTrees/CICSCombinedTransactionTree"; +import { ITransaction } from "../../doc/ITransaction"; +import { CICSCombinedResourceTree } from "../../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../../trees/CICSRegionTree"; import { CICSTree } from "../../trees/CICSTree"; +import { CICSResourceTreeItem } from "../../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes, splitCmciErrorMessage } from "../../utils/commandUtils"; -import { CICSTransactionTreeItem } from "../../trees/treeItems/CICSTransactionTreeItem"; -import { ICommandParams } from "../ICommandParams"; import constants from "../../utils/constants"; +import { ICommandParams } from "../ICommandParams"; export function getDisableTransactionCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.disableTransaction", async (clickedNode) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSTransactionTreeItem, clickedNode); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, clickedNode); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS Transaction selected"); return; @@ -47,8 +48,8 @@ export function getDisableTransactionCommand(tree: CICSTree, treeview: TreeView< try { await disableTransaction(currentNode.parentRegion.parentSession.session, { - name: currentNode.transaction.tranid, - regionName: currentNode.parentRegion.label, + name: currentNode.resource.tranid, + regionName: currentNode.parentRegion.region.applid, cicsPlex: currentNode.parentRegion.parentPlex ? currentNode.parentRegion.parentPlex.getPlexName() : undefined, }); if (!parentRegions.includes(currentNode.parentRegion)) { @@ -60,7 +61,7 @@ export function getDisableTransactionCommand(tree: CICSTree, treeview: TreeView< // @ts-ignore const [_resp, resp2, respAlt, eibfnAlt] = splitCmciErrorMessage(error.mMessage); window.showErrorMessage( - `Perform DISABLE on Transaction "${allSelectedNodes[parseInt(index)].transaction.tranid + `Perform DISABLE on Transaction "${allSelectedNodes[parseInt(index)].resource.tranid }" failed: EXEC CICS command (${eibfnAlt}) RESP(${respAlt}) RESP2(${resp2})` ); } else { @@ -85,7 +86,7 @@ export function getDisableTransactionCommand(tree: CICSTree, treeview: TreeView< if (parentRegion.parentPlex && parentRegion.parentPlex.children.some((child) => child instanceof CICSRegionsContainer)) { const allTransactionTree = parentRegion.parentPlex.children.filter((child: any) => child.contextValue.includes("cicscombinedtransactiontree.") - )[0] as CICSCombinedTransactionsTree; + )[0] as CICSCombinedResourceTree; if (allTransactionTree.collapsibleState === 2 && allTransactionTree.getActiveFilter()) { await allTransactionTree.loadContents(tree); } diff --git a/packages/vsce/src/commands/enableCommands/enableLocalFileCommand.ts b/packages/vsce/src/commands/enableCommands/enableLocalFileCommand.ts index d9049b7a..f96ca1ea 100644 --- a/packages/vsce/src/commands/enableCommands/enableLocalFileCommand.ts +++ b/packages/vsce/src/commands/enableCommands/enableLocalFileCommand.ts @@ -9,21 +9,22 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, Utils, IGetResourceUriOptions } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { CICSCombinedLocalFileTree } from "../../trees/CICSCombinedTrees/CICSCombinedLocalFileTree"; +import { ILocalFile } from "../../doc/ILocalFile"; +import { CICSCombinedResourceTree } from "../../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../../trees/CICSRegionTree"; import { CICSTree } from "../../trees/CICSTree"; -import { CICSLocalFileTreeItem } from "../../trees/treeItems/CICSLocalFileTreeItem"; +import { CICSResourceTreeItem } from "../../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes } from "../../utils/commandUtils"; -import { ICommandParams } from "../ICommandParams"; import constants from "../../utils/constants"; +import { ICommandParams } from "../ICommandParams"; export function getEnableLocalFileCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.enableLocalFile", async (clickedNode) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSLocalFileTreeItem, clickedNode); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, clickedNode); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS Local File selected"); return; @@ -47,8 +48,8 @@ export function getEnableLocalFileCommand(tree: CICSTree, treeview: TreeView child instanceof CICSRegionsContainer)) { const allLocalFileTreeTree = parentRegion.parentPlex.children.filter((child: any) => child.contextValue.includes("cicscombinedlocalfiletree.") - )[0] as CICSCombinedLocalFileTree; + )[0] as CICSCombinedResourceTree; if (allLocalFileTreeTree.collapsibleState === 2 && allLocalFileTreeTree.getActiveFilter()) { await allLocalFileTreeTree.loadContents(tree); } diff --git a/packages/vsce/src/commands/enableCommands/enableProgramCommand.ts b/packages/vsce/src/commands/enableCommands/enableProgramCommand.ts index 2d024e42..9b42c0bc 100644 --- a/packages/vsce/src/commands/enableCommands/enableProgramCommand.ts +++ b/packages/vsce/src/commands/enableCommands/enableProgramCommand.ts @@ -9,17 +9,18 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, Utils, IGetResourceUriOptions } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { CICSCombinedProgramTree } from "../../trees/CICSCombinedTrees/CICSCombinedProgramTree"; +import { IProgram } from "../../doc/IProgram"; +import { CICSCombinedResourceTree } from "../../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../../trees/CICSRegionTree"; import { CICSTree } from "../../trees/CICSTree"; -import { CICSProgramTreeItem } from "../../trees/treeItems/CICSProgramTreeItem"; +import { CICSResourceTreeItem } from "../../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes } from "../../utils/commandUtils"; -import { ICommandParams } from "../ICommandParams"; import constants from "../../utils/constants"; +import { ICommandParams } from "../ICommandParams"; /** * Performs enable on selected CICSProgram nodes. @@ -28,7 +29,7 @@ import constants from "../../utils/constants"; */ export function getEnableProgramCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.enableProgram", async (clickedNode) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSProgramTreeItem, clickedNode); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, clickedNode); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS program selected"); return; @@ -51,8 +52,8 @@ export function getEnableProgramCommand(tree: CICSTree, treeview: TreeView) try { await enableProgram(currentNode.parentRegion.parentSession.session, { - name: currentNode.program.program, - regionName: currentNode.parentRegion.label, + name: currentNode.resource.program, + regionName: currentNode.parentRegion.region.applid, cicsPlex: currentNode.parentRegion.parentPlex ? currentNode.parentRegion.parentPlex.getPlexName() : undefined, }); if (!parentRegions.includes(currentNode.parentRegion)) { @@ -79,7 +80,7 @@ export function getEnableProgramCommand(tree: CICSTree, treeview: TreeView) if (parentRegion.parentPlex && parentRegion.parentPlex.children.some((child) => child instanceof CICSRegionsContainer)) { const allProgramsTree = parentRegion.parentPlex.children.filter((child: any) => child.contextValue.includes("cicscombinedprogramtree.") - )[0] as CICSCombinedProgramTree; + )[0] as CICSCombinedResourceTree; if (allProgramsTree.collapsibleState === 2 && allProgramsTree.getActiveFilter()) { await allProgramsTree.loadContents(tree); } diff --git a/packages/vsce/src/commands/enableCommands/enableTransactionCommand.ts b/packages/vsce/src/commands/enableCommands/enableTransactionCommand.ts index 30572421..681f8465 100644 --- a/packages/vsce/src/commands/enableCommands/enableTransactionCommand.ts +++ b/packages/vsce/src/commands/enableCommands/enableTransactionCommand.ts @@ -9,21 +9,22 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, Utils, IGetResourceUriOptions } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { CICSCombinedTransactionsTree } from "../../trees/CICSCombinedTrees/CICSCombinedTransactionTree"; +import { ITransaction } from "../../doc/ITransaction"; +import { CICSCombinedResourceTree } from "../../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../../trees/CICSRegionTree"; import { CICSTree } from "../../trees/CICSTree"; +import { CICSResourceTreeItem } from "../../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes } from "../../utils/commandUtils"; -import { CICSTransactionTreeItem } from "../../trees/treeItems/CICSTransactionTreeItem"; -import { ICommandParams } from "../ICommandParams"; import constants from "../../utils/constants"; +import { ICommandParams } from "../ICommandParams"; export function getEnableTransactionCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.enableTransaction", async (clickedNode) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSTransactionTreeItem, clickedNode); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, clickedNode); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS transaction selected"); return; @@ -48,8 +49,8 @@ export function getEnableTransactionCommand(tree: CICSTree, treeview: TreeView child instanceof CICSRegionsContainer)) { const allTransactionTree = parentRegion.parentPlex.children.filter((child: any) => child.contextValue.includes("cicscombinedtransactiontree.") - )[0] as CICSCombinedTransactionsTree; + )[0] as CICSCombinedResourceTree; if (allTransactionTree.collapsibleState === 2 && allTransactionTree.getActiveFilter()) { await allTransactionTree.loadContents(tree); } diff --git a/packages/vsce/src/commands/filterAllResourceCommand.ts b/packages/vsce/src/commands/filterAllResourceCommand.ts index 29f6a4bb..7f96d716 100644 --- a/packages/vsce/src/commands/filterAllResourceCommand.ts +++ b/packages/vsce/src/commands/filterAllResourceCommand.ts @@ -11,12 +11,10 @@ import { commands, TreeView, window } from "vscode"; import { CICSCombinedLibraryTree } from "../trees/CICSCombinedTrees/CICSCombinedLibraryTree"; -import { CICSCombinedLocalFileTree } from "../trees/CICSCombinedTrees/CICSCombinedLocalFileTree"; import { CICSCombinedPipelineTree } from "../trees/CICSCombinedTrees/CICSCombinedPipelineTree"; -import { CICSCombinedProgramTree } from "../trees/CICSCombinedTrees/CICSCombinedProgramTree"; +import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSCombinedTaskTree } from "../trees/CICSCombinedTrees/CICSCombinedTaskTree"; import { CICSCombinedTCPIPServiceTree } from "../trees/CICSCombinedTrees/CICSCombinedTCPIPServiceTree"; -import { CICSCombinedTransactionsTree } from "../trees/CICSCombinedTrees/CICSCombinedTransactionTree"; import { CICSCombinedURIMapTree } from "../trees/CICSCombinedTrees/CICSCombinedURIMapTree"; import { CICSCombinedWebServiceTree } from "../trees/CICSCombinedTrees/CICSCombinedWebServiceTree"; import { CICSTree } from "../trees/CICSTree"; @@ -29,7 +27,7 @@ export function getFilterAllProgramsCommand(tree: CICSTree, treeview: TreeView export function getFilterProgramsCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.filterPrograms", async (node) => { const selection = treeview.selection; - let chosenNode: CICSProgramTree; + let chosenNode: CICSResourceTree; if (node) { chosenNode = node; - } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSProgramTree) { + } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSResourceTree) { chosenNode = selection[selection.length - 1]; } else { window.showErrorMessage("No CICS program tree selected"); @@ -164,10 +165,10 @@ export function getFilterDatasetProgramsCommand(tree: CICSTree, treeview: TreeVi export function getFilterLocalFilesCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.filterLocalFiles", async (node) => { const selection = treeview.selection; - let chosenNode: CICSLocalFileTree; + let chosenNode: CICSResourceTree; if (node) { chosenNode = node; - } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSLocalFileTree) { + } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSResourceTree) { chosenNode = selection[selection.length - 1]; } else { window.showErrorMessage("No CICS local file tree selected"); @@ -232,10 +233,10 @@ export function getFilterTasksCommand(tree: CICSTree, treeview: TreeView) { export function getFilterTransactionCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.filterTransactions", async (node) => { const selection = treeview.selection; - let chosenNode: CICSTransactionTree; + let chosenNode: CICSResourceTree; if (node) { chosenNode = node; - } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSTransactionTree) { + } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSResourceTree) { chosenNode = selection[selection.length - 1]; } else { window.showErrorMessage("No CICS transaction tree selected"); diff --git a/packages/vsce/src/commands/getFilterPlexResources.ts b/packages/vsce/src/commands/getFilterPlexResources.ts index 1c5b668d..e3fbc322 100644 --- a/packages/vsce/src/commands/getFilterPlexResources.ts +++ b/packages/vsce/src/commands/getFilterPlexResources.ts @@ -16,6 +16,39 @@ import { CICSTree } from "../trees/CICSTree"; import { getPatternFromFilter } from "../utils/filterUtils"; import { PersistentStorage } from "../utils/PersistentStorage"; + +const getSearchHistory = (persistentStorage: PersistentStorage, resourceToFilter: string): string[] | null => { + + const searchHistoryMap = { + "Programs": () => { return persistentStorage.getProgramSearchHistory(); }, + "Local Transactions": () => { return persistentStorage.getTransactionSearchHistory(); }, + "Local Files": () => { return persistentStorage.getLocalFileSearchHistory(); }, + "Tasks": () => { return persistentStorage.getTransactionSearchHistory(); }, + "Libraries": () => { return persistentStorage.getLibrarySearchHistory(); }, + "Regions": () => { return persistentStorage.getRegionSearchHistory(); }, + }; + + if (resourceToFilter in searchHistoryMap) { + return searchHistoryMap[resourceToFilter as keyof typeof searchHistoryMap](); + } + + window.showInformationMessage("No Selection Made"); + return null; + +}; + +const addSearchHistory = async (persistentStorage: PersistentStorage, resourceToFilter: string, pattern: string) => { + const searchHistoryMap = { + "Programs": async () => { await persistentStorage.addProgramSearchHistory(pattern); }, + "Local Transactions": async () => { await persistentStorage.addTransactionSearchHistory(pattern); }, + "Local Files": async () => { await persistentStorage.addLocalFileSearchHistory(pattern); }, + "Regions": async () => { await persistentStorage.addRegionSearchHistory(pattern); }, + "Tasks": async () => { await persistentStorage.addTransactionSearchHistory(pattern); }, + "Libraries": async () => { await persistentStorage.addLibrarySearchHistory(pattern); }, + }; + await searchHistoryMap[resourceToFilter as keyof typeof searchHistoryMap](); +}; + /** * Apply filter for a Regions Container (previously this was available on a plex) * @param tree @@ -36,45 +69,18 @@ export function getFilterPlexResources(tree: CICSTree, treeview: TreeView) } const plex = chosenNode.getParent(); const plexProfile = plex.getProfile(); - let resourceToFilter: any; + let resourceToFilter: string; if (plexProfile.profile.regionName && plexProfile.profile.cicsPlex) { resourceToFilter = await window.showQuickPick(["Programs", "Local Transactions", "Local Files", "Tasks", "Libraries"]); } else { resourceToFilter = await window.showQuickPick(["Regions", "Programs", "Local Transactions", "Local Files", "Tasks", "Libraries"]); } + const persistentStorage = new PersistentStorage("zowe.cics.persistent"); - let resourceHistory; - if (resourceToFilter === "Programs") { - resourceHistory = persistentStorage.getProgramSearchHistory(); - } else if (resourceToFilter === "Local Transactions") { - resourceHistory = persistentStorage.getTransactionSearchHistory(); - } else if (resourceToFilter === "Local Files") { - resourceHistory = persistentStorage.getLocalFileSearchHistory(); - } else if (resourceToFilter === "Tasks") { - resourceHistory = persistentStorage.getTransactionSearchHistory(); - } else if (resourceToFilter === "Libraries") { - resourceHistory = persistentStorage.getLibrarySearchHistory(); - } else if (resourceToFilter === "Regions") { - resourceHistory = persistentStorage.getRegionSearchHistory(); - } else { - window.showInformationMessage("No Selection Made"); - return; - } + const resourceHistory = getSearchHistory(persistentStorage, resourceToFilter); const pattern = await getPatternFromFilter(resourceToFilter.slice(0, -1), resourceHistory); if (pattern) { - if (resourceToFilter === "Programs") { - await persistentStorage.addProgramSearchHistory(pattern); - } else if (resourceToFilter === "Local Transactions") { - await persistentStorage.addTransactionSearchHistory(pattern); - } else if (resourceToFilter === "Local Files") { - await persistentStorage.addLocalFileSearchHistory(pattern); - } else if (resourceToFilter === "Regions") { - await persistentStorage.addRegionSearchHistory(pattern); - } else if (resourceToFilter === "Tasks") { - await persistentStorage.addTransactionSearchHistory(pattern); - } else if (resourceToFilter === "Libraries") { - await persistentStorage.addLibrarySearchHistory(pattern); - } + await addSearchHistory(persistentStorage, resourceToFilter, pattern); chosenNode.collapsibleState = TreeItemCollapsibleState.Expanded; diff --git a/packages/vsce/src/commands/inquireProgram.ts b/packages/vsce/src/commands/inquireProgram.ts index 680972ee..9906b66b 100644 --- a/packages/vsce/src/commands/inquireProgram.ts +++ b/packages/vsce/src/commands/inquireProgram.ts @@ -10,13 +10,19 @@ */ import { commands, TreeView, window } from "vscode"; -import { CICSCombinedTransactionsTree } from "../trees/CICSCombinedTrees/CICSCombinedTransactionTree"; +import { IProgram } from "../doc/IProgram"; +import { IResource } from "../doc/IResourceTypes"; +import { ITransaction } from "../doc/ITransaction"; +import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; +import { CICSLibraryTree } from "../trees/CICSLibraryTree"; import { CICSPlexTree } from "../trees/CICSPlexTree"; -import { CICSProgramTree } from "../trees/CICSProgramTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; +import { CICSResourceTree } from "../trees/CICSResourceTree"; +import { CICSTaskTree } from "../trees/CICSTaskTree"; import { CICSTree } from "../trees/CICSTree"; -import { CICSTransactionTreeItem } from "../trees/treeItems/CICSTransactionTreeItem"; +import { CICSWebTree } from "../trees/CICSWebTree"; +import { CICSResourceTreeItem } from "../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes } from "../utils/commandUtils"; /** @@ -24,13 +30,15 @@ import { findSelectedNodes } from "../utils/commandUtils"; */ export function getInquireProgramCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.inquireProgram", async (node) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSTransactionTreeItem, node) as CICSTransactionTreeItem[]; + const allSelectedNodes: CICSResourceTreeItem[] = + findSelectedNodes(treeview, CICSResourceTreeItem, node) as CICSResourceTreeItem[]; + if (!allSelectedNodes || !allSelectedNodes.length) { window.showErrorMessage("No CICS Transaction selected"); return; } - let resourceFolders; - if (allSelectedNodes[0].getParent() instanceof CICSCombinedTransactionsTree) { + let resourceFolders: (CICSResourceTree | CICSTaskTree | CICSLibraryTree | CICSWebTree)[]; + if (allSelectedNodes[0].getParent() instanceof CICSCombinedResourceTree) { const cicsPlex: CICSPlexTree = allSelectedNodes[0].getParent().getParent(); const regionsContainer = cicsPlex.getChildren().filter((child) => child instanceof CICSRegionsContainer)[0]; //@ts-ignore @@ -43,17 +51,17 @@ export function getInquireProgramCommand(tree: CICSTree, treeview: TreeView } const tranids = []; for (const localTransactionTreeItem of allSelectedNodes) { - const transaction = localTransactionTreeItem.transaction; + const transaction = localTransactionTreeItem.resource as ITransaction; tranids.push(transaction["program"]); } // Comma separated filter const pattern = tranids.join(", "); - const programTree = resourceFolders.filter((child) => child instanceof CICSProgramTree)[0] as CICSProgramTree; + const programTree = resourceFolders.filter((child) => child instanceof CICSResourceTree)[0]; programTree.setFilter(pattern); await programTree.loadContents(); tree._onDidChangeTreeData.fire(undefined); - if (allSelectedNodes[0].getParent() instanceof CICSCombinedTransactionsTree) { + if (allSelectedNodes[0].getParent() instanceof CICSCombinedResourceTree) { const nodeToExpand: any = programTree; // TODO: Ideal situation would be to do await treeview.reveal(nodeToExpand), however this is resulting in an error, diff --git a/packages/vsce/src/commands/inquireTransaction.ts b/packages/vsce/src/commands/inquireTransaction.ts index 26b90931..7368cfa2 100644 --- a/packages/vsce/src/commands/inquireTransaction.ts +++ b/packages/vsce/src/commands/inquireTransaction.ts @@ -10,11 +10,12 @@ */ import { commands, TreeView, window } from "vscode"; +import { ITransaction } from "../doc/ITransaction"; import { CICSCombinedTaskTree } from "../trees/CICSCombinedTrees/CICSCombinedTaskTree"; import { CICSPlexTree } from "../trees/CICSPlexTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; -import { CICSTransactionTree } from "../trees/CICSTransactionTree"; +import { CICSResourceTree } from "../trees/CICSResourceTree"; import { CICSTree } from "../trees/CICSTree"; import { CICSTaskTreeItem } from "../trees/treeItems/CICSTaskTreeItem"; import { findSelectedNodes } from "../utils/commandUtils"; @@ -24,7 +25,7 @@ import { findSelectedNodes } from "../utils/commandUtils"; */ export function getInquireTransactionCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.inquireTransaction", async (node) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSTaskTreeItem, node) as CICSTaskTreeItem[]; + const allSelectedNodes: CICSTaskTreeItem[] = findSelectedNodes(treeview, CICSTaskTreeItem, node) as CICSTaskTreeItem[]; if (!allSelectedNodes || !allSelectedNodes.length) { window.showErrorMessage("No CICS Task selected"); return; @@ -48,7 +49,8 @@ export function getInquireTransactionCommand(tree: CICSTree, treeview: TreeView< } // Comma separated filter const pattern = tranids.join(", "); - const localTransactionTree = resourceFolders.filter((child) => child instanceof CICSTransactionTree)[0] as CICSTransactionTree; + const localTransactionTree = resourceFolders.filter( + (child) => child instanceof CICSResourceTree && child.resourceMeta.filterAttribute === "tranid")[0] as CICSResourceTree; localTransactionTree.setFilter(pattern); await localTransactionTree.loadContents(); tree._onDidChangeTreeData.fire(undefined); diff --git a/packages/vsce/src/commands/manageSessionCommand.ts b/packages/vsce/src/commands/manageSessionCommand.ts index b6859cf5..df26d2ee 100644 --- a/packages/vsce/src/commands/manageSessionCommand.ts +++ b/packages/vsce/src/commands/manageSessionCommand.ts @@ -9,7 +9,7 @@ * */ -import { commands, ProgressLocation, TreeView, window } from "vscode"; +import { commands, TreeView } from "vscode"; import { CICSTree } from "../trees/CICSTree"; export function getManageSessionCommand(tree: CICSTree, treeview: TreeView) { diff --git a/packages/vsce/src/commands/newCopyCommand.ts b/packages/vsce/src/commands/newCopyCommand.ts index 599a8e7f..483ecec8 100644 --- a/packages/vsce/src/commands/newCopyCommand.ts +++ b/packages/vsce/src/commands/newCopyCommand.ts @@ -11,11 +11,12 @@ import { programNewcopy } from "@zowe/cics-for-zowe-sdk"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { CICSCombinedProgramTree } from "../trees/CICSCombinedTrees/CICSCombinedProgramTree"; +import { IProgram } from "../doc/IProgram"; +import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSTree } from "../trees/CICSTree"; -import { CICSProgramTreeItem } from "../trees/treeItems/CICSProgramTreeItem"; +import { CICSResourceTreeItem } from "../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes, splitCmciErrorMessage } from "../utils/commandUtils"; import constants from "../utils/constants"; @@ -26,7 +27,7 @@ import constants from "../utils/constants"; */ export function getNewCopyCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.newCopyProgram", async (clickedNode) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSProgramTreeItem, clickedNode); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, clickedNode); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS program selected"); return; @@ -49,8 +50,8 @@ export function getNewCopyCommand(tree: CICSTree, treeview: TreeView) { try { await programNewcopy(currentNode.parentRegion.parentSession.session, { - name: currentNode.program.program, - regionName: currentNode.parentRegion.label, + name: currentNode.resource.program, + regionName: `${currentNode.parentRegion.label}`, cicsPlex: currentNode.parentRegion.parentPlex ? currentNode.parentRegion.parentPlex.getPlexName() : undefined, }); if (!parentRegions.includes(currentNode.parentRegion)) { @@ -63,7 +64,7 @@ export function getNewCopyCommand(tree: CICSTree, treeview: TreeView) { // @ts-ignore const [_resp, resp2, respAlt, eibfnAlt] = splitCmciErrorMessage(error.mMessage); window.showErrorMessage( - `Perform NEWCOPY on Program "${allSelectedNodes[parseInt(index)].program.program + `Perform NEWCOPY on Program "${allSelectedNodes[parseInt(index)].resource.program }" failed: EXEC CICS command (${eibfnAlt}) RESP(${respAlt}) RESP2(${resp2})` ); } else { @@ -88,7 +89,7 @@ export function getNewCopyCommand(tree: CICSTree, treeview: TreeView) { if (parentRegion.parentPlex && parentRegion.parentPlex.children.some((child) => child instanceof CICSRegionsContainer)) { const allProgramsTree = parentRegion.parentPlex.children.filter((child: any) => child.contextValue.includes("cicscombinedprogramtree.") - )[0] as CICSCombinedProgramTree; + )[0] as CICSCombinedResourceTree; if (allProgramsTree.collapsibleState === 2 && allProgramsTree.getActiveFilter()) { await allProgramsTree.loadContents(tree); } diff --git a/packages/vsce/src/commands/openLocalFileCommand.ts b/packages/vsce/src/commands/openLocalFileCommand.ts index f9a2b7f4..155513ff 100644 --- a/packages/vsce/src/commands/openLocalFileCommand.ts +++ b/packages/vsce/src/commands/openLocalFileCommand.ts @@ -9,21 +9,22 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, Utils, IGetResourceUriOptions } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { CICSCombinedLocalFileTree } from "../trees/CICSCombinedTrees/CICSCombinedLocalFileTree"; +import { ILocalFile } from "../doc/ILocalFile"; +import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSTree } from "../trees/CICSTree"; -import { CICSLocalFileTreeItem } from "../trees/treeItems/CICSLocalFileTreeItem"; +import { CICSResourceTreeItem } from "../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes, splitCmciErrorMessage } from "../utils/commandUtils"; -import { ICommandParams } from "./ICommandParams"; import constants from "../utils/constants"; +import { ICommandParams } from "./ICommandParams"; export function getOpenLocalFileCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.openLocalFile", async (clickedNode) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSLocalFileTreeItem, clickedNode); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, clickedNode); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS local file selected"); return; @@ -46,8 +47,8 @@ export function getOpenLocalFileCommand(tree: CICSTree, treeview: TreeView) try { await openLocalFile(currentNode.parentRegion.parentSession.session, { - name: currentNode.localFile.file, - regionName: currentNode.parentRegion.label, + name: currentNode.resource.file, + regionName: currentNode.parentRegion.region.applid, cicsPlex: currentNode.parentRegion.parentPlex ? currentNode.parentRegion.parentPlex.getPlexName() : undefined, }); if (!parentRegions.includes(currentNode.parentRegion)) { @@ -59,7 +60,7 @@ export function getOpenLocalFileCommand(tree: CICSTree, treeview: TreeView) // @ts-ignore const [_resp, resp2, respAlt, eibfnAlt] = splitCmciErrorMessage(error.mMessage); window.showErrorMessage( - `Perform OPEN on local file "${allSelectedNodes[parseInt(index)].localFile.file + `Perform OPEN on local file "${allSelectedNodes[parseInt(index)].resource.file }" failed: EXEC CICS command (${eibfnAlt}) RESP(${respAlt}) RESP2(${resp2})` ); } else { @@ -83,7 +84,7 @@ export function getOpenLocalFileCommand(tree: CICSTree, treeview: TreeView) if (parentRegion.parentPlex && parentRegion.parentPlex.children.some((child) => child instanceof CICSRegionsContainer)) { const allLocalFileTreeTree = parentRegion.parentPlex.children.filter((child: any) => child.contextValue.includes("cicscombinedlocalfiletree.") - )[0] as CICSCombinedLocalFileTree; + )[0] as CICSCombinedResourceTree; if (allLocalFileTreeTree.collapsibleState === 2 && allLocalFileTreeTree.getActiveFilter()) { await allLocalFileTreeTree.loadContents(tree); } diff --git a/packages/vsce/src/commands/phaseInCommand.ts b/packages/vsce/src/commands/phaseInCommand.ts index 2aac6612..ee7824a7 100644 --- a/packages/vsce/src/commands/phaseInCommand.ts +++ b/packages/vsce/src/commands/phaseInCommand.ts @@ -9,14 +9,15 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, Utils, IGetResourceUriOptions } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { CICSCombinedProgramTree } from "../trees/CICSCombinedTrees/CICSCombinedProgramTree"; +import { IProgram } from "../doc/IProgram"; +import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSTree } from "../trees/CICSTree"; -import { CICSProgramTreeItem } from "../trees/treeItems/CICSProgramTreeItem"; +import { CICSResourceTreeItem } from "../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes, splitCmciErrorMessage } from "../utils/commandUtils"; import constants from "../utils/constants"; @@ -27,7 +28,7 @@ import constants from "../utils/constants"; */ export function getPhaseInCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.phaseInCommand", async (clickedNode) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSProgramTreeItem, clickedNode); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, clickedNode); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS program selected"); return; @@ -50,8 +51,8 @@ export function getPhaseInCommand(tree: CICSTree, treeview: TreeView) { try { await performPhaseIn(currentNode.parentRegion.parentSession.session, { - name: currentNode.program.program, - regionName: currentNode.parentRegion.label, + name: currentNode.resource.program, + regionName: currentNode.parentRegion.region.applid, cicsPlex: currentNode.parentRegion.parentPlex ? currentNode.parentRegion.parentPlex.getPlexName() : undefined, }); @@ -64,7 +65,7 @@ export function getPhaseInCommand(tree: CICSTree, treeview: TreeView) { // @ts-ignore const [_resp, resp2, respAlt, eibfnAlt] = splitCmciErrorMessage(error.mMessage); window.showErrorMessage( - `Perform PHASEIN on Program "${allSelectedNodes[parseInt(index)].program.program + `Perform PHASEIN on Program "${allSelectedNodes[parseInt(index)].resource.program }" failed: EXEC CICS command (${eibfnAlt}) RESP(${respAlt}) RESP2(${resp2})` ); } else { @@ -89,7 +90,7 @@ export function getPhaseInCommand(tree: CICSTree, treeview: TreeView) { if (parentRegion.parentPlex && parentRegion.parentPlex.children.some((child) => child instanceof CICSRegionsContainer)) { const allProgramsTree = parentRegion.parentPlex.children.filter((child: any) => child.contextValue.includes("cicscombinedprogramtree.") - )[0] as CICSCombinedProgramTree; + )[0] as CICSCombinedResourceTree; if (allProgramsTree.collapsibleState === 2 && allProgramsTree.getActiveFilter()) { await allProgramsTree.loadContents(tree); } diff --git a/packages/vsce/src/commands/purgeTaskCommand.ts b/packages/vsce/src/commands/purgeTaskCommand.ts index 8d6fe42c..2e0c060d 100644 --- a/packages/vsce/src/commands/purgeTaskCommand.ts +++ b/packages/vsce/src/commands/purgeTaskCommand.ts @@ -9,17 +9,17 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, Utils, IGetResourceUriOptions } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; import { CICSCombinedTaskTree } from "../trees/CICSCombinedTrees/CICSCombinedTaskTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSTree } from "../trees/CICSTree"; -import { findSelectedNodes, splitCmciErrorMessage } from "../utils/commandUtils"; import { CICSTaskTreeItem } from "../trees/treeItems/CICSTaskTreeItem"; -import { ICommandParams } from "./ICommandParams"; +import { findSelectedNodes, splitCmciErrorMessage } from "../utils/commandUtils"; import constants from "../utils/constants"; +import { ICommandParams } from "./ICommandParams"; /** * Purge a CICS Task and reload the CICS Task tree contents and the combined Task tree contents @@ -29,7 +29,7 @@ import constants from "../utils/constants"; */ export function getPurgeTaskCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.purgeTask", async (clickedNode) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSTaskTreeItem, clickedNode); + const allSelectedNodes: CICSTaskTreeItem[] = findSelectedNodes(treeview, CICSTaskTreeItem, clickedNode); if (!allSelectedNodes || !allSelectedNodes.length) { window.showErrorMessage("No CICS task selected"); return; @@ -59,7 +59,7 @@ export function getPurgeTaskCommand(tree: CICSTree, treeview: TreeView) { currentNode.parentRegion.parentSession.session, { name: currentNode.task.task, - regionName: currentNode.parentRegion.label, + regionName: currentNode.parentRegion.region.applid, cicsPlex: currentNode.parentRegion.parentPlex ? currentNode.parentRegion.parentPlex.getPlexName() : undefined, }, purgeType diff --git a/packages/vsce/src/commands/refreshCommand.ts b/packages/vsce/src/commands/refreshCommand.ts index 65952c7d..e4cc4352 100644 --- a/packages/vsce/src/commands/refreshCommand.ts +++ b/packages/vsce/src/commands/refreshCommand.ts @@ -26,43 +26,6 @@ export function getRefreshCommand(tree: CICSTree) { } ); } finally { - // window.withProgress({ - // title: 'Refresh', - // location: ProgressLocation.Notification, - // cancellable: true - // }, async (progress, token) => { - // token.onCancellationRequested(() => { - // console.log("Cancelling the refresh"); - // }); - // for (const index in tree.loadedProfiles) { - // progress.report({ - // message: `Refreshing session ${parseInt(index) + 1} of ${tree.loadedProfiles.length}`, - // increment: (parseInt(index) / tree.loadedProfiles.length) * 100, - // }); - // let sessionTree = tree.loadedProfiles[parseInt(index)]; - - // sessionTree.collapsibleState = TreeItemCollapsibleState.Collapsed; - - // for (const sessionChild of sessionTree.children) { - // // sessionchhild is plex tree or region tree - // if (sessionChild instanceof CICSPlexTree) { - // // plex tree -> .children is region trees - // for (const region of sessionChild.children) { - // for (const child of region.children!) { - // if (child instanceof CICSProgramTree) { - // await child.loadContents(); - // } - // } - // } - // } else { - // // region tree - // for (const child of sessionChild.children!) { - // await child.loadContents(); - // } - // } - // } - // } - // }); tree._onDidChangeTreeData.fire(undefined); window.showInformationMessage("Refreshed"); } diff --git a/packages/vsce/src/commands/showAttributesCommand.ts b/packages/vsce/src/commands/showAttributesCommand.ts index 11f17670..886ac132 100644 --- a/packages/vsce/src/commands/showAttributesCommand.ts +++ b/packages/vsce/src/commands/showAttributesCommand.ts @@ -10,13 +10,14 @@ */ import { commands, TreeView, WebviewPanel, window } from "vscode"; +import { ILocalFile } from "../doc/ILocalFile"; +import { IProgram } from "../doc/IProgram"; +import { ITransaction } from "../doc/ITransaction"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSLibraryDatasets } from "../trees/treeItems/CICSLibraryDatasets"; import { CICSLibraryTreeItem } from "../trees/treeItems/CICSLibraryTreeItem"; -import { CICSLocalFileTreeItem } from "../trees/treeItems/CICSLocalFileTreeItem"; -import { CICSProgramTreeItem } from "../trees/treeItems/CICSProgramTreeItem"; +import { CICSResourceTreeItem } from "../trees/treeItems/CICSResourceTreeItem"; import { CICSTaskTreeItem } from "../trees/treeItems/CICSTaskTreeItem"; -import { CICSTransactionTreeItem } from "../trees/treeItems/CICSTransactionTreeItem"; import { CICSPipelineTreeItem } from "../trees/treeItems/web/treeItems/CICSPipelineTreeItem"; import { CICSTCPIPServiceTreeItem } from "../trees/treeItems/web/treeItems/CICSTCPIPServiceTreeItem"; import { CICSURIMapTreeItem } from "../trees/treeItems/web/treeItems/CICSURIMapTreeItem"; @@ -26,20 +27,20 @@ import { getAttributesHtml } from "../utils/webviewHTML"; export function getShowProgramAttributesCommand(treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.showProgramAttributes", async (node) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSProgramTreeItem, node); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, node); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS program selected"); return; } for (const programTreeItem of allSelectedNodes) { - const program = programTreeItem.program; + const program = programTreeItem.resource; const attributeHeadings = Object.keys(program); let webText = ``; webText += `Attribute `; webText += `Value`; webText += ``; for (const heading of attributeHeadings) { - webText += `${heading.toUpperCase()}${program[heading]}`; + webText += `${heading.toUpperCase()}${program[heading as keyof IProgram]}`; } webText += ""; @@ -86,18 +87,18 @@ export function getShowRegionAttributes(treeview: TreeView) { export function getShowLocalFileAttributesCommand(treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.showLocalFileAttributes", async (node) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSLocalFileTreeItem, node); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, node); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS local file selected"); return; } for (const localFileTreeItem of allSelectedNodes) { - const localFile = localFileTreeItem.localFile; + const localFile = localFileTreeItem.resource; const attributeHeadings = Object.keys(localFile); let webText = `Attribute `; webText += `Value`; for (const heading of attributeHeadings) { - webText += `${heading.toUpperCase()}${localFile[heading]}`; + webText += `${heading.toUpperCase()}${localFile[heading as keyof ILocalFile]}`; } webText += ""; @@ -117,18 +118,18 @@ export function getShowLocalFileAttributesCommand(treeview: TreeView) { export function getShowTransactionAttributesCommand(treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.showTransactionAttributes", async (node) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSTransactionTreeItem, node); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, node); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS transaction selected"); return; } for (const localTransactionTreeItem of allSelectedNodes) { - const transaction = localTransactionTreeItem.transaction; + const transaction = localTransactionTreeItem.resource; const attributeHeadings = Object.keys(transaction); let webText = `Attribute `; webText += `Value`; for (const heading of attributeHeadings) { - webText += `${heading.toUpperCase()}${transaction[heading]}`; + webText += `${heading.toUpperCase()}${transaction[heading as keyof ITransaction]}`; } webText += ""; diff --git a/packages/vsce/src/doc/ILocalFile.ts b/packages/vsce/src/doc/ILocalFile.ts new file mode 100644 index 00000000..3f71b988 --- /dev/null +++ b/packages/vsce/src/doc/ILocalFile.ts @@ -0,0 +1,30 @@ +import { IResource } from "./IResourceTypes"; + + +export interface ILocalFile extends IResource { + file: string; + enablestatus: string; + openstatus: string; +} + +export const buildLocalFileLabel = (localFile: ILocalFile) => { + + let label = `${localFile.file}`; + + if (localFile.enablestatus.trim().toLowerCase() === "disabled") { + label += ` (Disabled)`; + } else if (localFile.enablestatus.trim().toLowerCase() === "unenabled") { + label += ` (Unenabled)`; + } + + if (localFile.openstatus.trim().toLowerCase() === "closed") { + label += ` (Closed)`; + } + + return label; +}; + +export const buildLocalFileContext = (localFile: ILocalFile) => { + return `cicslocalfile.${localFile.enablestatus.trim().toLowerCase()}.${localFile.openstatus.trim().toLowerCase()}.${localFile.file}`; +}; + diff --git a/packages/vsce/src/doc/IProgram.ts b/packages/vsce/src/doc/IProgram.ts new file mode 100644 index 00000000..c3b73300 --- /dev/null +++ b/packages/vsce/src/doc/IProgram.ts @@ -0,0 +1,25 @@ +import { IResource } from "./IResourceTypes"; + + +export interface IProgram extends IResource { + program: string; + status: string; + newcopycnt?: string; +} + +export const buildProgramLabel = (program: IProgram) => { + + let label = `${program.program}`; + if (program.newcopycnt && parseInt(program.newcopycnt) > 0) { + label += ` (New copy count: ${program.newcopycnt})`; + } + if (program.status.trim().toLowerCase() === "disabled") { + label += " (Disabled)"; + } + + return label; +}; + +export const buildProgramContext = (program: IProgram) => { + return `cicsprogram.${program.status.trim().toLowerCase()}.${program.program}`; +}; diff --git a/packages/vsce/src/doc/IRegion.ts b/packages/vsce/src/doc/IRegion.ts new file mode 100644 index 00000000..16eb1e5f --- /dev/null +++ b/packages/vsce/src/doc/IRegion.ts @@ -0,0 +1,10 @@ +import { IResource } from "./IResourceTypes"; + + +export interface IRegion extends IResource { + applid: string; + cicsstate: string; + cicsstatus: string; + cicsname: string; +} + diff --git a/packages/vsce/src/doc/IResourceTypes.ts b/packages/vsce/src/doc/IResourceTypes.ts new file mode 100644 index 00000000..e6c3d45f --- /dev/null +++ b/packages/vsce/src/doc/IResourceTypes.ts @@ -0,0 +1,64 @@ +import { getDefaultLocalFileFilter, getDefaultProgramFilter, getDefaultTransactionFilter } from "../utils/filterUtils"; +import { buildLocalFileContext, buildLocalFileLabel } from "./ILocalFile"; +import { buildProgramContext, buildProgramLabel } from "./IProgram"; +import { buildTransactionContext, buildTransactionLabel } from "./ITransaction"; + +export interface IResource { } + +export interface IResourceMeta { + humanReadableName: string; + resourceName: string; + contextPrefix: string; + combinedContextPrefix: string; + filterAttribute: string; + iconFilePrefix: string; + regionNameAttribute: string; + primaryKeyAttribute: string; + getDefaultFilter: () => Promise; + getLabel: (resource: IResource) => string; + getContext: (resource: IResource) => string; +} + +const resources = { + program: { + humanReadableName: "Programs", + resourceName: "CICSProgram", + contextPrefix: "cicstreeprogram", + combinedContextPrefix: "cicscombinedprogramtree", + filterAttribute: "PROGRAM", + iconFilePrefix: "program", + regionNameAttribute: "eyu_cicsname", + primaryKeyAttribute: "program", + getDefaultFilter: getDefaultProgramFilter, + getLabel: buildProgramLabel, + getContext: buildProgramContext, + }, + transaction: { + humanReadableName: "Transactions", + resourceName: "CICSLocalTransaction", + contextPrefix: "cicstreetransaction", + combinedContextPrefix: "cicscombinedtransactiontree", + filterAttribute: "tranid", + iconFilePrefix: "local-transaction", + regionNameAttribute: "eyu_cicsname", + primaryKeyAttribute: "tranid", + getDefaultFilter: getDefaultTransactionFilter, + getLabel: buildTransactionLabel, + getContext: buildTransactionContext, + }, + localFile: { + humanReadableName: "Local Files", + resourceName: "CICSLocalFile", + contextPrefix: "cicstreelocalfile", + combinedContextPrefix: "cicscombinedlocalfiletree", + filterAttribute: "file", + iconFilePrefix: "local-file", + regionNameAttribute: "eyu_cicsname", + primaryKeyAttribute: "file", + getDefaultFilter: getDefaultLocalFileFilter, + getLabel: buildLocalFileLabel, + getContext: buildLocalFileContext, + }, +}; + +export default resources; diff --git a/packages/vsce/src/doc/ITransaction.ts b/packages/vsce/src/doc/ITransaction.ts new file mode 100644 index 00000000..3eca4a45 --- /dev/null +++ b/packages/vsce/src/doc/ITransaction.ts @@ -0,0 +1,23 @@ +import { IResource } from "./IResourceTypes"; + + +export interface ITransaction extends IResource { + tranid: string; + program: string; + status: string; +} + +export const buildTransactionLabel = (transaction: ITransaction) => { + + let label = `${transaction.tranid}`; + + if (transaction.status.trim().toLowerCase() === "disabled") { + label += " (Disabled)"; + } + + return label; +}; + +export const buildTransactionContext = (transaction: ITransaction) => { + return `cicstransaction.${transaction.status.toLowerCase()}.${transaction.tranid}`; +}; diff --git a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedLocalFileTree.ts b/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedLocalFileTree.ts deleted file mode 100644 index a77ecfbd..00000000 --- a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedLocalFileTree.ts +++ /dev/null @@ -1,201 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { ProgressLocation, TreeItem, TreeItemCollapsibleState, window, workspace } from "vscode"; -import { toEscapedCriteriaString } from "../../utils/filterUtils"; -import { ProfileManagement } from "../../utils/profileManagement"; -import { CICSPlexTree } from "../CICSPlexTree"; -import { CICSRegionsContainer } from "../CICSRegionsContainer"; -import { CICSRegionTree } from "../CICSRegionTree"; -import { CICSTree } from "../CICSTree"; -import { CICSLocalFileTreeItem } from "../treeItems/CICSLocalFileTreeItem"; -import { TextTreeItem } from "../treeItems/utils/TextTreeItem"; -import { getFolderIcon } from "../../utils/iconUtils"; -import { ViewMore } from "../treeItems/utils/ViewMore"; - -export class CICSCombinedLocalFileTree extends TreeItem { - children: (CICSLocalFileTreeItem | ViewMore)[] | [TextTreeItem] | null; - parentPlex: CICSPlexTree; - activeFilter: string | undefined; - currentCount: number; - incrementCount: number; - constant: string; - - constructor( - parentPlex: CICSPlexTree, - public iconPath = getFolderIcon(false), - ) { - super("All Local Files", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicscombinedlocalfiletree.`; - this.parentPlex = parentPlex; - this.children = [new TextTreeItem("Use the search button to display local files", "applyfiltertext.")]; - this.activeFilter = undefined; - this.currentCount = 0; - this.incrementCount = +`${workspace.getConfiguration().get("zowe.cics.allLocalFiles.recordCountIncrement")}`; - this.constant = "CICSLocalFile"; - } - - public async loadContents(tree: CICSTree) { - await window.withProgress( - { - title: "Loading Local Files", - location: ProgressLocation.Notification, - cancellable: true, - }, - async (_, token) => { - token.onCancellationRequested(() => {}); - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "file"); - } - let count; - try { - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - criteria, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - const recordsCount = cacheTokenInfo.recordCount; - if (recordsCount) { - let allLocalFiles; - if (recordsCount <= this.incrementCount) { - allLocalFiles = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - recordsCount, - ); - } else { - allLocalFiles = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - this.incrementCount, - ); - count = recordsCount; - } - this.addLocalFilesUtil([], allLocalFiles, count); - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - } else { - this.children = []; - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - window.showInformationMessage(`No local files found`); - this.label = `All Local Files${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${recordsCount}]`; - } - } - } catch (error) { - window.showErrorMessage( - `Something went wrong when fetching local files - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( - /(\\n\t|\\n|\\t)/gm, - " ", - )}`, - ); - } - }, - ); - } - - public addLocalFilesUtil(newChildren: (CICSLocalFileTreeItem | ViewMore)[], allLocalFiles: any, count: number | undefined) { - for (const localfile of allLocalFiles) { - const regionsContainer = this.parentPlex.children.filter((child) => child instanceof CICSRegionsContainer)?.[0]; - if (regionsContainer == null) { - continue; - } - const parentRegion = regionsContainer - .getChildren()! - .filter((child) => child instanceof CICSRegionTree && child.getRegionName() === localfile.eyu_cicsname)?.[0] as CICSRegionTree; - const localFileTree = new CICSLocalFileTreeItem(localfile, parentRegion, this); - localFileTree.setLabel(localFileTree.label.toString().replace(localfile.file, `${localfile.file} (${localfile.eyu_cicsname})`)); - newChildren.push(localFileTree); - } - if (!count) { - count = newChildren.length; - } - this.currentCount = newChildren.length; - this.label = `All Local Files ${this.activeFilter ? `(${this.activeFilter}) ` : " "}[${this.currentCount} of ${count}]`; - if (count !== this.currentCount) { - newChildren.push(new ViewMore(this, Math.min(this.incrementCount, count - this.currentCount))); - } - this.children = newChildren; - } - - public async addMoreCachedResources(tree: CICSTree) { - await window.withProgress( - { - title: "Loading more local files", - location: ProgressLocation.Notification, - cancellable: false, - }, - async () => { - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - // record count may have updated - const recordsCount = cacheTokenInfo.recordCount; - const count = recordsCount; - const allLocalFiles = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - this.currentCount + 1, - this.incrementCount, - ); - if (allLocalFiles) { - // @ts-ignore - this.addLocalFilesUtil( - (this.getChildren()?.filter((child) => child instanceof CICSLocalFileTreeItem) ?? []) as CICSLocalFileTreeItem[], - allLocalFiles, - count, - ); - tree._onDidChangeTreeData.fire(undefined); - } - } - }, - ); - } - - public clearFilter() { - this.activeFilter = undefined; - this.label = `All Local Files`; - this.contextValue = `cicscombinedlocalfiletree.unfiltered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.label = `All Local Files (${this.activeFilter})`; - this.contextValue = `cicscombinedlocalfiletree.filtered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getChildren() { - return this.children ? this.children.filter((child) => !(child instanceof TextTreeItem)) : []; - } - - public getActiveFilter() { - return this.activeFilter; - } - - public getParent() { - return this.parentPlex; - } -} diff --git a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedProgramTree.ts b/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedResourceTree.ts similarity index 60% rename from packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedProgramTree.ts rename to packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedResourceTree.ts index c980e662..6ac38bce 100644 --- a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedProgramTree.ts +++ b/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedResourceTree.ts @@ -9,46 +9,45 @@ * */ -import { CicsCmciConstants } from "@zowe/cics-for-zowe-sdk"; +import { imperative } from "@zowe/zowe-explorer-api"; import { ProgressLocation, TreeItem, TreeItemCollapsibleState, window, workspace } from "vscode"; +import { IResource, IResourceMeta } from "../../doc/IResourceTypes"; import { toEscapedCriteriaString } from "../../utils/filterUtils"; import { ProfileManagement } from "../../utils/profileManagement"; import { CICSPlexTree } from "../CICSPlexTree"; import { CICSRegionsContainer } from "../CICSRegionsContainer"; import { CICSRegionTree } from "../CICSRegionTree"; import { CICSTree } from "../CICSTree"; -import { CICSProgramTreeItem } from "../treeItems/CICSProgramTreeItem"; +import { CICSResourceTreeItem } from "../treeItems/CICSResourceTreeItem"; import { TextTreeItem } from "../treeItems/utils/TextTreeItem"; import { getFolderIcon } from "../../utils/iconUtils"; -import { imperative } from "@zowe/zowe-explorer-api"; import { ViewMore } from "../treeItems/utils/ViewMore"; -export class CICSCombinedProgramTree extends TreeItem { - children: (CICSProgramTreeItem | ViewMore)[] | [TextTreeItem] | null; +export class CICSCombinedResourceTree extends TreeItem { + children: (CICSResourceTreeItem | ViewMore)[] | [TextTreeItem] | null; parentPlex: CICSPlexTree; activeFilter: string | undefined; currentCount: number; incrementCount: number; - constant: string; + resourceMeta: IResourceMeta; - constructor( - parentPlex: CICSPlexTree, - public iconPath = getFolderIcon(false), - ) { - super("All Programs", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicscombinedprogramtree.`; + constructor(parentPlex: CICSPlexTree, resourceMeta: IResourceMeta, public iconPath = getFolderIcon(false)) { + super(`All ${resourceMeta.humanReadableName}`, TreeItemCollapsibleState.Collapsed); + this.resourceMeta = resourceMeta; + this.contextValue = `${resourceMeta.combinedContextPrefix}.`; this.parentPlex = parentPlex; - this.children = [new TextTreeItem("Use the search button to display programs", "applyfiltertext.")]; + this.children = [new TextTreeItem("Use the search button to display resources", "applyfiltertext.")]; this.activeFilter = undefined; this.currentCount = 0; - this.incrementCount = +`${workspace.getConfiguration().get("zowe.cics.allPrograms.recordCountIncrement")}`; - this.constant = CicsCmciConstants.CICS_PROGRAM_RESOURCE; + this.incrementCount = +`${workspace.getConfiguration().get( + `zowe.cics.all${resourceMeta.humanReadableName.replaceAll(" ", "")}.recordCountIncrement` + )}`; } public async loadContents(tree: CICSTree) { await window.withProgress( { - title: "Loading Programs", + title: "Loading Resources", location: ProgressLocation.Notification, cancellable: true, }, @@ -58,47 +57,47 @@ export class CICSCombinedProgramTree extends TreeItem { try { let criteria; if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "PROGRAM"); + criteria = toEscapedCriteriaString(this.activeFilter, this.resourceMeta.filterAttribute); } let count; const cacheTokenInfo = await ProfileManagement.generateCacheToken( this.parentPlex.getProfile(), this.parentPlex.getPlexName(), - this.constant, + this.resourceMeta.resourceName, criteria, this.getParent().getGroupName(), ); if (cacheTokenInfo) { recordsCount = cacheTokenInfo.recordCount; if (recordsCount) { - let allPrograms; + let allResources; if (recordsCount <= this.incrementCount) { - allPrograms = await ProfileManagement.getCachedResources( + allResources = await ProfileManagement.getCachedResources( this.parentPlex.getProfile(), cacheTokenInfo.cacheToken, - this.constant, + this.resourceMeta.resourceName, 1, recordsCount, ); } else { - allPrograms = await ProfileManagement.getCachedResources( + allResources = await ProfileManagement.getCachedResources( this.parentPlex.getProfile(), cacheTokenInfo.cacheToken, - this.constant, + this.resourceMeta.resourceName, 1, this.incrementCount, ); count = recordsCount; } - this.addProgramsUtil([], allPrograms, count); + this.addResourcesUtil([], allResources, count); this.iconPath = getFolderIcon(true); tree._onDidChangeTreeData.fire(undefined); } else { this.children = []; this.iconPath = getFolderIcon(true); tree._onDidChangeTreeData.fire(undefined); - window.showInformationMessage(`No programs found`); - this.label = `All Programs${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${recordsCount}]`; + window.showInformationMessage(`No resources found`); + this.label = `All ${this.resourceMeta.humanReadableName}${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${recordsCount}]`; } } } catch (error) { @@ -106,11 +105,11 @@ export class CICSCombinedProgramTree extends TreeItem { this.children = []; this.iconPath = getFolderIcon(true); tree._onDidChangeTreeData.fire(undefined); - window.showInformationMessage(`No programs found`); - this.label = `All Programs${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${recordsCount}]`; + window.showInformationMessage(`No resources found`); + this.label = `All ${this.resourceMeta.humanReadableName}${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${recordsCount}]`; } else { window.showErrorMessage( - `Something went wrong when fetching programs - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( + `Something went wrong when fetching resources - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( /(\\n\t|\\n|\\t)/gm, " ", )}`, @@ -121,25 +120,31 @@ export class CICSCombinedProgramTree extends TreeItem { ); } - public addProgramsUtil(newChildren: (CICSProgramTreeItem | ViewMore)[], allPrograms: any, count: number | undefined) { - for (const program of allPrograms) { - // Regions container must exist if all programs tree exists + public addResourcesUtil(newChildren: (CICSResourceTreeItem | ViewMore)[], allResources: T[], count: number | undefined) { + for (const resource of allResources) { const regionsContainer = this.parentPlex.children.filter((child) => child instanceof CICSRegionsContainer)?.[0]; if (regionsContainer == null) { continue; } const parentRegion = regionsContainer .getChildren()! - .filter((child) => child instanceof CICSRegionTree && child.getRegionName() === program.eyu_cicsname)?.[0] as CICSRegionTree; - const progamTree = new CICSProgramTreeItem(program, parentRegion, this); - progamTree.setLabel(progamTree.label.toString().replace(program.program, `${program.program} (${program.eyu_cicsname})`)); - newChildren.push(progamTree); + .filter((child) => + child instanceof CICSRegionTree && + child.getRegionName() === resource[this.resourceMeta.regionNameAttribute as keyof T])?.[0] as CICSRegionTree; + const resourceTree = new CICSResourceTreeItem(resource, this.resourceMeta, parentRegion, this); + resourceTree.setLabel( + resourceTree.label.toString().replace( + `${resource[this.resourceMeta.primaryKeyAttribute as keyof T]}`, + `${resource[this.resourceMeta.primaryKeyAttribute as keyof T]} (${resource[this.resourceMeta.regionNameAttribute as keyof T]})` + )); + newChildren.push(resourceTree); } if (!count) { count = newChildren.length; } this.currentCount = newChildren.length; - this.label = `All Programs ${this.activeFilter ? `(${this.activeFilter}) ` : " "}[${this.currentCount} of ${count}]`; + this.label = `All ${this.resourceMeta.humanReadableName} ${this.activeFilter ? + `(${this.activeFilter}) ` : " "}[${this.currentCount} of ${count}]`; if (count !== this.currentCount) { newChildren.push(new ViewMore(this, Math.min(this.incrementCount, count - this.currentCount))); } @@ -149,19 +154,19 @@ export class CICSCombinedProgramTree extends TreeItem { public async addMoreCachedResources(tree: CICSTree) { await window.withProgress( { - title: "Loading more programs", + title: "Loading more resources", location: ProgressLocation.Notification, cancellable: false, }, async () => { let criteria; if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "PROGRAM"); + criteria = toEscapedCriteriaString(this.activeFilter, this.resourceMeta.filterAttribute); } const cacheTokenInfo = await ProfileManagement.generateCacheToken( this.parentPlex.getProfile(), this.parentPlex.getPlexName(), - this.constant, + this.resourceMeta.resourceName, criteria, this.getParent().getGroupName(), ); @@ -169,19 +174,18 @@ export class CICSCombinedProgramTree extends TreeItem { // record count may have updated const recordsCount = cacheTokenInfo.recordCount; const count = recordsCount; - const allPrograms = await ProfileManagement.getCachedResources( + const allResources = await ProfileManagement.getCachedResources( this.parentPlex.getProfile(), cacheTokenInfo.cacheToken, - this.constant, + this.resourceMeta.resourceName, this.currentCount + 1, this.incrementCount, ); - if (allPrograms) { - // @ts-ignore - this.addProgramsUtil( - (this.getChildren()?.filter((child) => child instanceof CICSProgramTreeItem) ?? []) as CICSProgramTreeItem[], - allPrograms, - count, + if (allResources) { + this.addResourcesUtil( + (this.getChildren()?.filter((child) => child instanceof CICSResourceTreeItem) ?? []) as CICSResourceTreeItem[], + allResources, + count ); tree._onDidChangeTreeData.fire(undefined); } @@ -192,15 +196,15 @@ export class CICSCombinedProgramTree extends TreeItem { public clearFilter() { this.activeFilter = undefined; - this.label = `All Programs`; - this.contextValue = `cicscombinedprogramtree.unfiltered`; + this.label = `All ${this.resourceMeta.humanReadableName}`; + this.contextValue = `${this.resourceMeta.combinedContextPrefix}.unfiltered`; this.collapsibleState = TreeItemCollapsibleState.Expanded; } public setFilter(newFilter: string) { this.activeFilter = newFilter; - this.label = `All Programs (${this.activeFilter})`; - this.contextValue = `cicscombinedprogramtree.filtered`; + this.label = `All ${this.resourceMeta.humanReadableName} (${this.activeFilter})`; + this.contextValue = `${this.resourceMeta.combinedContextPrefix}.filtered`; this.collapsibleState = TreeItemCollapsibleState.Expanded; } diff --git a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedTransactionTree.ts b/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedTransactionTree.ts deleted file mode 100644 index 52b1ef7f..00000000 --- a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedTransactionTree.ts +++ /dev/null @@ -1,202 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { CicsCmciConstants } from "@zowe/cics-for-zowe-sdk"; -import { ProgressLocation, TreeItem, TreeItemCollapsibleState, window, workspace } from "vscode"; -import { toEscapedCriteriaString } from "../../utils/filterUtils"; -import { ProfileManagement } from "../../utils/profileManagement"; -import { CICSPlexTree } from "../CICSPlexTree"; -import { CICSRegionsContainer } from "../CICSRegionsContainer"; -import { CICSRegionTree } from "../CICSRegionTree"; -import { CICSTree } from "../CICSTree"; -import { CICSTransactionTreeItem } from "../treeItems/CICSTransactionTreeItem"; -import { TextTreeItem } from "../treeItems/utils/TextTreeItem"; -import { getFolderIcon } from "../../utils/iconUtils"; -import { ViewMore } from "../treeItems/utils/ViewMore"; - -export class CICSCombinedTransactionsTree extends TreeItem { - children: (CICSTransactionTreeItem | ViewMore)[] | [TextTreeItem] | null; - parentPlex: CICSPlexTree; - activeFilter: string | undefined; - currentCount: number; - incrementCount: number; - constant: string; - - constructor( - parentPlex: CICSPlexTree, - public iconPath = getFolderIcon(false), - ) { - super("All Local Transactions", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicscombinedtransactiontree.`; - this.parentPlex = parentPlex; - this.children = [new TextTreeItem("Use the search button to display local transactions", "applyfiltertext.")]; - this.activeFilter = undefined; - this.currentCount = 0; - this.incrementCount = +`${workspace.getConfiguration().get("zowe.cics.allTransactions.recordCountIncrement")}`; - this.constant = CicsCmciConstants.CICS_LOCAL_TRANSACTION; - } - - public async loadContents(tree: CICSTree) { - await window.withProgress( - { - title: "Loading Local Transactions", - location: ProgressLocation.Notification, - cancellable: true, - }, - async (_, token) => { - token.onCancellationRequested(() => {}); - try { - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "tranid"); - } - let count; - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - criteria, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - const recordsCount = cacheTokenInfo.recordCount; - if (recordsCount) { - let allLocalTransactions; - if (recordsCount <= this.incrementCount) { - allLocalTransactions = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - recordsCount, - ); - } else { - allLocalTransactions = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - this.incrementCount, - ); - count = recordsCount; - } - this.addLocalTransactionsUtil([], allLocalTransactions, count); - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - } else { - this.children = []; - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - window.showInformationMessage(`No local transactions found`); - this.label = `All Local Transactions${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${recordsCount}]`; - } - } - } catch (error) { - window.showErrorMessage( - `Something went wrong when fetching local transactions - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( - /(\\n\t|\\n|\\t)/gm, - " ", - )}`, - ); - } - }, - ); - } - - public addLocalTransactionsUtil(newChildren: (CICSTransactionTreeItem | ViewMore)[], allLocalTransactions: any, count: number | undefined) { - for (const transaction of allLocalTransactions) { - const regionsContainer = this.parentPlex.children.filter((child) => child instanceof CICSRegionsContainer)?.[0]; - if (regionsContainer == null) { - continue; - } - const parentRegion = regionsContainer - .getChildren()! - .filter((child) => child instanceof CICSRegionTree && child.getRegionName() === transaction.eyu_cicsname)?.[0] as CICSRegionTree; - const transactionTree = new CICSTransactionTreeItem(transaction, parentRegion, this); - transactionTree.setLabel(transactionTree.label.toString().replace(transaction.tranid, `${transaction.tranid} (${transaction.eyu_cicsname})`)); - newChildren.push(transactionTree); - } - if (!count) { - count = newChildren.length; - } - this.currentCount = newChildren.length; - this.label = `All Local Transactions ${this.activeFilter ? `(${this.activeFilter}) ` : " "}[${this.currentCount} of ${count}]`; - if (count !== this.currentCount) { - newChildren.push(new ViewMore(this, Math.min(this.incrementCount, count - this.currentCount))); - } - this.children = newChildren; - } - - public async addMoreCachedResources(tree: CICSTree) { - await window.withProgress( - { - title: "Loading more local transactions", - location: ProgressLocation.Notification, - cancellable: false, - }, - async () => { - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - // record count may have updated - const recordsCount = cacheTokenInfo.recordCount; - const count = recordsCount; - const allLocalTransactions = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - this.currentCount + 1, - this.incrementCount, - ); - if (allLocalTransactions) { - // @ts-ignore - this.addLocalTransactionsUtil( - (this.getChildren()?.filter((child) => child instanceof CICSTransactionTreeItem) ?? []) as CICSTransactionTreeItem[], - allLocalTransactions, - count, - ); - tree._onDidChangeTreeData.fire(undefined); - } - } - }, - ); - } - - public clearFilter() { - this.activeFilter = undefined; - this.label = `All Local Transactions`; - this.contextValue = `cicscombinedtransactiontree.unfiltered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.label = `All Local Transactions (${this.activeFilter})`; - this.contextValue = `cicscombinedtransactiontree.filtered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getChildren() { - return this.children ? this.children.filter((child) => !(child instanceof TextTreeItem)) : []; - } - - public getActiveFilter() { - return this.activeFilter; - } - - public getParent() { - return this.parentPlex; - } -} diff --git a/packages/vsce/src/trees/CICSLocalFileTree.ts b/packages/vsce/src/trees/CICSLocalFileTree.ts deleted file mode 100644 index a72987cf..00000000 --- a/packages/vsce/src/trees/CICSLocalFileTree.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem, window, workspace } from "vscode"; -import { CICSLocalFileTreeItem } from "./treeItems/CICSLocalFileTreeItem"; -import { getResource } from "@zowe/cics-for-zowe-sdk"; -import { CICSRegionTree } from "./CICSRegionTree"; -import { toEscapedCriteriaString } from "../utils/filterUtils"; -import { getFolderIcon } from "../utils/iconUtils"; -import { toArray } from "../utils/commandUtils"; - -export class CICSLocalFileTree extends TreeItem { - children: CICSLocalFileTreeItem[] = []; - parentRegion: CICSRegionTree; - activeFilter: string | undefined = undefined; - - constructor(parentRegion: CICSRegionTree, public iconPath = getFolderIcon(false)) { - super("Local Files", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicstreelocalfile.${this.activeFilter ? "filtered" : "unfiltered"}.localFiles`; - this.parentRegion = parentRegion; - } - - public addLocalFile(localFile: CICSLocalFileTreeItem) { - this.children.push(localFile); - } - - public async loadContents() { - let defaultCriteria = `${await workspace.getConfiguration().get("zowe.cics.localFile.filter")}`; - if (!defaultCriteria || defaultCriteria.length === 0) { - await workspace.getConfiguration().update("zowe.cics.localFile.filter", "file=*"); - defaultCriteria = "file=*"; - } - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "file"); - } else { - criteria = defaultCriteria; - } - this.children = []; - try { - - const localFileResponse = await getResource(this.parentRegion.parentSession.session, { - name: "CICSLocalFile", - regionName: this.parentRegion.getRegionName(), - cicsPlex: this.parentRegion.parentPlex ? this.parentRegion.parentPlex.getPlexName() : undefined, - criteria: criteria, - }); - const localFileArray = toArray(localFileResponse.response.records.cicslocalfile); - this.label = `Local Files${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${localFileArray.length}]`; - for (const localFile of localFileArray) { - const newLocalFileItem = new CICSLocalFileTreeItem(localFile, this.parentRegion, this); - this.addLocalFile(newLocalFileItem); - } - this.iconPath = getFolderIcon(true); - } catch (error) { - // @ts-ignore - if (error.mMessage!.includes("exceeded a resource limit")) { - window.showErrorMessage(`Resource Limit Exceeded - Set a local file filter to narrow search`); - // @ts-ignore - } else if (this.children.length === 0) { - window.showInformationMessage(`No local files found`); - this.label = `Local Files${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[0]`; - this.iconPath = getFolderIcon(true); - } else { - window.showErrorMessage( - `Something went wrong when fetching local files - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( - /(\\n\t|\\n|\\t)/gm, - " " - )}` - ); - } - } - } - - public clearFilter() { - this.activeFilter = undefined; - this.contextValue = `cicstreelocalfile.${this.activeFilter ? "filtered" : "unfiltered"}.localFiles`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.contextValue = `cicstreelocalfile.${this.activeFilter ? "filtered" : "unfiltered"}.localFiles`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getFilter() { - return this.activeFilter; - } - - public getParent() { - return this.parentRegion; - } -} diff --git a/packages/vsce/src/trees/CICSPlexTree.ts b/packages/vsce/src/trees/CICSPlexTree.ts index 33e28ff4..047fd3ed 100644 --- a/packages/vsce/src/trees/CICSPlexTree.ts +++ b/packages/vsce/src/trees/CICSPlexTree.ts @@ -9,29 +9,27 @@ * */ -import { TreeItemCollapsibleState, TreeItem } from "vscode"; -import { CICSRegionTree } from "./CICSRegionTree"; -import { imperative } from "@zowe/zowe-explorer-api"; -import { CICSSessionTree } from "./CICSSessionTree"; import { getResource } from "@zowe/cics-for-zowe-sdk"; -import { CICSCombinedProgramTree } from "./CICSCombinedTrees/CICSCombinedProgramTree"; -import { CICSCombinedTransactionsTree } from "./CICSCombinedTrees/CICSCombinedTransactionTree"; -import { CICSCombinedLocalFileTree } from "./CICSCombinedTrees/CICSCombinedLocalFileTree"; import { CICSRegionsContainer } from "./CICSRegionsContainer"; import { getIconFilePathFromName } from "../utils/iconUtils"; import { CICSCombinedTaskTree } from "./CICSCombinedTrees/CICSCombinedTaskTree"; +import { imperative } from "@zowe/zowe-explorer-api"; +import { TreeItem, TreeItemCollapsibleState } from "vscode"; +import resources, { IResource } from "../doc/IResourceTypes"; import { CICSCombinedLibraryTree } from "./CICSCombinedTrees/CICSCombinedLibraryTree"; +import { CICSCombinedPipelineTree } from "./CICSCombinedTrees/CICSCombinedPipelineTree"; +import { CICSCombinedResourceTree } from "./CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSCombinedTCPIPServiceTree } from "./CICSCombinedTrees/CICSCombinedTCPIPServiceTree"; import { CICSCombinedURIMapTree } from "./CICSCombinedTrees/CICSCombinedURIMapTree"; -import { CICSCombinedPipelineTree } from "./CICSCombinedTrees/CICSCombinedPipelineTree"; import { CICSCombinedWebServiceTree } from "./CICSCombinedTrees/CICSCombinedWebServiceTree"; +import { CICSRegionTree } from "./CICSRegionTree"; +import { CICSSessionTree } from "./CICSSessionTree"; + export class CICSPlexTree extends TreeItem { children: ( | CICSRegionTree - | CICSCombinedProgramTree - | CICSCombinedTransactionsTree - | CICSCombinedLocalFileTree + | CICSCombinedResourceTree | CICSCombinedTaskTree | CICSCombinedLibraryTree | CICSRegionsContainer @@ -158,9 +156,9 @@ export class CICSPlexTree extends TreeItem { } public addNewCombinedTrees() { - this.children.push(new CICSCombinedProgramTree(this)); - this.children.push(new CICSCombinedTransactionsTree(this)); - this.children.push(new CICSCombinedLocalFileTree(this)); + this.children.push(new CICSCombinedResourceTree(this, resources.program)); + this.children.push(new CICSCombinedResourceTree(this, resources.transaction)); + this.children.push(new CICSCombinedResourceTree(this, resources.localFile)); this.children.push(new CICSCombinedTaskTree(this)); this.children.push(new CICSCombinedLibraryTree(this)); this.children.push(new CICSCombinedTCPIPServiceTree(this)); diff --git a/packages/vsce/src/trees/CICSProgramTree.ts b/packages/vsce/src/trees/CICSProgramTree.ts deleted file mode 100644 index 3702b632..00000000 --- a/packages/vsce/src/trees/CICSProgramTree.ts +++ /dev/null @@ -1,98 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem, window } from "vscode"; -import { CICSProgramTreeItem } from "./treeItems/CICSProgramTreeItem"; -import { CICSRegionTree } from "./CICSRegionTree"; -import { getResource } from "@zowe/cics-for-zowe-sdk"; -import { getDefaultProgramFilter, toEscapedCriteriaString } from "../utils/filterUtils"; -import { getFolderIcon } from "../utils/iconUtils"; -import { toArray } from "../utils/commandUtils"; - -export class CICSProgramTree extends TreeItem { - children: CICSProgramTreeItem[] = []; - parentRegion: CICSRegionTree; - activeFilter: string | undefined = undefined; - - constructor( - parentRegion: CICSRegionTree, - public iconPath = getFolderIcon(false), - ) { - super("Programs", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicstreeprogram.${this.activeFilter ? "filtered" : "unfiltered"}.programs`; - this.parentRegion = parentRegion; - } - - public addProgram(program: CICSProgramTreeItem) { - this.children.push(program); - } - - public async loadContents() { - const defaultCriteria = await getDefaultProgramFilter(); - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "PROGRAM"); - } else { - criteria = defaultCriteria; - } - this.children = []; - try { - const programResponse = await getResource(this.parentRegion.parentSession.session, { - name: "CICSProgram", - regionName: this.parentRegion.getRegionName(), - cicsPlex: this.parentRegion.parentPlex ? this.parentRegion.parentPlex.getPlexName() : undefined, - criteria: criteria, - }); - const programsArray = toArray(programResponse.response.records.cicsprogram); - this.label = `Programs${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${programsArray.length}]`; - for (const program of programsArray) { - const newProgramItem = new CICSProgramTreeItem(program, this.parentRegion, this); - this.addProgram(newProgramItem); - } - this.iconPath = getFolderIcon(true); - } catch (error) { - if (error.mMessage!.includes("exceeded a resource limit")) { - window.showErrorMessage(`Resource Limit Exceeded - Set a program filter to narrow search`); - } else if (this.children.length === 0) { - window.showInformationMessage(`No programs found`); - this.label = `Programs${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[0]`; - this.iconPath = getFolderIcon(true); - } else { - window.showErrorMessage( - `Something went wrong when fetching programs - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( - /(\\n\t|\\n|\\t)/gm, - " ", - )}`, - ); - } - } - } - - public clearFilter() { - this.activeFilter = undefined; - this.contextValue = `cicstreeprogram.${this.activeFilter ? "filtered" : "unfiltered"}.programs`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.contextValue = `cicstreeprogram.${this.activeFilter ? "filtered" : "unfiltered"}.programs`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getFilter() { - return this.activeFilter; - } - - public getParent() { - return this.parentRegion; - } -} diff --git a/packages/vsce/src/trees/CICSRegionTree.ts b/packages/vsce/src/trees/CICSRegionTree.ts index 9fbbf3d8..322da245 100644 --- a/packages/vsce/src/trees/CICSRegionTree.ts +++ b/packages/vsce/src/trees/CICSRegionTree.ts @@ -10,19 +10,19 @@ */ import { TreeItemCollapsibleState, TreeItem } from "vscode"; -import { CICSProgramTree } from "./CICSProgramTree"; -import { CICSTransactionTree } from "./CICSTransactionTree"; -import { CICSLocalFileTree } from "./CICSLocalFileTree"; import { CICSSessionTree } from "./CICSSessionTree"; import { CICSPlexTree } from "./CICSPlexTree"; import { getIconByStatus } from "../utils/iconUtils"; import { CICSTaskTree } from "./CICSTaskTree"; +import { IRegion } from "../doc/IRegion"; +import resources, { IResource } from "../doc/IResourceTypes"; import { CICSLibraryTree } from "./CICSLibraryTree"; +import { CICSResourceTree } from "./CICSResourceTree"; import { CICSWebTree } from "./CICSWebTree"; export class CICSRegionTree extends TreeItem { - children: [CICSProgramTree, CICSTransactionTree, CICSLocalFileTree, CICSTaskTree, CICSLibraryTree, CICSWebTree] | null; - region: any; + children: (CICSResourceTree | CICSTaskTree | CICSLibraryTree | CICSWebTree)[] | null; + region: IRegion; parentSession: CICSSessionTree; parentPlex: CICSPlexTree | undefined; directParent: any; @@ -52,9 +52,9 @@ export class CICSRegionTree extends TreeItem { } else { this.contextValue += ".active"; this.children = [ - new CICSProgramTree(this), - new CICSTransactionTree(this), - new CICSLocalFileTree(this), + new CICSResourceTree(resources.program, this), + new CICSResourceTree(resources.transaction, this), + new CICSResourceTree(resources.localFile, this), new CICSTaskTree(this), new CICSLibraryTree(this), new CICSWebTree(this), diff --git a/packages/vsce/src/trees/CICSResourceTree.ts b/packages/vsce/src/trees/CICSResourceTree.ts new file mode 100644 index 00000000..99ea8bf4 --- /dev/null +++ b/packages/vsce/src/trees/CICSResourceTree.ts @@ -0,0 +1,111 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + +import { getResource } from "@zowe/cics-for-zowe-sdk"; +import { TreeItem, TreeItemCollapsibleState, window } from "vscode"; +import { IResource, IResourceMeta } from "../doc/IResourceTypes"; +import { toArray } from "../utils/commandUtils"; +import { toEscapedCriteriaString } from "../utils/filterUtils"; +import { getIconOpen } from "../utils/profileUtils"; +import { CICSRegionTree } from "./CICSRegionTree"; +import { CICSResourceTreeItem } from "./treeItems/CICSResourceTreeItem"; + + +export class CICSResourceTree extends TreeItem { + children: CICSResourceTreeItem[] = []; + parentRegion: CICSRegionTree; + activeFilter: string | undefined = undefined; + + resourceMeta: IResourceMeta; + + constructor(resourceMeta: IResourceMeta, parentRegion: CICSRegionTree, public iconPath = getIconOpen(false)) { + super(resourceMeta.humanReadableName, TreeItemCollapsibleState.Collapsed); + this.contextValue = `${resourceMeta.contextPrefix}.${this.activeFilter ? "filtered" : "unfiltered"}.${resourceMeta.resourceName}`; + this.parentRegion = parentRegion; + this.resourceMeta = resourceMeta; + } + + public addResource(resource: CICSResourceTreeItem) { + this.children.push(resource); + } + + public async loadContents() { + + let criteria = await this.resourceMeta.getDefaultFilter(); + if (this.activeFilter) { + criteria = toEscapedCriteriaString(this.activeFilter, this.resourceMeta.filterAttribute); + } + + this.children = []; + try { + + const { response } = await getResource(this.parentRegion.parentSession.session, { + name: this.resourceMeta.resourceName, + regionName: this.parentRegion.getRegionName(), + cicsPlex: this.parentRegion.parentPlex ? this.parentRegion.parentPlex.getPlexName() : undefined, + criteria: criteria, + }); + const results = toArray(response.records[this.resourceMeta.resourceName.toLowerCase()]); + + this.label = `${this.resourceMeta.humanReadableName}${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${results.length}]`; + + for (const resource of results) { + const newResourceItem = new CICSResourceTreeItem( + resource as T, + this.resourceMeta, + this.parentRegion, + this, + ); + this.addResource(newResourceItem); + } + + this.iconPath = getIconOpen(true); + + } catch (error) { + if (error.mMessage?.includes("exceeded a resource limit")) { + window.showErrorMessage(`Resource Limit Exceeded - Set a filter to narrow search`); + } else if (this.children.length === 0) { + window.showInformationMessage(`No ${this.resourceMeta.humanReadableName} found`); + + this.label = `${this.resourceMeta.humanReadableName}${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[0]`; + this.iconPath = getIconOpen(true); + + } else { + window.showErrorMessage( + `Something went wrong when fetching resources - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( + /(\\n\t|\\n|\\t)/gm, + " " + )}` + ); + } + } + } + + public clearFilter() { + this.activeFilter = undefined; + this.contextValue = `${this.resourceMeta.contextPrefix}.${this.activeFilter ? "filtered" : "unfiltered"}.${this.resourceMeta.resourceName}`; + this.collapsibleState = TreeItemCollapsibleState.Expanded; + } + + public setFilter(newFilter: string) { + this.activeFilter = newFilter; + this.contextValue = `${this.resourceMeta.contextPrefix}.${this.activeFilter ? "filtered" : "unfiltered"}.${this.resourceMeta.resourceName}`; + this.collapsibleState = TreeItemCollapsibleState.Expanded; + } + + public getFilter() { + return this.activeFilter; + } + + public getParent() { + return this.parentRegion; + } +} diff --git a/packages/vsce/src/trees/CICSTransactionTree.ts b/packages/vsce/src/trees/CICSTransactionTree.ts deleted file mode 100644 index 2dbf1423..00000000 --- a/packages/vsce/src/trees/CICSTransactionTree.ts +++ /dev/null @@ -1,100 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem, window } from "vscode"; -import { CICSTransactionTreeItem } from "./treeItems/CICSTransactionTreeItem"; -import { CICSRegionTree } from "./CICSRegionTree"; -import { getResource } from "@zowe/cics-for-zowe-sdk"; -import { getDefaultTransactionFilter, toEscapedCriteriaString } from "../utils/filterUtils"; -import { getFolderIcon } from "../utils/iconUtils"; -import { toArray } from "../utils/commandUtils"; - -export class CICSTransactionTree extends TreeItem { - children: CICSTransactionTreeItem[] = []; - parentRegion: CICSRegionTree; - activeFilter: string | undefined = undefined; - - constructor( - parentRegion: CICSRegionTree, - public iconPath = getFolderIcon(false), - ) { - super("Transactions", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicstreetransaction.${this.activeFilter ? "filtered" : "unfiltered"}.transactions`; - this.parentRegion = parentRegion; - } - - public addTransaction(program: CICSTransactionTreeItem) { - this.children.push(program); - } - - public async loadContents() { - const defaultCriteria = await getDefaultTransactionFilter(); - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "tranid"); - } else { - criteria = defaultCriteria; - } - this.children = []; - try { - const transactionResponse = await getResource(this.parentRegion.parentSession.session, { - name: "CICSLocalTransaction", - regionName: this.parentRegion.getRegionName(), - cicsPlex: this.parentRegion.parentPlex ? this.parentRegion.parentPlex.getPlexName() : undefined, - criteria: criteria, - }); - const transactionArray = toArray(transactionResponse.response.records.cicslocaltransaction); - this.label = `Transactions${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${transactionArray.length}]`; - for (const transaction of transactionArray) { - const newTransactionItem = new CICSTransactionTreeItem(transaction, this.parentRegion, this); - this.addTransaction(newTransactionItem); - } - this.iconPath = getFolderIcon(true); - } catch (error) { - // @ts-ignore - if (error.mMessage!.includes("exceeded a resource limit")) { - window.showErrorMessage(`Resource Limit Exceeded - Set a transaction filter to narrow search`); - // @ts-ignore - } else if (this.children.length === 0) { - window.showInformationMessage(`No transactions found`); - this.label = `Transactions${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[0]`; - this.iconPath = getFolderIcon(true); - } else { - window.showErrorMessage( - `Something went wrong when fetching transaction - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( - /(\\n\t|\\n|\\t)/gm, - " ", - )}`, - ); - } - } - } - - public clearFilter() { - this.activeFilter = undefined; - this.contextValue = `cicstreetransaction.${this.activeFilter ? "filtered" : "unfiltered"}.transactions`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.contextValue = `cicstreetransaction.${this.activeFilter ? "filtered" : "unfiltered"}.transactions`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getFilter() { - return this.activeFilter; - } - - public getParent() { - return this.parentRegion; - } -} diff --git a/packages/vsce/src/trees/CICSTree.ts b/packages/vsce/src/trees/CICSTree.ts index b7062256..411b0f27 100644 --- a/packages/vsce/src/trees/CICSTree.ts +++ b/packages/vsce/src/trees/CICSTree.ts @@ -38,10 +38,13 @@ import { CICSRegionTree } from "./CICSRegionTree"; import { CICSSessionTree } from "./CICSSessionTree"; export class CICSTree implements TreeDataProvider { + loadedProfiles: CICSSessionTree[] = []; + constructor() { this.loadStoredProfileNames(); } + public getLoadedProfiles() { return this.loadedProfiles; } @@ -51,6 +54,7 @@ export class CICSTree implements TreeDataProvider { await this.loadStoredProfileNames(); commands.executeCommand("workbench.actions.treeView.cics-view.collapseAll"); } + public clearLoadedProfiles() { this.loadedProfiles = []; this._onDidChangeTreeData.fire(undefined); @@ -62,21 +66,20 @@ export class CICSTree implements TreeDataProvider { * these as children to the CICSTree (TreeDataProvider) */ public async loadStoredProfileNames() { - const persistentStorage = new PersistentStorage("zowe.cics.persistent"); await ProfileManagement.profilesCacheRefresh(); - // Retrieve previously added profiles from persistent storage - for (const profilename of persistentStorage.getLoadedCICSProfile()) { - try { - const profileToLoad = await ProfileManagement.getProfilesCache().loadNamedProfile(profilename, "cics"); - // avoid accidental repeats - if (!this.loadedProfiles.filter((sessionTree) => sessionTree.label === profilename).length) { - const newSessionTree = new CICSSessionTree(profileToLoad); - this.loadedProfiles.push(newSessionTree); + const persistentStorage = new PersistentStorage("zowe.cics.persistent"); + const uniqueProfileNamesToLoad = [...new Set(persistentStorage.getLoadedCICSProfile())]; + + this.loadedProfiles = uniqueProfileNamesToLoad.flatMap( + (profileName: string) => { + try { + const profile = ProfileManagement.getProfilesCache().loadNamedProfile(profileName, "cics"); + return [new CICSSessionTree(profile)]; + } catch (error) { + return []; } - } catch { - continue; } - } + ); this._onDidChangeTreeData.fire(undefined); } @@ -222,7 +225,7 @@ export class CICSTree implements TreeDataProvider { cancellable: true, }, async (progress, token) => { - token.onCancellationRequested(() => {}); + token.onCancellationRequested(() => { }); progress.report({ message: `Loading ${profile.name}`, @@ -348,8 +351,8 @@ export class CICSTree implements TreeDataProvider { if (sessionTree) { const decision = await window.showInformationMessage( `Warning: Your connection is not private (${error.code}) - ` + - `would you still like to proceed to ${profile.profile.host} (unsafe)?`, - ...["Yes", "No"], + `would you still like to proceed to ${profile.profile.host} (unsafe)?`, + ...["Yes", "No"] ); if (decision) { if (decision === "Yes") { @@ -500,6 +503,7 @@ export class CICSTree implements TreeDataProvider { getTreeItem(element: CICSSessionTree): TreeItem | Thenable { return element; } + getChildren(element?: CICSSessionTree): ProviderResult { return element === undefined ? this.loadedProfiles : element.children; } diff --git a/packages/vsce/src/trees/treeItems/CICSLibraryDatasets.ts b/packages/vsce/src/trees/treeItems/CICSLibraryDatasets.ts index 5004fa8e..eb45351b 100644 --- a/packages/vsce/src/trees/treeItems/CICSLibraryDatasets.ts +++ b/packages/vsce/src/trees/treeItems/CICSLibraryDatasets.ts @@ -13,12 +13,14 @@ import { TreeItemCollapsibleState, TreeItem, window } from "vscode"; import { CICSRegionTree } from "../CICSRegionTree"; import { getIconFilePathFromName } from "../../utils/iconUtils"; import { getResource } from "@zowe/cics-for-zowe-sdk"; -import { CICSProgramTreeItem } from "./CICSProgramTreeItem"; -import { toEscapedCriteriaString } from "../../utils/filterUtils"; +import { IProgram } from "../../doc/IProgram"; +import resources from "../../doc/IResourceTypes"; import { toArray } from "../../utils/commandUtils"; +import { toEscapedCriteriaString } from "../../utils/filterUtils"; +import { CICSResourceTreeItem } from "./CICSResourceTreeItem"; export class CICSLibraryDatasets extends TreeItem { - children: CICSProgramTreeItem[] = []; + children: CICSResourceTreeItem[] = []; dataset: any; parentRegion: CICSRegionTree; directParent: any; @@ -42,7 +44,7 @@ export class CICSLibraryDatasets extends TreeItem { this.label = newlabel; } - public addProgram(program: CICSProgramTreeItem) { + public addProgram(program: CICSResourceTreeItem) { this.children.push(program); } @@ -68,7 +70,7 @@ export class CICSLibraryDatasets extends TreeItem { const programsArray = toArray(datasetResponse.response.records.cicsprogram); this.label = `${this.dataset.dsname}${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${programsArray.length}]`; for (const program of programsArray) { - const newProgramItem = new CICSProgramTreeItem(program, this.parentRegion, this); + const newProgramItem = new CICSResourceTreeItem(program as IProgram, resources.program, this.parentRegion, this); this.addProgram(newProgramItem); } } catch (error) { diff --git a/packages/vsce/src/trees/treeItems/CICSLocalFileTreeItem.ts b/packages/vsce/src/trees/treeItems/CICSLocalFileTreeItem.ts deleted file mode 100644 index 6aaaa491..00000000 --- a/packages/vsce/src/trees/treeItems/CICSLocalFileTreeItem.ts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem } from "vscode"; -import { CICSRegionTree } from "../CICSRegionTree"; -import { getIconByStatus } from "../../utils/iconUtils"; - -export class CICSLocalFileTreeItem extends TreeItem { - localFile: any; - parentRegion: CICSRegionTree; - directParent: any; - localFileName: string; - - constructor( - localFile: any, - parentRegion: CICSRegionTree, - directParent: any, - public readonly iconPath = getIconByStatus("LOCAL_FILE", localFile) - ) { - super( - `${localFile.file} ${ - localFile.enablestatus.toLowerCase() === "disabled" && localFile.openstatus.toLowerCase() === "closed" - ? "(Disabled) (Closed)" - : localFile.enablestatus.toLowerCase() === "disabled" && localFile.openstatus.toLowerCase() !== "closed" - ? "(Disabled)" - : localFile.enablestatus.toLowerCase() === "unenabled" && localFile.openstatus.toLowerCase() === "closed" - ? "(Unenabled) (Closed)" - : localFile.enablestatus.toLowerCase() === "unenabled" && localFile.openstatus.toLowerCase() !== "closed" - ? "(Unenabled)" - : localFile.enablestatus.toLowerCase() === "enabled" && localFile.openstatus.toLowerCase() === "closed" - ? "(Closed)" - : "" - }`, - TreeItemCollapsibleState.None - ); - this.localFile = localFile; - this.contextValue = `cicslocalfile.${localFile.enablestatus.toLowerCase()}.${localFile.openstatus.toLowerCase()}.${localFile.file}`; - this.parentRegion = parentRegion; - this.directParent = directParent; - this.localFileName = localFile.file; - } - - public setLabel(newLabel: string) { - this.label = newLabel; - } - - public getParent() { - return this.directParent; - } -} diff --git a/packages/vsce/src/trees/treeItems/CICSProgramTreeItem.ts b/packages/vsce/src/trees/treeItems/CICSProgramTreeItem.ts deleted file mode 100644 index 4cd26d54..00000000 --- a/packages/vsce/src/trees/treeItems/CICSProgramTreeItem.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem } from "vscode"; -import { CICSRegionTree } from "../CICSRegionTree"; -import { getIconByStatus } from "../../utils/iconUtils"; - -export class CICSProgramTreeItem extends TreeItem { - program: any; - parentRegion: CICSRegionTree; - directParent: any; - - constructor( - program: any, - parentRegion: CICSRegionTree, - directParent: any, - public readonly iconPath = getIconByStatus("PROGRAM", program) - ) { - super( - `${program.program}${ - program.status.toLowerCase() === "disabled" && parseInt(program.newcopycnt) - ? ` (New copy count: ${program.newcopycnt}) (Disabled)` - : program.status.toLowerCase() === "disabled" && !parseInt(program.newcopycnt) - ? ` (Disabled)` - : program.status.toLowerCase() !== "disabled" && parseInt(program.newcopycnt) - ? ` (New copy count: ${program.newcopycnt})` - : "" - }`, - TreeItemCollapsibleState.None - ); - - this.program = program; - this.parentRegion = parentRegion; - this.directParent = directParent; - this.contextValue = `cicsprogram.${program.status.toLowerCase()}.${program.program}`; - } - - public setLabel(newLabel: string) { - this.label = newLabel; - } - - public getParent() { - return this.directParent; - } -} diff --git a/packages/vsce/src/trees/treeItems/CICSTransactionTreeItem.ts b/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts similarity index 59% rename from packages/vsce/src/trees/treeItems/CICSTransactionTreeItem.ts rename to packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts index 42133186..149fc00c 100644 --- a/packages/vsce/src/trees/treeItems/CICSTransactionTreeItem.ts +++ b/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts @@ -11,26 +11,31 @@ import { TreeItemCollapsibleState, TreeItem } from "vscode"; import { CICSRegionTree } from "../CICSRegionTree"; +import { IResource, IResourceMeta } from "../../doc/IResourceTypes"; import { getIconByStatus } from "../../utils/iconUtils"; -export class CICSTransactionTreeItem extends TreeItem { - transaction: any; +export class CICSResourceTreeItem extends TreeItem { + resource: T; + resourceMeta: IResourceMeta; parentRegion: CICSRegionTree; directParent: any; - transactionName: string; constructor( - transaction: any, + resource: T, + resourceMeta: IResourceMeta, parentRegion: CICSRegionTree, - directParent: any, - public readonly iconPath = getIconByStatus("TRANSACTION", transaction) + directParent: any ) { - super(`${transaction.tranid} ${transaction.status.toLowerCase() === "disabled" ? "(Disabled)" : ""}`, TreeItemCollapsibleState.None); - this.transaction = transaction; - this.contextValue = `cicstransaction.${transaction.status.toLowerCase()}.${transaction.tranid}`; + super( + resourceMeta.getLabel(resource), + TreeItemCollapsibleState.None + ); + + this.resource = resource; this.parentRegion = parentRegion; this.directParent = directParent; - this.transactionName = transaction.tranid; + this.contextValue = resourceMeta.getContext(resource); + this.iconPath = getIconByStatus(resourceMeta.resourceName, this); } public setLabel(newLabel: string) { diff --git a/packages/vsce/src/utils/commandUtils.ts b/packages/vsce/src/utils/commandUtils.ts index 7220b6e7..c47fa0da 100644 --- a/packages/vsce/src/utils/commandUtils.ts +++ b/packages/vsce/src/utils/commandUtils.ts @@ -18,7 +18,7 @@ import { TreeView } from "vscode"; * @param clickedNode - Node that was clicked right before the command was executed * @return Array of selected nodes in the treeview. */ -export function findSelectedNodes(treeview: TreeView, instanceOf: any, clickedNode?: any) { +export function findSelectedNodes(treeview: TreeView, instanceOf?: any, clickedNode?: any) { const selection = treeview.selection; let allSelectedNodes = []; if (clickedNode) { @@ -28,7 +28,9 @@ export function findSelectedNodes(treeview: TreeView, instanceOf: any, clic //if user right clicks the node other than selected node allSelectedNodes = [clickedNode]; } - allSelectedNodes = allSelectedNodes.filter((selectedNode) => selectedNode instanceof instanceOf); + if (instanceOf) { + allSelectedNodes = allSelectedNodes.filter((selectedNode) => selectedNode instanceof instanceOf); + } } // executed from command palette else if (selection.length) { diff --git a/packages/vsce/src/utils/filterUtils.ts b/packages/vsce/src/utils/filterUtils.ts index e7a79381..4a08a742 100644 --- a/packages/vsce/src/utils/filterUtils.ts +++ b/packages/vsce/src/utils/filterUtils.ts @@ -93,6 +93,15 @@ export async function getDefaultTransactionFilter() { return defaultCriteria; } +export async function getDefaultLocalFileFilter() { + let defaultCriteria = `${await workspace.getConfiguration().get("zowe.cics.localFile.filter")}`; + if (!defaultCriteria || defaultCriteria.length === 0) { + await workspace.getConfiguration().update("zowe.cics.localFile.filter", "file=*"); + defaultCriteria = "file=*"; + } + return defaultCriteria; +} + export function toEscapedCriteriaString(activeFilter: string, attribute: string): string { // returns a string as an escaped_criteria_string suitable for the criteria // query parameter for a CMCI request. diff --git a/packages/vsce/src/utils/iconUtils.ts b/packages/vsce/src/utils/iconUtils.ts index d3a1adaf..04de6a58 100644 --- a/packages/vsce/src/utils/iconUtils.ts +++ b/packages/vsce/src/utils/iconUtils.ts @@ -11,7 +11,7 @@ import { join } from "path"; -export function getIconFilePathFromName(iconFileName: string): { light: string; dark: string } { +export function getIconFilePathFromName(iconFileName: string): { light: string; dark: string; } { return { // We bundle the extension into a single `dist/extension.js` // `__dirname/../resources/imgs === `/path/to/dist/../resources/imgs` @@ -27,10 +27,13 @@ export function getFolderIcon(open: boolean = true) { export function getIconRootName(resourceType: string, resourceTreeItem: any) { switch (resourceType) { case "PROGRAM": + case "CICSProgram": return resourceTreeItem.status === "DISABLED" ? "program-disabled" : "program"; case "TRANSACTION": + case "CICSLocalTransaction": return resourceTreeItem.status === "DISABLED" ? "local-transaction-disabled" : "local-transaction"; case "LOCAL_FILE": + case "CICSLocalFile": return resourceTreeItem.openstatus === "CLOSED" && resourceTreeItem.enablestatus === "DISABLED" ? "local-file-disabled-closed" : resourceTreeItem.openstatus === "CLOSED" @@ -39,16 +42,18 @@ export function getIconRootName(resourceType: string, resourceTreeItem: any) { ? "local-file-disabled" : "local-file"; case "TASK": + case "CICSTask": return resourceTreeItem.runstatus === "RUNNING" ? "task-running" : resourceTreeItem.runstatus === "SUSPENDED" ? "task-suspended" : "task-dispatched"; case "REGION": + case "CICSRegion": return resourceTreeItem.isActive ? "region" : "region-disabled"; } } export function getIconByStatus(resourceType: string, resourceTreeItem: any) { return getIconFilePathFromName(getIconRootName(resourceType, resourceTreeItem)); -} \ No newline at end of file +} From 87784143221dcb082f7a9526832ad8339aa4c813 Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Fri, 24 Jan 2025 10:03:53 +0000 Subject: [PATCH 02/17] working tasks trees Signed-off-by: Andrew Twydell --- .../commands/clearResourceFilterCommand.ts | 3 - .../src/commands/filterAllResourceCommand.ts | 3 +- .../src/commands/filterResourceCommands.ts | 6 +- packages/vsce/src/commands/inquireProgram.ts | 3 +- .../vsce/src/commands/inquireTransaction.ts | 13 +- .../vsce/src/commands/purgeTaskCommand.ts | 15 +- .../src/commands/showAttributesCommand.ts | 8 +- packages/vsce/src/doc/ILocalFile.ts | 4 + packages/vsce/src/doc/IProgram.ts | 4 + packages/vsce/src/doc/IResourceTypes.ts | 30 ++- packages/vsce/src/doc/ITask.ts | 33 +++ packages/vsce/src/doc/ITransaction.ts | 4 + .../CICSCombinedTrees/CICSCombinedTaskTree.ts | 203 ------------------ packages/vsce/src/trees/CICSPlexTree.ts | 3 +- packages/vsce/src/trees/CICSRegionTree.ts | 5 +- packages/vsce/src/trees/CICSTaskTree.ts | 102 --------- .../src/trees/treeItems/CICSTaskTreeItem.ts | 42 ---- packages/vsce/src/utils/filterUtils.ts | 9 + 18 files changed, 103 insertions(+), 387 deletions(-) create mode 100644 packages/vsce/src/doc/ITask.ts delete mode 100644 packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedTaskTree.ts delete mode 100644 packages/vsce/src/trees/CICSTaskTree.ts delete mode 100644 packages/vsce/src/trees/treeItems/CICSTaskTreeItem.ts diff --git a/packages/vsce/src/commands/clearResourceFilterCommand.ts b/packages/vsce/src/commands/clearResourceFilterCommand.ts index 07ac4c3d..76039874 100644 --- a/packages/vsce/src/commands/clearResourceFilterCommand.ts +++ b/packages/vsce/src/commands/clearResourceFilterCommand.ts @@ -12,7 +12,6 @@ import { commands, ProgressLocation, TreeView, window } from "vscode"; import { CICSLibraryTree } from "../trees/CICSLibraryTree"; import { CICSResourceTree } from "../trees/CICSResourceTree"; -import { CICSTaskTree } from "../trees/CICSTaskTree"; import { CICSTree } from "../trees/CICSTree"; import { CICSLibraryDatasets } from "../trees/treeItems/CICSLibraryDatasets"; import { CICSLibraryTreeItem } from "../trees/treeItems/CICSLibraryTreeItem"; @@ -25,7 +24,6 @@ import { findSelectedNodes } from "../utils/commandUtils"; export function getClearResourceFilterCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.clearFilter", async (node) => { const allSelectedResourceTreeNodes = findSelectedNodes(treeview, CICSResourceTree, node); - const allSelectedTaskTreeNodes = findSelectedNodes(treeview, CICSTaskTree, node); const allSelectedLibraryTreeNodes = findSelectedNodes(treeview, CICSLibraryTree, node); const allSelectedDatasetTreeNodes = findSelectedNodes(treeview, CICSLibraryTreeItem, node); const allSelectedDatasetProgramTreeNodes = findSelectedNodes(treeview, CICSLibraryDatasets, node); @@ -35,7 +33,6 @@ export function getClearResourceFilterCommand(tree: CICSTree, treeview: TreeView const allSelectedPipelineTreeNodes = findSelectedNodes(treeview, CICSPipelineTree, node); const allSelectedNodes = [ ...allSelectedResourceTreeNodes, - ...allSelectedTaskTreeNodes, ...allSelectedLibraryTreeNodes, ...allSelectedDatasetTreeNodes, ...allSelectedDatasetProgramTreeNodes, diff --git a/packages/vsce/src/commands/filterAllResourceCommand.ts b/packages/vsce/src/commands/filterAllResourceCommand.ts index 7f96d716..c3619281 100644 --- a/packages/vsce/src/commands/filterAllResourceCommand.ts +++ b/packages/vsce/src/commands/filterAllResourceCommand.ts @@ -13,7 +13,6 @@ import { commands, TreeView, window } from "vscode"; import { CICSCombinedLibraryTree } from "../trees/CICSCombinedTrees/CICSCombinedLibraryTree"; import { CICSCombinedPipelineTree } from "../trees/CICSCombinedTrees/CICSCombinedPipelineTree"; import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; -import { CICSCombinedTaskTree } from "../trees/CICSCombinedTrees/CICSCombinedTaskTree"; import { CICSCombinedTCPIPServiceTree } from "../trees/CICSCombinedTrees/CICSCombinedTCPIPServiceTree"; import { CICSCombinedURIMapTree } from "../trees/CICSCombinedTrees/CICSCombinedURIMapTree"; import { CICSCombinedWebServiceTree } from "../trees/CICSCombinedTrees/CICSCombinedWebServiceTree"; @@ -51,7 +50,7 @@ export function getFilterAllTasksCommand(tree: CICSTree, treeview: TreeView let chosenNode; if (node) { chosenNode = node; - } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSCombinedTaskTree) { + } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSCombinedResourceTree) { chosenNode = selection[selection.length - 1]; } else { window.showErrorMessage("No CICS 'All Tasks' tree selected"); diff --git a/packages/vsce/src/commands/filterResourceCommands.ts b/packages/vsce/src/commands/filterResourceCommands.ts index 1e6ec83f..3b8edd8f 100644 --- a/packages/vsce/src/commands/filterResourceCommands.ts +++ b/packages/vsce/src/commands/filterResourceCommands.ts @@ -12,10 +12,10 @@ import { commands, ProgressLocation, TreeView, window } from "vscode"; import { ILocalFile } from "../doc/ILocalFile"; import { IProgram } from "../doc/IProgram"; +import { ITask } from "../doc/ITask"; import { ITransaction } from "../doc/ITransaction"; import { CICSLibraryTree } from "../trees/CICSLibraryTree"; import { CICSResourceTree } from "../trees/CICSResourceTree"; -import { CICSTaskTree } from "../trees/CICSTaskTree"; import { CICSTree } from "../trees/CICSTree"; import { CICSLibraryDatasets } from "../trees/treeItems/CICSLibraryDatasets"; import { CICSLibraryTreeItem } from "../trees/treeItems/CICSLibraryTreeItem"; @@ -199,10 +199,10 @@ export function getFilterLocalFilesCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.filterTasks", async (node) => { const selection = treeview.selection; - let chosenNode: CICSTaskTree; + let chosenNode: CICSResourceTree; if (node) { chosenNode = node; - } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSTaskTree) { + } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSResourceTree) { chosenNode = selection[selection.length - 1]; } else { window.showErrorMessage("No CICS task tree selected"); diff --git a/packages/vsce/src/commands/inquireProgram.ts b/packages/vsce/src/commands/inquireProgram.ts index 9906b66b..a018d68c 100644 --- a/packages/vsce/src/commands/inquireProgram.ts +++ b/packages/vsce/src/commands/inquireProgram.ts @@ -19,7 +19,6 @@ import { CICSPlexTree } from "../trees/CICSPlexTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSResourceTree } from "../trees/CICSResourceTree"; -import { CICSTaskTree } from "../trees/CICSTaskTree"; import { CICSTree } from "../trees/CICSTree"; import { CICSWebTree } from "../trees/CICSWebTree"; import { CICSResourceTreeItem } from "../trees/treeItems/CICSResourceTreeItem"; @@ -37,7 +36,7 @@ export function getInquireProgramCommand(tree: CICSTree, treeview: TreeView window.showErrorMessage("No CICS Transaction selected"); return; } - let resourceFolders: (CICSResourceTree | CICSTaskTree | CICSLibraryTree | CICSWebTree)[]; + let resourceFolders: (CICSResourceTree | CICSLibraryTree | CICSWebTree)[]; if (allSelectedNodes[0].getParent() instanceof CICSCombinedResourceTree) { const cicsPlex: CICSPlexTree = allSelectedNodes[0].getParent().getParent(); const regionsContainer = cicsPlex.getChildren().filter((child) => child instanceof CICSRegionsContainer)[0]; diff --git a/packages/vsce/src/commands/inquireTransaction.ts b/packages/vsce/src/commands/inquireTransaction.ts index 7368cfa2..261976c4 100644 --- a/packages/vsce/src/commands/inquireTransaction.ts +++ b/packages/vsce/src/commands/inquireTransaction.ts @@ -10,14 +10,15 @@ */ import { commands, TreeView, window } from "vscode"; +import { ITask } from "../doc/ITask"; import { ITransaction } from "../doc/ITransaction"; -import { CICSCombinedTaskTree } from "../trees/CICSCombinedTrees/CICSCombinedTaskTree"; +import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSPlexTree } from "../trees/CICSPlexTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSResourceTree } from "../trees/CICSResourceTree"; import { CICSTree } from "../trees/CICSTree"; -import { CICSTaskTreeItem } from "../trees/treeItems/CICSTaskTreeItem"; +import { CICSResourceTreeItem } from "../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes } from "../utils/commandUtils"; /** @@ -25,13 +26,13 @@ import { findSelectedNodes } from "../utils/commandUtils"; */ export function getInquireTransactionCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.inquireTransaction", async (node) => { - const allSelectedNodes: CICSTaskTreeItem[] = findSelectedNodes(treeview, CICSTaskTreeItem, node) as CICSTaskTreeItem[]; + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, node) as CICSResourceTreeItem[]; if (!allSelectedNodes || !allSelectedNodes.length) { window.showErrorMessage("No CICS Task selected"); return; } let resourceFolders; - if (allSelectedNodes[0].getParent() instanceof CICSCombinedTaskTree) { + if (allSelectedNodes[0].getParent() instanceof CICSCombinedResourceTree) { const cicsPlex: CICSPlexTree = allSelectedNodes[0].getParent().getParent(); const regionsContainer = cicsPlex.getChildren().filter((child) => child instanceof CICSRegionsContainer)[0]; //@ts-ignore @@ -44,7 +45,7 @@ export function getInquireTransactionCommand(tree: CICSTree, treeview: TreeView< } const tranids = []; for (const localTaskTreeItem of allSelectedNodes) { - const task = localTaskTreeItem.task; + const task = localTaskTreeItem.resource; tranids.push(task["tranid"]); } // Comma separated filter @@ -55,7 +56,7 @@ export function getInquireTransactionCommand(tree: CICSTree, treeview: TreeView< await localTransactionTree.loadContents(); tree._onDidChangeTreeData.fire(undefined); - if (allSelectedNodes[0].getParent() instanceof CICSCombinedTaskTree) { + if (allSelectedNodes[0].getParent() instanceof CICSCombinedResourceTree) { const nodeToExpand: any = localTransactionTree; // TODO: Ideal situation would be to do await treeview.reveal(nodeToExpand), however this is resulting in an error, diff --git a/packages/vsce/src/commands/purgeTaskCommand.ts b/packages/vsce/src/commands/purgeTaskCommand.ts index 2e0c060d..6852735e 100644 --- a/packages/vsce/src/commands/purgeTaskCommand.ts +++ b/packages/vsce/src/commands/purgeTaskCommand.ts @@ -12,11 +12,12 @@ import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { CICSCombinedTaskTree } from "../trees/CICSCombinedTrees/CICSCombinedTaskTree"; +import { ITask } from "../doc/ITask"; +import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSTree } from "../trees/CICSTree"; -import { CICSTaskTreeItem } from "../trees/treeItems/CICSTaskTreeItem"; +import { CICSResourceTreeItem } from "../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes, splitCmciErrorMessage } from "../utils/commandUtils"; import constants from "../utils/constants"; import { ICommandParams } from "./ICommandParams"; @@ -29,7 +30,7 @@ import { ICommandParams } from "./ICommandParams"; */ export function getPurgeTaskCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.purgeTask", async (clickedNode) => { - const allSelectedNodes: CICSTaskTreeItem[] = findSelectedNodes(treeview, CICSTaskTreeItem, clickedNode); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, clickedNode); if (!allSelectedNodes || !allSelectedNodes.length) { window.showErrorMessage("No CICS task selected"); return; @@ -58,7 +59,7 @@ export function getPurgeTaskCommand(tree: CICSTree, treeview: TreeView) { await purgeTask( currentNode.parentRegion.parentSession.session, { - name: currentNode.task.task, + name: currentNode.resource.task, regionName: currentNode.parentRegion.region.applid, cicsPlex: currentNode.parentRegion.parentPlex ? currentNode.parentRegion.parentPlex.getPlexName() : undefined, }, @@ -73,7 +74,7 @@ export function getPurgeTaskCommand(tree: CICSTree, treeview: TreeView) { // @ts-ignore const [_resp, resp2, respAlt, eibfnAlt] = splitCmciErrorMessage(error.mMessage); window.showErrorMessage( - `Perform ${purgeType?.toUpperCase()} on CICSTask "${allSelectedNodes[parseInt(index)].task.task + `Perform ${purgeType?.toUpperCase()} on CICSTask "${allSelectedNodes[parseInt(index)].resource.task }" failed: EXEC CICS command (${eibfnAlt}) RESP(${respAlt}) RESP2(${resp2})` ); } else { @@ -98,8 +99,8 @@ export function getPurgeTaskCommand(tree: CICSTree, treeview: TreeView) { // same task item in a CICS combined task tree of the same profile if (parentRegion.parentPlex && parentRegion.parentPlex.children.some((child) => child instanceof CICSRegionsContainer)) { const allTaskTreeTree = parentRegion.parentPlex.children.filter((child: any) => - child.contextValue.includes("cicscombinedlocalfiletree.") - )[0] as CICSCombinedTaskTree; + child.contextValue.includes("cicscombinedtasktree.") + )[0] as CICSCombinedResourceTree; // If allTasksTree is open if (allTaskTreeTree.collapsibleState === 2 && allTaskTreeTree.getActiveFilter()) { await allTaskTreeTree.loadContents(tree); diff --git a/packages/vsce/src/commands/showAttributesCommand.ts b/packages/vsce/src/commands/showAttributesCommand.ts index 886ac132..032111f4 100644 --- a/packages/vsce/src/commands/showAttributesCommand.ts +++ b/packages/vsce/src/commands/showAttributesCommand.ts @@ -12,12 +12,12 @@ import { commands, TreeView, WebviewPanel, window } from "vscode"; import { ILocalFile } from "../doc/ILocalFile"; import { IProgram } from "../doc/IProgram"; +import { ITask } from "../doc/ITask"; import { ITransaction } from "../doc/ITransaction"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSLibraryDatasets } from "../trees/treeItems/CICSLibraryDatasets"; import { CICSLibraryTreeItem } from "../trees/treeItems/CICSLibraryTreeItem"; import { CICSResourceTreeItem } from "../trees/treeItems/CICSResourceTreeItem"; -import { CICSTaskTreeItem } from "../trees/treeItems/CICSTaskTreeItem"; import { CICSPipelineTreeItem } from "../trees/treeItems/web/treeItems/CICSPipelineTreeItem"; import { CICSTCPIPServiceTreeItem } from "../trees/treeItems/web/treeItems/CICSTCPIPServiceTreeItem"; import { CICSURIMapTreeItem } from "../trees/treeItems/web/treeItems/CICSURIMapTreeItem"; @@ -150,18 +150,18 @@ export function getShowTransactionAttributesCommand(treeview: TreeView) { ///@@@@@@@@@@@@@@ doesnt fit because actvtyid value is too long - edit css export function getShowTaskAttributesCommand(treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.showTaskAttributes", async (node) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSTaskTreeItem, node); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, node); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS Task selected"); return; } for (const localTaskTreeItem of allSelectedNodes) { - const task = localTaskTreeItem.task; + const task = localTaskTreeItem.resource; const attributeHeadings = Object.keys(task); let webText = `Attribute `; webText += `Value`; for (const heading of attributeHeadings) { - webText += `${heading.toUpperCase()}${task[heading]}`; + webText += `${heading.toUpperCase()}${task[heading as keyof ITask]}`; } webText += ""; diff --git a/packages/vsce/src/doc/ILocalFile.ts b/packages/vsce/src/doc/ILocalFile.ts index 3f71b988..ebc54359 100644 --- a/packages/vsce/src/doc/ILocalFile.ts +++ b/packages/vsce/src/doc/ILocalFile.ts @@ -28,3 +28,7 @@ export const buildLocalFileContext = (localFile: ILocalFile) => { return `cicslocalfile.${localFile.enablestatus.trim().toLowerCase()}.${localFile.openstatus.trim().toLowerCase()}.${localFile.file}`; }; +export const buildLocalFileIconName = (localFile: ILocalFile) => { + return `local-file`; +}; + diff --git a/packages/vsce/src/doc/IProgram.ts b/packages/vsce/src/doc/IProgram.ts index c3b73300..14753fca 100644 --- a/packages/vsce/src/doc/IProgram.ts +++ b/packages/vsce/src/doc/IProgram.ts @@ -23,3 +23,7 @@ export const buildProgramLabel = (program: IProgram) => { export const buildProgramContext = (program: IProgram) => { return `cicsprogram.${program.status.trim().toLowerCase()}.${program.program}`; }; + +export const buildProgramIconName = (program: IProgram) => { + return `program`; +}; diff --git a/packages/vsce/src/doc/IResourceTypes.ts b/packages/vsce/src/doc/IResourceTypes.ts index e6c3d45f..0310cc9b 100644 --- a/packages/vsce/src/doc/IResourceTypes.ts +++ b/packages/vsce/src/doc/IResourceTypes.ts @@ -1,7 +1,8 @@ -import { getDefaultLocalFileFilter, getDefaultProgramFilter, getDefaultTransactionFilter } from "../utils/filterUtils"; -import { buildLocalFileContext, buildLocalFileLabel } from "./ILocalFile"; -import { buildProgramContext, buildProgramLabel } from "./IProgram"; -import { buildTransactionContext, buildTransactionLabel } from "./ITransaction"; +import { getDefaultLocalFileFilter, getDefaultProgramFilter, getDefaultTaskFilter, getDefaultTransactionFilter } from "../utils/filterUtils"; +import { buildLocalFileContext, buildLocalFileIconName, buildLocalFileLabel } from "./ILocalFile"; +import { buildProgramContext, buildProgramIconName, buildProgramLabel } from "./IProgram"; +import { buildTaskContext, buildTaskIconName, buildTaskLabel } from "./ITask"; +import { buildTransactionContext, buildTransactionIconName, buildTransactionLabel } from "./ITransaction"; export interface IResource { } @@ -11,12 +12,12 @@ export interface IResourceMeta { contextPrefix: string; combinedContextPrefix: string; filterAttribute: string; - iconFilePrefix: string; regionNameAttribute: string; primaryKeyAttribute: string; getDefaultFilter: () => Promise; getLabel: (resource: IResource) => string; getContext: (resource: IResource) => string; + getIconName: (resource: IResource) => string; } const resources = { @@ -26,12 +27,12 @@ const resources = { contextPrefix: "cicstreeprogram", combinedContextPrefix: "cicscombinedprogramtree", filterAttribute: "PROGRAM", - iconFilePrefix: "program", regionNameAttribute: "eyu_cicsname", primaryKeyAttribute: "program", getDefaultFilter: getDefaultProgramFilter, getLabel: buildProgramLabel, getContext: buildProgramContext, + getIconName: buildProgramIconName, }, transaction: { humanReadableName: "Transactions", @@ -39,12 +40,12 @@ const resources = { contextPrefix: "cicstreetransaction", combinedContextPrefix: "cicscombinedtransactiontree", filterAttribute: "tranid", - iconFilePrefix: "local-transaction", regionNameAttribute: "eyu_cicsname", primaryKeyAttribute: "tranid", getDefaultFilter: getDefaultTransactionFilter, getLabel: buildTransactionLabel, getContext: buildTransactionContext, + getIconName: buildTransactionIconName, }, localFile: { humanReadableName: "Local Files", @@ -52,12 +53,25 @@ const resources = { contextPrefix: "cicstreelocalfile", combinedContextPrefix: "cicscombinedlocalfiletree", filterAttribute: "file", - iconFilePrefix: "local-file", regionNameAttribute: "eyu_cicsname", primaryKeyAttribute: "file", getDefaultFilter: getDefaultLocalFileFilter, getLabel: buildLocalFileLabel, getContext: buildLocalFileContext, + getIconName: buildLocalFileIconName, + }, + task: { + humanReadableName: "Tasks", + resourceName: "CICSTask", + contextPrefix: "cicstreetask", + combinedContextPrefix: "cicscombinedtasktree", + filterAttribute: "tranid", + regionNameAttribute: "eyu_cicsname", + primaryKeyAttribute: "task", + getDefaultFilter: getDefaultTaskFilter, + getLabel: buildTaskLabel, + getContext: buildTaskContext, + getIconName: buildTaskIconName, }, }; diff --git a/packages/vsce/src/doc/ITask.ts b/packages/vsce/src/doc/ITask.ts new file mode 100644 index 00000000..3e12f615 --- /dev/null +++ b/packages/vsce/src/doc/ITask.ts @@ -0,0 +1,33 @@ +import { IResource } from "./IResourceTypes"; + + +export interface ITask extends IResource { + task: string; + runstatus: string; + tranid: string; +} + +export const buildTaskLabel = (task: ITask) => { + + let label = `${task.task} - ${task.tranid}`; + + if (task.runstatus !== "SUSPENDED") { + label += ` (${task.runstatus})`; + } + + return label; +}; + +export const buildTaskContext = (task: ITask) => { + return `cicstask.${task.task}`; +}; + +export const buildTaskIconName = (task: ITask) => { + if (task.runstatus.trim().toUpperCase() === "RUNNING") { + return `task-running`; + } else if (task.runstatus.trim().toUpperCase() === "SUSPENDED") { + return `task-suspended`; + } + return `task-dispatched`; +} + diff --git a/packages/vsce/src/doc/ITransaction.ts b/packages/vsce/src/doc/ITransaction.ts index 3eca4a45..2d18ae92 100644 --- a/packages/vsce/src/doc/ITransaction.ts +++ b/packages/vsce/src/doc/ITransaction.ts @@ -21,3 +21,7 @@ export const buildTransactionLabel = (transaction: ITransaction) => { export const buildTransactionContext = (transaction: ITransaction) => { return `cicstransaction.${transaction.status.toLowerCase()}.${transaction.tranid}`; }; + +export const buildTransactionIconName = (transaction: ITransaction) => { + return `local-transaction`; +}; diff --git a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedTaskTree.ts b/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedTaskTree.ts deleted file mode 100644 index ca7a638d..00000000 --- a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedTaskTree.ts +++ /dev/null @@ -1,203 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { ProgressLocation, TreeItem, TreeItemCollapsibleState, window, workspace } from "vscode"; -import { toEscapedCriteriaString } from "../../utils/filterUtils"; -import { ProfileManagement } from "../../utils/profileManagement"; -import { CICSPlexTree } from "../CICSPlexTree"; -import { CICSRegionsContainer } from "../CICSRegionsContainer"; -import { CICSRegionTree } from "../CICSRegionTree"; -import { CICSTree } from "../CICSTree"; -import { ViewMore } from "../treeItems/utils/ViewMore"; -import { TextTreeItem } from "../treeItems/utils/TextTreeItem"; -import { getFolderIcon } from "../../utils/iconUtils"; -import { CICSTaskTreeItem } from "../treeItems/CICSTaskTreeItem"; - -export class CICSCombinedTaskTree extends TreeItem { - children: (CICSTaskTreeItem | ViewMore)[] | [TextTreeItem] | null; - parentPlex: CICSPlexTree; - activeFilter: string | undefined; - currentCount: number; - incrementCount: number; - constant: string; - - constructor( - parentPlex: CICSPlexTree, - public iconPath = getFolderIcon(false), - ) { - super("All Tasks", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicscombinedtasktree.`; - this.parentPlex = parentPlex; - this.children = [new TextTreeItem("Use the search button to display tasks", "applyfiltertext.")]; - this.activeFilter = undefined; - this.currentCount = 0; - this.incrementCount = +`${workspace.getConfiguration().get("zowe.cics.allTasks.recordCountIncrement")}`; - this.constant = "CICSTask"; - } - - public async loadContents(tree: CICSTree) { - await window.withProgress( - { - title: "Loading Task", - location: ProgressLocation.Notification, - cancellable: true, - }, - async (_, token) => { - token.onCancellationRequested(() => {}); - try { - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "tranid"); - } - let count; - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - criteria, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - const recordsCount = cacheTokenInfo.recordCount; - if (recordsCount) { - let allTasks; - if (recordsCount <= this.incrementCount) { - allTasks = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - recordsCount, - ); - } else { - allTasks = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - this.incrementCount, - ); - count = recordsCount; - } - this.addTasksUtil([], allTasks, count); - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - } else { - this.children = []; - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - window.showInformationMessage(`No tasks found`); - this.label = `All Tasks${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${recordsCount}]`; - } - } - } catch (error) { - window.showErrorMessage( - `Something went wrong when fetching tasks - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace(/(\\n\t|\\n|\\t)/gm, " ")}`, - ); - } - }, - ); - } - - /** - * Add tasks as children to the combined task tree - */ - public addTasksUtil(newChildren: (CICSTaskTreeItem | ViewMore)[], allTasks: any, count: number | undefined) { - for (const task of allTasks) { - const regionsContainer = this.parentPlex.children.filter((child) => child instanceof CICSRegionsContainer)?.[0]; - if (regionsContainer == null) { - continue; - } - const parentRegion = regionsContainer - .getChildren()! - .filter((child) => child instanceof CICSRegionTree && child.getRegionName() === task.eyu_cicsname)?.[0] as CICSRegionTree; - const taskTree = new CICSTaskTreeItem(task, parentRegion, this); - // Show run status if run status isn't SUSPENDED (assuming SUSPENDED is default runstatus) - taskTree.setLabel( - taskTree.label - .toString() - .replace(task.task, `${task.task} - ${task.tranid} (${task.eyu_cicsname})${task.runstatus !== "SUSPENDED" ? ` (${task.runstatus})` : ""}`), - ); - newChildren.push(taskTree); - } - if (!count) { - count = newChildren.length; - } - this.currentCount = newChildren.length; - this.label = `All Tasks ${this.activeFilter ? `(${this.activeFilter}) ` : " "}[${this.currentCount} of ${count}]`; - if (count !== this.currentCount) { - newChildren.push(new ViewMore(this, Math.min(this.incrementCount, count - this.currentCount))); - } - this.children = newChildren; - } - - public async addMoreCachedResources(tree: CICSTree) { - await window.withProgress( - { - title: "Loading more tasks", - location: ProgressLocation.Notification, - cancellable: false, - }, - async () => { - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - // record count may have updated - const recordsCount = cacheTokenInfo.recordCount; - const count = recordsCount; - const allTasks = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - this.currentCount + 1, - this.incrementCount, - ); - if (allTasks) { - // @ts-ignore - this.addTasksUtil(this.getChildren() ? this.getChildren().filter((child) => child instanceof CICSTaskTreeItem) : [], allTasks, count); - tree._onDidChangeTreeData.fire(undefined); - } - } - }, - ); - } - - public clearFilter() { - this.activeFilter = undefined; - this.label = `All Tasks`; - this.contextValue = `cicscombinedtasktree.unfiltered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.label = `All Tasks (${this.activeFilter})`; - this.contextValue = `cicscombinedtasktree.filtered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getChildren() { - return this.children ? this.children.filter((child) => !(child instanceof TextTreeItem)) : []; - } - - public getActiveFilter() { - return this.activeFilter; - } - - public getParent() { - // direct parent - return this.parentPlex; - } -} diff --git a/packages/vsce/src/trees/CICSPlexTree.ts b/packages/vsce/src/trees/CICSPlexTree.ts index 047fd3ed..abe3c745 100644 --- a/packages/vsce/src/trees/CICSPlexTree.ts +++ b/packages/vsce/src/trees/CICSPlexTree.ts @@ -30,7 +30,6 @@ export class CICSPlexTree extends TreeItem { children: ( | CICSRegionTree | CICSCombinedResourceTree - | CICSCombinedTaskTree | CICSCombinedLibraryTree | CICSRegionsContainer | CICSCombinedTCPIPServiceTree @@ -159,7 +158,7 @@ export class CICSPlexTree extends TreeItem { this.children.push(new CICSCombinedResourceTree(this, resources.program)); this.children.push(new CICSCombinedResourceTree(this, resources.transaction)); this.children.push(new CICSCombinedResourceTree(this, resources.localFile)); - this.children.push(new CICSCombinedTaskTree(this)); + this.children.push(new CICSCombinedResourceTree(this, resources.task)); this.children.push(new CICSCombinedLibraryTree(this)); this.children.push(new CICSCombinedTCPIPServiceTree(this)); this.children.push(new CICSCombinedURIMapTree(this)); diff --git a/packages/vsce/src/trees/CICSRegionTree.ts b/packages/vsce/src/trees/CICSRegionTree.ts index 322da245..80c2a04f 100644 --- a/packages/vsce/src/trees/CICSRegionTree.ts +++ b/packages/vsce/src/trees/CICSRegionTree.ts @@ -13,7 +13,6 @@ import { TreeItemCollapsibleState, TreeItem } from "vscode"; import { CICSSessionTree } from "./CICSSessionTree"; import { CICSPlexTree } from "./CICSPlexTree"; import { getIconByStatus } from "../utils/iconUtils"; -import { CICSTaskTree } from "./CICSTaskTree"; import { IRegion } from "../doc/IRegion"; import resources, { IResource } from "../doc/IResourceTypes"; import { CICSLibraryTree } from "./CICSLibraryTree"; @@ -21,7 +20,7 @@ import { CICSResourceTree } from "./CICSResourceTree"; import { CICSWebTree } from "./CICSWebTree"; export class CICSRegionTree extends TreeItem { - children: (CICSResourceTree | CICSTaskTree | CICSLibraryTree | CICSWebTree)[] | null; + children: (CICSResourceTree | CICSLibraryTree | CICSWebTree)[] | null; region: IRegion; parentSession: CICSSessionTree; parentPlex: CICSPlexTree | undefined; @@ -55,7 +54,7 @@ export class CICSRegionTree extends TreeItem { new CICSResourceTree(resources.program, this), new CICSResourceTree(resources.transaction, this), new CICSResourceTree(resources.localFile, this), - new CICSTaskTree(this), + new CICSResourceTree(resources.task, this), new CICSLibraryTree(this), new CICSWebTree(this), ]; diff --git a/packages/vsce/src/trees/CICSTaskTree.ts b/packages/vsce/src/trees/CICSTaskTree.ts deleted file mode 100644 index aa74d5ca..00000000 --- a/packages/vsce/src/trees/CICSTaskTree.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem, window, workspace } from "vscode"; -import { CICSRegionTree } from "./CICSRegionTree"; -import { getResource } from "@zowe/cics-for-zowe-sdk"; -import { toEscapedCriteriaString } from "../utils/filterUtils"; -import { getFolderIcon } from "../utils/iconUtils"; -import { CICSTaskTreeItem } from "./treeItems/CICSTaskTreeItem"; -import { toArray } from "../utils/commandUtils"; - -export class CICSTaskTree extends TreeItem { - children: CICSTaskTreeItem[] = []; - parentRegion: CICSRegionTree; - activeTransactionFilter: string | undefined = undefined; - - constructor( - parentRegion: CICSRegionTree, - public iconPath = getFolderIcon(false), - ) { - super("Tasks", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicstreetask.${this.activeTransactionFilter ? "filtered" : "unfiltered"}.tasks`; - this.parentRegion = parentRegion; - } - - public addTask(task: CICSTaskTreeItem) { - this.children.push(task); - } - - public async loadContents() { - let defaultCriteria = `${await workspace.getConfiguration().get("zowe.cics.tasks.filter")}`; - if (!defaultCriteria || defaultCriteria.length === 0) { - await workspace.getConfiguration().update("zowe.cics.tasks.filter", "(TRANID=*)"); - defaultCriteria = "(TRANID=*)"; - } - let criteria; - if (this.activeTransactionFilter) { - criteria = toEscapedCriteriaString(this.activeTransactionFilter, "TRANID"); - } else { - criteria = defaultCriteria; - } - this.children = []; - try { - const taskResponse = await getResource(this.parentRegion.parentSession.session, { - name: "CICSTASK", - regionName: this.parentRegion.getRegionName(), - cicsPlex: this.parentRegion.parentPlex ? this.parentRegion.parentPlex.getPlexName() : undefined, - criteria: criteria, - }); - - const tasksArray = toArray(taskResponse.response.records.cicstask); - this.label = `Tasks${this.activeTransactionFilter ? ` (${this.activeTransactionFilter}) ` : " "}[${tasksArray.length}]`; - for (const task of tasksArray) { - const newTaskItem = new CICSTaskTreeItem(task, this.parentRegion, this); - // Show run status if run status isn't SUSPENDED (assuming SUSPENDED is default runstatus) - newTaskItem.setLabel( - newTaskItem.label - .toString() - .replace(task.task, `${task.task} - ${task.tranid}${task.runstatus !== "SUSPENDED" ? ` (${task.runstatus})` : ""}`), - ); - this.addTask(newTaskItem); - } - this.iconPath = getFolderIcon(true); - } catch (error) { - if (error.mMessage!.includes("exceeded a resource limit")) { - window.showErrorMessage(`Resource Limit Exceeded - Set a task filter to narrow search`); - } else if (this.children.length === 0) { - window.showInformationMessage(`No tasks found`); - this.label = `Tasks${this.activeTransactionFilter ? ` (${this.activeTransactionFilter}) ` : " "}[0]`; - this.iconPath = getFolderIcon(true); - } else { - window.showErrorMessage( - `Something went wrong when fetching tasks - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace(/(\\n\t|\\n|\\t)/gm, " ")}`, - ); - } - } - } - - public clearFilter() { - this.activeTransactionFilter = undefined; - this.contextValue = `cicstreetask.${this.activeTransactionFilter ? "filtered" : "unfiltered"}.tasks`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeTransactionFilter = newFilter; - this.contextValue = `cicstreetask.${this.activeTransactionFilter ? "filtered" : "unfiltered"}.tasks`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getFilter() { - return this.activeTransactionFilter; - } -} diff --git a/packages/vsce/src/trees/treeItems/CICSTaskTreeItem.ts b/packages/vsce/src/trees/treeItems/CICSTaskTreeItem.ts deleted file mode 100644 index 117112cd..00000000 --- a/packages/vsce/src/trees/treeItems/CICSTaskTreeItem.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem } from "vscode"; -import { CICSRegionTree } from "../CICSRegionTree"; -import { getIconByStatus } from "../../utils/iconUtils"; - -export class CICSTaskTreeItem extends TreeItem { - task: any; - parentRegion: CICSRegionTree; - directParent: any; - - constructor( - task: any, - parentRegion: CICSRegionTree, - directParent: any, - public readonly iconPath = getIconByStatus("TASK", task) - ) { - super(`${task.task}`, TreeItemCollapsibleState.None); - - this.task = task; - this.parentRegion = parentRegion; - this.contextValue = `cicstask.`; - this.directParent = directParent; - } - - public setLabel(newLabel: string) { - this.label = newLabel; - } - - public getParent() { - return this.directParent; - } -} diff --git a/packages/vsce/src/utils/filterUtils.ts b/packages/vsce/src/utils/filterUtils.ts index 4a08a742..fe3d1a3d 100644 --- a/packages/vsce/src/utils/filterUtils.ts +++ b/packages/vsce/src/utils/filterUtils.ts @@ -102,6 +102,15 @@ export async function getDefaultLocalFileFilter() { return defaultCriteria; } +export async function getDefaultTaskFilter() { + let defaultCriteria = `${await workspace.getConfiguration().get("zowe.cics.tasks.filter")}`; + if (!defaultCriteria || defaultCriteria.length === 0) { + await workspace.getConfiguration().update("zowe.cics.localFile.filter", "(TRANID=*)"); + defaultCriteria = "(TRANID=*)"; + } + return defaultCriteria; +} + export function toEscapedCriteriaString(activeFilter: string, attribute: string): string { // returns a string as an escaped_criteria_string suitable for the criteria // query parameter for a CMCI request. From ac3fc6867b589cb7644e5d26dc47c1bab2997450 Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Fri, 24 Jan 2025 11:42:23 +0000 Subject: [PATCH 03/17] add resource interfaces to SDK Signed-off-by: Andrew Twydell --- packages/sdk/src/doc/index.ts | 4 +++- packages/sdk/src/doc/resources/ILocalFile.ts | 8 ++++++++ packages/sdk/src/doc/resources/IProgram.ts | 7 +++++++ packages/sdk/src/doc/resources/IRegion.ts | 9 +++++++++ packages/sdk/src/doc/resources/IResource.ts | 4 ++++ packages/sdk/src/doc/resources/ITask.ts | 7 +++++++ packages/sdk/src/doc/resources/ITransaction.ts | 7 +++++++ packages/sdk/src/doc/resources/index.ts | 9 +++++++++ 8 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 packages/sdk/src/doc/resources/ILocalFile.ts create mode 100644 packages/sdk/src/doc/resources/IProgram.ts create mode 100644 packages/sdk/src/doc/resources/IRegion.ts create mode 100644 packages/sdk/src/doc/resources/IResource.ts create mode 100644 packages/sdk/src/doc/resources/ITask.ts create mode 100644 packages/sdk/src/doc/resources/ITransaction.ts create mode 100644 packages/sdk/src/doc/resources/index.ts diff --git a/packages/sdk/src/doc/index.ts b/packages/sdk/src/doc/index.ts index ea755c8b..91710ae7 100644 --- a/packages/sdk/src/doc/index.ts +++ b/packages/sdk/src/doc/index.ts @@ -14,6 +14,7 @@ export * from "./ICMCIApiResponse"; export * from "./ICMCIRequestOptions"; export * from "./ICMCIResponseResultSummary"; export * from "./ICSDGroupParms"; +export * from "./IGetResourceUriOptions"; export * from "./IProgramParms"; export * from "./IResourceParms"; export * from "./IResourceQueryParms"; @@ -21,4 +22,5 @@ export * from "./IResultCacheParms"; export * from "./ITransactionParms"; export * from "./IURIMapParms"; export * from "./IWebServiceParms"; -export * from "./IGetResourceUriOptions"; +export * from "./resources"; + diff --git a/packages/sdk/src/doc/resources/ILocalFile.ts b/packages/sdk/src/doc/resources/ILocalFile.ts new file mode 100644 index 00000000..0a4d1a37 --- /dev/null +++ b/packages/sdk/src/doc/resources/ILocalFile.ts @@ -0,0 +1,8 @@ +import { IResource } from "./IResource"; + +export interface ILocalFile extends IResource { + file: string; + enablestatus: string; + openstatus: string; +} + diff --git a/packages/sdk/src/doc/resources/IProgram.ts b/packages/sdk/src/doc/resources/IProgram.ts new file mode 100644 index 00000000..fa84b990 --- /dev/null +++ b/packages/sdk/src/doc/resources/IProgram.ts @@ -0,0 +1,7 @@ +import { IResource } from "./IResource"; + +export interface IProgram extends IResource { + program: string; + status: string; + newcopycnt?: string; +} diff --git a/packages/sdk/src/doc/resources/IRegion.ts b/packages/sdk/src/doc/resources/IRegion.ts new file mode 100644 index 00000000..7af4da32 --- /dev/null +++ b/packages/sdk/src/doc/resources/IRegion.ts @@ -0,0 +1,9 @@ +import { IResource } from "./IResource"; + +export interface IRegion extends IResource { + applid: string; + cicsstate: string; + cicsstatus: string; + cicsname: string; +} + diff --git a/packages/sdk/src/doc/resources/IResource.ts b/packages/sdk/src/doc/resources/IResource.ts new file mode 100644 index 00000000..9d874c01 --- /dev/null +++ b/packages/sdk/src/doc/resources/IResource.ts @@ -0,0 +1,4 @@ + +export interface IResource { + eyu_cicsname: string; +} diff --git a/packages/sdk/src/doc/resources/ITask.ts b/packages/sdk/src/doc/resources/ITask.ts new file mode 100644 index 00000000..124d8116 --- /dev/null +++ b/packages/sdk/src/doc/resources/ITask.ts @@ -0,0 +1,7 @@ +import { IResource } from "./IResource"; + +export interface ITask extends IResource { + task: string; + runstatus: string; + tranid: string; +} diff --git a/packages/sdk/src/doc/resources/ITransaction.ts b/packages/sdk/src/doc/resources/ITransaction.ts new file mode 100644 index 00000000..328ca998 --- /dev/null +++ b/packages/sdk/src/doc/resources/ITransaction.ts @@ -0,0 +1,7 @@ +import { IResource } from "./IResource"; + +export interface ITransaction extends IResource { + tranid: string; + program: string; + status: string; +} diff --git a/packages/sdk/src/doc/resources/index.ts b/packages/sdk/src/doc/resources/index.ts new file mode 100644 index 00000000..8e8b444f --- /dev/null +++ b/packages/sdk/src/doc/resources/index.ts @@ -0,0 +1,9 @@ + + +export * from './ILocalFile'; +export * from './IProgram'; +export * from './IRegion'; +export * from './IResource'; +export * from './ITask'; +export * from './ITransaction'; + From 543acdadc33af7cfac250febd131fbf4d1f99496 Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Fri, 24 Jan 2025 11:43:12 +0000 Subject: [PATCH 04/17] use interfaces from sdk, resource meta interface Signed-off-by: Andrew Twydell --- .../trees/CICSProgramTree.unit.test.ts | 21 ++--- .../src/commands/closeLocalFileCommand.ts | 3 +- .../disableLocalFileCommand.ts | 3 +- .../disableCommands/disableProgramCommand.ts | 3 +- .../disableTransactionCommand.ts | 3 +- .../enableCommands/enableLocalFileCommand.ts | 3 +- .../enableCommands/enableProgramCommand.ts | 3 +- .../enableTransactionCommand.ts | 3 +- .../src/commands/filterResourceCommands.ts | 5 +- packages/vsce/src/commands/index.ts | 2 +- packages/vsce/src/commands/inquireProgram.ts | 4 +- .../vsce/src/commands/inquireTransaction.ts | 3 +- packages/vsce/src/commands/newCopyCommand.ts | 3 +- .../vsce/src/commands/openLocalFileCommand.ts | 3 +- packages/vsce/src/commands/phaseInCommand.ts | 3 +- .../vsce/src/commands/purgeTaskCommand.ts | 3 +- .../src/commands/showAttributesCommand.ts | 5 +- packages/vsce/src/doc/ILocalFile.ts | 34 -------- packages/vsce/src/doc/IProgram.ts | 29 ------- packages/vsce/src/doc/IRegion.ts | 10 --- packages/vsce/src/doc/IResourceMeta.ts | 18 +++++ packages/vsce/src/doc/IResourceTypes.ts | 78 ------------------- packages/vsce/src/doc/ITask.ts | 33 -------- packages/vsce/src/doc/ITransaction.ts | 27 ------- packages/vsce/src/doc/LocalFileMeta.ts | 45 +++++++++++ packages/vsce/src/doc/ProgramMeta.ts | 41 ++++++++++ packages/vsce/src/doc/TaskMeta.ts | 44 +++++++++++ packages/vsce/src/doc/TransactionMeta.ts | 39 ++++++++++ packages/vsce/src/doc/index.ts | 7 ++ .../CICSCombinedResourceTree.ts | 11 +-- packages/vsce/src/trees/CICSPlexTree.ts | 13 ++-- packages/vsce/src/trees/CICSRegionTree.ts | 12 +-- packages/vsce/src/trees/CICSResourceTree.ts | 8 +- .../trees/treeItems/CICSLibraryDatasets.ts | 7 +- .../trees/treeItems/CICSResourceTreeItem.ts | 9 ++- packages/vsce/src/utils/constants.ts | 19 +++++ packages/vsce/src/utils/filterUtils.ts | 40 +--------- 37 files changed, 274 insertions(+), 323 deletions(-) delete mode 100644 packages/vsce/src/doc/ILocalFile.ts delete mode 100644 packages/vsce/src/doc/IProgram.ts delete mode 100644 packages/vsce/src/doc/IRegion.ts create mode 100644 packages/vsce/src/doc/IResourceMeta.ts delete mode 100644 packages/vsce/src/doc/IResourceTypes.ts delete mode 100644 packages/vsce/src/doc/ITask.ts delete mode 100644 packages/vsce/src/doc/ITransaction.ts create mode 100644 packages/vsce/src/doc/LocalFileMeta.ts create mode 100644 packages/vsce/src/doc/ProgramMeta.ts create mode 100644 packages/vsce/src/doc/TaskMeta.ts create mode 100644 packages/vsce/src/doc/TransactionMeta.ts create mode 100644 packages/vsce/src/doc/index.ts diff --git a/packages/vsce/__tests__/__unit__/trees/CICSProgramTree.unit.test.ts b/packages/vsce/__tests__/__unit__/trees/CICSProgramTree.unit.test.ts index f09e430b..5cedb77f 100644 --- a/packages/vsce/__tests__/__unit__/trees/CICSProgramTree.unit.test.ts +++ b/packages/vsce/__tests__/__unit__/trees/CICSProgramTree.unit.test.ts @@ -11,12 +11,13 @@ const getFolderIconMock = jest.fn(); +import { ICMCIApiResponse, IProgram } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; +import { ProgramMeta } from "../../../src/doc"; import { CICSRegionTree } from "../../../src/trees/CICSRegionTree"; -import { ICMCIApiResponse } from "@zowe/cics-for-zowe-sdk"; -import { CICSProgramTreeItem } from "../../../src/trees/treeItems/CICSProgramTreeItem"; +import { CICSResourceTree } from "../../../src/trees/CICSResourceTree"; +import { CICSResourceTreeItem } from "../../../src/trees/treeItems/CICSResourceTreeItem"; import * as filterUtils from "../../../src/utils/filterUtils"; -import { CICSProgramTree } from "../../../src/trees/CICSProgramTree"; import CustomError from "../../__utils__/CustomError"; jest.mock("@zowe/cics-for-zowe-sdk"); @@ -25,7 +26,7 @@ const zoweSdk = require("@zowe/cics-for-zowe-sdk"); jest.mock("../../../src/utils/iconUtils", () => { return { getFolderIcon: getFolderIconMock }; }); -jest.mock("../../../src/trees/treeItems/CICSProgramTreeItem"); +jest.mock("../../../src/trees/treeItems/CICSResourceTreeItem"); const imperativeSession = new imperative.Session({ user: "user", @@ -59,11 +60,11 @@ const ICMCIApiResponseMock: ICMCIApiResponse = { }; describe("Test suite for CICSProgramTree", () => { - let sut: CICSProgramTree; + let sut: CICSResourceTree; beforeEach(() => { getFolderIconMock.mockReturnValue(iconPath); - sut = new CICSProgramTree(cicsRegionTreeMock as any as CICSRegionTree); + sut = new CICSResourceTree(ProgramMeta, cicsRegionTreeMock as any as CICSRegionTree); expect(getFolderIconMock).toHaveBeenCalledWith(false); }); @@ -73,7 +74,7 @@ describe("Test suite for CICSProgramTree", () => { describe("Test suite for addProgram()", () => { it("Should add CICSProgramTreeItem into program", () => { - sut.addProgram(CICSProgramTreeItemMock as any as CICSProgramTreeItem); + sut.addResource(CICSProgramTreeItemMock as any as CICSResourceTreeItem); expect(sut.children.length).toBeGreaterThanOrEqual(1); }); }); @@ -82,7 +83,7 @@ describe("Test suite for CICSProgramTree", () => { let getDefaultProgramFilter: jest.SpyInstance; beforeEach(() => { - getDefaultProgramFilter = jest.spyOn(filterUtils, "getDefaultProgramFilter").mockResolvedValueOnce(value); + getDefaultProgramFilter = jest.spyOn(filterUtils, "getDefaultFilter").mockResolvedValueOnce(value); getResourceMock.mockImplementation(async () => ICMCIApiResponseMock); }); afterEach(() => { @@ -133,7 +134,7 @@ describe("Test suite for CICSProgramTree", () => { sut.clearFilter(); expect(sut.activeFilter).toBeUndefined(); - expect(sut.contextValue).toEqual("cicstreeprogram.unfiltered.programs"); + expect(sut.contextValue).toEqual("cicstreeprogram.unfiltered.CICSProgram"); }); }); @@ -141,7 +142,7 @@ describe("Test suite for CICSProgramTree", () => { it("Should set active filter and set contextValue to filtered", () => { sut.setFilter("ActiveFilter"); expect(sut.activeFilter).toEqual("ActiveFilter"); - expect(sut.contextValue).toEqual("cicstreeprogram.filtered.programs"); + expect(sut.contextValue).toEqual("cicstreeprogram.filtered.CICSProgram"); }); }); diff --git a/packages/vsce/src/commands/closeLocalFileCommand.ts b/packages/vsce/src/commands/closeLocalFileCommand.ts index 3884b1a8..ea4b2506 100644 --- a/packages/vsce/src/commands/closeLocalFileCommand.ts +++ b/packages/vsce/src/commands/closeLocalFileCommand.ts @@ -9,10 +9,9 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, ILocalFile, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { ILocalFile } from "../doc/ILocalFile"; import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; diff --git a/packages/vsce/src/commands/disableCommands/disableLocalFileCommand.ts b/packages/vsce/src/commands/disableCommands/disableLocalFileCommand.ts index 94436426..651dad73 100644 --- a/packages/vsce/src/commands/disableCommands/disableLocalFileCommand.ts +++ b/packages/vsce/src/commands/disableCommands/disableLocalFileCommand.ts @@ -9,10 +9,9 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, ILocalFile, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { ILocalFile } from "../../doc/ILocalFile"; import { CICSCombinedResourceTree } from "../../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../../trees/CICSRegionTree"; diff --git a/packages/vsce/src/commands/disableCommands/disableProgramCommand.ts b/packages/vsce/src/commands/disableCommands/disableProgramCommand.ts index 389093b9..a3aaf1ea 100644 --- a/packages/vsce/src/commands/disableCommands/disableProgramCommand.ts +++ b/packages/vsce/src/commands/disableCommands/disableProgramCommand.ts @@ -9,10 +9,9 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, IProgram, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { IProgram } from "../../doc/IProgram"; import { CICSCombinedResourceTree } from "../../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../../trees/CICSRegionTree"; diff --git a/packages/vsce/src/commands/disableCommands/disableTransactionCommand.ts b/packages/vsce/src/commands/disableCommands/disableTransactionCommand.ts index c19d7bb1..f102c7cc 100644 --- a/packages/vsce/src/commands/disableCommands/disableTransactionCommand.ts +++ b/packages/vsce/src/commands/disableCommands/disableTransactionCommand.ts @@ -9,10 +9,9 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, ITransaction, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { ITransaction } from "../../doc/ITransaction"; import { CICSCombinedResourceTree } from "../../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../../trees/CICSRegionTree"; diff --git a/packages/vsce/src/commands/enableCommands/enableLocalFileCommand.ts b/packages/vsce/src/commands/enableCommands/enableLocalFileCommand.ts index f96ca1ea..2c2dc940 100644 --- a/packages/vsce/src/commands/enableCommands/enableLocalFileCommand.ts +++ b/packages/vsce/src/commands/enableCommands/enableLocalFileCommand.ts @@ -9,10 +9,9 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, ILocalFile, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { ILocalFile } from "../../doc/ILocalFile"; import { CICSCombinedResourceTree } from "../../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../../trees/CICSRegionTree"; diff --git a/packages/vsce/src/commands/enableCommands/enableProgramCommand.ts b/packages/vsce/src/commands/enableCommands/enableProgramCommand.ts index 9b42c0bc..cdd14e68 100644 --- a/packages/vsce/src/commands/enableCommands/enableProgramCommand.ts +++ b/packages/vsce/src/commands/enableCommands/enableProgramCommand.ts @@ -9,10 +9,9 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, IProgram, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { IProgram } from "../../doc/IProgram"; import { CICSCombinedResourceTree } from "../../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../../trees/CICSRegionTree"; diff --git a/packages/vsce/src/commands/enableCommands/enableTransactionCommand.ts b/packages/vsce/src/commands/enableCommands/enableTransactionCommand.ts index 681f8465..4c997c1f 100644 --- a/packages/vsce/src/commands/enableCommands/enableTransactionCommand.ts +++ b/packages/vsce/src/commands/enableCommands/enableTransactionCommand.ts @@ -9,10 +9,9 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, ITransaction, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { ITransaction } from "../../doc/ITransaction"; import { CICSCombinedResourceTree } from "../../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../../trees/CICSRegionTree"; diff --git a/packages/vsce/src/commands/filterResourceCommands.ts b/packages/vsce/src/commands/filterResourceCommands.ts index 3b8edd8f..d1fb34e4 100644 --- a/packages/vsce/src/commands/filterResourceCommands.ts +++ b/packages/vsce/src/commands/filterResourceCommands.ts @@ -9,11 +9,8 @@ * */ +import { ILocalFile, IProgram, ITask, ITransaction } from "@zowe/cics-for-zowe-sdk"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { ILocalFile } from "../doc/ILocalFile"; -import { IProgram } from "../doc/IProgram"; -import { ITask } from "../doc/ITask"; -import { ITransaction } from "../doc/ITransaction"; import { CICSLibraryTree } from "../trees/CICSLibraryTree"; import { CICSResourceTree } from "../trees/CICSResourceTree"; import { CICSTree } from "../trees/CICSTree"; diff --git a/packages/vsce/src/commands/index.ts b/packages/vsce/src/commands/index.ts index 41096c16..7aaf3b8e 100644 --- a/packages/vsce/src/commands/index.ts +++ b/packages/vsce/src/commands/index.ts @@ -18,12 +18,12 @@ import { getAddSessionCommand } from "./addSessionCommand"; import { getClearPlexFilterCommand } from "./clearPlexFilterCommand"; import { getClearResourceFilterCommand } from "./clearResourceFilterCommand"; import { getCloseLocalFileCommand } from "./closeLocalFileCommand"; -import { getManageSessionCommand } from "./manageSessionCommand"; import * as filterAllResourceCommands from "./filterAllResourceCommand"; import * as filterResourceCommands from "./filterResourceCommands"; import { getFilterPlexResources } from "./getFilterPlexResources"; import { getInquireProgramCommand } from "./inquireProgram"; import { getInquireTransactionCommand } from "./inquireTransaction"; +import { getManageSessionCommand } from "./manageSessionCommand"; import { getNewCopyCommand } from "./newCopyCommand"; import { getOpenLocalFileCommand } from "./openLocalFileCommand"; import { getPhaseInCommand } from "./phaseInCommand"; diff --git a/packages/vsce/src/commands/inquireProgram.ts b/packages/vsce/src/commands/inquireProgram.ts index a018d68c..36003853 100644 --- a/packages/vsce/src/commands/inquireProgram.ts +++ b/packages/vsce/src/commands/inquireProgram.ts @@ -9,10 +9,8 @@ * */ +import { IProgram, IResource, ITransaction } from "@zowe/cics-for-zowe-sdk"; import { commands, TreeView, window } from "vscode"; -import { IProgram } from "../doc/IProgram"; -import { IResource } from "../doc/IResourceTypes"; -import { ITransaction } from "../doc/ITransaction"; import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSLibraryTree } from "../trees/CICSLibraryTree"; import { CICSPlexTree } from "../trees/CICSPlexTree"; diff --git a/packages/vsce/src/commands/inquireTransaction.ts b/packages/vsce/src/commands/inquireTransaction.ts index 261976c4..7c39ec8e 100644 --- a/packages/vsce/src/commands/inquireTransaction.ts +++ b/packages/vsce/src/commands/inquireTransaction.ts @@ -9,9 +9,8 @@ * */ +import { ITask, ITransaction } from "@zowe/cics-for-zowe-sdk"; import { commands, TreeView, window } from "vscode"; -import { ITask } from "../doc/ITask"; -import { ITransaction } from "../doc/ITransaction"; import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSPlexTree } from "../trees/CICSPlexTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; diff --git a/packages/vsce/src/commands/newCopyCommand.ts b/packages/vsce/src/commands/newCopyCommand.ts index 483ecec8..c2e62e4a 100644 --- a/packages/vsce/src/commands/newCopyCommand.ts +++ b/packages/vsce/src/commands/newCopyCommand.ts @@ -9,9 +9,8 @@ * */ -import { programNewcopy } from "@zowe/cics-for-zowe-sdk"; +import { IProgram, programNewcopy } from "@zowe/cics-for-zowe-sdk"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { IProgram } from "../doc/IProgram"; import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; diff --git a/packages/vsce/src/commands/openLocalFileCommand.ts b/packages/vsce/src/commands/openLocalFileCommand.ts index 155513ff..5c176aca 100644 --- a/packages/vsce/src/commands/openLocalFileCommand.ts +++ b/packages/vsce/src/commands/openLocalFileCommand.ts @@ -9,10 +9,9 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, ILocalFile, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { ILocalFile } from "../doc/ILocalFile"; import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; diff --git a/packages/vsce/src/commands/phaseInCommand.ts b/packages/vsce/src/commands/phaseInCommand.ts index ee7824a7..7a45bb9b 100644 --- a/packages/vsce/src/commands/phaseInCommand.ts +++ b/packages/vsce/src/commands/phaseInCommand.ts @@ -9,10 +9,9 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, IGetResourceUriOptions, IProgram, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { IProgram } from "../doc/IProgram"; import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; diff --git a/packages/vsce/src/commands/purgeTaskCommand.ts b/packages/vsce/src/commands/purgeTaskCommand.ts index 6852735e..1370748c 100644 --- a/packages/vsce/src/commands/purgeTaskCommand.ts +++ b/packages/vsce/src/commands/purgeTaskCommand.ts @@ -9,10 +9,9 @@ * */ -import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, Utils } from "@zowe/cics-for-zowe-sdk"; +import { CicsCmciConstants, CicsCmciRestClient, ICMCIApiResponse, IGetResourceUriOptions, ITask, Utils } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { commands, ProgressLocation, TreeView, window } from "vscode"; -import { ITask } from "../doc/ITask"; import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; diff --git a/packages/vsce/src/commands/showAttributesCommand.ts b/packages/vsce/src/commands/showAttributesCommand.ts index 032111f4..6839c757 100644 --- a/packages/vsce/src/commands/showAttributesCommand.ts +++ b/packages/vsce/src/commands/showAttributesCommand.ts @@ -9,11 +9,8 @@ * */ +import { ILocalFile, IProgram, ITask, ITransaction } from "@zowe/cics-for-zowe-sdk"; import { commands, TreeView, WebviewPanel, window } from "vscode"; -import { ILocalFile } from "../doc/ILocalFile"; -import { IProgram } from "../doc/IProgram"; -import { ITask } from "../doc/ITask"; -import { ITransaction } from "../doc/ITransaction"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSLibraryDatasets } from "../trees/treeItems/CICSLibraryDatasets"; import { CICSLibraryTreeItem } from "../trees/treeItems/CICSLibraryTreeItem"; diff --git a/packages/vsce/src/doc/ILocalFile.ts b/packages/vsce/src/doc/ILocalFile.ts deleted file mode 100644 index ebc54359..00000000 --- a/packages/vsce/src/doc/ILocalFile.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { IResource } from "./IResourceTypes"; - - -export interface ILocalFile extends IResource { - file: string; - enablestatus: string; - openstatus: string; -} - -export const buildLocalFileLabel = (localFile: ILocalFile) => { - - let label = `${localFile.file}`; - - if (localFile.enablestatus.trim().toLowerCase() === "disabled") { - label += ` (Disabled)`; - } else if (localFile.enablestatus.trim().toLowerCase() === "unenabled") { - label += ` (Unenabled)`; - } - - if (localFile.openstatus.trim().toLowerCase() === "closed") { - label += ` (Closed)`; - } - - return label; -}; - -export const buildLocalFileContext = (localFile: ILocalFile) => { - return `cicslocalfile.${localFile.enablestatus.trim().toLowerCase()}.${localFile.openstatus.trim().toLowerCase()}.${localFile.file}`; -}; - -export const buildLocalFileIconName = (localFile: ILocalFile) => { - return `local-file`; -}; - diff --git a/packages/vsce/src/doc/IProgram.ts b/packages/vsce/src/doc/IProgram.ts deleted file mode 100644 index 14753fca..00000000 --- a/packages/vsce/src/doc/IProgram.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { IResource } from "./IResourceTypes"; - - -export interface IProgram extends IResource { - program: string; - status: string; - newcopycnt?: string; -} - -export const buildProgramLabel = (program: IProgram) => { - - let label = `${program.program}`; - if (program.newcopycnt && parseInt(program.newcopycnt) > 0) { - label += ` (New copy count: ${program.newcopycnt})`; - } - if (program.status.trim().toLowerCase() === "disabled") { - label += " (Disabled)"; - } - - return label; -}; - -export const buildProgramContext = (program: IProgram) => { - return `cicsprogram.${program.status.trim().toLowerCase()}.${program.program}`; -}; - -export const buildProgramIconName = (program: IProgram) => { - return `program`; -}; diff --git a/packages/vsce/src/doc/IRegion.ts b/packages/vsce/src/doc/IRegion.ts deleted file mode 100644 index 16eb1e5f..00000000 --- a/packages/vsce/src/doc/IRegion.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { IResource } from "./IResourceTypes"; - - -export interface IRegion extends IResource { - applid: string; - cicsstate: string; - cicsstatus: string; - cicsname: string; -} - diff --git a/packages/vsce/src/doc/IResourceMeta.ts b/packages/vsce/src/doc/IResourceMeta.ts new file mode 100644 index 00000000..14466a53 --- /dev/null +++ b/packages/vsce/src/doc/IResourceMeta.ts @@ -0,0 +1,18 @@ + +export interface ResourceMeta { + + resourceName: string; + humanReadableName: string; + contextPrefix: string; + combinedContextPrefix: string; + filterAttribute: string; + primaryKeyAttribute: string; + + getDefaultFilter(): Promise; + getLabel(resource: T): string; + getContext(resource: T): string; + getIconName(resource: T): string; + +} + +export default ResourceMeta; diff --git a/packages/vsce/src/doc/IResourceTypes.ts b/packages/vsce/src/doc/IResourceTypes.ts deleted file mode 100644 index 0310cc9b..00000000 --- a/packages/vsce/src/doc/IResourceTypes.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { getDefaultLocalFileFilter, getDefaultProgramFilter, getDefaultTaskFilter, getDefaultTransactionFilter } from "../utils/filterUtils"; -import { buildLocalFileContext, buildLocalFileIconName, buildLocalFileLabel } from "./ILocalFile"; -import { buildProgramContext, buildProgramIconName, buildProgramLabel } from "./IProgram"; -import { buildTaskContext, buildTaskIconName, buildTaskLabel } from "./ITask"; -import { buildTransactionContext, buildTransactionIconName, buildTransactionLabel } from "./ITransaction"; - -export interface IResource { } - -export interface IResourceMeta { - humanReadableName: string; - resourceName: string; - contextPrefix: string; - combinedContextPrefix: string; - filterAttribute: string; - regionNameAttribute: string; - primaryKeyAttribute: string; - getDefaultFilter: () => Promise; - getLabel: (resource: IResource) => string; - getContext: (resource: IResource) => string; - getIconName: (resource: IResource) => string; -} - -const resources = { - program: { - humanReadableName: "Programs", - resourceName: "CICSProgram", - contextPrefix: "cicstreeprogram", - combinedContextPrefix: "cicscombinedprogramtree", - filterAttribute: "PROGRAM", - regionNameAttribute: "eyu_cicsname", - primaryKeyAttribute: "program", - getDefaultFilter: getDefaultProgramFilter, - getLabel: buildProgramLabel, - getContext: buildProgramContext, - getIconName: buildProgramIconName, - }, - transaction: { - humanReadableName: "Transactions", - resourceName: "CICSLocalTransaction", - contextPrefix: "cicstreetransaction", - combinedContextPrefix: "cicscombinedtransactiontree", - filterAttribute: "tranid", - regionNameAttribute: "eyu_cicsname", - primaryKeyAttribute: "tranid", - getDefaultFilter: getDefaultTransactionFilter, - getLabel: buildTransactionLabel, - getContext: buildTransactionContext, - getIconName: buildTransactionIconName, - }, - localFile: { - humanReadableName: "Local Files", - resourceName: "CICSLocalFile", - contextPrefix: "cicstreelocalfile", - combinedContextPrefix: "cicscombinedlocalfiletree", - filterAttribute: "file", - regionNameAttribute: "eyu_cicsname", - primaryKeyAttribute: "file", - getDefaultFilter: getDefaultLocalFileFilter, - getLabel: buildLocalFileLabel, - getContext: buildLocalFileContext, - getIconName: buildLocalFileIconName, - }, - task: { - humanReadableName: "Tasks", - resourceName: "CICSTask", - contextPrefix: "cicstreetask", - combinedContextPrefix: "cicscombinedtasktree", - filterAttribute: "tranid", - regionNameAttribute: "eyu_cicsname", - primaryKeyAttribute: "task", - getDefaultFilter: getDefaultTaskFilter, - getLabel: buildTaskLabel, - getContext: buildTaskContext, - getIconName: buildTaskIconName, - }, -}; - -export default resources; diff --git a/packages/vsce/src/doc/ITask.ts b/packages/vsce/src/doc/ITask.ts deleted file mode 100644 index 3e12f615..00000000 --- a/packages/vsce/src/doc/ITask.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { IResource } from "./IResourceTypes"; - - -export interface ITask extends IResource { - task: string; - runstatus: string; - tranid: string; -} - -export const buildTaskLabel = (task: ITask) => { - - let label = `${task.task} - ${task.tranid}`; - - if (task.runstatus !== "SUSPENDED") { - label += ` (${task.runstatus})`; - } - - return label; -}; - -export const buildTaskContext = (task: ITask) => { - return `cicstask.${task.task}`; -}; - -export const buildTaskIconName = (task: ITask) => { - if (task.runstatus.trim().toUpperCase() === "RUNNING") { - return `task-running`; - } else if (task.runstatus.trim().toUpperCase() === "SUSPENDED") { - return `task-suspended`; - } - return `task-dispatched`; -} - diff --git a/packages/vsce/src/doc/ITransaction.ts b/packages/vsce/src/doc/ITransaction.ts deleted file mode 100644 index 2d18ae92..00000000 --- a/packages/vsce/src/doc/ITransaction.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { IResource } from "./IResourceTypes"; - - -export interface ITransaction extends IResource { - tranid: string; - program: string; - status: string; -} - -export const buildTransactionLabel = (transaction: ITransaction) => { - - let label = `${transaction.tranid}`; - - if (transaction.status.trim().toLowerCase() === "disabled") { - label += " (Disabled)"; - } - - return label; -}; - -export const buildTransactionContext = (transaction: ITransaction) => { - return `cicstransaction.${transaction.status.toLowerCase()}.${transaction.tranid}`; -}; - -export const buildTransactionIconName = (transaction: ITransaction) => { - return `local-transaction`; -}; diff --git a/packages/vsce/src/doc/LocalFileMeta.ts b/packages/vsce/src/doc/LocalFileMeta.ts new file mode 100644 index 00000000..1e082ac8 --- /dev/null +++ b/packages/vsce/src/doc/LocalFileMeta.ts @@ -0,0 +1,45 @@ +import { ILocalFile } from "@zowe/cics-for-zowe-sdk"; +import constants from "../utils/constants"; +import { getDefaultFilter } from "../utils/filterUtils"; +import { ResourceMeta } from "./IResourceMeta"; + + +export const LocalFileMeta: ResourceMeta = { + + resourceName: "CICSLocalFile", + humanReadableName: "Local Files", + contextPrefix: "cicstreelocalfile", + combinedContextPrefix: "cicscombinedlocalfiletree", + filterAttribute: "file", + primaryKeyAttribute: "file", + + getDefaultFilter: async function (): Promise { + return getDefaultFilter(constants.PERSISTENT_STORAGE.LOCAL_FILE_FILTER); + }, + + getLabel: function (localFile: ILocalFile): string { + let label = `${localFile.file}`; + + if (localFile.enablestatus.trim().toLowerCase() === "disabled") { + label += ` (Disabled)`; + } else if (localFile.enablestatus.trim().toLowerCase() === "unenabled") { + label += ` (Unenabled)`; + } + + if (localFile.openstatus.trim().toLowerCase() === "closed") { + label += ` (Closed)`; + } + + return label; + }, + + getContext: function (localFile: ILocalFile): string { + return `cicslocalfile.${localFile.enablestatus.trim().toLowerCase()}.${localFile.openstatus.trim().toLowerCase()}.${localFile.file}`; + }, + + getIconName: function (_localFile: ILocalFile): string { + return `local-file`; + } + +}; + diff --git a/packages/vsce/src/doc/ProgramMeta.ts b/packages/vsce/src/doc/ProgramMeta.ts new file mode 100644 index 00000000..146d317b --- /dev/null +++ b/packages/vsce/src/doc/ProgramMeta.ts @@ -0,0 +1,41 @@ +import { IProgram } from "@zowe/cics-for-zowe-sdk"; +import constants from "../utils/constants"; +import { getDefaultFilter } from "../utils/filterUtils"; +import { ResourceMeta } from "./IResourceMeta"; + + +export const ProgramMeta: ResourceMeta = { + + resourceName: "CICSProgram", + humanReadableName: "Programs", + contextPrefix: "cicstreeprogram", + combinedContextPrefix: "cicscombinedprogramtree", + filterAttribute: "PROGRAM", + primaryKeyAttribute: "program", + + getDefaultFilter: async function (): Promise { + return getDefaultFilter(constants.PERSISTENT_STORAGE.PROGRAM_FILTER); + }, + + getLabel: function (program: IProgram): string { + let label = `${program.program}`; + if (program.newcopycnt && parseInt(program.newcopycnt) > 0) { + label += ` (New copy count: ${program.newcopycnt})`; + } + if (program.status.trim().toLowerCase() === "disabled") { + label += " (Disabled)"; + } + + return label; + }, + + getContext: function (program: IProgram): string { + return `cicsprogram.${program.status.trim().toLowerCase()}.${program.program}`; + }, + + getIconName: function (_program: IProgram): string { + return `program`; + } + +}; + diff --git a/packages/vsce/src/doc/TaskMeta.ts b/packages/vsce/src/doc/TaskMeta.ts new file mode 100644 index 00000000..e14629f7 --- /dev/null +++ b/packages/vsce/src/doc/TaskMeta.ts @@ -0,0 +1,44 @@ +import { ITask } from "@zowe/cics-for-zowe-sdk"; +import constants from "../utils/constants"; +import { getDefaultFilter } from "../utils/filterUtils"; +import { ResourceMeta } from "./IResourceMeta"; + + +export const TaskMeta: ResourceMeta = { + + resourceName: "CICSTask", + humanReadableName: "Tasks", + contextPrefix: "cicstreetask", + combinedContextPrefix: "cicscombinedtasktree", + filterAttribute: "tranid", + primaryKeyAttribute: "task", + + getDefaultFilter: async function (): Promise { + return getDefaultFilter(constants.PERSISTENT_STORAGE.PROGRAM_FILTER); + }, + + getLabel: function (task: ITask): string { + let label = `${task.task} - ${task.tranid}`; + + if (task.runstatus !== "SUSPENDED") { + label += ` (${task.runstatus})`; + } + + return label; + }, + + getContext: function (task: ITask): string { + return `cicstask.${task.task}`; + }, + + getIconName: function (task: ITask): string { + if (task.runstatus.trim().toUpperCase() === "RUNNING") { + return `task-running`; + } else if (task.runstatus.trim().toUpperCase() === "SUSPENDED") { + return `task-suspended`; + } + return `task-dispatched`; + } + +}; + diff --git a/packages/vsce/src/doc/TransactionMeta.ts b/packages/vsce/src/doc/TransactionMeta.ts new file mode 100644 index 00000000..2e023cd2 --- /dev/null +++ b/packages/vsce/src/doc/TransactionMeta.ts @@ -0,0 +1,39 @@ +import { ITransaction } from "@zowe/cics-for-zowe-sdk"; +import constants from "../utils/constants"; +import { getDefaultFilter } from "../utils/filterUtils"; +import { ResourceMeta } from "./IResourceMeta"; + + +export const TransactionMeta: ResourceMeta = { + + resourceName: "CICSLocalTransaction", + humanReadableName: "Transactions", + contextPrefix: "cicstreetransaction", + combinedContextPrefix: "cicscombinedtransactiontree", + filterAttribute: "tranid", + primaryKeyAttribute: "tranid", + + getDefaultFilter: async function (): Promise { + return getDefaultFilter(constants.PERSISTENT_STORAGE.TRANSACTION_FILTER); + }, + + getLabel: function (transaction: ITransaction): string { + let label = `${transaction.tranid}`; + + if (transaction.status.trim().toLowerCase() === "disabled") { + label += " (Disabled)"; + } + + return label; + }, + + getContext: function (transaction: ITransaction): string { + return `cicstransaction.${transaction.status.toLowerCase()}.${transaction.tranid}`; + }, + + getIconName: function (_transaction: ITransaction): string { + return `local-transaction`; + } + +}; + diff --git a/packages/vsce/src/doc/index.ts b/packages/vsce/src/doc/index.ts new file mode 100644 index 00000000..ba5fd2f9 --- /dev/null +++ b/packages/vsce/src/doc/index.ts @@ -0,0 +1,7 @@ + +export * from "./IResourceMeta"; +export * from "./LocalFileMeta"; +export * from "./ProgramMeta"; +export * from "./TaskMeta"; +export * from "./TransactionMeta"; + diff --git a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedResourceTree.ts b/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedResourceTree.ts index 6ac38bce..8ac60f2f 100644 --- a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedResourceTree.ts +++ b/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedResourceTree.ts @@ -9,9 +9,10 @@ * */ +import { IResource } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { ProgressLocation, TreeItem, TreeItemCollapsibleState, window, workspace } from "vscode"; -import { IResource, IResourceMeta } from "../../doc/IResourceTypes"; +import IResourceMeta from "../../doc/IResourceMeta"; import { toEscapedCriteriaString } from "../../utils/filterUtils"; import { ProfileManagement } from "../../utils/profileManagement"; import { CICSPlexTree } from "../CICSPlexTree"; @@ -29,9 +30,9 @@ export class CICSCombinedResourceTree extends TreeItem { activeFilter: string | undefined; currentCount: number; incrementCount: number; - resourceMeta: IResourceMeta; + resourceMeta: IResourceMeta; - constructor(parentPlex: CICSPlexTree, resourceMeta: IResourceMeta, public iconPath = getFolderIcon(false)) { + constructor(parentPlex: CICSPlexTree, resourceMeta: IResourceMeta, public iconPath = getFolderIcon(false)) { super(`All ${resourceMeta.humanReadableName}`, TreeItemCollapsibleState.Collapsed); this.resourceMeta = resourceMeta; this.contextValue = `${resourceMeta.combinedContextPrefix}.`; @@ -130,12 +131,12 @@ export class CICSCombinedResourceTree extends TreeItem { .getChildren()! .filter((child) => child instanceof CICSRegionTree && - child.getRegionName() === resource[this.resourceMeta.regionNameAttribute as keyof T])?.[0] as CICSRegionTree; + child.getRegionName() === resource.eyu_cicsname)?.[0] as CICSRegionTree; const resourceTree = new CICSResourceTreeItem(resource, this.resourceMeta, parentRegion, this); resourceTree.setLabel( resourceTree.label.toString().replace( `${resource[this.resourceMeta.primaryKeyAttribute as keyof T]}`, - `${resource[this.resourceMeta.primaryKeyAttribute as keyof T]} (${resource[this.resourceMeta.regionNameAttribute as keyof T]})` + `${resource[this.resourceMeta.primaryKeyAttribute as keyof T]} (${resource.eyu_cicsname})` )); newChildren.push(resourceTree); } diff --git a/packages/vsce/src/trees/CICSPlexTree.ts b/packages/vsce/src/trees/CICSPlexTree.ts index abe3c745..b80b2ffa 100644 --- a/packages/vsce/src/trees/CICSPlexTree.ts +++ b/packages/vsce/src/trees/CICSPlexTree.ts @@ -9,13 +9,12 @@ * */ -import { getResource } from "@zowe/cics-for-zowe-sdk"; import { CICSRegionsContainer } from "./CICSRegionsContainer"; import { getIconFilePathFromName } from "../utils/iconUtils"; -import { CICSCombinedTaskTree } from "./CICSCombinedTrees/CICSCombinedTaskTree"; +import { getResource, IResource } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { TreeItem, TreeItemCollapsibleState } from "vscode"; -import resources, { IResource } from "../doc/IResourceTypes"; +import { LocalFileMeta, ProgramMeta, TaskMeta, TransactionMeta } from "../doc"; import { CICSCombinedLibraryTree } from "./CICSCombinedTrees/CICSCombinedLibraryTree"; import { CICSCombinedPipelineTree } from "./CICSCombinedTrees/CICSCombinedPipelineTree"; import { CICSCombinedResourceTree } from "./CICSCombinedTrees/CICSCombinedResourceTree"; @@ -155,10 +154,10 @@ export class CICSPlexTree extends TreeItem { } public addNewCombinedTrees() { - this.children.push(new CICSCombinedResourceTree(this, resources.program)); - this.children.push(new CICSCombinedResourceTree(this, resources.transaction)); - this.children.push(new CICSCombinedResourceTree(this, resources.localFile)); - this.children.push(new CICSCombinedResourceTree(this, resources.task)); + this.children.push(new CICSCombinedResourceTree(this, ProgramMeta)); + this.children.push(new CICSCombinedResourceTree(this, TransactionMeta)); + this.children.push(new CICSCombinedResourceTree(this, LocalFileMeta)); + this.children.push(new CICSCombinedResourceTree(this, TaskMeta)); this.children.push(new CICSCombinedLibraryTree(this)); this.children.push(new CICSCombinedTCPIPServiceTree(this)); this.children.push(new CICSCombinedURIMapTree(this)); diff --git a/packages/vsce/src/trees/CICSRegionTree.ts b/packages/vsce/src/trees/CICSRegionTree.ts index 80c2a04f..2ae35599 100644 --- a/packages/vsce/src/trees/CICSRegionTree.ts +++ b/packages/vsce/src/trees/CICSRegionTree.ts @@ -13,8 +13,8 @@ import { TreeItemCollapsibleState, TreeItem } from "vscode"; import { CICSSessionTree } from "./CICSSessionTree"; import { CICSPlexTree } from "./CICSPlexTree"; import { getIconByStatus } from "../utils/iconUtils"; -import { IRegion } from "../doc/IRegion"; -import resources, { IResource } from "../doc/IResourceTypes"; +import { IRegion, IResource } from "@zowe/cics-for-zowe-sdk"; +import { LocalFileMeta, ProgramMeta, TaskMeta, TransactionMeta } from "../doc"; import { CICSLibraryTree } from "./CICSLibraryTree"; import { CICSResourceTree } from "./CICSResourceTree"; import { CICSWebTree } from "./CICSWebTree"; @@ -51,10 +51,10 @@ export class CICSRegionTree extends TreeItem { } else { this.contextValue += ".active"; this.children = [ - new CICSResourceTree(resources.program, this), - new CICSResourceTree(resources.transaction, this), - new CICSResourceTree(resources.localFile, this), - new CICSResourceTree(resources.task, this), + new CICSResourceTree(ProgramMeta, this), + new CICSResourceTree(TransactionMeta, this), + new CICSResourceTree(LocalFileMeta, this), + new CICSResourceTree(TaskMeta, this), new CICSLibraryTree(this), new CICSWebTree(this), ]; diff --git a/packages/vsce/src/trees/CICSResourceTree.ts b/packages/vsce/src/trees/CICSResourceTree.ts index 99ea8bf4..62f74ea2 100644 --- a/packages/vsce/src/trees/CICSResourceTree.ts +++ b/packages/vsce/src/trees/CICSResourceTree.ts @@ -9,9 +9,9 @@ * */ -import { getResource } from "@zowe/cics-for-zowe-sdk"; +import { getResource, IResource } from "@zowe/cics-for-zowe-sdk"; import { TreeItem, TreeItemCollapsibleState, window } from "vscode"; -import { IResource, IResourceMeta } from "../doc/IResourceTypes"; +import IResourceMeta from "../doc/IResourceMeta"; import { toArray } from "../utils/commandUtils"; import { toEscapedCriteriaString } from "../utils/filterUtils"; import { getIconOpen } from "../utils/profileUtils"; @@ -24,9 +24,9 @@ export class CICSResourceTree extends TreeItem { parentRegion: CICSRegionTree; activeFilter: string | undefined = undefined; - resourceMeta: IResourceMeta; + resourceMeta: IResourceMeta; - constructor(resourceMeta: IResourceMeta, parentRegion: CICSRegionTree, public iconPath = getIconOpen(false)) { + constructor(resourceMeta: IResourceMeta, parentRegion: CICSRegionTree, public iconPath = getIconOpen(false)) { super(resourceMeta.humanReadableName, TreeItemCollapsibleState.Collapsed); this.contextValue = `${resourceMeta.contextPrefix}.${this.activeFilter ? "filtered" : "unfiltered"}.${resourceMeta.resourceName}`; this.parentRegion = parentRegion; diff --git a/packages/vsce/src/trees/treeItems/CICSLibraryDatasets.ts b/packages/vsce/src/trees/treeItems/CICSLibraryDatasets.ts index eb45351b..e14b8c98 100644 --- a/packages/vsce/src/trees/treeItems/CICSLibraryDatasets.ts +++ b/packages/vsce/src/trees/treeItems/CICSLibraryDatasets.ts @@ -12,9 +12,8 @@ import { TreeItemCollapsibleState, TreeItem, window } from "vscode"; import { CICSRegionTree } from "../CICSRegionTree"; import { getIconFilePathFromName } from "../../utils/iconUtils"; -import { getResource } from "@zowe/cics-for-zowe-sdk"; -import { IProgram } from "../../doc/IProgram"; -import resources from "../../doc/IResourceTypes"; +import { getResource, IProgram } from "@zowe/cics-for-zowe-sdk"; +import { ProgramMeta } from "../../doc/ProgramMeta"; import { toArray } from "../../utils/commandUtils"; import { toEscapedCriteriaString } from "../../utils/filterUtils"; import { CICSResourceTreeItem } from "./CICSResourceTreeItem"; @@ -70,7 +69,7 @@ export class CICSLibraryDatasets extends TreeItem { const programsArray = toArray(datasetResponse.response.records.cicsprogram); this.label = `${this.dataset.dsname}${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${programsArray.length}]`; for (const program of programsArray) { - const newProgramItem = new CICSResourceTreeItem(program as IProgram, resources.program, this.parentRegion, this); + const newProgramItem = new CICSResourceTreeItem(program as IProgram, ProgramMeta, this.parentRegion, this); this.addProgram(newProgramItem); } } catch (error) { diff --git a/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts b/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts index 149fc00c..1ca870a5 100644 --- a/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts +++ b/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts @@ -9,20 +9,21 @@ * */ -import { TreeItemCollapsibleState, TreeItem } from "vscode"; +import { IResource } from "@zowe/cics-for-zowe-sdk"; +import { TreeItem, TreeItemCollapsibleState } from "vscode"; +import IResourceMeta from "../../doc/IResourceMeta"; import { CICSRegionTree } from "../CICSRegionTree"; -import { IResource, IResourceMeta } from "../../doc/IResourceTypes"; import { getIconByStatus } from "../../utils/iconUtils"; export class CICSResourceTreeItem extends TreeItem { resource: T; - resourceMeta: IResourceMeta; + resourceMeta: IResourceMeta; parentRegion: CICSRegionTree; directParent: any; constructor( resource: T, - resourceMeta: IResourceMeta, + resourceMeta: IResourceMeta, parentRegion: CICSRegionTree, directParent: any ) { diff --git a/packages/vsce/src/utils/constants.ts b/packages/vsce/src/utils/constants.ts index 07e5ec6d..41dc1c18 100644 --- a/packages/vsce/src/utils/constants.ts +++ b/packages/vsce/src/utils/constants.ts @@ -45,4 +45,23 @@ export default { * HTTP return code for Server Error */ HTTP_ERROR_SERVER_ERROR: 500, + + PERSISTENT_STORAGE: { + PROGRAM_FILTER: { + ID: "zowe.cics.program.filter", + DEFAULT: "NOT (PROGRAM=CEE* OR PROGRAM=DFH* OR PROGRAM=CJ* OR PROGRAM=EYU* OR PROGRAM=CSQ* OR PROGRAM=CEL* OR PROGRAM=IGZ*)", + }, + TRANSACTION_FILTER: { + ID: "zowe.cics.transaction.filter", + DEFAULT: "NOT (program=DFH* OR program=EYU*)", + }, + LOCAL_FILE_FILTER: { + ID: "zowe.cics.localFile.filter", + DEFAULT: "file=*", + }, + TASK_FILTER: { + ID: "zowe.cics.tasks.filter", + DEFAULT: "TRANID=*", + }, + } }; diff --git a/packages/vsce/src/utils/filterUtils.ts b/packages/vsce/src/utils/filterUtils.ts index fe3d1a3d..9b69d805 100644 --- a/packages/vsce/src/utils/filterUtils.ts +++ b/packages/vsce/src/utils/filterUtils.ts @@ -70,43 +70,11 @@ export async function getPatternFromFilter(resourceName: string, resourceHistory return pattern.replace(/\s/g, ""); } -export async function getDefaultProgramFilter() { - let defaultCriteria = `${await workspace.getConfiguration().get("zowe.cics.program.filter")}`; +export async function getDefaultFilter(params: { ID: string, DEFAULT: string; }): Promise { + let defaultCriteria = `${await workspace.getConfiguration().get(params.ID)}`; if (!defaultCriteria || defaultCriteria.length === 0) { - await workspace - .getConfiguration() - .update( - "zowe.cics.program.filter", - "NOT (PROGRAM=CEE* OR PROGRAM=DFH* OR PROGRAM=CJ* OR PROGRAM=EYU* OR PROGRAM=CSQ* OR PROGRAM=CEL* OR PROGRAM=IGZ*)" - ); - defaultCriteria = "NOT (PROGRAM=CEE* OR PROGRAM=DFH* OR PROGRAM=CJ* OR PROGRAM=EYU* OR PROGRAM=CSQ* OR PROGRAM=CEL* OR PROGRAM=IGZ*)"; - } - return defaultCriteria; -} - -export async function getDefaultTransactionFilter() { - let defaultCriteria = `${await workspace.getConfiguration().get("zowe.cics.transaction.filter")}`; - if (!defaultCriteria || defaultCriteria.length === 0) { - await workspace.getConfiguration().update("zowe.cics.transaction.filter", "NOT (program=DFH* OR program=EYU*)"); - defaultCriteria = "NOT (program=DFH* OR program=EYU*)"; - } - return defaultCriteria; -} - -export async function getDefaultLocalFileFilter() { - let defaultCriteria = `${await workspace.getConfiguration().get("zowe.cics.localFile.filter")}`; - if (!defaultCriteria || defaultCriteria.length === 0) { - await workspace.getConfiguration().update("zowe.cics.localFile.filter", "file=*"); - defaultCriteria = "file=*"; - } - return defaultCriteria; -} - -export async function getDefaultTaskFilter() { - let defaultCriteria = `${await workspace.getConfiguration().get("zowe.cics.tasks.filter")}`; - if (!defaultCriteria || defaultCriteria.length === 0) { - await workspace.getConfiguration().update("zowe.cics.localFile.filter", "(TRANID=*)"); - defaultCriteria = "(TRANID=*)"; + await workspace.getConfiguration().update(params.ID, params.DEFAULT); + defaultCriteria = params.DEFAULT; } return defaultCriteria; } From 98a392a29050fd9e5bd8b7c5f27763fe0c252595 Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Fri, 24 Jan 2025 13:08:41 +0000 Subject: [PATCH 05/17] add web services to sdk Signed-off-by: Andrew Twydell --- packages/sdk/src/doc/resources/IPipeline.ts | 5 +++++ packages/sdk/src/doc/resources/ITCPIP.ts | 6 ++++++ packages/sdk/src/doc/resources/IUriMap.ts | 7 +++++++ packages/sdk/src/doc/resources/IWebService.ts | 5 +++++ packages/sdk/src/doc/resources/index.ts | 4 ++++ 5 files changed, 27 insertions(+) create mode 100644 packages/sdk/src/doc/resources/IPipeline.ts create mode 100644 packages/sdk/src/doc/resources/ITCPIP.ts create mode 100644 packages/sdk/src/doc/resources/IUriMap.ts create mode 100644 packages/sdk/src/doc/resources/IWebService.ts diff --git a/packages/sdk/src/doc/resources/IPipeline.ts b/packages/sdk/src/doc/resources/IPipeline.ts new file mode 100644 index 00000000..5cfb3f3a --- /dev/null +++ b/packages/sdk/src/doc/resources/IPipeline.ts @@ -0,0 +1,5 @@ +import { IResource } from "./IResource"; + +export interface IPipeline extends IResource { + name: string; +} diff --git a/packages/sdk/src/doc/resources/ITCPIP.ts b/packages/sdk/src/doc/resources/ITCPIP.ts new file mode 100644 index 00000000..729a3800 --- /dev/null +++ b/packages/sdk/src/doc/resources/ITCPIP.ts @@ -0,0 +1,6 @@ +import { IResource } from "./IResource"; + +export interface ITCPIP extends IResource { + name: string; + port: string; +} diff --git a/packages/sdk/src/doc/resources/IUriMap.ts b/packages/sdk/src/doc/resources/IUriMap.ts new file mode 100644 index 00000000..d8b8f40f --- /dev/null +++ b/packages/sdk/src/doc/resources/IUriMap.ts @@ -0,0 +1,7 @@ +import { IResource } from "./IResource"; + +export interface IUriMap extends IResource { + name: string; + scheme: string; + path: string; +} diff --git a/packages/sdk/src/doc/resources/IWebService.ts b/packages/sdk/src/doc/resources/IWebService.ts new file mode 100644 index 00000000..b30bec2e --- /dev/null +++ b/packages/sdk/src/doc/resources/IWebService.ts @@ -0,0 +1,5 @@ +import { IResource } from "./IResource"; + +export interface IWebService extends IResource { + name: string; +} diff --git a/packages/sdk/src/doc/resources/index.ts b/packages/sdk/src/doc/resources/index.ts index 8e8b444f..25c66ab7 100644 --- a/packages/sdk/src/doc/resources/index.ts +++ b/packages/sdk/src/doc/resources/index.ts @@ -1,9 +1,13 @@ export * from './ILocalFile'; +export * from './IPipeline'; export * from './IProgram'; export * from './IRegion'; export * from './IResource'; export * from './ITask'; +export * from './ITCPIP'; export * from './ITransaction'; +export * from './IUriMap'; +export * from './IWebService'; From bba99ec6051535b445be2caa4495aff18cd628ab Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Fri, 24 Jan 2025 13:09:43 +0000 Subject: [PATCH 06/17] web trees refactored, added filters to package json Signed-off-by: Andrew Twydell --- packages/vsce/package.json | 24 ++ .../commands/clearResourceFilterCommand.ts | 12 - .../src/commands/filterAllResourceCommand.ts | 12 +- .../src/commands/filterResourceCommands.ts | 22 +- packages/vsce/src/commands/inquireProgram.ts | 3 +- .../src/commands/showAttributesCommand.ts | 30 ++- packages/vsce/src/doc/IResourceMeta.ts | 3 + packages/vsce/src/doc/LocalFileMeta.ts | 3 + packages/vsce/src/doc/PipelineMeta.ts | 37 +++ packages/vsce/src/doc/ProgramMeta.ts | 3 + packages/vsce/src/doc/TCPIPMeta.ts | 42 ++++ packages/vsce/src/doc/TaskMeta.ts | 4 + packages/vsce/src/doc/TransactionMeta.ts | 3 + packages/vsce/src/doc/URIMapMeta.ts | 45 ++++ packages/vsce/src/doc/WebServiceMeta.ts | 37 +++ packages/vsce/src/doc/index.ts | 3 + .../CICSCombinedPipelineTree.ts | 206 ----------------- .../CICSCombinedResourceTree.ts | 2 +- .../CICSCombinedTCPIPServiceTree.ts | 209 ----------------- .../CICSCombinedURIMapTree.ts | 211 ------------------ .../CICSCombinedWebServiceTree.ts | 207 ----------------- packages/vsce/src/trees/CICSPlexTree.ts | 20 +- packages/vsce/src/trees/CICSRegionTree.ts | 13 +- packages/vsce/src/trees/CICSWebTree.ts | 68 ------ .../trees/treeItems/web/CICSPipelineTree.ts | 99 -------- .../treeItems/web/CICSTCPIPServiceTree.ts | 101 --------- .../src/trees/treeItems/web/CICSURIMapTree.ts | 101 --------- .../trees/treeItems/web/CICSWebServiceTree.ts | 99 -------- .../web/treeItems/CICSPipelineTreeItem.ts | 42 ---- .../web/treeItems/CICSTCPIPServiceTreeItem.ts | 42 ---- .../web/treeItems/CICSURIMapTreeItem.ts | 42 ---- .../web/treeItems/CICSWebServiceTreeItem.ts | 42 ---- packages/vsce/src/utils/constants.ts | 16 ++ packages/vsce/src/utils/filterUtils.ts | 4 +- 34 files changed, 265 insertions(+), 1542 deletions(-) create mode 100644 packages/vsce/src/doc/PipelineMeta.ts create mode 100644 packages/vsce/src/doc/TCPIPMeta.ts create mode 100644 packages/vsce/src/doc/URIMapMeta.ts create mode 100644 packages/vsce/src/doc/WebServiceMeta.ts delete mode 100644 packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedPipelineTree.ts delete mode 100644 packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedTCPIPServiceTree.ts delete mode 100644 packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedURIMapTree.ts delete mode 100644 packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedWebServiceTree.ts delete mode 100644 packages/vsce/src/trees/CICSWebTree.ts delete mode 100644 packages/vsce/src/trees/treeItems/web/CICSPipelineTree.ts delete mode 100644 packages/vsce/src/trees/treeItems/web/CICSTCPIPServiceTree.ts delete mode 100644 packages/vsce/src/trees/treeItems/web/CICSURIMapTree.ts delete mode 100644 packages/vsce/src/trees/treeItems/web/CICSWebServiceTree.ts delete mode 100644 packages/vsce/src/trees/treeItems/web/treeItems/CICSPipelineTreeItem.ts delete mode 100644 packages/vsce/src/trees/treeItems/web/treeItems/CICSTCPIPServiceTreeItem.ts delete mode 100644 packages/vsce/src/trees/treeItems/web/treeItems/CICSURIMapTreeItem.ts delete mode 100644 packages/vsce/src/trees/treeItems/web/treeItems/CICSWebServiceTreeItem.ts diff --git a/packages/vsce/package.json b/packages/vsce/package.json index 34d1488e..3b2c6f78 100644 --- a/packages/vsce/package.json +++ b/packages/vsce/package.json @@ -785,6 +785,30 @@ "description": "Default filter criteria for Library", "scope": "window" }, + "zowe.cics.tcpips.filter": { + "type": "string", + "default": "(NAME=*)", + "description": "Default filter criteria for TCPIP Services", + "scope": "window" + }, + "zowe.cics.urimaps.filter": { + "type": "string", + "default": "(NAME=*)", + "description": "Default filter criteria for URIMaps", + "scope": "window" + }, + "zowe.cics.pipelines.filter": { + "type": "string", + "default": "(NAME=*)", + "description": "Default filter criteria for Pipelines", + "scope": "window" + }, + "zowe.cics.webservices.filter": { + "type": "string", + "default": "(NAME=*)", + "description": "Default filter criteria for Web Services", + "scope": "window" + }, "zowe.cics.allPrograms.recordCountIncrement": { "type": "number", "default": 500, diff --git a/packages/vsce/src/commands/clearResourceFilterCommand.ts b/packages/vsce/src/commands/clearResourceFilterCommand.ts index 76039874..16d87134 100644 --- a/packages/vsce/src/commands/clearResourceFilterCommand.ts +++ b/packages/vsce/src/commands/clearResourceFilterCommand.ts @@ -15,10 +15,6 @@ import { CICSResourceTree } from "../trees/CICSResourceTree"; import { CICSTree } from "../trees/CICSTree"; import { CICSLibraryDatasets } from "../trees/treeItems/CICSLibraryDatasets"; import { CICSLibraryTreeItem } from "../trees/treeItems/CICSLibraryTreeItem"; -import { CICSPipelineTree } from "../trees/treeItems/web/CICSPipelineTree"; -import { CICSTCPIPServiceTree } from "../trees/treeItems/web/CICSTCPIPServiceTree"; -import { CICSURIMapTree } from "../trees/treeItems/web/CICSURIMapTree"; -import { CICSWebServiceTree } from "../trees/treeItems/web/CICSWebServiceTree"; import { findSelectedNodes } from "../utils/commandUtils"; export function getClearResourceFilterCommand(tree: CICSTree, treeview: TreeView) { @@ -27,19 +23,11 @@ export function getClearResourceFilterCommand(tree: CICSTree, treeview: TreeView const allSelectedLibraryTreeNodes = findSelectedNodes(treeview, CICSLibraryTree, node); const allSelectedDatasetTreeNodes = findSelectedNodes(treeview, CICSLibraryTreeItem, node); const allSelectedDatasetProgramTreeNodes = findSelectedNodes(treeview, CICSLibraryDatasets, node); - const allSelectedTCPIPServicesTreeNodes = findSelectedNodes(treeview, CICSTCPIPServiceTree, node); - const allSelectedURIMapsTreeNodes = findSelectedNodes(treeview, CICSURIMapTree, node); - const allSelectedWebServiceTreeNodes = findSelectedNodes(treeview, CICSWebServiceTree, node); - const allSelectedPipelineTreeNodes = findSelectedNodes(treeview, CICSPipelineTree, node); const allSelectedNodes = [ ...allSelectedResourceTreeNodes, ...allSelectedLibraryTreeNodes, ...allSelectedDatasetTreeNodes, ...allSelectedDatasetProgramTreeNodes, - ...allSelectedTCPIPServicesTreeNodes, - ...allSelectedURIMapsTreeNodes, - ...allSelectedPipelineTreeNodes, - ...allSelectedWebServiceTreeNodes, ]; if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS resource tree selected"); diff --git a/packages/vsce/src/commands/filterAllResourceCommand.ts b/packages/vsce/src/commands/filterAllResourceCommand.ts index c3619281..86e33b1d 100644 --- a/packages/vsce/src/commands/filterAllResourceCommand.ts +++ b/packages/vsce/src/commands/filterAllResourceCommand.ts @@ -11,11 +11,7 @@ import { commands, TreeView, window } from "vscode"; import { CICSCombinedLibraryTree } from "../trees/CICSCombinedTrees/CICSCombinedLibraryTree"; -import { CICSCombinedPipelineTree } from "../trees/CICSCombinedTrees/CICSCombinedPipelineTree"; import { CICSCombinedResourceTree } from "../trees/CICSCombinedTrees/CICSCombinedResourceTree"; -import { CICSCombinedTCPIPServiceTree } from "../trees/CICSCombinedTrees/CICSCombinedTCPIPServiceTree"; -import { CICSCombinedURIMapTree } from "../trees/CICSCombinedTrees/CICSCombinedURIMapTree"; -import { CICSCombinedWebServiceTree } from "../trees/CICSCombinedTrees/CICSCombinedWebServiceTree"; import { CICSTree } from "../trees/CICSTree"; import { getPatternFromFilter } from "../utils/filterUtils"; import { PersistentStorage } from "../utils/PersistentStorage"; @@ -98,7 +94,7 @@ export function getFilterAllTCPIPServicesCommand(tree: CICSTree, treeview: TreeV let chosenNode; if (node) { chosenNode = node; - } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSCombinedTCPIPServiceTree) { + } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSCombinedResourceTree) { chosenNode = selection[selection.length - 1]; } else { window.showErrorMessage("No CICS 'All TCPIP Services' tree selected"); @@ -170,7 +166,7 @@ export function getFilterAllURIMapsCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.filterTCPIPServices", async (node) => { const selection = treeview.selection; - let chosenNode: CICSTCPIPServiceTree; + let chosenNode: CICSResourceTree; if (node) { chosenNode = node; - } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSTCPIPServiceTree) { + } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSResourceTree) { chosenNode = selection[selection.length - 1]; } else { window.showErrorMessage("No CICS TCPIP Service tree selected"); @@ -298,10 +294,10 @@ export function getFilterTCPIPSCommand(tree: CICSTree, treeview: TreeView) export function getFilterURIMapsCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.filterURIMaps", async (node) => { const selection = treeview.selection; - let chosenNode: CICSURIMapTree; + let chosenNode: CICSResourceTree; if (node) { chosenNode = node; - } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSURIMapTree) { + } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSResourceTree) { chosenNode = selection[selection.length - 1]; } else { window.showErrorMessage("No CICS URI Maps tree selected"); @@ -332,10 +328,10 @@ export function getFilterURIMapsCommand(tree: CICSTree, treeview: TreeView) export function getFilterPipelinesCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.filterPipelines", async (node) => { const selection = treeview.selection; - let chosenNode: CICSPipelineTree; + let chosenNode: CICSResourceTree; if (node) { chosenNode = node; - } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSPipelineTree) { + } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSResourceTree) { chosenNode = selection[selection.length - 1]; } else { window.showErrorMessage("No CICS Pipelines tree selected"); @@ -366,10 +362,10 @@ export function getFilterPipelinesCommand(tree: CICSTree, treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.filterWebServices", async (node) => { const selection = treeview.selection; - let chosenNode: CICSWebServiceTree; + let chosenNode: CICSResourceTree; if (node) { chosenNode = node; - } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSWebServiceTree) { + } else if (selection[selection.length - 1] && selection[selection.length - 1] instanceof CICSResourceTree) { chosenNode = selection[selection.length - 1]; } else { window.showErrorMessage("No CICS Web Services tree selected"); diff --git a/packages/vsce/src/commands/inquireProgram.ts b/packages/vsce/src/commands/inquireProgram.ts index 36003853..5b101db1 100644 --- a/packages/vsce/src/commands/inquireProgram.ts +++ b/packages/vsce/src/commands/inquireProgram.ts @@ -18,7 +18,6 @@ import { CICSRegionsContainer } from "../trees/CICSRegionsContainer"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSResourceTree } from "../trees/CICSResourceTree"; import { CICSTree } from "../trees/CICSTree"; -import { CICSWebTree } from "../trees/CICSWebTree"; import { CICSResourceTreeItem } from "../trees/treeItems/CICSResourceTreeItem"; import { findSelectedNodes } from "../utils/commandUtils"; @@ -34,7 +33,7 @@ export function getInquireProgramCommand(tree: CICSTree, treeview: TreeView window.showErrorMessage("No CICS Transaction selected"); return; } - let resourceFolders: (CICSResourceTree | CICSLibraryTree | CICSWebTree)[]; + let resourceFolders: (CICSResourceTree | CICSLibraryTree)[]; if (allSelectedNodes[0].getParent() instanceof CICSCombinedResourceTree) { const cicsPlex: CICSPlexTree = allSelectedNodes[0].getParent().getParent(); const regionsContainer = cicsPlex.getChildren().filter((child) => child instanceof CICSRegionsContainer)[0]; diff --git a/packages/vsce/src/commands/showAttributesCommand.ts b/packages/vsce/src/commands/showAttributesCommand.ts index 6839c757..dff52687 100644 --- a/packages/vsce/src/commands/showAttributesCommand.ts +++ b/packages/vsce/src/commands/showAttributesCommand.ts @@ -9,16 +9,12 @@ * */ -import { ILocalFile, IProgram, ITask, ITransaction } from "@zowe/cics-for-zowe-sdk"; +import { ILocalFile, IPipeline, IProgram, ITask, ITCPIP, ITransaction, IUriMap, IWebService } from "@zowe/cics-for-zowe-sdk"; import { commands, TreeView, WebviewPanel, window } from "vscode"; import { CICSRegionTree } from "../trees/CICSRegionTree"; import { CICSLibraryDatasets } from "../trees/treeItems/CICSLibraryDatasets"; import { CICSLibraryTreeItem } from "../trees/treeItems/CICSLibraryTreeItem"; import { CICSResourceTreeItem } from "../trees/treeItems/CICSResourceTreeItem"; -import { CICSPipelineTreeItem } from "../trees/treeItems/web/treeItems/CICSPipelineTreeItem"; -import { CICSTCPIPServiceTreeItem } from "../trees/treeItems/web/treeItems/CICSTCPIPServiceTreeItem"; -import { CICSURIMapTreeItem } from "../trees/treeItems/web/treeItems/CICSURIMapTreeItem"; -import { CICSWebServiceTreeItem } from "../trees/treeItems/web/treeItems/CICSWebServiceTreeItem"; import { findSelectedNodes } from "../utils/commandUtils"; import { getAttributesHtml } from "../utils/webviewHTML"; @@ -235,18 +231,18 @@ export function getShowLibraryDatasetsAttributesCommand(treeview: TreeView) export function getShowTCPIPServiceAttributesCommand(treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.showTCPIPServiceAttributes", async (node) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSTCPIPServiceTreeItem, node); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, node); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS TCPIP Service selected"); return; } for (const tcpipsTreeItem of allSelectedNodes) { - const tcpips = tcpipsTreeItem.tcpips; + const tcpips = tcpipsTreeItem.resource; const attributeHeadings = Object.keys(tcpips); let webText = `Attribute `; webText += `Value`; for (const heading of attributeHeadings) { - webText += `${heading.toUpperCase()}${tcpips[heading]}`; + webText += `${heading.toUpperCase()}${tcpips[heading as keyof ITCPIP]}`; } webText += ""; @@ -262,18 +258,18 @@ export function getShowTCPIPServiceAttributesCommand(treeview: TreeView) { export function getShowURIMapAttributesCommand(treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.showURIMapAttributes", async (node) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSURIMapTreeItem, node); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, node); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS URIMap selected"); return; } for (const urimapTreeItem of allSelectedNodes) { - const urimap = urimapTreeItem.urimap; + const urimap = urimapTreeItem.resource; const attributeHeadings = Object.keys(urimap); let webText = `Attribute `; webText += `Value`; for (const heading of attributeHeadings) { - webText += `${heading.toUpperCase()}${urimap[heading]}`; + webText += `${heading.toUpperCase()}${urimap[heading as keyof IUriMap]}`; } webText += ""; @@ -289,18 +285,18 @@ export function getShowURIMapAttributesCommand(treeview: TreeView) { export function getShowPipelineAttributesCommand(treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.showPipelineAttributes", async (node) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSPipelineTreeItem, node); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, node); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS Pipeline selected"); return; } for (const pipelineTreeItem of allSelectedNodes) { - const pipeline = pipelineTreeItem.pipeline; + const pipeline = pipelineTreeItem.resource; const attributeHeadings = Object.keys(pipeline); let webText = `Attribute `; webText += `Value`; for (const heading of attributeHeadings) { - webText += `${heading.toUpperCase()}${pipeline[heading]}`; + webText += `${heading.toUpperCase()}${pipeline[heading as keyof IPipeline]}`; } webText += ""; @@ -319,18 +315,18 @@ export function getShowPipelineAttributesCommand(treeview: TreeView) { export function getShowWebServiceAttributesCommand(treeview: TreeView) { return commands.registerCommand("cics-extension-for-zowe.showWebServiceAttributes", async (node) => { - const allSelectedNodes = findSelectedNodes(treeview, CICSWebServiceTreeItem, node); + const allSelectedNodes: CICSResourceTreeItem[] = findSelectedNodes(treeview, CICSResourceTreeItem, node); if (!allSelectedNodes || !allSelectedNodes.length) { await window.showErrorMessage("No CICS Web Service selected"); return; } for (const webServiceTreeItem of allSelectedNodes) { - const webService = webServiceTreeItem.webservice; + const webService = webServiceTreeItem.resource; const attributeHeadings = Object.keys(webService); let webText = `Attribute `; webText += `Value`; for (const heading of attributeHeadings) { - webText += `${heading.toUpperCase()}${webService[heading]}`; + webText += `${heading.toUpperCase()}${webService[heading as keyof IWebService]}`; } webText += ""; diff --git a/packages/vsce/src/doc/IResourceMeta.ts b/packages/vsce/src/doc/IResourceMeta.ts index 14466a53..9df70aa0 100644 --- a/packages/vsce/src/doc/IResourceMeta.ts +++ b/packages/vsce/src/doc/IResourceMeta.ts @@ -8,6 +8,9 @@ export interface ResourceMeta { filterAttribute: string; primaryKeyAttribute: string; + persistentStorageKey: string; + persistentStorageAllKey: string; + getDefaultFilter(): Promise; getLabel(resource: T): string; getContext(resource: T): string; diff --git a/packages/vsce/src/doc/LocalFileMeta.ts b/packages/vsce/src/doc/LocalFileMeta.ts index 1e082ac8..1c4c807e 100644 --- a/packages/vsce/src/doc/LocalFileMeta.ts +++ b/packages/vsce/src/doc/LocalFileMeta.ts @@ -13,6 +13,9 @@ export const LocalFileMeta: ResourceMeta = { filterAttribute: "file", primaryKeyAttribute: "file", + persistentStorageKey: "localFile", + persistentStorageAllKey: "allLocalFiles", + getDefaultFilter: async function (): Promise { return getDefaultFilter(constants.PERSISTENT_STORAGE.LOCAL_FILE_FILTER); }, diff --git a/packages/vsce/src/doc/PipelineMeta.ts b/packages/vsce/src/doc/PipelineMeta.ts new file mode 100644 index 00000000..d357de35 --- /dev/null +++ b/packages/vsce/src/doc/PipelineMeta.ts @@ -0,0 +1,37 @@ +import { IPipeline } from "@zowe/cics-for-zowe-sdk"; +import constants from "../utils/constants"; +import { getDefaultFilter } from "../utils/filterUtils"; +import { ResourceMeta } from "./IResourceMeta"; + + +export const PipelineMeta: ResourceMeta = { + + resourceName: "CICSPipeline", + humanReadableName: "Pipelines", + contextPrefix: "cicstreepipeline", + combinedContextPrefix: "cicscombinedpipelinetree", + filterAttribute: "NAME", + primaryKeyAttribute: "name", + + persistentStorageKey: "pipelines", + persistentStorageAllKey: "allPipelines", + + getDefaultFilter: async function (): Promise { + return getDefaultFilter(constants.PERSISTENT_STORAGE.PIPELINE_FILTER); + }, + + getLabel: function (pipeline: IPipeline): string { + const label = `${pipeline.name}`; + return label; + }, + + getContext: function (pipeline: IPipeline): string { + return `cicspipeline.${pipeline.name}`; + }, + + getIconName: function (_pipeline: IPipeline): string { + return `program`; + } + +}; + diff --git a/packages/vsce/src/doc/ProgramMeta.ts b/packages/vsce/src/doc/ProgramMeta.ts index 146d317b..cb424c45 100644 --- a/packages/vsce/src/doc/ProgramMeta.ts +++ b/packages/vsce/src/doc/ProgramMeta.ts @@ -13,6 +13,9 @@ export const ProgramMeta: ResourceMeta = { filterAttribute: "PROGRAM", primaryKeyAttribute: "program", + persistentStorageKey: "program", + persistentStorageAllKey: "allPrograms", + getDefaultFilter: async function (): Promise { return getDefaultFilter(constants.PERSISTENT_STORAGE.PROGRAM_FILTER); }, diff --git a/packages/vsce/src/doc/TCPIPMeta.ts b/packages/vsce/src/doc/TCPIPMeta.ts new file mode 100644 index 00000000..495ab2cc --- /dev/null +++ b/packages/vsce/src/doc/TCPIPMeta.ts @@ -0,0 +1,42 @@ +import { ITCPIP } from "@zowe/cics-for-zowe-sdk"; +import constants from "../utils/constants"; +import { getDefaultFilter } from "../utils/filterUtils"; +import { ResourceMeta } from "./IResourceMeta"; + + +export const TCPIPMeta: ResourceMeta = { + + resourceName: "CICSTCPIPService", + humanReadableName: "TCPIP Services", + contextPrefix: "cicstreetcpips", + combinedContextPrefix: "cicscombinedtcpipstree", + filterAttribute: "NAME", + primaryKeyAttribute: "name", + + persistentStorageKey: "tcpips", + persistentStorageAllKey: "allTCPIPS", + + getDefaultFilter: async function (): Promise { + return getDefaultFilter(constants.PERSISTENT_STORAGE.TCPIP_FILTER); + }, + + getLabel: function (tcpips: ITCPIP): string { + let label = `${tcpips.name}`; + + if (tcpips.port) { + label += ` [Port #${tcpips.port}]`; + } + + return label; + }, + + getContext: function (tcpips: ITCPIP): string { + return `cicstcpips.${tcpips.name}`; + }, + + getIconName: function (_tcpips: ITCPIP): string { + return `program`; + } + +}; + diff --git a/packages/vsce/src/doc/TaskMeta.ts b/packages/vsce/src/doc/TaskMeta.ts index e14629f7..8c07a3de 100644 --- a/packages/vsce/src/doc/TaskMeta.ts +++ b/packages/vsce/src/doc/TaskMeta.ts @@ -13,6 +13,10 @@ export const TaskMeta: ResourceMeta = { filterAttribute: "tranid", primaryKeyAttribute: "task", + persistentStorageKey: "tasks", + persistentStorageAllKey: "allTasks", + + getDefaultFilter: async function (): Promise { return getDefaultFilter(constants.PERSISTENT_STORAGE.PROGRAM_FILTER); }, diff --git a/packages/vsce/src/doc/TransactionMeta.ts b/packages/vsce/src/doc/TransactionMeta.ts index 2e023cd2..e607aac3 100644 --- a/packages/vsce/src/doc/TransactionMeta.ts +++ b/packages/vsce/src/doc/TransactionMeta.ts @@ -13,6 +13,9 @@ export const TransactionMeta: ResourceMeta = { filterAttribute: "tranid", primaryKeyAttribute: "tranid", + persistentStorageKey: "transaction", + persistentStorageAllKey: "allTransactions", + getDefaultFilter: async function (): Promise { return getDefaultFilter(constants.PERSISTENT_STORAGE.TRANSACTION_FILTER); }, diff --git a/packages/vsce/src/doc/URIMapMeta.ts b/packages/vsce/src/doc/URIMapMeta.ts new file mode 100644 index 00000000..ada05a72 --- /dev/null +++ b/packages/vsce/src/doc/URIMapMeta.ts @@ -0,0 +1,45 @@ +import { IUriMap } from "@zowe/cics-for-zowe-sdk"; +import constants from "../utils/constants"; +import { getDefaultFilter } from "../utils/filterUtils"; +import { ResourceMeta } from "./IResourceMeta"; + + +export const URIMapMeta: ResourceMeta = { + + resourceName: "CICSURIMap", + humanReadableName: "URI Maps", + contextPrefix: "cicstreeurimaps", + combinedContextPrefix: "cicscombinedurimapstree", + filterAttribute: "NAME", + primaryKeyAttribute: "name", + + persistentStorageKey: "urimaps", + persistentStorageAllKey: "allURIMaps", + + getDefaultFilter: async function (): Promise { + return getDefaultFilter(constants.PERSISTENT_STORAGE.URIMAP_FILTER); + }, + + getLabel: function (urimap: IUriMap): string { + let label = `${urimap.name}`; + + if (urimap.scheme) { + label += ` [${urimap.scheme}]`; + } + if (urimap.path) { + label += ` (${urimap.path})`; + } + + return label; + }, + + getContext: function (urimap: IUriMap): string { + return `cicsurimaps.${urimap.name}`; + }, + + getIconName: function (_urimap: IUriMap): string { + return `program`; + } + +}; + diff --git a/packages/vsce/src/doc/WebServiceMeta.ts b/packages/vsce/src/doc/WebServiceMeta.ts new file mode 100644 index 00000000..fb8b948b --- /dev/null +++ b/packages/vsce/src/doc/WebServiceMeta.ts @@ -0,0 +1,37 @@ +import { IWebService } from "@zowe/cics-for-zowe-sdk"; +import constants from "../utils/constants"; +import { getDefaultFilter } from "../utils/filterUtils"; +import { ResourceMeta } from "./IResourceMeta"; + + +export const WebServiceMeta: ResourceMeta = { + + resourceName: "CICSWebService", + humanReadableName: "Web Services", + contextPrefix: "cicstreewebservice", + combinedContextPrefix: "cicscombinedwebservicetree", + filterAttribute: "NAME", + primaryKeyAttribute: "name", + + persistentStorageKey: "webservices", + persistentStorageAllKey: "allWebServices", + + getDefaultFilter: async function (): Promise { + return getDefaultFilter(constants.PERSISTENT_STORAGE.WEBSERVICE_FILTER); + }, + + getLabel: function (webservice: IWebService): string { + const label = `${webservice.name}`; + return label; + }, + + getContext: function (webservice: IWebService): string { + return `cicswebservice.${webservice.name}`; + }, + + getIconName: function (_webservice: IWebService): string { + return `program`; + } + +}; + diff --git a/packages/vsce/src/doc/index.ts b/packages/vsce/src/doc/index.ts index ba5fd2f9..6d29944d 100644 --- a/packages/vsce/src/doc/index.ts +++ b/packages/vsce/src/doc/index.ts @@ -1,7 +1,10 @@ export * from "./IResourceMeta"; export * from "./LocalFileMeta"; +export * from "./PipelineMeta"; export * from "./ProgramMeta"; export * from "./TaskMeta"; +export * from "./TCPIPMeta"; export * from "./TransactionMeta"; +export * from "./URIMapMeta"; diff --git a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedPipelineTree.ts b/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedPipelineTree.ts deleted file mode 100644 index dd6405df..00000000 --- a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedPipelineTree.ts +++ /dev/null @@ -1,206 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { ProgressLocation, TreeItem, TreeItemCollapsibleState, window, workspace } from "vscode"; -import { toEscapedCriteriaString } from "../../utils/filterUtils"; -import { ProfileManagement } from "../../utils/profileManagement"; -import { CICSPlexTree } from "../CICSPlexTree"; -import { CICSRegionsContainer } from "../CICSRegionsContainer"; -import { CICSRegionTree } from "../CICSRegionTree"; -import { CICSTree } from "../CICSTree"; -import { TextTreeItem } from "../treeItems/utils/TextTreeItem"; -import { getFolderIcon } from "../../utils/iconUtils"; -import { ViewMore } from "../treeItems/utils/ViewMore"; -import { CICSPipelineTreeItem } from "../treeItems/web/treeItems/CICSPipelineTreeItem"; - -export class CICSCombinedPipelineTree extends TreeItem { - children: (CICSPipelineTreeItem | ViewMore)[] | [TextTreeItem] | null; - parentPlex: CICSPlexTree; - activeFilter: string | undefined; - currentCount: number; - incrementCount: number; - constant: string; - - constructor( - parentPlex: CICSPlexTree, - public iconPath = getFolderIcon(false), - ) { - super("All Pipelines", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicscombinedpipelinetree.`; - this.parentPlex = parentPlex; - this.children = [new TextTreeItem("Use the search button to display pipelines", "applyfiltertext.")]; - this.activeFilter = undefined; - this.currentCount = 0; - this.incrementCount = +`${workspace.getConfiguration().get("zowe.cics.allPipelines.recordCountIncrement")}`; - this.constant = "CICSPipeline"; - } - - public async loadContents(tree: CICSTree) { - await window.withProgress( - { - title: "Loading Pipelines", - location: ProgressLocation.Notification, - cancellable: true, - }, - async (_, token) => { - token.onCancellationRequested(() => {}); - try { - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "NAME"); - } - let count; - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - criteria, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - const recordsCount = cacheTokenInfo.recordCount; - if (recordsCount) { - let allPipelines; - if (recordsCount <= this.incrementCount) { - allPipelines = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - recordsCount, - ); - } else { - allPipelines = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - this.incrementCount, - ); - count = recordsCount; - } - this.addPipelinesUtil([], allPipelines, count); - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - } else { - this.children = []; - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - window.showInformationMessage(`No pipelines found`); - this.label = `All Pipelines${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${recordsCount}]`; - } - } - } catch (error) { - window.showErrorMessage( - `Something went wrong when fetching pipelines - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( - /(\\n\t|\\n|\\t)/gm, - " ", - )}`, - ); - } - }, - ); - } - - public addPipelinesUtil(newChildren: (CICSPipelineTreeItem | ViewMore)[], allPipelines: any, count: number | undefined) { - for (const pipeline of allPipelines) { - const regionsContainer = this.parentPlex.children.filter((child) => child instanceof CICSRegionsContainer)?.[0]; - if (regionsContainer == null) { - continue; - } - const parentRegion = regionsContainer - .getChildren()! - .filter((child) => child instanceof CICSRegionTree && child.getRegionName() === pipeline.eyu_cicsname)?.[0] as CICSRegionTree; - const pipelineTree = new CICSPipelineTreeItem(pipeline, parentRegion, this); - pipelineTree.setLabel(pipelineTree.label.toString().replace(pipeline.name, `${pipeline.name} (${pipeline.eyu_cicsname})`)); - newChildren.push(pipelineTree); - } - if (!count) { - count = newChildren.length; - } - this.currentCount = newChildren.length; - this.label = `All Pipelines ${this.activeFilter ? `(${this.activeFilter}) ` : " "}[${this.currentCount} of ${count}]`; - if (count !== this.currentCount) { - newChildren.push(new ViewMore(this, Math.min(this.incrementCount, count - this.currentCount))); - } - this.children = newChildren; - } - - public async addMoreCachedResources(tree: CICSTree) { - await window.withProgress( - { - title: "Loading more pipelins", - location: ProgressLocation.Notification, - cancellable: false, - }, - async () => { - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "NAME"); - } - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - criteria, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - // record count may have updated - const recordsCount = cacheTokenInfo.recordCount; - const count = recordsCount; - const allPipelines = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - this.currentCount + 1, - this.incrementCount, - ); - if (allPipelines) { - // @ts-ignore - this.addPipelinesUtil( - (this.getChildren()?.filter((child) => child instanceof CICSPipelineTreeItem) ?? []) as CICSPipelineTreeItem[], - allPipelines, - count, - ); - tree._onDidChangeTreeData.fire(undefined); - } - } - }, - ); - } - - public clearFilter() { - this.activeFilter = undefined; - this.label = `All Pipelines`; - this.contextValue = `cicscombinedpipelinetree.unfiltered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.label = `All Pipelines (${this.activeFilter})`; - this.contextValue = `cicscombinedpipelinetree.filtered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getChildren() { - return this.children ? this.children.filter((child) => !(child instanceof TextTreeItem)) : []; - } - - public getActiveFilter() { - return this.activeFilter; - } - - public getParent() { - return this.parentPlex; - } -} diff --git a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedResourceTree.ts b/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedResourceTree.ts index 8ac60f2f..13ca46e9 100644 --- a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedResourceTree.ts +++ b/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedResourceTree.ts @@ -41,7 +41,7 @@ export class CICSCombinedResourceTree extends TreeItem { this.activeFilter = undefined; this.currentCount = 0; this.incrementCount = +`${workspace.getConfiguration().get( - `zowe.cics.all${resourceMeta.humanReadableName.replaceAll(" ", "")}.recordCountIncrement` + `zowe.cics.${resourceMeta.persistentStorageAllKey}.recordCountIncrement` )}`; } diff --git a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedTCPIPServiceTree.ts b/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedTCPIPServiceTree.ts deleted file mode 100644 index 1d653089..00000000 --- a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedTCPIPServiceTree.ts +++ /dev/null @@ -1,209 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { ProgressLocation, TreeItem, TreeItemCollapsibleState, window, workspace } from "vscode"; -import { toEscapedCriteriaString } from "../../utils/filterUtils"; -import { ProfileManagement } from "../../utils/profileManagement"; -import { CICSPlexTree } from "../CICSPlexTree"; -import { CICSRegionsContainer } from "../CICSRegionsContainer"; -import { CICSRegionTree } from "../CICSRegionTree"; -import { CICSTree } from "../CICSTree"; -import { TextTreeItem } from "../treeItems/utils/TextTreeItem"; -import { getFolderIcon } from "../../utils/iconUtils"; -import { ViewMore } from "../treeItems/utils/ViewMore"; -import { CICSTCPIPServiceTreeItem } from "../treeItems/web/treeItems/CICSTCPIPServiceTreeItem"; - -export class CICSCombinedTCPIPServiceTree extends TreeItem { - children: (CICSTCPIPServiceTreeItem | ViewMore)[] | [TextTreeItem] | null; - parentPlex: CICSPlexTree; - activeFilter: string | undefined; - currentCount: number; - incrementCount: number; - constant: string; - - constructor( - parentPlex: CICSPlexTree, - public iconPath = getFolderIcon(false), - ) { - super("All TCPIP Services", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicscombinedtcpipstree.`; - this.parentPlex = parentPlex; - this.children = [new TextTreeItem("Use the search button to display TCPIP Services", "applyfiltertext.")]; - this.activeFilter = undefined; - this.currentCount = 0; - this.incrementCount = +`${workspace.getConfiguration().get("zowe.cics.allTCPIPS.recordCountIncrement")}`; - this.constant = "CICSTCPIPService"; - } - - public async loadContents(tree: CICSTree) { - await window.withProgress( - { - title: "Loading TCPIP Services", - location: ProgressLocation.Notification, - cancellable: true, - }, - async (_, token) => { - token.onCancellationRequested(() => {}); - try { - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "NAME"); - } - let count; - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - criteria, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - const recordsCount = cacheTokenInfo.recordCount; - if (recordsCount) { - let allTCPIPS; - if (recordsCount <= this.incrementCount) { - allTCPIPS = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - recordsCount, - ); - } else { - allTCPIPS = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - this.incrementCount, - ); - count = recordsCount; - } - this.addTCPIPSUtil([], allTCPIPS, count); - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - } else { - this.children = []; - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - window.showInformationMessage(`No TCPIP Services found`); - this.label = `All TCPIP Services${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${recordsCount}]`; - } - } - } catch (error) { - window.showErrorMessage( - `Something went wrong when fetching TCPIP Services TEST - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( - /(\\n\t|\\n|\\t)/gm, - " ", - )}`, - ); - } - }, - ); - } - - public addTCPIPSUtil(newChildren: (CICSTCPIPServiceTreeItem | ViewMore)[], allTCPIPS: any, count: number | undefined) { - for (const tcpips of allTCPIPS) { - // Regions container must exist if all TCPIP Services tree exists - const regionsContainer = this.parentPlex.children.filter((child) => child instanceof CICSRegionsContainer)?.[0]; - if (regionsContainer == null) { - continue; - } - const parentRegion = regionsContainer - .getChildren()! - .filter((child) => child instanceof CICSRegionTree && child.getRegionName() === tcpips.eyu_cicsname)?.[0] as CICSRegionTree; - const tcpipsTree = new CICSTCPIPServiceTreeItem(tcpips, parentRegion, this); - tcpipsTree.setLabel( - tcpipsTree.label.toString().replace(tcpips.name, `${tcpips.name} (${tcpips.eyu_cicsname}) [Port #${tcpipsTree.tcpips.port}]`), - ); - newChildren.push(tcpipsTree); - } - if (!count) { - count = newChildren.length; - } - this.currentCount = newChildren.length; - this.label = `All TCPIP Services ${this.activeFilter ? `(${this.activeFilter}) ` : " "}[${this.currentCount} of ${count}]`; - if (count !== this.currentCount) { - newChildren.push(new ViewMore(this, Math.min(this.incrementCount, count - this.currentCount))); - } - this.children = newChildren; - } - - public async addMoreCachedResources(tree: CICSTree) { - await window.withProgress( - { - title: "Loading more TCPIP Services", - location: ProgressLocation.Notification, - cancellable: false, - }, - async () => { - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "NAME"); - } - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - criteria, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - // record count may have updated - const recordsCount = cacheTokenInfo.recordCount; - const count = recordsCount; - const allTCPIPS = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - this.currentCount + 1, - this.incrementCount, - ); - if (allTCPIPS) { - // @ts-ignore - this.addTCPIPSUtil( - (this.getChildren()?.filter((child) => child instanceof CICSTCPIPServiceTreeItem) ?? []) as CICSTCPIPServiceTreeItem[], - allTCPIPS, - count, - ); - tree._onDidChangeTreeData.fire(undefined); - } - } - }, - ); - } - - public clearFilter() { - this.activeFilter = undefined; - this.label = `All TCPIP Services`; - this.contextValue = `cicscombinedtcpipstree.unfiltered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.label = `All TCPIP Services (${this.activeFilter})`; - this.contextValue = `cicscombinedtcpipstree.filtered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getChildren() { - return this.children ? this.children.filter((child) => !(child instanceof TextTreeItem)) : []; - } - - public getActiveFilter() { - return this.activeFilter; - } - - public getParent() { - return this.parentPlex; - } -} diff --git a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedURIMapTree.ts b/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedURIMapTree.ts deleted file mode 100644 index f71143f6..00000000 --- a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedURIMapTree.ts +++ /dev/null @@ -1,211 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { ProgressLocation, TreeItem, TreeItemCollapsibleState, window, workspace } from "vscode"; -import { toEscapedCriteriaString } from "../../utils/filterUtils"; -import { ProfileManagement } from "../../utils/profileManagement"; -import { CICSPlexTree } from "../CICSPlexTree"; -import { CICSRegionsContainer } from "../CICSRegionsContainer"; -import { CICSRegionTree } from "../CICSRegionTree"; -import { CICSTree } from "../CICSTree"; -import { TextTreeItem } from "../treeItems/utils/TextTreeItem"; -import { getFolderIcon } from "../../utils/iconUtils"; -import { ViewMore } from "../treeItems/utils/ViewMore"; -import { CICSURIMapTreeItem } from "../treeItems/web/treeItems/CICSURIMapTreeItem"; - -export class CICSCombinedURIMapTree extends TreeItem { - children: (CICSURIMapTreeItem | ViewMore)[] | [TextTreeItem] | null; - parentPlex: CICSPlexTree; - activeFilter: string | undefined; - currentCount: number; - incrementCount: number; - constant: string; - - constructor( - parentPlex: CICSPlexTree, - public iconPath = getFolderIcon(false), - ) { - super("All URI Maps", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicscombinedurimapstree.`; - this.parentPlex = parentPlex; - this.children = [new TextTreeItem("Use the search button to display URI Maps", "applyfiltertext.")]; - this.activeFilter = undefined; - this.currentCount = 0; - this.incrementCount = +`${workspace.getConfiguration().get("zowe.cics.allURIMaps.recordCountIncrement")}`; - this.constant = "CICSURIMap"; - } - - public async loadContents(tree: CICSTree) { - await window.withProgress( - { - title: "Loading URI Maps", - location: ProgressLocation.Notification, - cancellable: true, - }, - async (_, token) => { - token.onCancellationRequested(() => {}); - try { - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "NAME"); - } - let count; - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - criteria, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - const recordsCount = cacheTokenInfo.recordCount; - if (recordsCount) { - let allURIMaps; - if (recordsCount <= this.incrementCount) { - allURIMaps = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - recordsCount, - ); - } else { - allURIMaps = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - this.incrementCount, - ); - count = recordsCount; - } - this.addURIMapsUtil([], allURIMaps, count); - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - } else { - this.children = []; - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - window.showInformationMessage(`No URI Maps found`); - this.label = `All URI Maps ${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${recordsCount}]`; - } - } - } catch (error) { - window.showErrorMessage( - `Something went wrong when fetching URI Maps - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( - /(\\n\t|\\n|\\t)/gm, - " ", - )}`, - ); - } - }, - ); - } - - public addURIMapsUtil(newChildren: (CICSURIMapTreeItem | ViewMore)[], allURIMaps: any, count: number | undefined) { - for (const urimaps of allURIMaps) { - // Regions container must exist if all URI Maps tree exists - const regionsContainer = this.parentPlex.children.filter((child) => child instanceof CICSRegionsContainer)?.[0]; - if (regionsContainer == null) { - continue; - } - const parentRegion = regionsContainer - .getChildren()! - .filter((child) => child instanceof CICSRegionTree && child.getRegionName() === urimaps.eyu_cicsname)?.[0] as CICSRegionTree; - const urimapsTree = new CICSURIMapTreeItem(urimaps, parentRegion, this); - urimapsTree.setLabel( - urimapsTree.label - .toString() - .replace(urimaps.name, `${urimaps.name} (${urimaps.eyu_cicsname}) [${urimapsTree.urimap.scheme}] (${urimapsTree.urimap.path})`), - ); - newChildren.push(urimapsTree); - } - if (!count) { - count = newChildren.length; - } - this.currentCount = newChildren.length; - this.label = `All URI Maps ${this.activeFilter ? `(${this.activeFilter}) ` : " "}[${this.currentCount} of ${count}]`; - if (count !== this.currentCount) { - newChildren.push(new ViewMore(this, Math.min(this.incrementCount, count - this.currentCount))); - } - this.children = newChildren; - } - - public async addMoreCachedResources(tree: CICSTree) { - await window.withProgress( - { - title: "Loading more URI Maps", - location: ProgressLocation.Notification, - cancellable: false, - }, - async () => { - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "NAME"); - } - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - criteria, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - // record count may have updated - const recordsCount = cacheTokenInfo.recordCount; - const count = recordsCount; - const allURIMaps = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - this.currentCount + 1, - this.incrementCount, - ); - if (allURIMaps) { - // @ts-ignore - this.addURIMapsUtil( - (this.getChildren()?.filter((child) => child instanceof CICSURIMapTreeItem) ?? []) as CICSURIMapTreeItem[], - allURIMaps, - count, - ); - tree._onDidChangeTreeData.fire(undefined); - } - } - }, - ); - } - - public clearFilter() { - this.activeFilter = undefined; - this.label = `All URI Maps`; - this.contextValue = `cicscombinedurimapstree.unfiltered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.label = `All URI Maps (${this.activeFilter})`; - this.contextValue = `cicscombinedurimapstree.filtered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getChildren() { - return this.children ? this.children.filter((child) => !(child instanceof TextTreeItem)) : []; - } - - public getActiveFilter() { - return this.activeFilter; - } - - public getParent() { - return this.parentPlex; - } -} diff --git a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedWebServiceTree.ts b/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedWebServiceTree.ts deleted file mode 100644 index 431876e1..00000000 --- a/packages/vsce/src/trees/CICSCombinedTrees/CICSCombinedWebServiceTree.ts +++ /dev/null @@ -1,207 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { ProgressLocation, TreeItem, TreeItemCollapsibleState, window, workspace } from "vscode"; -import { toEscapedCriteriaString } from "../../utils/filterUtils"; -import { ProfileManagement } from "../../utils/profileManagement"; -import { CICSPlexTree } from "../CICSPlexTree"; -import { CICSRegionsContainer } from "../CICSRegionsContainer"; -import { CICSRegionTree } from "../CICSRegionTree"; -import { CICSTree } from "../CICSTree"; -import { TextTreeItem } from "../treeItems/utils/TextTreeItem"; -import { getFolderIcon } from "../../utils/iconUtils"; -import { ViewMore } from "../treeItems/utils/ViewMore"; -import { CICSWebServiceTreeItem } from "../treeItems/web/treeItems/CICSWebServiceTreeItem"; - -export class CICSCombinedWebServiceTree extends TreeItem { - children: (CICSWebServiceTreeItem | ViewMore)[] | [TextTreeItem] | null; - parentPlex: CICSPlexTree; - activeFilter: string | undefined; - currentCount: number; - incrementCount: number; - constant: string; - - constructor( - parentPlex: CICSPlexTree, - public iconPath = getFolderIcon(false), - ) { - super("All Web Services", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicscombinedwebservicetree.`; - this.parentPlex = parentPlex; - this.children = [new TextTreeItem("Use the search button to display web services", "applyfiltertext.")]; - this.activeFilter = undefined; - this.currentCount = 0; - this.incrementCount = +`${workspace.getConfiguration().get("zowe.cics.allWebServices.recordCountIncrement")}`; - this.constant = "CICSWebService"; - } - - public async loadContents(tree: CICSTree) { - await window.withProgress( - { - title: "Loading Web Services", - location: ProgressLocation.Notification, - cancellable: true, - }, - async (_, token) => { - token.onCancellationRequested(() => {}); - try { - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "NAME"); - } - let count; - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - criteria, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - const recordsCount = cacheTokenInfo.recordCount; - if (recordsCount) { - let allWebServices; - if (recordsCount <= this.incrementCount) { - allWebServices = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - recordsCount, - ); - } else { - allWebServices = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - 1, - this.incrementCount, - ); - count = recordsCount; - } - this.addWebServicesUtil([], allWebServices, count); - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - } else { - this.children = []; - this.iconPath = getFolderIcon(true); - tree._onDidChangeTreeData.fire(undefined); - window.showInformationMessage(`No Web Services found`); - this.label = `All Web Services${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${recordsCount}]`; - } - } - } catch (error) { - await window.showErrorMessage( - `Something went wrong when fetching web services - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( - /(\\n\t|\\n|\\t)/gm, - " ", - )}`, - ); - } - }, - ); - } - - public addWebServicesUtil(newChildren: (CICSWebServiceTreeItem | ViewMore)[], allWebServices: any, count: number | undefined) { - for (const webservice of allWebServices) { - // Regions container must exist if all web services tree exists - const regionsContainer = this.parentPlex.children.filter((child) => child instanceof CICSRegionsContainer)?.[0]; - if (regionsContainer == null) { - continue; - } - const parentRegion = regionsContainer - .getChildren()! - .filter((child) => child instanceof CICSRegionTree && child.getRegionName() === webservice.eyu_cicsname)?.[0] as CICSRegionTree; - const webserviceTree = new CICSWebServiceTreeItem(webservice, parentRegion, this); - webserviceTree.setLabel(webserviceTree.label.toString().replace(webservice.name, `${webservice.name} (${webservice.eyu_cicsname})`)); - newChildren.push(webserviceTree); - } - if (!count) { - count = newChildren.length; - } - this.currentCount = newChildren.length; - this.label = `All Web Services ${this.activeFilter ? `(${this.activeFilter}) ` : " "}[${this.currentCount} of ${count}]`; - if (count !== this.currentCount) { - newChildren.push(new ViewMore(this, Math.min(this.incrementCount, count - this.currentCount))); - } - this.children = newChildren; - } - - public async addMoreCachedResources(tree: CICSTree) { - await window.withProgress( - { - title: "Loading more pipelins", - location: ProgressLocation.Notification, - cancellable: false, - }, - async () => { - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "NAME"); - } - const cacheTokenInfo = await ProfileManagement.generateCacheToken( - this.parentPlex.getProfile(), - this.parentPlex.getPlexName(), - this.constant, - criteria, - this.getParent().getGroupName(), - ); - if (cacheTokenInfo) { - // record count may have updated - const recordsCount = cacheTokenInfo.recordCount; - const count = recordsCount; - const allWebServices = await ProfileManagement.getCachedResources( - this.parentPlex.getProfile(), - cacheTokenInfo.cacheToken, - this.constant, - this.currentCount + 1, - this.incrementCount, - ); - if (allWebServices) { - // @ts-ignore - this.addWebServicesUtil( - (this.getChildren()?.filter((child) => child instanceof CICSWebServiceTreeItem) ?? []) as CICSWebServiceTreeItem[], - allWebServices, - count, - ); - tree._onDidChangeTreeData.fire(undefined); - } - } - }, - ); - } - - public clearFilter() { - this.activeFilter = undefined; - this.label = `All Web Services`; - this.contextValue = `cicscombinedwebservicetree.unfiltered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.label = `All Web Services (${this.activeFilter})`; - this.contextValue = `cicscombinedwebservicetree.filtered`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getChildren() { - return this.children ? this.children.filter((child) => !(child instanceof TextTreeItem)) : []; - } - - public getActiveFilter() { - return this.activeFilter; - } - - public getParent() { - return this.parentPlex; - } -} diff --git a/packages/vsce/src/trees/CICSPlexTree.ts b/packages/vsce/src/trees/CICSPlexTree.ts index b80b2ffa..7a268392 100644 --- a/packages/vsce/src/trees/CICSPlexTree.ts +++ b/packages/vsce/src/trees/CICSPlexTree.ts @@ -14,14 +14,10 @@ import { getIconFilePathFromName } from "../utils/iconUtils"; import { getResource, IResource } from "@zowe/cics-for-zowe-sdk"; import { imperative } from "@zowe/zowe-explorer-api"; import { TreeItem, TreeItemCollapsibleState } from "vscode"; -import { LocalFileMeta, ProgramMeta, TaskMeta, TransactionMeta } from "../doc"; +import { LocalFileMeta, PipelineMeta, ProgramMeta, TaskMeta, TCPIPMeta, TransactionMeta, URIMapMeta } from "../doc"; +import { WebServiceMeta } from "../doc/WebServiceMeta"; import { CICSCombinedLibraryTree } from "./CICSCombinedTrees/CICSCombinedLibraryTree"; -import { CICSCombinedPipelineTree } from "./CICSCombinedTrees/CICSCombinedPipelineTree"; import { CICSCombinedResourceTree } from "./CICSCombinedTrees/CICSCombinedResourceTree"; -import { CICSCombinedTCPIPServiceTree } from "./CICSCombinedTrees/CICSCombinedTCPIPServiceTree"; -import { CICSCombinedURIMapTree } from "./CICSCombinedTrees/CICSCombinedURIMapTree"; -import { CICSCombinedWebServiceTree } from "./CICSCombinedTrees/CICSCombinedWebServiceTree"; - import { CICSRegionTree } from "./CICSRegionTree"; import { CICSSessionTree } from "./CICSSessionTree"; @@ -31,10 +27,6 @@ export class CICSPlexTree extends TreeItem { | CICSCombinedResourceTree | CICSCombinedLibraryTree | CICSRegionsContainer - | CICSCombinedTCPIPServiceTree - | CICSCombinedURIMapTree - | CICSCombinedPipelineTree - | CICSCombinedWebServiceTree )[] = []; plexName: string; profile: imperative.IProfileLoaded; @@ -159,10 +151,10 @@ export class CICSPlexTree extends TreeItem { this.children.push(new CICSCombinedResourceTree(this, LocalFileMeta)); this.children.push(new CICSCombinedResourceTree(this, TaskMeta)); this.children.push(new CICSCombinedLibraryTree(this)); - this.children.push(new CICSCombinedTCPIPServiceTree(this)); - this.children.push(new CICSCombinedURIMapTree(this)); - this.children.push(new CICSCombinedWebServiceTree(this)); - this.children.push(new CICSCombinedPipelineTree(this)); + this.children.push(new CICSCombinedResourceTree(this, TCPIPMeta)); + this.children.push(new CICSCombinedResourceTree(this, URIMapMeta)); + this.children.push(new CICSCombinedResourceTree(this, WebServiceMeta)); + this.children.push(new CICSCombinedResourceTree(this, PipelineMeta)); } public addRegionContainer(): CICSRegionsContainer { diff --git a/packages/vsce/src/trees/CICSRegionTree.ts b/packages/vsce/src/trees/CICSRegionTree.ts index 2ae35599..04dbabd0 100644 --- a/packages/vsce/src/trees/CICSRegionTree.ts +++ b/packages/vsce/src/trees/CICSRegionTree.ts @@ -14,13 +14,14 @@ import { CICSSessionTree } from "./CICSSessionTree"; import { CICSPlexTree } from "./CICSPlexTree"; import { getIconByStatus } from "../utils/iconUtils"; import { IRegion, IResource } from "@zowe/cics-for-zowe-sdk"; -import { LocalFileMeta, ProgramMeta, TaskMeta, TransactionMeta } from "../doc"; import { CICSLibraryTree } from "./CICSLibraryTree"; import { CICSResourceTree } from "./CICSResourceTree"; -import { CICSWebTree } from "./CICSWebTree"; +import { LocalFileMeta, PipelineMeta, ProgramMeta, TaskMeta, TransactionMeta, URIMapMeta } from "../doc"; +import { TCPIPMeta } from "../doc/TCPIPMeta"; +import { WebServiceMeta } from "../doc/WebServiceMeta"; export class CICSRegionTree extends TreeItem { - children: (CICSResourceTree | CICSLibraryTree | CICSWebTree)[] | null; + children: (CICSResourceTree | CICSLibraryTree)[] | null; region: IRegion; parentSession: CICSSessionTree; parentPlex: CICSPlexTree | undefined; @@ -56,7 +57,11 @@ export class CICSRegionTree extends TreeItem { new CICSResourceTree(LocalFileMeta, this), new CICSResourceTree(TaskMeta, this), new CICSLibraryTree(this), - new CICSWebTree(this), + // new CICSWebTree(this), + new CICSResourceTree(TCPIPMeta, this), + new CICSResourceTree(URIMapMeta, this), + new CICSResourceTree(PipelineMeta, this), + new CICSResourceTree(WebServiceMeta, this), ]; } } diff --git a/packages/vsce/src/trees/CICSWebTree.ts b/packages/vsce/src/trees/CICSWebTree.ts deleted file mode 100644 index d0cffac8..00000000 --- a/packages/vsce/src/trees/CICSWebTree.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem } from "vscode"; -import { getFolderIcon } from "../utils/iconUtils"; -import { CICSRegionTree } from "./CICSRegionTree"; -import { CICSURIMapTree } from "./treeItems/web/CICSURIMapTree"; -import { CICSTCPIPServiceTree } from "./treeItems/web/CICSTCPIPServiceTree"; -import { CICSPipelineTree } from "./treeItems/web/CICSPipelineTree"; -import { CICSWebServiceTree } from "./treeItems/web/CICSWebServiceTree"; - -export class CICSWebTree extends TreeItem { - children: [CICSTCPIPServiceTree, CICSURIMapTree, CICSPipelineTree, CICSWebServiceTree] | null; - parentRegion: CICSRegionTree | undefined; - //activeFilter: string | undefined = undefined; - - constructor( - parentRegion: CICSRegionTree, - public iconPath = getFolderIcon(false), - ) { - super("Web", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicstreeweb.web`; - this.parentRegion = parentRegion; - - this.children = [ - new CICSTCPIPServiceTree(parentRegion), - new CICSURIMapTree(parentRegion), - new CICSPipelineTree(parentRegion), - new CICSWebServiceTree(parentRegion), - ]; - } - - public loadContents() { - this.iconPath = getFolderIcon(true); - } - - public getChildren() { - return this.children; - } - - public getParent() { - return this.parentRegion; - } - - public clearFilter() { - /*this.activeFilter = undefined; - this.contextValue = `cicstreeweb.${this.activeFilter ? 'filtered' : 'unfiltered'}.web`; - this.collapsibleState = TreeItemCollapsibleState.Expanded;*/ - } - - public setFilter(_newFilter: string) { - /*this.activeFilter = newFilter; - this.contextValue = `cicstreeweb.${this.activeFilter ? 'filtered' : 'unfiltered'}.web`; - this.collapsibleState = TreeItemCollapsibleState.Expanded;*/ - } - - public getFilter() { - //return this.activeFilter; - } -} diff --git a/packages/vsce/src/trees/treeItems/web/CICSPipelineTree.ts b/packages/vsce/src/trees/treeItems/web/CICSPipelineTree.ts deleted file mode 100644 index 8ee61142..00000000 --- a/packages/vsce/src/trees/treeItems/web/CICSPipelineTree.ts +++ /dev/null @@ -1,99 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem, window } from "vscode"; -import { CICSPipelineTreeItem } from "./treeItems/CICSPipelineTreeItem"; -import { CICSRegionTree } from "../../CICSRegionTree"; -import { getResource } from "@zowe/cics-for-zowe-sdk"; -import { toEscapedCriteriaString } from "../../../utils/filterUtils"; -import { getFolderIcon } from "../../../utils/iconUtils"; -import { toArray } from "../../../utils/commandUtils"; - -export class CICSPipelineTree extends TreeItem { - children: CICSPipelineTreeItem[] = []; - parentRegion: CICSRegionTree; - activeFilter: string | undefined = undefined; - - constructor( - parentRegion: CICSRegionTree, - public iconPath = getFolderIcon(false), - ) { - super("Pipelines", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicstreepipeline.${this.activeFilter ? "filtered" : "unfiltered"}.pipelines`; - this.parentRegion = parentRegion; - } - - public addPipeline(pipeline: CICSPipelineTreeItem) { - this.children.push(pipeline); - } - - public async loadContents() { - const defaultCriteria = "(name=*)"; - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "NAME"); - } else { - criteria = defaultCriteria; - } - this.children = []; - try { - const pipelineResponse = await getResource(this.parentRegion.parentSession.session, { - name: "CICSPipeline", - regionName: this.parentRegion.getRegionName(), - cicsPlex: this.parentRegion.parentPlex ? this.parentRegion.parentPlex.getPlexName() : undefined, - criteria: criteria, - }); - const pipelinesArray = toArray(pipelineResponse.response.records.cicspipeline); - this.label = `Pipelines${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${pipelinesArray.length}]`; - for (const pipeline of pipelinesArray) { - const newPipelineItem = new CICSPipelineTreeItem(pipeline, this.parentRegion, this); - newPipelineItem.setLabel(newPipelineItem.label.toString().replace(pipeline.name, `${pipeline.name}`)); - this.addPipeline(newPipelineItem); - } - this.iconPath = getFolderIcon(true); - } catch (error) { - if (error.mMessage!.includes("exceeded a resource limit")) { - window.showErrorMessage(`Resource Limit Exceeded - Set a Pipeline filter to narrow search`); - } else if (this.children.length === 0) { - window.showInformationMessage(`No Pipelines found`); - this.label = `Pipelines${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[0]`; - this.iconPath = getFolderIcon(true); - } else { - window.showErrorMessage( - `Something went wrong when fetching Pipelines - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( - /(\\n\t|\\n|\\t)/gm, - " ", - )}`, - ); - } - } - } - - public clearFilter() { - this.activeFilter = undefined; - this.contextValue = `cicstreepipeline.${this.activeFilter ? "filtered" : "unfiltered"}.pipelines`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.contextValue = `cicstreepipeline.${this.activeFilter ? "filtered" : "unfiltered"}.pipelines`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getFilter() { - return this.activeFilter; - } - - public getParent() { - return this.parentRegion; - } -} diff --git a/packages/vsce/src/trees/treeItems/web/CICSTCPIPServiceTree.ts b/packages/vsce/src/trees/treeItems/web/CICSTCPIPServiceTree.ts deleted file mode 100644 index dda648ae..00000000 --- a/packages/vsce/src/trees/treeItems/web/CICSTCPIPServiceTree.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem, window } from "vscode"; -import { CICSTCPIPServiceTreeItem } from "./treeItems/CICSTCPIPServiceTreeItem"; -import { CICSRegionTree } from "../../CICSRegionTree"; -import { getResource } from "@zowe/cics-for-zowe-sdk"; -import { toEscapedCriteriaString } from "../../../utils/filterUtils"; -import { getFolderIcon } from "../../../utils/iconUtils"; -import { toArray } from "../../../utils/commandUtils"; - -export class CICSTCPIPServiceTree extends TreeItem { - children: CICSTCPIPServiceTreeItem[] = []; - parentRegion: CICSRegionTree; - activeFilter: string | undefined = undefined; - - constructor( - parentRegion: CICSRegionTree, - public iconPath = getFolderIcon(false), - ) { - super("TCPIP Services", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicstreetcpips.${this.activeFilter ? "filtered" : "unfiltered"}.tcpips`; - this.parentRegion = parentRegion; - } - - public addTCPIPS(tcpips: CICSTCPIPServiceTreeItem) { - this.children.push(tcpips); - } - - public async loadContents() { - const defaultCriteria = "(name=*)"; - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "NAME"); - } else { - criteria = defaultCriteria; - } - this.children = []; - try { - const tcpipsResponse = await getResource(this.parentRegion.parentSession.session, { - name: "CICSTCPIPService", - regionName: this.parentRegion.getRegionName(), - cicsPlex: this.parentRegion.parentPlex ? this.parentRegion.parentPlex.getPlexName() : undefined, - criteria: criteria, - }); - const tcpipservicesArray = toArray(tcpipsResponse.response.records.cicstcpipservice); - this.label = `TCPIP Services${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${tcpipservicesArray.length}]`; - for (const tcpips of tcpipservicesArray) { - const newTCPIPServiceItem = new CICSTCPIPServiceTreeItem(tcpips, this.parentRegion, this); - newTCPIPServiceItem.setLabel( - newTCPIPServiceItem.label.toString().replace(tcpips.name, `${tcpips.name} [Port #${newTCPIPServiceItem.tcpips.port}]`), - ); - this.addTCPIPS(newTCPIPServiceItem); - } - this.iconPath = getFolderIcon(true); - } catch (error) { - if (error.mMessage!.includes("exceeded a resource limit")) { - window.showErrorMessage(`Resource Limit Exceeded - Set a TCPIPService filter to narrow search`); - } else if (this.children.length === 0) { - window.showInformationMessage(`No TCPIP Services found`); - this.label = `TCPIP Services${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[0]`; - this.iconPath = getFolderIcon(true); - } else { - window.showErrorMessage( - `Something went wrong when fetching TCPIP services - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( - /(\\n\t|\\n|\\t)/gm, - " ", - )}`, - ); - } - } - } - - public clearFilter() { - this.activeFilter = undefined; - this.contextValue = `cicstreetcpips.${this.activeFilter ? "filtered" : "unfiltered"}.tcpips`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.contextValue = `cicstreetcpips.${this.activeFilter ? "filtered" : "unfiltered"}.tcpips`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getFilter() { - return this.activeFilter; - } - - public getParent() { - return this.parentRegion; - } -} diff --git a/packages/vsce/src/trees/treeItems/web/CICSURIMapTree.ts b/packages/vsce/src/trees/treeItems/web/CICSURIMapTree.ts deleted file mode 100644 index 6833f15a..00000000 --- a/packages/vsce/src/trees/treeItems/web/CICSURIMapTree.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem, window } from "vscode"; -import { CICSURIMapTreeItem } from "./treeItems/CICSURIMapTreeItem"; -import { CICSRegionTree } from "../../CICSRegionTree"; -import { getResource } from "@zowe/cics-for-zowe-sdk"; -import { toEscapedCriteriaString } from "../../../utils/filterUtils"; -import { getFolderIcon } from "../../../utils/iconUtils"; -import { toArray } from "../../../utils/commandUtils"; - -export class CICSURIMapTree extends TreeItem { - children: CICSURIMapTreeItem[] = []; - parentRegion: CICSRegionTree; - activeFilter: string | undefined = undefined; - - constructor( - parentRegion: CICSRegionTree, - public iconPath = getFolderIcon(false), - ) { - super("URI Maps", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicstreeurimaps.${this.activeFilter ? "filtered" : "unfiltered"}.urimaps`; - this.parentRegion = parentRegion; - } - - public addURIMAP(urimap: CICSURIMapTreeItem) { - this.children.push(urimap); - } - - public async loadContents() { - const defaultCriteria = "(name=*)"; - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "NAME"); - } else { - criteria = defaultCriteria; - } - this.children = []; - try { - const urimapResponse = await getResource(this.parentRegion.parentSession.session, { - name: "CICSURIMap", - regionName: this.parentRegion.getRegionName(), - cicsPlex: this.parentRegion.parentPlex ? this.parentRegion.parentPlex.getPlexName() : undefined, - criteria: criteria, - }); - const urimapArray = toArray(urimapResponse.response.records.cicsurimap); - this.label = `URI Maps${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${urimapArray.length}]`; - for (const urimap of urimapArray) { - const newURIMapItem = new CICSURIMapTreeItem(urimap, this.parentRegion, this); - newURIMapItem.setLabel( - newURIMapItem.label.toString().replace(urimap.name, `${urimap.name} [${newURIMapItem.urimap.scheme}] (${newURIMapItem.urimap.path})`), - ); - this.addURIMAP(newURIMapItem); - } - this.iconPath = getFolderIcon(true); - } catch (error) { - if (error.mMessage!.includes("exceeded a resource limit")) { - window.showErrorMessage(`Resource Limit Exceeded - Set a URIMap filter to narrow search`); - } else if (this.children.length === 0) { - window.showInformationMessage(`No URI Maps found`); - this.label = `URI Maps${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[0]`; - this.iconPath = getFolderIcon(true); - } else { - window.showErrorMessage( - `Something went wrong when fetching URI Maps - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( - /(\\n\t|\\n|\\t)/gm, - " ", - )}`, - ); - } - } - } - - public clearFilter() { - this.activeFilter = undefined; - this.contextValue = `cicstreeurimaps.${this.activeFilter ? "filtered" : "unfiltered"}.urimaps`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.contextValue = `cicstreeurimaps.${this.activeFilter ? "filtered" : "unfiltered"}.urimaps`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getFilter() { - return this.activeFilter; - } - - public getParent() { - return this.parentRegion; - } -} diff --git a/packages/vsce/src/trees/treeItems/web/CICSWebServiceTree.ts b/packages/vsce/src/trees/treeItems/web/CICSWebServiceTree.ts deleted file mode 100644 index 08dafadf..00000000 --- a/packages/vsce/src/trees/treeItems/web/CICSWebServiceTree.ts +++ /dev/null @@ -1,99 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem, window } from "vscode"; -import { CICSWebServiceTreeItem } from "./treeItems/CICSWebServiceTreeItem"; -import { CICSRegionTree } from "../../CICSRegionTree"; -import { getResource } from "@zowe/cics-for-zowe-sdk"; -import { toEscapedCriteriaString } from "../../../utils/filterUtils"; -import { getFolderIcon } from "../../../utils/iconUtils"; -import { toArray } from "../../../utils/commandUtils"; - -export class CICSWebServiceTree extends TreeItem { - children: CICSWebServiceTreeItem[] = []; - parentRegion: CICSRegionTree; - activeFilter: string | undefined = undefined; - - constructor( - parentRegion: CICSRegionTree, - public iconPath = getFolderIcon(false), - ) { - super("Web Services", TreeItemCollapsibleState.Collapsed); - this.contextValue = `cicstreewebservice.${this.activeFilter ? "filtered" : "unfiltered"}.webservices`; - this.parentRegion = parentRegion; - } - - public addWebService(webservice: CICSWebServiceTreeItem) { - this.children.push(webservice); - } - - public async loadContents() { - const defaultCriteria = "(name=*)"; - let criteria; - if (this.activeFilter) { - criteria = toEscapedCriteriaString(this.activeFilter, "NAME"); - } else { - criteria = defaultCriteria; - } - this.children = []; - try { - const webserviceResponse = await getResource(this.parentRegion.parentSession.session, { - name: "CICSWebService", - regionName: this.parentRegion.getRegionName(), - cicsPlex: this.parentRegion.parentPlex ? this.parentRegion.parentPlex.getPlexName() : undefined, - criteria: criteria, - }); - const webservicesArray = toArray(webserviceResponse.response.records.cicswebservice); - this.label = `Web Services${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[${webservicesArray.length}]`; - for (const webservice of webservicesArray) { - const newWebServiceItem = new CICSWebServiceTreeItem(webservice, this.parentRegion, this); - newWebServiceItem.setLabel(newWebServiceItem.label.toString().replace(webservice.name, `${webservice.name}`)); - this.addWebService(newWebServiceItem); - } - this.iconPath = getFolderIcon(true); - } catch (error) { - if (error.mMessage!.includes("exceeded a resource limit")) { - window.showErrorMessage(`Resource Limit Exceeded - Set a Web Services filter to narrow search`); - } else if (this.children.length === 0) { - window.showInformationMessage(`No Web Services found`); - this.label = `Web Services${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[0]`; - this.iconPath = getFolderIcon(true); - } else { - window.showErrorMessage( - `Something went wrong when fetching Web Services - ${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace( - /(\\n\t|\\n|\\t)/gm, - " ", - )}`, - ); - } - } - } - - public clearFilter() { - this.activeFilter = undefined; - this.contextValue = `cicstreewebservice.${this.activeFilter ? "filtered" : "unfiltered"}.webservices`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public setFilter(newFilter: string) { - this.activeFilter = newFilter; - this.contextValue = `cicstreewebservice.${this.activeFilter ? "filtered" : "unfiltered"}.webservices`; - this.collapsibleState = TreeItemCollapsibleState.Expanded; - } - - public getFilter() { - return this.activeFilter; - } - - public getParent() { - return this.parentRegion; - } -} diff --git a/packages/vsce/src/trees/treeItems/web/treeItems/CICSPipelineTreeItem.ts b/packages/vsce/src/trees/treeItems/web/treeItems/CICSPipelineTreeItem.ts deleted file mode 100644 index 09b23294..00000000 --- a/packages/vsce/src/trees/treeItems/web/treeItems/CICSPipelineTreeItem.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem } from "vscode"; -import { CICSRegionTree } from "../../../CICSRegionTree"; -import { getIconFilePathFromName } from "../../../../utils/iconUtils"; - -export class CICSPipelineTreeItem extends TreeItem { - pipeline: any; - parentRegion: CICSRegionTree; - directParent: any; - - constructor( - pipeline: any, - parentRegion: CICSRegionTree, - directParent: any, - public readonly iconPath = getIconFilePathFromName("program"), - ) { - super(`${pipeline.name}`, TreeItemCollapsibleState.None); - - this.pipeline = pipeline; - this.parentRegion = parentRegion; - this.directParent = directParent; - this.contextValue = `cicspipeline.${pipeline.name}`; - } - - public setLabel(newLabel: string) { - this.label = newLabel; - } - - public getParent() { - return this.directParent; - } -} diff --git a/packages/vsce/src/trees/treeItems/web/treeItems/CICSTCPIPServiceTreeItem.ts b/packages/vsce/src/trees/treeItems/web/treeItems/CICSTCPIPServiceTreeItem.ts deleted file mode 100644 index f0f4acee..00000000 --- a/packages/vsce/src/trees/treeItems/web/treeItems/CICSTCPIPServiceTreeItem.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem } from "vscode"; -import { CICSRegionTree } from "../../../CICSRegionTree"; -import { getIconFilePathFromName } from "../../../../utils/iconUtils"; - -export class CICSTCPIPServiceTreeItem extends TreeItem { - tcpips: any; - parentRegion: CICSRegionTree; - directParent: any; - - constructor( - tcpips: any, - parentRegion: CICSRegionTree, - directParent: any, - public readonly iconPath = getIconFilePathFromName("program"), - ) { - super(`${tcpips.name}`, TreeItemCollapsibleState.None); - - this.tcpips = tcpips; - this.parentRegion = parentRegion; - this.directParent = directParent; - this.contextValue = `cicstcpips.${tcpips.name}`; - } - - public setLabel(newLabel: string) { - this.label = newLabel; - } - - public getParent() { - return this.directParent; - } -} diff --git a/packages/vsce/src/trees/treeItems/web/treeItems/CICSURIMapTreeItem.ts b/packages/vsce/src/trees/treeItems/web/treeItems/CICSURIMapTreeItem.ts deleted file mode 100644 index cb686643..00000000 --- a/packages/vsce/src/trees/treeItems/web/treeItems/CICSURIMapTreeItem.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem } from "vscode"; -import { CICSRegionTree } from "../../../CICSRegionTree"; -import { getIconFilePathFromName } from "../../../../utils/iconUtils"; - -export class CICSURIMapTreeItem extends TreeItem { - urimap: any; - parentRegion: CICSRegionTree; - directParent: any; - - constructor( - urimap: any, - parentRegion: CICSRegionTree, - directParent: any, - public readonly iconPath = getIconFilePathFromName("program"), - ) { - super(`${urimap.name}`, TreeItemCollapsibleState.None); - - this.urimap = urimap; - this.parentRegion = parentRegion; - this.directParent = directParent; - this.contextValue = `cicsurimaps.${urimap.name}`; - } - - public setLabel(newLabel: string) { - this.label = newLabel; - } - - public getParent() { - return this.directParent; - } -} diff --git a/packages/vsce/src/trees/treeItems/web/treeItems/CICSWebServiceTreeItem.ts b/packages/vsce/src/trees/treeItems/web/treeItems/CICSWebServiceTreeItem.ts deleted file mode 100644 index 598fb4a3..00000000 --- a/packages/vsce/src/trees/treeItems/web/treeItems/CICSWebServiceTreeItem.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -import { TreeItemCollapsibleState, TreeItem } from "vscode"; -import { CICSRegionTree } from "../../../CICSRegionTree"; -import { getIconFilePathFromName } from "../../../../utils/iconUtils"; - -export class CICSWebServiceTreeItem extends TreeItem { - webservice: any; - parentRegion: CICSRegionTree; - directParent: any; - - constructor( - webservice: any, - parentRegion: CICSRegionTree, - directParent: any, - public readonly iconPath = getIconFilePathFromName("program"), - ) { - super(`${webservice.name}`, TreeItemCollapsibleState.None); - - this.webservice = webservice; - this.parentRegion = parentRegion; - this.directParent = directParent; - this.contextValue = `cicswebservice.${webservice.name}`; - } - - public setLabel(newLabel: string) { - this.label = newLabel; - } - - public getParent() { - return this.directParent; - } -} diff --git a/packages/vsce/src/utils/constants.ts b/packages/vsce/src/utils/constants.ts index 41dc1c18..66538aaf 100644 --- a/packages/vsce/src/utils/constants.ts +++ b/packages/vsce/src/utils/constants.ts @@ -63,5 +63,21 @@ export default { ID: "zowe.cics.tasks.filter", DEFAULT: "TRANID=*", }, + TCPIP_FILTER: { + ID: "zowe.cics.tcpips.filter", + DEFAULT: "name=*", + }, + URIMAP_FILTER: { + ID: "zowe.cics.urimaps.filter", + DEFAULT: "name=*", + }, + PIPELINE_FILTER: { + ID: "zowe.cics.pipelines.filter", + DEFAULT: "name=*", + }, + WEBSERVICE_FILTER: { + ID: "zowe.cics.webservices.filter", + DEFAULT: "name=*", + }, } }; diff --git a/packages/vsce/src/utils/filterUtils.ts b/packages/vsce/src/utils/filterUtils.ts index 9b69d805..57b70bb1 100644 --- a/packages/vsce/src/utils/filterUtils.ts +++ b/packages/vsce/src/utils/filterUtils.ts @@ -71,8 +71,8 @@ export async function getPatternFromFilter(resourceName: string, resourceHistory } export async function getDefaultFilter(params: { ID: string, DEFAULT: string; }): Promise { - let defaultCriteria = `${await workspace.getConfiguration().get(params.ID)}`; - if (!defaultCriteria || defaultCriteria.length === 0) { + let defaultCriteria: string = await workspace.getConfiguration().get(params.ID); + if (!defaultCriteria || `${defaultCriteria}`.length === 0) { await workspace.getConfiguration().update(params.ID, params.DEFAULT); defaultCriteria = params.DEFAULT; } From 76c2e7928c9649e99ae5e8bef42e3329d8b554a3 Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Fri, 24 Jan 2025 13:10:48 +0000 Subject: [PATCH 07/17] add license to new files Signed-off-by: Andrew Twydell --- packages/sdk/src/doc/resources/ILocalFile.ts | 11 +++++++++++ packages/sdk/src/doc/resources/IPipeline.ts | 11 +++++++++++ packages/sdk/src/doc/resources/IProgram.ts | 11 +++++++++++ packages/sdk/src/doc/resources/IRegion.ts | 11 +++++++++++ packages/sdk/src/doc/resources/IResource.ts | 11 +++++++++++ packages/sdk/src/doc/resources/ITCPIP.ts | 11 +++++++++++ packages/sdk/src/doc/resources/ITask.ts | 11 +++++++++++ packages/sdk/src/doc/resources/ITransaction.ts | 11 +++++++++++ packages/sdk/src/doc/resources/IUriMap.ts | 11 +++++++++++ packages/sdk/src/doc/resources/IWebService.ts | 11 +++++++++++ packages/sdk/src/doc/resources/index.ts | 11 +++++++++++ packages/vsce/src/doc/IResourceMeta.ts | 11 +++++++++++ packages/vsce/src/doc/LocalFileMeta.ts | 11 +++++++++++ packages/vsce/src/doc/PipelineMeta.ts | 11 +++++++++++ packages/vsce/src/doc/ProgramMeta.ts | 11 +++++++++++ packages/vsce/src/doc/TCPIPMeta.ts | 11 +++++++++++ packages/vsce/src/doc/TaskMeta.ts | 11 +++++++++++ packages/vsce/src/doc/TransactionMeta.ts | 11 +++++++++++ packages/vsce/src/doc/URIMapMeta.ts | 11 +++++++++++ packages/vsce/src/doc/WebServiceMeta.ts | 11 +++++++++++ packages/vsce/src/doc/index.ts | 11 +++++++++++ packages/vsce/tsup.config.json | 4 ++-- 22 files changed, 233 insertions(+), 2 deletions(-) diff --git a/packages/sdk/src/doc/resources/ILocalFile.ts b/packages/sdk/src/doc/resources/ILocalFile.ts index 0a4d1a37..cc55d9c8 100644 --- a/packages/sdk/src/doc/resources/ILocalFile.ts +++ b/packages/sdk/src/doc/resources/ILocalFile.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IResource } from "./IResource"; export interface ILocalFile extends IResource { diff --git a/packages/sdk/src/doc/resources/IPipeline.ts b/packages/sdk/src/doc/resources/IPipeline.ts index 5cfb3f3a..52388326 100644 --- a/packages/sdk/src/doc/resources/IPipeline.ts +++ b/packages/sdk/src/doc/resources/IPipeline.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IResource } from "./IResource"; export interface IPipeline extends IResource { diff --git a/packages/sdk/src/doc/resources/IProgram.ts b/packages/sdk/src/doc/resources/IProgram.ts index fa84b990..3196ec46 100644 --- a/packages/sdk/src/doc/resources/IProgram.ts +++ b/packages/sdk/src/doc/resources/IProgram.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IResource } from "./IResource"; export interface IProgram extends IResource { diff --git a/packages/sdk/src/doc/resources/IRegion.ts b/packages/sdk/src/doc/resources/IRegion.ts index 7af4da32..c3e85eb9 100644 --- a/packages/sdk/src/doc/resources/IRegion.ts +++ b/packages/sdk/src/doc/resources/IRegion.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IResource } from "./IResource"; export interface IRegion extends IResource { diff --git a/packages/sdk/src/doc/resources/IResource.ts b/packages/sdk/src/doc/resources/IResource.ts index 9d874c01..936ab5c8 100644 --- a/packages/sdk/src/doc/resources/IResource.ts +++ b/packages/sdk/src/doc/resources/IResource.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + export interface IResource { eyu_cicsname: string; diff --git a/packages/sdk/src/doc/resources/ITCPIP.ts b/packages/sdk/src/doc/resources/ITCPIP.ts index 729a3800..a67717ae 100644 --- a/packages/sdk/src/doc/resources/ITCPIP.ts +++ b/packages/sdk/src/doc/resources/ITCPIP.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IResource } from "./IResource"; export interface ITCPIP extends IResource { diff --git a/packages/sdk/src/doc/resources/ITask.ts b/packages/sdk/src/doc/resources/ITask.ts index 124d8116..6708ecee 100644 --- a/packages/sdk/src/doc/resources/ITask.ts +++ b/packages/sdk/src/doc/resources/ITask.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IResource } from "./IResource"; export interface ITask extends IResource { diff --git a/packages/sdk/src/doc/resources/ITransaction.ts b/packages/sdk/src/doc/resources/ITransaction.ts index 328ca998..46403aca 100644 --- a/packages/sdk/src/doc/resources/ITransaction.ts +++ b/packages/sdk/src/doc/resources/ITransaction.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IResource } from "./IResource"; export interface ITransaction extends IResource { diff --git a/packages/sdk/src/doc/resources/IUriMap.ts b/packages/sdk/src/doc/resources/IUriMap.ts index d8b8f40f..27d44c7b 100644 --- a/packages/sdk/src/doc/resources/IUriMap.ts +++ b/packages/sdk/src/doc/resources/IUriMap.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IResource } from "./IResource"; export interface IUriMap extends IResource { diff --git a/packages/sdk/src/doc/resources/IWebService.ts b/packages/sdk/src/doc/resources/IWebService.ts index b30bec2e..18372c0a 100644 --- a/packages/sdk/src/doc/resources/IWebService.ts +++ b/packages/sdk/src/doc/resources/IWebService.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IResource } from "./IResource"; export interface IWebService extends IResource { diff --git a/packages/sdk/src/doc/resources/index.ts b/packages/sdk/src/doc/resources/index.ts index 25c66ab7..d4ca356c 100644 --- a/packages/sdk/src/doc/resources/index.ts +++ b/packages/sdk/src/doc/resources/index.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + export * from './ILocalFile'; diff --git a/packages/vsce/src/doc/IResourceMeta.ts b/packages/vsce/src/doc/IResourceMeta.ts index 9df70aa0..7dd38516 100644 --- a/packages/vsce/src/doc/IResourceMeta.ts +++ b/packages/vsce/src/doc/IResourceMeta.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + export interface ResourceMeta { diff --git a/packages/vsce/src/doc/LocalFileMeta.ts b/packages/vsce/src/doc/LocalFileMeta.ts index 1c4c807e..d96f34f0 100644 --- a/packages/vsce/src/doc/LocalFileMeta.ts +++ b/packages/vsce/src/doc/LocalFileMeta.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { ILocalFile } from "@zowe/cics-for-zowe-sdk"; import constants from "../utils/constants"; import { getDefaultFilter } from "../utils/filterUtils"; diff --git a/packages/vsce/src/doc/PipelineMeta.ts b/packages/vsce/src/doc/PipelineMeta.ts index d357de35..8897bf93 100644 --- a/packages/vsce/src/doc/PipelineMeta.ts +++ b/packages/vsce/src/doc/PipelineMeta.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IPipeline } from "@zowe/cics-for-zowe-sdk"; import constants from "../utils/constants"; import { getDefaultFilter } from "../utils/filterUtils"; diff --git a/packages/vsce/src/doc/ProgramMeta.ts b/packages/vsce/src/doc/ProgramMeta.ts index cb424c45..e52b9029 100644 --- a/packages/vsce/src/doc/ProgramMeta.ts +++ b/packages/vsce/src/doc/ProgramMeta.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IProgram } from "@zowe/cics-for-zowe-sdk"; import constants from "../utils/constants"; import { getDefaultFilter } from "../utils/filterUtils"; diff --git a/packages/vsce/src/doc/TCPIPMeta.ts b/packages/vsce/src/doc/TCPIPMeta.ts index 495ab2cc..5723cac0 100644 --- a/packages/vsce/src/doc/TCPIPMeta.ts +++ b/packages/vsce/src/doc/TCPIPMeta.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { ITCPIP } from "@zowe/cics-for-zowe-sdk"; import constants from "../utils/constants"; import { getDefaultFilter } from "../utils/filterUtils"; diff --git a/packages/vsce/src/doc/TaskMeta.ts b/packages/vsce/src/doc/TaskMeta.ts index 8c07a3de..dece6bba 100644 --- a/packages/vsce/src/doc/TaskMeta.ts +++ b/packages/vsce/src/doc/TaskMeta.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { ITask } from "@zowe/cics-for-zowe-sdk"; import constants from "../utils/constants"; import { getDefaultFilter } from "../utils/filterUtils"; diff --git a/packages/vsce/src/doc/TransactionMeta.ts b/packages/vsce/src/doc/TransactionMeta.ts index e607aac3..d90631d1 100644 --- a/packages/vsce/src/doc/TransactionMeta.ts +++ b/packages/vsce/src/doc/TransactionMeta.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { ITransaction } from "@zowe/cics-for-zowe-sdk"; import constants from "../utils/constants"; import { getDefaultFilter } from "../utils/filterUtils"; diff --git a/packages/vsce/src/doc/URIMapMeta.ts b/packages/vsce/src/doc/URIMapMeta.ts index ada05a72..c0b4b36c 100644 --- a/packages/vsce/src/doc/URIMapMeta.ts +++ b/packages/vsce/src/doc/URIMapMeta.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IUriMap } from "@zowe/cics-for-zowe-sdk"; import constants from "../utils/constants"; import { getDefaultFilter } from "../utils/filterUtils"; diff --git a/packages/vsce/src/doc/WebServiceMeta.ts b/packages/vsce/src/doc/WebServiceMeta.ts index fb8b948b..b917fc11 100644 --- a/packages/vsce/src/doc/WebServiceMeta.ts +++ b/packages/vsce/src/doc/WebServiceMeta.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IWebService } from "@zowe/cics-for-zowe-sdk"; import constants from "../utils/constants"; import { getDefaultFilter } from "../utils/filterUtils"; diff --git a/packages/vsce/src/doc/index.ts b/packages/vsce/src/doc/index.ts index 6d29944d..a67f0f7c 100644 --- a/packages/vsce/src/doc/index.ts +++ b/packages/vsce/src/doc/index.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + export * from "./IResourceMeta"; export * from "./LocalFileMeta"; diff --git a/packages/vsce/tsup.config.json b/packages/vsce/tsup.config.json index 01265113..e9628be0 100644 --- a/packages/vsce/tsup.config.json +++ b/packages/vsce/tsup.config.json @@ -10,6 +10,6 @@ "external": [ "vscode" ], - "minify": "terser", + "minify": false, "noExternal": [] -} \ No newline at end of file +} From 530cf842e7a30668893f6fcb1fc26597fad56b96 Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Fri, 24 Jan 2025 13:16:37 +0000 Subject: [PATCH 08/17] undo tsup change Signed-off-by: Andrew Twydell --- packages/vsce/tsup.config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vsce/tsup.config.json b/packages/vsce/tsup.config.json index e9628be0..4d2e5f48 100644 --- a/packages/vsce/tsup.config.json +++ b/packages/vsce/tsup.config.json @@ -10,6 +10,6 @@ "external": [ "vscode" ], - "minify": false, + "minify": "terser", "noExternal": [] } From 3af8e97dc5db94e9fd3d2a1a012910e0749feab9 Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Tue, 28 Jan 2025 12:24:40 +0000 Subject: [PATCH 09/17] icons Signed-off-by: Andrew Twydell --- packages/vsce/src/doc/LocalFileMeta.ts | 15 ++++++++---- packages/vsce/src/doc/PipelineMeta.ts | 2 +- packages/vsce/src/doc/ProgramMeta.ts | 10 +++++--- packages/vsce/src/doc/TCPIPMeta.ts | 2 +- packages/vsce/src/doc/TaskMeta.ts | 21 +++++++++++------ packages/vsce/src/doc/TransactionMeta.ts | 10 +++++--- packages/vsce/src/doc/URIMapMeta.ts | 2 +- packages/vsce/src/doc/WebServiceMeta.ts | 2 +- packages/vsce/src/trees/CICSResourceTree.ts | 8 +++---- .../trees/treeItems/CICSResourceTreeItem.ts | 4 ++-- packages/vsce/src/utils/iconUtils.ts | 23 ------------------- packages/vsce/src/utils/profileUtils.ts | 2 -- 12 files changed, 49 insertions(+), 52 deletions(-) diff --git a/packages/vsce/src/doc/LocalFileMeta.ts b/packages/vsce/src/doc/LocalFileMeta.ts index d96f34f0..eb34a19a 100644 --- a/packages/vsce/src/doc/LocalFileMeta.ts +++ b/packages/vsce/src/doc/LocalFileMeta.ts @@ -27,7 +27,7 @@ export const LocalFileMeta: ResourceMeta = { persistentStorageKey: "localFile", persistentStorageAllKey: "allLocalFiles", - getDefaultFilter: async function (): Promise { + getDefaultFilter: function (): Promise { return getDefaultFilter(constants.PERSISTENT_STORAGE.LOCAL_FILE_FILTER); }, @@ -51,9 +51,16 @@ export const LocalFileMeta: ResourceMeta = { return `cicslocalfile.${localFile.enablestatus.trim().toLowerCase()}.${localFile.openstatus.trim().toLowerCase()}.${localFile.file}`; }, - getIconName: function (_localFile: ILocalFile): string { - return `local-file`; - } + getIconName: function (localFile: ILocalFile): string { + let iconName = `local-file`; + if (localFile.enablestatus.trim().toUpperCase() === "DISABLED") { + iconName += `-disabled`; + } + if (localFile.openstatus.trim().toUpperCase() === "CLOSED") { + iconName += `-closed`; + } + return iconName; + } }; diff --git a/packages/vsce/src/doc/PipelineMeta.ts b/packages/vsce/src/doc/PipelineMeta.ts index 8897bf93..7ab3eadc 100644 --- a/packages/vsce/src/doc/PipelineMeta.ts +++ b/packages/vsce/src/doc/PipelineMeta.ts @@ -27,7 +27,7 @@ export const PipelineMeta: ResourceMeta = { persistentStorageKey: "pipelines", persistentStorageAllKey: "allPipelines", - getDefaultFilter: async function (): Promise { + getDefaultFilter: function (): Promise { return getDefaultFilter(constants.PERSISTENT_STORAGE.PIPELINE_FILTER); }, diff --git a/packages/vsce/src/doc/ProgramMeta.ts b/packages/vsce/src/doc/ProgramMeta.ts index e52b9029..40e02f03 100644 --- a/packages/vsce/src/doc/ProgramMeta.ts +++ b/packages/vsce/src/doc/ProgramMeta.ts @@ -27,7 +27,7 @@ export const ProgramMeta: ResourceMeta = { persistentStorageKey: "program", persistentStorageAllKey: "allPrograms", - getDefaultFilter: async function (): Promise { + getDefaultFilter: function (): Promise { return getDefaultFilter(constants.PERSISTENT_STORAGE.PROGRAM_FILTER); }, @@ -47,8 +47,12 @@ export const ProgramMeta: ResourceMeta = { return `cicsprogram.${program.status.trim().toLowerCase()}.${program.program}`; }, - getIconName: function (_program: IProgram): string { - return `program`; + getIconName: function (program: IProgram): string { + let iconName = `program`; + if (program.status.trim().toUpperCase() === "DISABLED") { + iconName += `-disabled`; + } + return iconName; } }; diff --git a/packages/vsce/src/doc/TCPIPMeta.ts b/packages/vsce/src/doc/TCPIPMeta.ts index 5723cac0..254c3f8d 100644 --- a/packages/vsce/src/doc/TCPIPMeta.ts +++ b/packages/vsce/src/doc/TCPIPMeta.ts @@ -27,7 +27,7 @@ export const TCPIPMeta: ResourceMeta = { persistentStorageKey: "tcpips", persistentStorageAllKey: "allTCPIPS", - getDefaultFilter: async function (): Promise { + getDefaultFilter: function (): Promise { return getDefaultFilter(constants.PERSISTENT_STORAGE.TCPIP_FILTER); }, diff --git a/packages/vsce/src/doc/TaskMeta.ts b/packages/vsce/src/doc/TaskMeta.ts index dece6bba..4cd702be 100644 --- a/packages/vsce/src/doc/TaskMeta.ts +++ b/packages/vsce/src/doc/TaskMeta.ts @@ -28,8 +28,8 @@ export const TaskMeta: ResourceMeta = { persistentStorageAllKey: "allTasks", - getDefaultFilter: async function (): Promise { - return getDefaultFilter(constants.PERSISTENT_STORAGE.PROGRAM_FILTER); + getDefaultFilter: function (): Promise { + return getDefaultFilter(constants.PERSISTENT_STORAGE.TASK_FILTER); }, getLabel: function (task: ITask): string { @@ -47,12 +47,19 @@ export const TaskMeta: ResourceMeta = { }, getIconName: function (task: ITask): string { - if (task.runstatus.trim().toUpperCase() === "RUNNING") { - return `task-running`; - } else if (task.runstatus.trim().toUpperCase() === "SUSPENDED") { - return `task-suspended`; + let iconName = `task`; + switch (task.runstatus.trim().toUpperCase()) { + case "RUNNING": + iconName += `-running`; + break; + case "SUSPENDED": + iconName += `-suspended`; + break; + case "DISPATCHED": + iconName += `-dispatched`; + break; } - return `task-dispatched`; + return iconName; } }; diff --git a/packages/vsce/src/doc/TransactionMeta.ts b/packages/vsce/src/doc/TransactionMeta.ts index d90631d1..8a1ca1af 100644 --- a/packages/vsce/src/doc/TransactionMeta.ts +++ b/packages/vsce/src/doc/TransactionMeta.ts @@ -27,7 +27,7 @@ export const TransactionMeta: ResourceMeta = { persistentStorageKey: "transaction", persistentStorageAllKey: "allTransactions", - getDefaultFilter: async function (): Promise { + getDefaultFilter: function (): Promise { return getDefaultFilter(constants.PERSISTENT_STORAGE.TRANSACTION_FILTER); }, @@ -45,8 +45,12 @@ export const TransactionMeta: ResourceMeta = { return `cicstransaction.${transaction.status.toLowerCase()}.${transaction.tranid}`; }, - getIconName: function (_transaction: ITransaction): string { - return `local-transaction`; + getIconName: function (transaction: ITransaction): string { + let iconName = `local-transaction`; + if (transaction.status.trim().toUpperCase() === "DISABLED") { + iconName += `-disabled`; + } + return iconName; } }; diff --git a/packages/vsce/src/doc/URIMapMeta.ts b/packages/vsce/src/doc/URIMapMeta.ts index c0b4b36c..d0115f77 100644 --- a/packages/vsce/src/doc/URIMapMeta.ts +++ b/packages/vsce/src/doc/URIMapMeta.ts @@ -27,7 +27,7 @@ export const URIMapMeta: ResourceMeta = { persistentStorageKey: "urimaps", persistentStorageAllKey: "allURIMaps", - getDefaultFilter: async function (): Promise { + getDefaultFilter: function (): Promise { return getDefaultFilter(constants.PERSISTENT_STORAGE.URIMAP_FILTER); }, diff --git a/packages/vsce/src/doc/WebServiceMeta.ts b/packages/vsce/src/doc/WebServiceMeta.ts index b917fc11..f03246f4 100644 --- a/packages/vsce/src/doc/WebServiceMeta.ts +++ b/packages/vsce/src/doc/WebServiceMeta.ts @@ -27,7 +27,7 @@ export const WebServiceMeta: ResourceMeta = { persistentStorageKey: "webservices", persistentStorageAllKey: "allWebServices", - getDefaultFilter: async function (): Promise { + getDefaultFilter: function (): Promise { return getDefaultFilter(constants.PERSISTENT_STORAGE.WEBSERVICE_FILTER); }, diff --git a/packages/vsce/src/trees/CICSResourceTree.ts b/packages/vsce/src/trees/CICSResourceTree.ts index 62f74ea2..dbd2a29c 100644 --- a/packages/vsce/src/trees/CICSResourceTree.ts +++ b/packages/vsce/src/trees/CICSResourceTree.ts @@ -14,7 +14,7 @@ import { TreeItem, TreeItemCollapsibleState, window } from "vscode"; import IResourceMeta from "../doc/IResourceMeta"; import { toArray } from "../utils/commandUtils"; import { toEscapedCriteriaString } from "../utils/filterUtils"; -import { getIconOpen } from "../utils/profileUtils"; +import { getFolderIcon } from "../utils/iconUtils"; import { CICSRegionTree } from "./CICSRegionTree"; import { CICSResourceTreeItem } from "./treeItems/CICSResourceTreeItem"; @@ -26,7 +26,7 @@ export class CICSResourceTree extends TreeItem { resourceMeta: IResourceMeta; - constructor(resourceMeta: IResourceMeta, parentRegion: CICSRegionTree, public iconPath = getIconOpen(false)) { + constructor(resourceMeta: IResourceMeta, parentRegion: CICSRegionTree, public iconPath = getFolderIcon(false)) { super(resourceMeta.humanReadableName, TreeItemCollapsibleState.Collapsed); this.contextValue = `${resourceMeta.contextPrefix}.${this.activeFilter ? "filtered" : "unfiltered"}.${resourceMeta.resourceName}`; this.parentRegion = parentRegion; @@ -67,7 +67,7 @@ export class CICSResourceTree extends TreeItem { this.addResource(newResourceItem); } - this.iconPath = getIconOpen(true); + this.iconPath = getFolderIcon(true); } catch (error) { if (error.mMessage?.includes("exceeded a resource limit")) { @@ -76,7 +76,7 @@ export class CICSResourceTree extends TreeItem { window.showInformationMessage(`No ${this.resourceMeta.humanReadableName} found`); this.label = `${this.resourceMeta.humanReadableName}${this.activeFilter ? ` (${this.activeFilter}) ` : " "}[0]`; - this.iconPath = getIconOpen(true); + this.iconPath = getFolderIcon(true); } else { window.showErrorMessage( diff --git a/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts b/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts index 1ca870a5..0f2d823c 100644 --- a/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts +++ b/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts @@ -13,7 +13,7 @@ import { IResource } from "@zowe/cics-for-zowe-sdk"; import { TreeItem, TreeItemCollapsibleState } from "vscode"; import IResourceMeta from "../../doc/IResourceMeta"; import { CICSRegionTree } from "../CICSRegionTree"; -import { getIconByStatus } from "../../utils/iconUtils"; +import { getIconFilePathFromName } from "../../utils/iconUtils"; export class CICSResourceTreeItem extends TreeItem { resource: T; @@ -36,7 +36,7 @@ export class CICSResourceTreeItem extends TreeItem { this.parentRegion = parentRegion; this.directParent = directParent; this.contextValue = resourceMeta.getContext(resource); - this.iconPath = getIconByStatus(resourceMeta.resourceName, this); + this.iconPath = getIconFilePathFromName(resourceMeta.getIconName(resource)); } public setLabel(newLabel: string) { diff --git a/packages/vsce/src/utils/iconUtils.ts b/packages/vsce/src/utils/iconUtils.ts index 04de6a58..efa17653 100644 --- a/packages/vsce/src/utils/iconUtils.ts +++ b/packages/vsce/src/utils/iconUtils.ts @@ -26,30 +26,7 @@ export function getFolderIcon(open: boolean = true) { export function getIconRootName(resourceType: string, resourceTreeItem: any) { switch (resourceType) { - case "PROGRAM": - case "CICSProgram": - return resourceTreeItem.status === "DISABLED" ? "program-disabled" : "program"; - case "TRANSACTION": - case "CICSLocalTransaction": - return resourceTreeItem.status === "DISABLED" ? "local-transaction-disabled" : "local-transaction"; - case "LOCAL_FILE": - case "CICSLocalFile": - return resourceTreeItem.openstatus === "CLOSED" && resourceTreeItem.enablestatus === "DISABLED" - ? "local-file-disabled-closed" - : resourceTreeItem.openstatus === "CLOSED" - ? "local-file-closed" - : resourceTreeItem.enablestatus === "DISABLED" - ? "local-file-disabled" - : "local-file"; - case "TASK": - case "CICSTask": - return resourceTreeItem.runstatus === "RUNNING" - ? "task-running" - : resourceTreeItem.runstatus === "SUSPENDED" - ? "task-suspended" - : "task-dispatched"; case "REGION": - case "CICSRegion": return resourceTreeItem.isActive ? "region" : "region-disabled"; } } diff --git a/packages/vsce/src/utils/profileUtils.ts b/packages/vsce/src/utils/profileUtils.ts index c0c767d5..a71b3d9a 100644 --- a/packages/vsce/src/utils/profileUtils.ts +++ b/packages/vsce/src/utils/profileUtils.ts @@ -24,8 +24,6 @@ export function missingSessionParameters(profileProfile: any): (string | undefin return missing; } - - export async function promptCredentials(sessionName: string, rePrompt?: boolean): Promise { // const mProfileInfo = new ProfileInfo("zowe", { // requireKeytar: () => getSecurityModules("keytar", isTheia())!, From b8fa5fc996bd6e3507327dead8ff41b245be2775 Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Tue, 28 Jan 2025 14:48:39 +0000 Subject: [PATCH 10/17] region meta Signed-off-by: Andrew Twydell --- .../__unit__/utils/iconUtils.unit.test.ts | 91 +------------------ packages/vsce/src/doc/RegionMeta.ts | 65 +++++++++++++ packages/vsce/src/trees/CICSPlexTree.ts | 1 - packages/vsce/src/trees/CICSRegionTree.ts | 31 ++++--- .../vsce/src/trees/CICSRegionsContainer.ts | 2 +- packages/vsce/src/trees/CICSTree.ts | 1 - packages/vsce/src/utils/iconUtils.ts | 11 --- 7 files changed, 85 insertions(+), 117 deletions(-) create mode 100644 packages/vsce/src/doc/RegionMeta.ts diff --git a/packages/vsce/__tests__/__unit__/utils/iconUtils.unit.test.ts b/packages/vsce/__tests__/__unit__/utils/iconUtils.unit.test.ts index 6de34dec..1cbd026f 100644 --- a/packages/vsce/__tests__/__unit__/utils/iconUtils.unit.test.ts +++ b/packages/vsce/__tests__/__unit__/utils/iconUtils.unit.test.ts @@ -1,4 +1,4 @@ -import { getIconByStatus, getFolderIcon, getIconFilePathFromName, getIconRootName } from "../../../src/utils/iconUtils"; +import { getFolderIcon, getIconFilePathFromName } from "../../../src/utils/iconUtils"; const iconPath = { light: "program-dark.svg", @@ -26,93 +26,4 @@ describe("Test suite for iconUtils", () => { expect(result.light).toContain("folder-closed-dark"); }); }); - - describe("Test suite for getIconRootName", () => { - // Using the common object for resourcesTreeItem - const resourceTreeItem = { - status: "", - openstatus: "", - enablestatus: "", - runstatus: "", - isActive: true, - }; - it("Should return program-disabled for PROGRAM resource with DISABLED status", () => { - resourceTreeItem.status = "DISABLED"; - const result = getIconRootName("PROGRAM", resourceTreeItem); - expect(result).toBe("program-disabled"); - }); - it("Should return program for PROGRAM resource with ENABLED status", () => { - resourceTreeItem.status = "ENABLED"; - const result = getIconRootName("PROGRAM", resourceTreeItem); - expect(result).toBe("program"); - }); - it("Should return local-transaction-disabled for TRANSACTION resource with DISABLED status", () => { - resourceTreeItem.status = "DISABLED"; - const result = getIconRootName("TRANSACTION", resourceTreeItem); - expect(result).toBe("local-transaction-disabled"); - }); - it("Should return local-transaction for TRANSACTION resource with ENABLED status", () => { - resourceTreeItem.status = "ENABLED"; - const result = getIconRootName("TRANSACTION", resourceTreeItem); - expect(result).toBe("local-transaction"); - }); - it("Should return local-file-disabled-closed for LOCAL_FILE resource with openstatus as CLOSED and enablestatus as CLOSED", () => { - resourceTreeItem.openstatus = "CLOSED"; - resourceTreeItem.enablestatus = "DISABLED"; - const result = getIconRootName("LOCAL_FILE", resourceTreeItem); - expect(result).toBe("local-file-disabled-closed"); - }); - it("Should return local-file-closed for LOCAL_FILE resource with openstatus as CLOSED", () => { - resourceTreeItem.enablestatus = "ENABLED"; - resourceTreeItem.openstatus = "CLOSED"; - const result = getIconRootName("LOCAL_FILE", resourceTreeItem); - expect(result).toBe("local-file-closed"); - }); - it("Should return local-file-disabled for LOCAL_FILE resource with enablestatus as DISABLED", () => { - resourceTreeItem.openstatus = "OPEN"; - resourceTreeItem.enablestatus = "DISABLED"; - const result = getIconRootName("LOCAL_FILE", resourceTreeItem); - expect(result).toBe("local-file-disabled"); - }); - it("Should return local-file for LOCAL_FILE resource with enablestatus as ENABLED and openstatus as OPEM", () => { - resourceTreeItem.enablestatus = "ENABLED"; - resourceTreeItem.openstatus = "OPEN"; - const result = getIconRootName("LOCAL_FILE", resourceTreeItem); - expect(result).toBe("local-file"); - }); - it("Should return task-running for TASK resource with runstatus as RUNNING", () => { - resourceTreeItem.runstatus = "RUNNING"; - const result = getIconRootName("TASK", resourceTreeItem); - expect(result).toBe("task-running"); - }); - it("Should return task-suspended for TASK resource with runstatus as SUSPENDED", () => { - resourceTreeItem.runstatus = "SUSPENDED"; - const result = getIconRootName("TASK", resourceTreeItem); - expect(result).toBe("task-suspended"); - }); - it("Should return task-dispatched for TASK resource with runstatus as DISPATCHED", () => { - resourceTreeItem.runstatus = "DISPATCHED"; - const result = getIconRootName("TASK", resourceTreeItem); - expect(result).toBe("task-dispatched"); - }); - it("Should return region for REGION resource with isActive as true", () => { - const result = getIconRootName("REGION", resourceTreeItem); - expect(result).toBe("region"); - }); - it("Should return region-disabled for REGION resource with isActive as false", () => { - resourceTreeItem.isActive = false; - const result = getIconRootName("REGION", resourceTreeItem); - expect(result).toBe("region-disabled"); - }); - }); - - describe("Test suite for getIconByStatus", () => { - const resource = { - status: "DISABLED", - }; - it("Should return icon based on resource status", () => { - const result = getIconByStatus("PROGRAM", resource); - expect(result.dark).toContain("program-disabled"); - }); - }); }); diff --git a/packages/vsce/src/doc/RegionMeta.ts b/packages/vsce/src/doc/RegionMeta.ts new file mode 100644 index 00000000..826a1a9c --- /dev/null +++ b/packages/vsce/src/doc/RegionMeta.ts @@ -0,0 +1,65 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + +import { IRegion } from "@zowe/cics-for-zowe-sdk"; +import { ResourceMeta } from "./IResourceMeta"; + + +export const RegionMeta: ResourceMeta = { + + resourceName: "CICSManagedRegion", + humanReadableName: "Regions", + contextPrefix: "cicsregion", + combinedContextPrefix: null, + filterAttribute: "applid", + primaryKeyAttribute: "applid", + + persistentStorageKey: null, + persistentStorageAllKey: null, + + getDefaultFilter: function (): Promise { + return null; + }, + + getLabel: function (region: IRegion): string { + if (region.applid) { + return `${region.applid.trim()}`; + } + return `${region.cicsname.trim()}`; + }, + + getContext: function (region: IRegion): string { + + let activeContext = `.active`; + + const cicsstate = region.cicsstate?.trim().toUpperCase(); + const cicsstatus = region.cicsstatus?.trim().toUpperCase(); + + if ((cicsstate && cicsstate === "INACTIVE") || (cicsstatus && cicsstatus === "INACTIVE")) { + activeContext = `.inactive`; + } + + return `cicsregion.${region.applid.trim().toLowerCase()}.${activeContext}`; + }, + + getIconName: function (region: IRegion): string { + let iconName = `region`; + + const cicsstate = region.cicsstate?.trim().toUpperCase(); + const cicsstatus = region.cicsstatus?.trim().toUpperCase(); + + if ((cicsstate && cicsstate === "INACTIVE") || (cicsstatus && cicsstatus === "INACTIVE")) { + iconName += `-disabled`; + } + return iconName; + } +}; + diff --git a/packages/vsce/src/trees/CICSPlexTree.ts b/packages/vsce/src/trees/CICSPlexTree.ts index 7a268392..0ac326f8 100644 --- a/packages/vsce/src/trees/CICSPlexTree.ts +++ b/packages/vsce/src/trees/CICSPlexTree.ts @@ -63,7 +63,6 @@ export class CICSPlexTree extends TreeItem { regionName: plexProfile.profile.regionName, }); const newRegionTree = new CICSRegionTree( - plexProfile.profile.regionName, regionsObtained.response.records.cicsregion, this.getParent(), this, diff --git a/packages/vsce/src/trees/CICSRegionTree.ts b/packages/vsce/src/trees/CICSRegionTree.ts index 04dbabd0..f4da98dc 100644 --- a/packages/vsce/src/trees/CICSRegionTree.ts +++ b/packages/vsce/src/trees/CICSRegionTree.ts @@ -12,26 +12,33 @@ import { TreeItemCollapsibleState, TreeItem } from "vscode"; import { CICSSessionTree } from "./CICSSessionTree"; import { CICSPlexTree } from "./CICSPlexTree"; -import { getIconByStatus } from "../utils/iconUtils"; +import { getIconFilePathFromName } from "../utils/iconUtils"; import { IRegion, IResource } from "@zowe/cics-for-zowe-sdk"; import { CICSLibraryTree } from "./CICSLibraryTree"; import { CICSResourceTree } from "./CICSResourceTree"; import { LocalFileMeta, PipelineMeta, ProgramMeta, TaskMeta, TransactionMeta, URIMapMeta } from "../doc"; import { TCPIPMeta } from "../doc/TCPIPMeta"; import { WebServiceMeta } from "../doc/WebServiceMeta"; +import { CICSRegionsContainer } from "./CICSRegionsContainer"; +import { RegionMeta } from "../doc/RegionMeta"; export class CICSRegionTree extends TreeItem { children: (CICSResourceTree | CICSLibraryTree)[] | null; region: IRegion; parentSession: CICSSessionTree; parentPlex: CICSPlexTree | undefined; - directParent: any; + directParent: CICSPlexTree | CICSRegionsContainer | CICSSessionTree; isActive: true | false; - constructor(regionName: string, region: any, parentSession: CICSSessionTree, parentPlex: CICSPlexTree | undefined, directParent: any) { - super(regionName, TreeItemCollapsibleState.Collapsed); + constructor( + region: IRegion, + parentSession: CICSSessionTree, + parentPlex: CICSPlexTree | undefined, + directParent: CICSPlexTree | CICSRegionsContainer | CICSSessionTree + ) { + super(RegionMeta.getLabel(region), TreeItemCollapsibleState.Collapsed); this.region = region; - this.contextValue = `cicsregion.${regionName}`; + this.contextValue = RegionMeta.getContext(region); this.parentSession = parentSession; this.directParent = directParent; if (parentPlex) { @@ -43,14 +50,8 @@ export class CICSRegionTree extends TreeItem { } else { this.isActive = region.cicsstatus === "ACTIVE" ? true : false; } - this.iconPath = getIconByStatus("REGION", this); - if (!this.isActive) { - this.children = null; - this.collapsibleState = TreeItemCollapsibleState.None; - this.iconPath = getIconByStatus("REGION", this); - this.contextValue += ".inactive"; - } else { - this.contextValue += ".active"; + this.iconPath = getIconFilePathFromName(RegionMeta.getIconName(region)); + if (this.isActive) { this.children = [ new CICSResourceTree(ProgramMeta, this), new CICSResourceTree(TransactionMeta, this), @@ -63,6 +64,10 @@ export class CICSRegionTree extends TreeItem { new CICSResourceTree(PipelineMeta, this), new CICSResourceTree(WebServiceMeta, this), ]; + } else { + this.children = null; + this.collapsibleState = TreeItemCollapsibleState.None; + this.iconPath = getIconFilePathFromName(RegionMeta.getIconName(region)); } } diff --git a/packages/vsce/src/trees/CICSRegionsContainer.ts b/packages/vsce/src/trees/CICSRegionsContainer.ts index 4dd82fb0..31477fe9 100644 --- a/packages/vsce/src/trees/CICSRegionsContainer.ts +++ b/packages/vsce/src/trees/CICSRegionsContainer.ts @@ -99,7 +99,7 @@ export class CICSRegionsContainer extends TreeItem { for (const region of regionsArray) { // If region filter exists then match it if (!regionFilterRegex || region.cicsname.match(regionFilterRegex)) { - const newRegionTree = new CICSRegionTree(region.cicsname, region, parentPlex.getParent(), parentPlex, this); + const newRegionTree = new CICSRegionTree(region, parentPlex.getParent(), parentPlex, this); this.addRegion(newRegionTree); totalCount += 1; if (region.cicsstate === "ACTIVE") { diff --git a/packages/vsce/src/trees/CICSTree.ts b/packages/vsce/src/trees/CICSTree.ts index 411b0f27..725849c2 100644 --- a/packages/vsce/src/trees/CICSTree.ts +++ b/packages/vsce/src/trees/CICSTree.ts @@ -283,7 +283,6 @@ export class CICSTree implements TreeDataProvider { // 200 OK received newSessionTree.setAuthorized(); const newRegionTree = new CICSRegionTree( - item.regions[0].applid, regionsObtained.response.records.cicsregion, newSessionTree, undefined, diff --git a/packages/vsce/src/utils/iconUtils.ts b/packages/vsce/src/utils/iconUtils.ts index efa17653..554c6f0b 100644 --- a/packages/vsce/src/utils/iconUtils.ts +++ b/packages/vsce/src/utils/iconUtils.ts @@ -23,14 +23,3 @@ export function getIconFilePathFromName(iconFileName: string): { light: string; export function getFolderIcon(open: boolean = true) { return getIconFilePathFromName(`folder-${open ? "open" : "closed"}`); } - -export function getIconRootName(resourceType: string, resourceTreeItem: any) { - switch (resourceType) { - case "REGION": - return resourceTreeItem.isActive ? "region" : "region-disabled"; - } -} - -export function getIconByStatus(resourceType: string, resourceTreeItem: any) { - return getIconFilePathFromName(getIconRootName(resourceType, resourceTreeItem)); -} From 0bdb9ea52c426fd11d403db801f5e11374dadee0 Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Tue, 28 Jan 2025 15:31:30 +0000 Subject: [PATCH 11/17] unit test meta Signed-off-by: Andrew Twydell --- .../__unit__/doc/meta.localfile.test.ts | 101 ++++++++++++++++++ .../__unit__/doc/meta.pipeline.test.ts | 29 +++++ .../__unit__/doc/meta.program.test.ts | 56 ++++++++++ .../__unit__/doc/meta.region.test.ts | 55 ++++++++++ .../__tests__/__unit__/doc/meta.task.test.ts | 46 ++++++++ .../__tests__/__unit__/doc/meta.tcpip.test.ts | 36 +++++++ .../__unit__/doc/meta.transaction.test.ts | 46 ++++++++ .../__unit__/doc/meta.urimap.test.ts | 51 +++++++++ .../__unit__/doc/meta.webservice.test.ts | 29 +++++ packages/vsce/src/doc/RegionMeta.ts | 4 +- 10 files changed, 451 insertions(+), 2 deletions(-) create mode 100644 packages/vsce/__tests__/__unit__/doc/meta.localfile.test.ts create mode 100644 packages/vsce/__tests__/__unit__/doc/meta.pipeline.test.ts create mode 100644 packages/vsce/__tests__/__unit__/doc/meta.program.test.ts create mode 100644 packages/vsce/__tests__/__unit__/doc/meta.region.test.ts create mode 100644 packages/vsce/__tests__/__unit__/doc/meta.task.test.ts create mode 100644 packages/vsce/__tests__/__unit__/doc/meta.tcpip.test.ts create mode 100644 packages/vsce/__tests__/__unit__/doc/meta.transaction.test.ts create mode 100644 packages/vsce/__tests__/__unit__/doc/meta.urimap.test.ts create mode 100644 packages/vsce/__tests__/__unit__/doc/meta.webservice.test.ts diff --git a/packages/vsce/__tests__/__unit__/doc/meta.localfile.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.localfile.test.ts new file mode 100644 index 00000000..70dd3364 --- /dev/null +++ b/packages/vsce/__tests__/__unit__/doc/meta.localfile.test.ts @@ -0,0 +1,101 @@ +import { ILocalFile } from "@zowe/cics-for-zowe-sdk"; +import { LocalFileMeta } from "../../../src/doc/LocalFileMeta"; + +describe("Local File Meta", () => { + + let localFileMock: ILocalFile; + + beforeEach(() => { + localFileMock = { + file: "MYFILE", + enablestatus: "ENABLED", + eyu_cicsname: "MYREG", + openstatus: "OPEN" + }; + }); + + it("should return label", () => { + const label = LocalFileMeta.getLabel(localFileMock); + expect(label).toEqual(`MYFILE`); + }); + it("should return label with disabled", () => { + localFileMock.enablestatus = "DISABLED"; + const label = LocalFileMeta.getLabel(localFileMock); + expect(label).toEqual(`MYFILE (Disabled)`); + }); + it("should return label with unenabled", () => { + localFileMock.enablestatus = "UNENABLED"; + const label = LocalFileMeta.getLabel(localFileMock); + expect(label).toEqual(`MYFILE (Unenabled)`); + }); + it("should return label with closed", () => { + localFileMock.openstatus = "CLOSED"; + const label = LocalFileMeta.getLabel(localFileMock); + expect(label).toEqual(`MYFILE (Closed)`); + }); + it("should return label with disabled and closed", () => { + localFileMock.openstatus = "CLOSED"; + localFileMock.enablestatus = "DISABLED"; + const label = LocalFileMeta.getLabel(localFileMock); + expect(label).toEqual(`MYFILE (Disabled) (Closed)`); + }); + it("should return label with unenabled and closed", () => { + localFileMock.openstatus = "CLOSED"; + localFileMock.enablestatus = "UNENABLED"; + const label = LocalFileMeta.getLabel(localFileMock); + expect(label).toEqual(`MYFILE (Unenabled) (Closed)`); + }); + + it("should return context", () => { + const context = LocalFileMeta.getContext(localFileMock); + expect(context).toEqual(`cicslocalfile.enabled.open.MYFILE`); + }); + it("should return context with disabled", () => { + localFileMock.enablestatus = "DISABLED"; + const context = LocalFileMeta.getContext(localFileMock); + expect(context).toEqual(`cicslocalfile.disabled.open.MYFILE`); + }); + it("should return context with unenabled", () => { + localFileMock.enablestatus = "UNENABLED"; + const context = LocalFileMeta.getContext(localFileMock); + expect(context).toEqual(`cicslocalfile.unenabled.open.MYFILE`); + }); + it("should return context with closed", () => { + localFileMock.openstatus = "closed"; + const context = LocalFileMeta.getContext(localFileMock); + expect(context).toEqual(`cicslocalfile.enabled.closed.MYFILE`); + }); + it("should return context with disabled and closed", () => { + localFileMock.openstatus = "closed"; + localFileMock.enablestatus = "DISABLED"; + const context = LocalFileMeta.getContext(localFileMock); + expect(context).toEqual(`cicslocalfile.disabled.closed.MYFILE`); + }); + it("should return context with unenabled and closed", () => { + localFileMock.openstatus = "closed"; + localFileMock.enablestatus = "UNENABLED"; + const context = LocalFileMeta.getContext(localFileMock); + expect(context).toEqual(`cicslocalfile.unenabled.closed.MYFILE`); + }); + + it("should return icon name", () => { + const iconName = LocalFileMeta.getIconName(localFileMock); + expect(iconName).toEqual(`local-file`); + }); + it("should return icon name with disabled", () => { + localFileMock.enablestatus = "DISABLED"; + const iconName = LocalFileMeta.getIconName(localFileMock); + expect(iconName).toEqual(`local-file-disabled`); + }); + it("should return icon name with closed", () => { + localFileMock.openstatus = "CLOSED"; + const iconName = LocalFileMeta.getIconName(localFileMock); + expect(iconName).toEqual(`local-file-closed`); + }); + it("should return icon name with closed and disabled", () => { + localFileMock.openstatus = "CLOSED"; + localFileMock.enablestatus = "DISABLED"; + const iconName = LocalFileMeta.getIconName(localFileMock); + expect(iconName).toEqual(`local-file-disabled-closed`); + }); +}); diff --git a/packages/vsce/__tests__/__unit__/doc/meta.pipeline.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.pipeline.test.ts new file mode 100644 index 00000000..1a258fc5 --- /dev/null +++ b/packages/vsce/__tests__/__unit__/doc/meta.pipeline.test.ts @@ -0,0 +1,29 @@ +import { IPipeline } from "@zowe/cics-for-zowe-sdk"; +import { PipelineMeta } from "../../../src/doc/PipelineMeta"; + +describe("Pipeline Meta", () => { + + let pipelineMock: IPipeline; + + beforeEach(() => { + pipelineMock = { + name: "MYPIPE", + eyu_cicsname: "MYREG" + }; + }); + + it("should return label", () => { + const label = PipelineMeta.getLabel(pipelineMock); + expect(label).toEqual(`MYPIPE`); + }); + + it("should return context", () => { + const context = PipelineMeta.getContext(pipelineMock); + expect(context).toEqual(`cicspipeline.MYPIPE`); + }); + + it("should return icon name", () => { + const iconName = PipelineMeta.getIconName(pipelineMock); + expect(iconName).toEqual(`program`); + }); +}); diff --git a/packages/vsce/__tests__/__unit__/doc/meta.program.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.program.test.ts new file mode 100644 index 00000000..9892882c --- /dev/null +++ b/packages/vsce/__tests__/__unit__/doc/meta.program.test.ts @@ -0,0 +1,56 @@ +import { IProgram } from "@zowe/cics-for-zowe-sdk"; +import { ProgramMeta } from "../../../src/doc/ProgramMeta"; + +describe("Program Meta", () => { + + let programMock: IProgram; + + beforeEach(() => { + programMock = { + program: "MYPROG", + status: "ENABLED", + eyu_cicsname: "MYREG" + }; + }); + + it("should return label", () => { + const label = ProgramMeta.getLabel(programMock); + expect(label).toEqual(`MYPROG`); + }); + it("should return label with disabled", () => { + programMock.status = "DISABLED"; + const label = ProgramMeta.getLabel(programMock); + expect(label).toEqual(`MYPROG (Disabled)`); + }); + it("should return label with newcopycount", () => { + programMock.newcopycnt = "2"; + const label = ProgramMeta.getLabel(programMock); + expect(label).toEqual(`MYPROG (New copy count: 2)`); + }); + it("should return label with disabled and newcopycount", () => { + programMock.status = "DISABLED"; + programMock.newcopycnt = "2"; + const label = ProgramMeta.getLabel(programMock); + expect(label).toEqual(`MYPROG (New copy count: 2) (Disabled)`); + }); + + it("should return context", () => { + const context = ProgramMeta.getContext(programMock); + expect(context).toEqual(`cicsprogram.enabled.MYPROG`); + }); + it("should return context with disabled", () => { + programMock.status = "DISABLED"; + const context = ProgramMeta.getContext(programMock); + expect(context).toEqual(`cicsprogram.disabled.MYPROG`); + }); + + it("should return icon name", () => { + const iconName = ProgramMeta.getIconName(programMock); + expect(iconName).toEqual(`program`); + }); + it("should return icon name with disabled", () => { + programMock.status = "DISABLED"; + const iconName = ProgramMeta.getIconName(programMock); + expect(iconName).toEqual(`program-disabled`); + }); +}); diff --git a/packages/vsce/__tests__/__unit__/doc/meta.region.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.region.test.ts new file mode 100644 index 00000000..5247cc16 --- /dev/null +++ b/packages/vsce/__tests__/__unit__/doc/meta.region.test.ts @@ -0,0 +1,55 @@ +import { IRegion } from "@zowe/cics-for-zowe-sdk"; +import { RegionMeta } from "../../../src/doc/RegionMeta"; + +describe("Region Meta", () => { + + let regionMock: IRegion; + + beforeEach(() => { + regionMock = { + applid: "MYREG", + cicsname: "MYREG", + cicsstate: "ACTIVE", + cicsstatus: "ACTIVE", + eyu_cicsname: "MYREG" + }; + }); + + it("should return label", () => { + const label = RegionMeta.getLabel(regionMock); + expect(label).toEqual(`MYREG`); + }); + it("should return label with no applid from cicsname", () => { + // @ts-ignore + regionMock.applid = null; + const label = RegionMeta.getLabel(regionMock); + expect(label).toEqual(`MYREG`); + }); + + it("should return context", () => { + const context = RegionMeta.getContext(regionMock); + expect(context).toEqual(`cicsregion.myreg.active`); + }); + it("should return context when cicsstate inactive", () => { + regionMock.cicsstate = "INACTIVE"; + const context = RegionMeta.getContext(regionMock); + expect(context).toEqual(`cicsregion.myreg.inactive`); + }); + it("should return context when no cicsstate and cicsstatus inactive", () => { + // @ts-ignore + regionMock.cicsstate = null; + regionMock.cicsstatus = "INACTIVE"; + const context = RegionMeta.getContext(regionMock); + expect(context).toEqual(`cicsregion.myreg.inactive`); + }); + + it("should return icon name", () => { + const iconName = RegionMeta.getIconName(regionMock); + expect(iconName).toEqual(`region`); + }); + it("should return icon name with disabled", () => { + regionMock.cicsstate = "INACTIVE"; + const iconName = RegionMeta.getIconName(regionMock); + expect(iconName).toEqual(`region-disabled`); + }); +}); diff --git a/packages/vsce/__tests__/__unit__/doc/meta.task.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.task.test.ts new file mode 100644 index 00000000..9dba3201 --- /dev/null +++ b/packages/vsce/__tests__/__unit__/doc/meta.task.test.ts @@ -0,0 +1,46 @@ +import { ITask } from "@zowe/cics-for-zowe-sdk"; +import { TaskMeta } from "../../../src/doc/TaskMeta"; + +describe("Task Meta", () => { + + let taskMock: ITask; + + beforeEach(() => { + taskMock = { + task: "MYTASK", + eyu_cicsname: "MYREG", + runstatus: "RUNNING", + tranid: "TRAN" + }; + }); + + it("should return label", () => { + const label = TaskMeta.getLabel(taskMock); + expect(label).toEqual(`MYTASK - TRAN (RUNNING)`); + }); + it("should return label with suspended", () => { + taskMock.runstatus = "SUSPENDED"; + const label = TaskMeta.getLabel(taskMock); + expect(label).toEqual(`MYTASK - TRAN`); + }); + + it("should return context", () => { + const context = TaskMeta.getContext(taskMock); + expect(context).toEqual(`cicstask.MYTASK`); + }); + + it("should return icon name", () => { + const iconName = TaskMeta.getIconName(taskMock); + expect(iconName).toEqual(`task-running`); + }); + it("should return icon name with suspended", () => { + taskMock.runstatus = "SUSPENDED"; + const iconName = TaskMeta.getIconName(taskMock); + expect(iconName).toEqual(`task-suspended`); + }); + it("should return icon name with dispatched", () => { + taskMock.runstatus = "DISPATCHED"; + const iconName = TaskMeta.getIconName(taskMock); + expect(iconName).toEqual(`task-dispatched`); + }); +}); diff --git a/packages/vsce/__tests__/__unit__/doc/meta.tcpip.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.tcpip.test.ts new file mode 100644 index 00000000..0be1981d --- /dev/null +++ b/packages/vsce/__tests__/__unit__/doc/meta.tcpip.test.ts @@ -0,0 +1,36 @@ +import { ITCPIP } from "@zowe/cics-for-zowe-sdk"; +import { TCPIPMeta } from "../../../src/doc/TCPIPMeta"; + +describe("TCP IP Meta", () => { + + let tcpipMock: ITCPIP; + + beforeEach(() => { + tcpipMock = { + name: "MYTCPIP", + eyu_cicsname: "MYREG", + port: "12345" + }; + }); + + it("should return label", () => { + const label = TCPIPMeta.getLabel(tcpipMock); + expect(label).toEqual(`MYTCPIP [Port #12345]`); + }); + it("should return label with no port", () => { + // @ts-ignore + tcpipMock.port = null; + const label = TCPIPMeta.getLabel(tcpipMock); + expect(label).toEqual(`MYTCPIP`); + }); + + it("should return context", () => { + const context = TCPIPMeta.getContext(tcpipMock); + expect(context).toEqual(`cicstcpips.MYTCPIP`); + }); + + it("should return icon name", () => { + const iconName = TCPIPMeta.getIconName(tcpipMock); + expect(iconName).toEqual(`program`); + }); +}); diff --git a/packages/vsce/__tests__/__unit__/doc/meta.transaction.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.transaction.test.ts new file mode 100644 index 00000000..bbf63072 --- /dev/null +++ b/packages/vsce/__tests__/__unit__/doc/meta.transaction.test.ts @@ -0,0 +1,46 @@ +import { ITransaction } from "@zowe/cics-for-zowe-sdk"; +import { TransactionMeta } from "../../../src/doc/TransactionMeta"; + +describe("Transaction Meta", () => { + + let transactionMock: ITransaction; + + beforeEach(() => { + transactionMock = { + tranid: "TRAN", + eyu_cicsname: "MYREG", + program: "MYPROG", + status: "ENABLED" + }; + }); + + it("should return label", () => { + const label = TransactionMeta.getLabel(transactionMock); + expect(label).toEqual(`TRAN`); + }); + it("should return label with disabled", () => { + transactionMock.status = "DISABLED"; + const label = TransactionMeta.getLabel(transactionMock); + expect(label).toEqual(`TRAN (Disabled)`); + }); + + it("should return context", () => { + const context = TransactionMeta.getContext(transactionMock); + expect(context).toEqual(`cicstransaction.enabled.TRAN`); + }); + it("should return context with disabled", () => { + transactionMock.status = "DISABLED"; + const context = TransactionMeta.getContext(transactionMock); + expect(context).toEqual(`cicstransaction.disabled.TRAN`); + }); + + it("should return icon name", () => { + const iconName = TransactionMeta.getIconName(transactionMock); + expect(iconName).toEqual(`local-transaction`); + }); + it("should return icon name with disabled", () => { + transactionMock.status = "DISABLED"; + const iconName = TransactionMeta.getIconName(transactionMock); + expect(iconName).toEqual(`local-transaction-disabled`); + }); +}); diff --git a/packages/vsce/__tests__/__unit__/doc/meta.urimap.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.urimap.test.ts new file mode 100644 index 00000000..cdcff87d --- /dev/null +++ b/packages/vsce/__tests__/__unit__/doc/meta.urimap.test.ts @@ -0,0 +1,51 @@ +import { IUriMap } from "@zowe/cics-for-zowe-sdk"; +import { URIMapMeta } from "../../../src/doc/URIMapMeta"; + +describe("URIMap Meta", () => { + + let urimapMock: IUriMap; + + beforeEach(() => { + urimapMock = { + name: "MYURI", + eyu_cicsname: "MYREG", + path: "/a/b/c", + scheme: "http" + }; + }); + + it("should return label", () => { + const label = URIMapMeta.getLabel(urimapMock); + expect(label).toEqual(`MYURI [http] (/a/b/c)`); + }); + it("should return label with no scheme", () => { + // @ts-ignore + urimapMock.scheme = null; + const label = URIMapMeta.getLabel(urimapMock); + expect(label).toEqual(`MYURI (/a/b/c)`); + }); + it("should return label with no path", () => { + // @ts-ignore + urimapMock.path = null; + const label = URIMapMeta.getLabel(urimapMock); + expect(label).toEqual(`MYURI [http]`); + }); + it("should return label with no scheme or path", () => { + // @ts-ignore + urimapMock.path = null; + // @ts-ignore + urimapMock.scheme = null; + const label = URIMapMeta.getLabel(urimapMock); + expect(label).toEqual(`MYURI`); + }); + + it("should return context", () => { + const context = URIMapMeta.getContext(urimapMock); + expect(context).toEqual(`cicsurimaps.MYURI`); + }); + + it("should return icon name", () => { + const iconName = URIMapMeta.getIconName(urimapMock); + expect(iconName).toEqual(`program`); + }); +}); diff --git a/packages/vsce/__tests__/__unit__/doc/meta.webservice.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.webservice.test.ts new file mode 100644 index 00000000..866c4b46 --- /dev/null +++ b/packages/vsce/__tests__/__unit__/doc/meta.webservice.test.ts @@ -0,0 +1,29 @@ +import { IWebService } from "@zowe/cics-for-zowe-sdk"; +import { WebServiceMeta } from "../../../src/doc/WebServiceMeta"; + +describe("WebService Meta", () => { + + let webserviceMock: IWebService; + + beforeEach(() => { + webserviceMock = { + name: "WEBSERV", + eyu_cicsname: "MYREG" + }; + }); + + it("should return label", () => { + const label = WebServiceMeta.getLabel(webserviceMock); + expect(label).toEqual(`WEBSERV`); + }); + + it("should return context", () => { + const context = WebServiceMeta.getContext(webserviceMock); + expect(context).toEqual(`cicswebservice.WEBSERV`); + }); + + it("should return icon name", () => { + const iconName = WebServiceMeta.getIconName(webserviceMock); + expect(iconName).toEqual(`program`); + }); +}); diff --git a/packages/vsce/src/doc/RegionMeta.ts b/packages/vsce/src/doc/RegionMeta.ts index 826a1a9c..3be272fc 100644 --- a/packages/vsce/src/doc/RegionMeta.ts +++ b/packages/vsce/src/doc/RegionMeta.ts @@ -38,13 +38,13 @@ export const RegionMeta: ResourceMeta = { getContext: function (region: IRegion): string { - let activeContext = `.active`; + let activeContext = `active`; const cicsstate = region.cicsstate?.trim().toUpperCase(); const cicsstatus = region.cicsstatus?.trim().toUpperCase(); if ((cicsstate && cicsstate === "INACTIVE") || (cicsstatus && cicsstatus === "INACTIVE")) { - activeContext = `.inactive`; + activeContext = `inactive`; } return `cicsregion.${region.applid.trim().toLowerCase()}.${activeContext}`; From fd5c0cf42539fd6df95da5af3d59dea13ba4c41c Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Tue, 28 Jan 2025 17:55:31 +0000 Subject: [PATCH 12/17] unit test resource trees Signed-off-by: Andrew Twydell --- .../trees/CICSResourceTree.unit.test.ts | 165 ++++++++++++++++++ .../trees/CICSResourceTreeItem.unit.test.ts | 73 ++++++++ .../trees/treeItems/CICSResourceTreeItem.ts | 7 +- 3 files changed, 243 insertions(+), 2 deletions(-) create mode 100644 packages/vsce/__tests__/__unit__/trees/CICSResourceTree.unit.test.ts create mode 100644 packages/vsce/__tests__/__unit__/trees/CICSResourceTreeItem.unit.test.ts diff --git a/packages/vsce/__tests__/__unit__/trees/CICSResourceTree.unit.test.ts b/packages/vsce/__tests__/__unit__/trees/CICSResourceTree.unit.test.ts new file mode 100644 index 00000000..88ff8d74 --- /dev/null +++ b/packages/vsce/__tests__/__unit__/trees/CICSResourceTree.unit.test.ts @@ -0,0 +1,165 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + +import * as CICSSDK from "@zowe/cics-for-zowe-sdk"; +import { imperative } from "@zowe/zowe-explorer-api"; +import { ProgramMeta } from "../../../src/doc"; +import { CICSRegionTree } from "../../../src/trees/CICSRegionTree"; +import { CICSResourceTree } from "../../../src/trees/CICSResourceTree"; +import { CICSSessionTree } from "../../../src/trees/CICSSessionTree"; +import * as filterUtils from "../../../src/utils/filterUtils"; +import { window } from "vscode"; + +jest.mock("@zowe/cics-for-zowe-sdk"); +const zoweSdk = require("@zowe/cics-for-zowe-sdk"); + +const mockResponse: CICSSDK.ICMCIApiResponse = { + response: { + resultsummary: { + api_response1: "OK", + api_response2: "", + displayed_recordcount: '2', + recordcount: "2", + }, + records: { + cicsprogram: [ + { + program: "PROG1", + status: "ENABLED", + newcopycnt: "1", + }, + { + program: "PROG2", + status: "DISABLED", + newcopycnt: "2", + }, + ] + } + } +}; + +const getResourceMock = jest.spyOn(zoweSdk, "getResource"); +const filterMock = jest.spyOn(filterUtils, "getDefaultFilter"); +filterMock.mockImplementationOnce(async (params) => new Promise((resolve, reject) => { + resolve("NOT (PROGRAM=CEE* OR PROGRAM=DFH* OR PROGRAM=CJ* OR PROGRAM=EYU* OR PROGRAM=CSQ* OR PROGRAM=CEL* OR PROGRAM=IGZ*)"); +})); + +const profileMock = { + name: "MYPROF", + profile: { + host: "abc.com", + port: 12345 + } +}; +const regionMock: CICSSDK.IRegion = { + applid: "MYREG", + cicsname: "MYREG", + cicsstate: "ACTIVE", + cicsstatus: "ACTIVE", + eyu_cicsname: "MYREG" +}; + +const cicsSessionTreeMock = new CICSSessionTree(profileMock); +const cicsRegionTreeMock: CICSRegionTree = new CICSRegionTree(regionMock, cicsSessionTreeMock, undefined, cicsSessionTreeMock); + +describe("CICSResourceTreeItem", () => { + let resourceTree: CICSResourceTree; + let getDefaultProgramFilter: jest.SpyInstance; + + beforeEach(() => { + resourceTree = new CICSResourceTree(ProgramMeta, cicsRegionTreeMock); + expect(resourceTree.children).toHaveLength(0); + + getDefaultProgramFilter = jest.spyOn(filterUtils, "getDefaultFilter").mockResolvedValueOnce("NOT (PROGRAM=CEE* OR PROGRAM=DFH* OR PROGRAM=CJ* OR PROGRAM=EYU* OR PROGRAM=CSQ* OR PROGRAM=CEL* OR PROGRAM=IGZ*)"); + getResourceMock.mockImplementation(async () => mockResponse); + }); + + afterEach(() => { + jest.resetAllMocks(); + }); + + it("should have the correct label", () => { + expect(resourceTree.label).toEqual("Programs"); + }); + + it("should be able to set filter", () => { + resourceTree.setFilter("abc*"); + expect(resourceTree.activeFilter).toEqual("abc*"); + }); + + it("should be able to get filter", () => { + resourceTree.setFilter("abc*"); + expect(resourceTree.getFilter()).toEqual("abc*"); + }); + + it("should be able to clear filter", () => { + resourceTree.setFilter("abc*"); + expect(resourceTree.getFilter()).toEqual("abc*"); + resourceTree.clearFilter(); + expect(resourceTree.activeFilter).toBeUndefined(); + }); + + it("should be able to get parent", () => { + expect(resourceTree.getParent()).toEqual(cicsRegionTreeMock); + }); + + it("should be able to load contents", async () => { + expect(resourceTree.children).toHaveLength(0); + await resourceTree.loadContents(); + expect(filterMock).toHaveBeenCalled(); + expect(resourceTree.children).toHaveLength(2); + }); + + it("should be able to load contents with filter", async () => { + expect(resourceTree.children).toHaveLength(0); + resourceTree.setFilter("abc*"); + await resourceTree.loadContents(); + expect(filterMock).toHaveBeenCalled(); + expect(resourceTree.children).toHaveLength(2); + }); + + it("should be able to catch load contents resource limit error", async () => { + expect(resourceTree.children).toHaveLength(0); + + const showErrorMessageMock = jest.spyOn(window, 'showErrorMessage'); + + getResourceMock.mockImplementation(async () => { + throw new imperative.ImperativeError({ + msg: "exceeded a resource limit", + }); + }); + + await resourceTree.loadContents(); + expect(filterMock).toHaveBeenCalled(); + expect(showErrorMessageMock).toHaveBeenCalled(); + expect(showErrorMessageMock).toHaveBeenCalledWith(`Resource Limit Exceeded - Set a filter to narrow search`); + expect(resourceTree.children).toHaveLength(0); + }); + + it("should be able to catch load contents none found error", async () => { + expect(resourceTree.children).toHaveLength(0); + + const showInfoMessageMock = jest.spyOn(window, 'showInformationMessage'); + + getResourceMock.mockImplementation(async () => { + throw new imperative.ImperativeError({ + msg: "Something else happened", + }); + }); + + await resourceTree.loadContents(); + expect(filterMock).toHaveBeenCalled(); + expect(showInfoMessageMock).toHaveBeenCalled(); + expect(showInfoMessageMock).toHaveBeenCalledWith(`No Programs found`); + expect(resourceTree.children).toHaveLength(0); + }); + +}); diff --git a/packages/vsce/__tests__/__unit__/trees/CICSResourceTreeItem.unit.test.ts b/packages/vsce/__tests__/__unit__/trees/CICSResourceTreeItem.unit.test.ts new file mode 100644 index 00000000..4bfddb39 --- /dev/null +++ b/packages/vsce/__tests__/__unit__/trees/CICSResourceTreeItem.unit.test.ts @@ -0,0 +1,73 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + +import { IProgram, IRegion } from "@zowe/cics-for-zowe-sdk"; +import { ProgramMeta } from "../../../src/doc"; +import { CICSRegionTree } from "../../../src/trees/CICSRegionTree"; +import { CICSResourceTree } from "../../../src/trees/CICSResourceTree"; +import { CICSResourceTreeItem } from "../../../src/trees/treeItems/CICSResourceTreeItem"; +import { CICSSessionTree } from "../../../src/trees/CICSSessionTree"; + +const profileMock = { + name: "MYPROF", + profile: { + host: "abc.com", + port: 12345 + } +}; + +const programMock: IProgram = { + program: "MYPROG", + eyu_cicsname: "MYREG", + status: "ENABLED", + newcopycnt: "2" +}; + +const regionMock: IRegion = { + applid: "MYREG", + cicsname: "MYREG", + cicsstate: "ACTIVE", + cicsstatus: "ACTIVE", + eyu_cicsname: "MYREG" +}; + +const cicsSessionTreeMock = new CICSSessionTree(profileMock); +const cicsRegionTreeMock: CICSRegionTree = new CICSRegionTree(regionMock, cicsSessionTreeMock, undefined, cicsSessionTreeMock); +const resourceTreeMock: CICSResourceTree = new CICSResourceTree(ProgramMeta, cicsRegionTreeMock); + + +describe("CICSResourceTreeItem", () => { + let treeItem: CICSResourceTreeItem; + + beforeEach(() => { + resourceTreeMock.children = []; + treeItem = new CICSResourceTreeItem(programMock, ProgramMeta, cicsRegionTreeMock, resourceTreeMock); + resourceTreeMock.addResource(treeItem); + // expect(getFolderIconMock).toHaveBeenCalledWith(false); + }); + + afterEach(() => { + jest.resetAllMocks(); + }); + + it("should have the correct label", () => { + expect(treeItem.label).toEqual("MYPROG (New copy count: 2)"); + }); + + it("should be able to update label", () => { + treeItem.setLabel("UPDATED LABEL CONTENT"); + expect(treeItem.label).toEqual("UPDATED LABEL CONTENT"); + }); + + it("should return parent tree", () => { + expect(treeItem.getParent()).toEqual(resourceTreeMock); + }); +}); diff --git a/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts b/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts index 0f2d823c..02797551 100644 --- a/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts +++ b/packages/vsce/src/trees/treeItems/CICSResourceTreeItem.ts @@ -14,18 +14,21 @@ import { TreeItem, TreeItemCollapsibleState } from "vscode"; import IResourceMeta from "../../doc/IResourceMeta"; import { CICSRegionTree } from "../CICSRegionTree"; import { getIconFilePathFromName } from "../../utils/iconUtils"; +import { CICSCombinedResourceTree } from "../CICSCombinedTrees/CICSCombinedResourceTree"; +import { CICSLibraryDatasets } from "./CICSLibraryDatasets"; +import { CICSResourceTree } from "../CICSResourceTree"; export class CICSResourceTreeItem extends TreeItem { resource: T; resourceMeta: IResourceMeta; parentRegion: CICSRegionTree; - directParent: any; + directParent: CICSCombinedResourceTree | CICSLibraryDatasets | CICSResourceTree; constructor( resource: T, resourceMeta: IResourceMeta, parentRegion: CICSRegionTree, - directParent: any + directParent: CICSCombinedResourceTree | CICSLibraryDatasets | CICSResourceTree ) { super( resourceMeta.getLabel(resource), From 34b5591f3f3cc3402cdfbdf50568c0cf3ebef87b Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Tue, 28 Jan 2025 20:47:01 +0000 Subject: [PATCH 13/17] changelog entry Signed-off-by: Andrew Twydell --- packages/vsce/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/vsce/CHANGELOG.md b/packages/vsce/CHANGELOG.md index 0862a88e..7d1336da 100644 --- a/packages/vsce/CHANGELOG.md +++ b/packages/vsce/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to the "cics-extension-for-zowe" extension will be documente - BugFix: Editing profile results in exception - removed ability to multi-select profiles. [#222](https://github.com/zowe/cics-for-zowe-client/issues/222) - BugFix: Update documentation to reflect changes to fully support V3 profiles. [#209](https://github.com/zowe/cics-for-zowe-client/issues/209) +- Moved web-based resources in tree out of `Web` folder inline with others. ## `3.3.1` From 4f51c99bc226363983e47fc615dc26d65ee9c10f Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Wed, 29 Jan 2025 14:51:07 +0000 Subject: [PATCH 14/17] add licenses Signed-off-by: Andrew Twydell --- .../__tests__/__unit__/doc/meta.localfile.test.ts | 11 +++++++++++ .../vsce/__tests__/__unit__/doc/meta.pipeline.test.ts | 11 +++++++++++ .../vsce/__tests__/__unit__/doc/meta.program.test.ts | 11 +++++++++++ .../vsce/__tests__/__unit__/doc/meta.region.test.ts | 11 +++++++++++ .../vsce/__tests__/__unit__/doc/meta.task.test.ts | 11 +++++++++++ .../vsce/__tests__/__unit__/doc/meta.tcpip.test.ts | 11 +++++++++++ .../__tests__/__unit__/doc/meta.transaction.test.ts | 11 +++++++++++ .../vsce/__tests__/__unit__/doc/meta.urimap.test.ts | 11 +++++++++++ .../__tests__/__unit__/doc/meta.webservice.test.ts | 11 +++++++++++ .../__tests__/__unit__/utils/iconUtils.unit.test.ts | 11 +++++++++++ 10 files changed, 110 insertions(+) diff --git a/packages/vsce/__tests__/__unit__/doc/meta.localfile.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.localfile.test.ts index 70dd3364..3175a3ef 100644 --- a/packages/vsce/__tests__/__unit__/doc/meta.localfile.test.ts +++ b/packages/vsce/__tests__/__unit__/doc/meta.localfile.test.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { ILocalFile } from "@zowe/cics-for-zowe-sdk"; import { LocalFileMeta } from "../../../src/doc/LocalFileMeta"; diff --git a/packages/vsce/__tests__/__unit__/doc/meta.pipeline.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.pipeline.test.ts index 1a258fc5..124236f4 100644 --- a/packages/vsce/__tests__/__unit__/doc/meta.pipeline.test.ts +++ b/packages/vsce/__tests__/__unit__/doc/meta.pipeline.test.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IPipeline } from "@zowe/cics-for-zowe-sdk"; import { PipelineMeta } from "../../../src/doc/PipelineMeta"; diff --git a/packages/vsce/__tests__/__unit__/doc/meta.program.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.program.test.ts index 9892882c..77d89fba 100644 --- a/packages/vsce/__tests__/__unit__/doc/meta.program.test.ts +++ b/packages/vsce/__tests__/__unit__/doc/meta.program.test.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IProgram } from "@zowe/cics-for-zowe-sdk"; import { ProgramMeta } from "../../../src/doc/ProgramMeta"; diff --git a/packages/vsce/__tests__/__unit__/doc/meta.region.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.region.test.ts index 5247cc16..fc366479 100644 --- a/packages/vsce/__tests__/__unit__/doc/meta.region.test.ts +++ b/packages/vsce/__tests__/__unit__/doc/meta.region.test.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IRegion } from "@zowe/cics-for-zowe-sdk"; import { RegionMeta } from "../../../src/doc/RegionMeta"; diff --git a/packages/vsce/__tests__/__unit__/doc/meta.task.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.task.test.ts index 9dba3201..add66b19 100644 --- a/packages/vsce/__tests__/__unit__/doc/meta.task.test.ts +++ b/packages/vsce/__tests__/__unit__/doc/meta.task.test.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { ITask } from "@zowe/cics-for-zowe-sdk"; import { TaskMeta } from "../../../src/doc/TaskMeta"; diff --git a/packages/vsce/__tests__/__unit__/doc/meta.tcpip.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.tcpip.test.ts index 0be1981d..5dd27191 100644 --- a/packages/vsce/__tests__/__unit__/doc/meta.tcpip.test.ts +++ b/packages/vsce/__tests__/__unit__/doc/meta.tcpip.test.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { ITCPIP } from "@zowe/cics-for-zowe-sdk"; import { TCPIPMeta } from "../../../src/doc/TCPIPMeta"; diff --git a/packages/vsce/__tests__/__unit__/doc/meta.transaction.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.transaction.test.ts index bbf63072..8f8f26b9 100644 --- a/packages/vsce/__tests__/__unit__/doc/meta.transaction.test.ts +++ b/packages/vsce/__tests__/__unit__/doc/meta.transaction.test.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { ITransaction } from "@zowe/cics-for-zowe-sdk"; import { TransactionMeta } from "../../../src/doc/TransactionMeta"; diff --git a/packages/vsce/__tests__/__unit__/doc/meta.urimap.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.urimap.test.ts index cdcff87d..5ebdf99c 100644 --- a/packages/vsce/__tests__/__unit__/doc/meta.urimap.test.ts +++ b/packages/vsce/__tests__/__unit__/doc/meta.urimap.test.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IUriMap } from "@zowe/cics-for-zowe-sdk"; import { URIMapMeta } from "../../../src/doc/URIMapMeta"; diff --git a/packages/vsce/__tests__/__unit__/doc/meta.webservice.test.ts b/packages/vsce/__tests__/__unit__/doc/meta.webservice.test.ts index 866c4b46..6caaf099 100644 --- a/packages/vsce/__tests__/__unit__/doc/meta.webservice.test.ts +++ b/packages/vsce/__tests__/__unit__/doc/meta.webservice.test.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { IWebService } from "@zowe/cics-for-zowe-sdk"; import { WebServiceMeta } from "../../../src/doc/WebServiceMeta"; diff --git a/packages/vsce/__tests__/__unit__/utils/iconUtils.unit.test.ts b/packages/vsce/__tests__/__unit__/utils/iconUtils.unit.test.ts index 1cbd026f..38f20e7e 100644 --- a/packages/vsce/__tests__/__unit__/utils/iconUtils.unit.test.ts +++ b/packages/vsce/__tests__/__unit__/utils/iconUtils.unit.test.ts @@ -1,3 +1,14 @@ +/** + * This program and the accompanying materials are made available under the terms of the + * Eclipse Public License v2.0 which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-v20.html + * + * SPDX-License-Identifier: EPL-2.0 + * + * Copyright Contributors to the Zowe Project. + * + */ + import { getFolderIcon, getIconFilePathFromName } from "../../../src/utils/iconUtils"; const iconPath = { From 9afb2c8a3b02c6733f75b847786c790b1626063b Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Wed, 5 Feb 2025 12:05:55 +0000 Subject: [PATCH 15/17] clear region filters Signed-off-by: Andrew Twydell --- packages/vsce/src/commands/clearPlexFilterCommand.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/vsce/src/commands/clearPlexFilterCommand.ts b/packages/vsce/src/commands/clearPlexFilterCommand.ts index c2c8b309..a9ab95b6 100644 --- a/packages/vsce/src/commands/clearPlexFilterCommand.ts +++ b/packages/vsce/src/commands/clearPlexFilterCommand.ts @@ -39,7 +39,7 @@ const clearResourcesMethodMap: { [key: string]: (region: CICSRegionTree) => Prom }; const getResourceToClear = async (profile: imperative.IProfile) => { - let clearOptions = ["Programs", "Local Transactions", "Local Files", "Tasks", "Libraries", "All"]; + let clearOptions = ["Regions", "Programs", "Local Transactions", "Local Files", "Tasks", "Libraries", "All"]; if (profile.regionName && profile.cicsPlex) { clearOptions = ["Regions", ...clearOptions]; } @@ -81,8 +81,8 @@ export function getClearPlexFilterCommand(tree: CICSTree, treeview: TreeView Date: Wed, 5 Feb 2025 21:05:36 +0000 Subject: [PATCH 16/17] remove old tree tests Signed-off-by: Andrew Twydell --- .../trees/CICSLocalFileTree.unit.test.ts | 138 --------------- .../__unit__/trees/CICSPlexTree.unit.test.ts | 39 +---- .../trees/CICSProgramTree.unit.test.ts | 160 ------------------ .../trees/CICSRegionTree.unit.test.ts | 67 ++++---- .../__unit__/trees/CICSTaskTree.unit.test.ts | 147 ---------------- .../trees/CICSTransactionTree.unit.test.ts | 128 -------------- .../__unit__/trees/CICSWebTree.unit.test.ts | 56 ------ 7 files changed, 40 insertions(+), 695 deletions(-) delete mode 100644 packages/vsce/__tests__/__unit__/trees/CICSLocalFileTree.unit.test.ts delete mode 100644 packages/vsce/__tests__/__unit__/trees/CICSProgramTree.unit.test.ts delete mode 100644 packages/vsce/__tests__/__unit__/trees/CICSTaskTree.unit.test.ts delete mode 100644 packages/vsce/__tests__/__unit__/trees/CICSTransactionTree.unit.test.ts delete mode 100644 packages/vsce/__tests__/__unit__/trees/CICSWebTree.unit.test.ts diff --git a/packages/vsce/__tests__/__unit__/trees/CICSLocalFileTree.unit.test.ts b/packages/vsce/__tests__/__unit__/trees/CICSLocalFileTree.unit.test.ts deleted file mode 100644 index 3af4524a..00000000 --- a/packages/vsce/__tests__/__unit__/trees/CICSLocalFileTree.unit.test.ts +++ /dev/null @@ -1,138 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -const getFolderIconMock = jest.fn(); - -import { CICSRegionTree } from "../../../src/trees/CICSRegionTree"; -import { CICSLocalFileTreeItem } from "../../../src/trees/treeItems/CICSLocalFileTreeItem"; -import { CICSLocalFileTree } from "../../../src/trees/CICSLocalFileTree"; -import CustomError from "../../__utils__/CustomError"; -import * as vscode from "vscode"; -import * as globalMocks from "../../__utils__/globalMocks"; - -jest.mock("@zowe/cics-for-zowe-sdk"); -jest.mock("../../../src/trees/treeItems/CICSLocalFileTreeItem"); -jest.mock("../../../src/utils/iconUtils", () => { - return { getFolderIcon: getFolderIconMock }; -}); - -const getResourceMock = globalMocks.getResourceMock; -const toEscapedCriteriaString = globalMocks.toEscapedCriteriaString; -const CICSLocalFileTreeItemMock = {}; -const treeResourceMock = globalMocks.getDummyTreeResources("cicslocalfile", "fileName*"); -const record = [{ prop: "test1" }, { prop: "test2" }]; - -const workspaceMock = jest.spyOn(vscode.workspace, "getConfiguration"); -const get = jest.fn(); -const workspaceConfiguration = { - get: get, - update: jest.fn(), -}; - -describe("Test suite for CICSLocalFileTree", () => { - let sut: CICSLocalFileTree; - - beforeEach(() => { - getFolderIconMock.mockReturnValue(treeResourceMock.iconPath); - sut = new CICSLocalFileTree(globalMocks.cicsRegionTreeMock as any as CICSRegionTree); - expect(getFolderIconMock).toHaveBeenCalledWith(false); - }); - - afterEach(() => { - jest.resetAllMocks(); - }); - - describe("Test suite for addProgram()", () => { - it("Should add CICSLocalFileTreeItem into localFile", () => { - sut.addLocalFile(CICSLocalFileTreeItemMock as any as CICSLocalFileTreeItem); - expect(sut.children.length).toBeGreaterThanOrEqual(1); - }); - }); - - describe("Test suite for loadContents()", () => { - beforeEach(() => { - getResourceMock.mockResolvedValue(globalMocks.ICMCIApiResponseMock); - workspaceMock.mockReturnValue(workspaceConfiguration as any as vscode.WorkspaceConfiguration); - }); - afterEach(() => { - jest.resetAllMocks(); - }); - - it("Should add newProgramItem into the addProgram() and activeFilter is undefined", async () => { - globalMocks.ICMCIApiResponseMock.response.records[treeResourceMock.resourceName.toLowerCase()] = record; - get.mockReturnValue(treeResourceMock.defaultCriteria); - - await sut.loadContents(); - expect(workspaceMock).toHaveBeenCalled(); - expect(sut.activeFilter).toBeUndefined(); - expect(sut.children.length).toBeGreaterThanOrEqual(1); - expect(getFolderIconMock).toHaveBeenCalledWith(true); - }); - - it("Should add newProgramItem into the addProgram() and invoke toEscapedCriteriaString when activeFilter is defined", async () => { - sut.activeFilter = "Active"; - globalMocks.ICMCIApiResponseMock.response.records[treeResourceMock.resourceName.toLowerCase()] = record; - toEscapedCriteriaString.mockReturnValueOnce("PROGRAM"); - get.mockReturnValue([]); - - await sut.loadContents(); - expect(toEscapedCriteriaString).toHaveBeenCalled(); - expect(sut.activeFilter).toBeDefined(); - expect(sut.children.length).toBeGreaterThanOrEqual(1); - expect(getFolderIconMock).toHaveBeenCalledWith(true); - expect(workspaceMock).toHaveBeenCalledTimes(2); - }); - - it("Should throw exception when error.mMessage includes {exceeded a resource limit}", async () => { - getResourceMock.mockRejectedValue(new CustomError("Error in the method exceeded a resource limit")); - await sut.loadContents(); - expect(getResourceMock).toHaveBeenCalled(); - }); - - it("Should throw exception when error.mMessage include {exceeded a resource limit}", async () => { - getResourceMock.mockRejectedValue(new CustomError("Error in the method")); - - await sut.loadContents(); - expect(getResourceMock).toHaveBeenCalled(); - expect(sut.label).toEqual("Local Files [0]"); - }); - }); - - describe("Test suite for clearFilter", () => { - it("Should clear active filter to undefined and set contextValue to unfiltered", () => { - sut.activeFilter = "Active"; - - sut.clearFilter(); - expect(sut.activeFilter).toBeUndefined(); - expect(sut.contextValue).toEqual("cicstreelocalfile.unfiltered.localFiles"); - }); - }); - - describe("Test suite for setFilter", () => { - it("Should set active filter and set contextValue to filtered", () => { - sut.setFilter("ActiveFilter"); - expect(sut.activeFilter).toEqual("ActiveFilter"); - expect(sut.contextValue).toEqual("cicstreelocalfile.filtered.localFiles"); - }); - }); - - describe("Test suite for getFilter", () => { - it("Should return activeFilter object", () => { - expect(sut.getFilter()).toBe(sut.activeFilter); - }); - }); - - describe("Test suite for getParent", () => { - it("Should return parentRegion object", () => { - expect(sut.getParent()).toBe(sut.parentRegion); - }); - }); -}); diff --git a/packages/vsce/__tests__/__unit__/trees/CICSPlexTree.unit.test.ts b/packages/vsce/__tests__/__unit__/trees/CICSPlexTree.unit.test.ts index 3b008c5c..2803ca4a 100644 --- a/packages/vsce/__tests__/__unit__/trees/CICSPlexTree.unit.test.ts +++ b/packages/vsce/__tests__/__unit__/trees/CICSPlexTree.unit.test.ts @@ -18,48 +18,13 @@ import { CICSRegionTree } from "../../../src/trees/CICSRegionTree"; import { CICSPlexTree } from "../../../src/trees/CICSPlexTree"; import * as globalMocks from "../../__utils__/globalMocks"; -jest.mock("../../../src/trees/CICSCombinedTrees/CICSCombinedProgramTree", () => ({ - get CICSCombinedProgramTree() { - return cicsCombinedTreeMock; - }, -})); -jest.mock("../../../src/trees/CICSCombinedTrees/CICSCombinedTransactionTree", () => ({ - get CICSCombinedTransactionsTree() { - return cicsCombinedTreeMock; - }, -})); -jest.mock("../../../src/trees/CICSCombinedTrees/CICSCombinedLocalFileTree", () => ({ - get CICSCombinedLocalFileTree() { - return cicsCombinedTreeMock; - }, -})); -jest.mock("../../../src/trees/CICSCombinedTrees/CICSCombinedTaskTree", () => ({ - get CICSCombinedTaskTree() { - return cicsCombinedTreeMock; - }, -})); jest.mock("../../../src/trees/CICSCombinedTrees/CICSCombinedLibraryTree", () => ({ get CICSCombinedLibraryTree() { return cicsCombinedTreeMock; }, })); -jest.mock("../../../src/trees/CICSCombinedTrees/CICSCombinedTCPIPServiceTree", () => ({ - get CICSCombinedTCPIPServiceTree() { - return cicsCombinedTreeMock; - }, -})); -jest.mock("../../../src/trees/CICSCombinedTrees/CICSCombinedURIMapTree", () => ({ - get CICSCombinedURIMapTree() { - return cicsCombinedTreeMock; - }, -})); -jest.mock("../../../src/trees/CICSCombinedTrees/CICSCombinedPipelineTree", () => ({ - get CICSCombinedPipelineTree() { - return cicsCombinedTreeMock; - }, -})); -jest.mock("../../../src/trees/CICSCombinedTrees/CICSCombinedWebServiceTree", () => ({ - get CICSCombinedWebServiceTree() { +jest.mock("../../../src/trees/CICSCombinedTrees/CICSCombinedResourceTree", () => ({ + get CICSCombinedResourceTree() { return cicsCombinedTreeMock; }, })); diff --git a/packages/vsce/__tests__/__unit__/trees/CICSProgramTree.unit.test.ts b/packages/vsce/__tests__/__unit__/trees/CICSProgramTree.unit.test.ts deleted file mode 100644 index 5cedb77f..00000000 --- a/packages/vsce/__tests__/__unit__/trees/CICSProgramTree.unit.test.ts +++ /dev/null @@ -1,160 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -const getFolderIconMock = jest.fn(); - -import { ICMCIApiResponse, IProgram } from "@zowe/cics-for-zowe-sdk"; -import { imperative } from "@zowe/zowe-explorer-api"; -import { ProgramMeta } from "../../../src/doc"; -import { CICSRegionTree } from "../../../src/trees/CICSRegionTree"; -import { CICSResourceTree } from "../../../src/trees/CICSResourceTree"; -import { CICSResourceTreeItem } from "../../../src/trees/treeItems/CICSResourceTreeItem"; -import * as filterUtils from "../../../src/utils/filterUtils"; -import CustomError from "../../__utils__/CustomError"; - -jest.mock("@zowe/cics-for-zowe-sdk"); -const zoweSdk = require("@zowe/cics-for-zowe-sdk"); - -jest.mock("../../../src/utils/iconUtils", () => { - return { getFolderIcon: getFolderIconMock }; -}); -jest.mock("../../../src/trees/treeItems/CICSResourceTreeItem"); - -const imperativeSession = new imperative.Session({ - user: "user", - password: "pwd", - hostname: "hostname", - protocol: "https", - type: "basic", - rejectUnauthorized: false, -}); -const CICSSessionTreeMock = { - session: imperativeSession, -}; - -const cicsRegionTreeMock = { - parentSession: CICSSessionTreeMock, - getRegionName: () => "IYK2ZXXX", - parentPlex: { - getPlexName: () => "PLEXX", - }, -}; -const CICSProgramTreeItemMock = {}; -const getResourceMock = jest.spyOn(zoweSdk, "getResource"); -const iconPath = "/icon/path"; -const cicsprogram = "cicsprogram"; -const value = "NOT (PROGRAM=CEE* OR PROGRAM=DFH* OR PROGRAM=CJ* OR PROGRAM=EYU* OR PROGRAM=CSQ* OR PROGRAM=CEL* OR PROGRAM=IGZ*)"; -const ICMCIApiResponseMock: ICMCIApiResponse = { - response: { - resultsummary: { api_response1: "1024", api_response2: "0", recordcount: "0", displayed_recordcount: "0" }, - records: {}, - }, -}; - -describe("Test suite for CICSProgramTree", () => { - let sut: CICSResourceTree; - - beforeEach(() => { - getFolderIconMock.mockReturnValue(iconPath); - sut = new CICSResourceTree(ProgramMeta, cicsRegionTreeMock as any as CICSRegionTree); - expect(getFolderIconMock).toHaveBeenCalledWith(false); - }); - - afterEach(() => { - jest.resetAllMocks(); - }); - - describe("Test suite for addProgram()", () => { - it("Should add CICSProgramTreeItem into program", () => { - sut.addResource(CICSProgramTreeItemMock as any as CICSResourceTreeItem); - expect(sut.children.length).toBeGreaterThanOrEqual(1); - }); - }); - - describe("Test suite for loadContents()", () => { - let getDefaultProgramFilter: jest.SpyInstance; - - beforeEach(() => { - getDefaultProgramFilter = jest.spyOn(filterUtils, "getDefaultFilter").mockResolvedValueOnce(value); - getResourceMock.mockImplementation(async () => ICMCIApiResponseMock); - }); - afterEach(() => { - getResourceMock.mockClear(); - jest.resetAllMocks(); - }); - - it("Should add newProgramItem into the addProgram() and activeFilter is undefined", async () => { - ICMCIApiResponseMock.response.records[cicsprogram.toLowerCase()] = [{ prop: "test1" }, { prop: "test2" }]; - - await sut.loadContents(); - expect(getDefaultProgramFilter).toHaveBeenCalled(); - expect(sut.activeFilter).toBeUndefined(); - expect(sut.children.length).toBeGreaterThanOrEqual(1); - expect(getFolderIconMock).toHaveBeenCalledWith(true); - }); - - it("Should add newProgramItem into the addProgram() and invoke toEscapedCriteriaString when activeFilter is defined", async () => { - sut.activeFilter = "Active"; - ICMCIApiResponseMock.response.records[cicsprogram.toLowerCase()] = [{ prop: "test1" }, { prop: "test2" }]; - const toEscapedCriteriaString = jest.spyOn(filterUtils, "toEscapedCriteriaString").mockReturnValueOnce("PROGRAM"); - - await sut.loadContents(); - expect(toEscapedCriteriaString).toHaveBeenCalled(); - expect(sut.activeFilter).toBeDefined(); - expect(sut.children.length).toBeGreaterThanOrEqual(1); - expect(getFolderIconMock).toHaveBeenCalledWith(true); - }); - - it("Should throw exception when error.mMessage includes {exceeded a resource limit}", async () => { - getResourceMock.mockRejectedValue(new CustomError("Error in the method exceeded a resource limit")); - await sut.loadContents(); - expect(getResourceMock).toHaveBeenCalled(); - }); - - it("Should throw exception when error.mMessage include {exceeded a resource limit}", async () => { - getResourceMock.mockRejectedValue(new CustomError("Error in the method")); - - await sut.loadContents(); - expect(getResourceMock).toHaveBeenCalled(); - expect(sut.label).toEqual("Programs [0]"); - }); - }); - - describe("Test suite for clearFilter", () => { - it("Should clear active filter to undefined and set contextValue to unfiltered", () => { - sut.activeFilter = "Active"; - - sut.clearFilter(); - expect(sut.activeFilter).toBeUndefined(); - expect(sut.contextValue).toEqual("cicstreeprogram.unfiltered.CICSProgram"); - }); - }); - - describe("Test suite for setFilter", () => { - it("Should set active filter and set contextValue to filtered", () => { - sut.setFilter("ActiveFilter"); - expect(sut.activeFilter).toEqual("ActiveFilter"); - expect(sut.contextValue).toEqual("cicstreeprogram.filtered.CICSProgram"); - }); - }); - - describe("Test suite for getFilter", () => { - it("Should return activeFilter object", () => { - expect(sut.getFilter()).toBe(sut.activeFilter); - }); - }); - - describe("Test suite for getParent", () => { - it("Should return parentRegion object", () => { - expect(sut.getParent()).toBe(sut.parentRegion); - }); - }); -}); diff --git a/packages/vsce/__tests__/__unit__/trees/CICSRegionTree.unit.test.ts b/packages/vsce/__tests__/__unit__/trees/CICSRegionTree.unit.test.ts index 2abe97e4..ed9fee69 100644 --- a/packages/vsce/__tests__/__unit__/trees/CICSRegionTree.unit.test.ts +++ b/packages/vsce/__tests__/__unit__/trees/CICSRegionTree.unit.test.ts @@ -9,52 +9,53 @@ * */ -const getIconByStatusMock = jest.fn(); - +import { IRegion } from "@zowe/cics-for-zowe-sdk"; import { CICSPlexTree } from "../../../src/trees/CICSPlexTree"; import { CICSRegionTree } from "../../../src/trees/CICSRegionTree"; import { CICSSessionTree } from "../../../src/trees/CICSSessionTree"; import * as globalMocks from "../../__utils__/globalMocks"; -jest.mock("../../../src/trees/CICSProgramTree"); -jest.mock("../../../src/trees/CICSTransactionTree"); -jest.mock("../../../src/trees/CICSLocalFileTree"); -jest.mock("../../../src/trees/CICSTaskTree"); -jest.mock("../../../src/trees/CICSLibraryTree"); -jest.mock("../../../src/trees/CICSWebTree"); - -jest.mock("../../../src/utils/iconUtils", () => { - return { getIconByStatus: getIconByStatusMock }; -}); +jest.mock("../../../src/trees/CICSResourceTree"); -const region = { +const region: IRegion = { cicsname: "cics", cicsstate: "ACTIVE", applid: "APPLID", + cicsstatus: "ACTIVE", + eyu_cicsname: "APPLID" }; -const region_disable = { +const region_disable: IRegion = { cicsname: "cics", - cicsstate: "DISABLE", + cicsstate: "INACTIVE", + applid: "applid", + cicsstatus: "INACTIVE", + eyu_cicsname: "applid" }; -const region_undefined = { +const region_undefined: IRegion = { cicsname: "cics", + cicsstate: "INACTIVE", + applid: "applid", + cicsstatus: "INACTIVE", + eyu_cicsname: "applid" }; -const treeResourceMock = globalMocks.getDummyTreeResources("cicsregion", ""); describe("Test suite for CICSRegionTree", () => { let sut: CICSRegionTree; beforeEach(() => { - getIconByStatusMock.mockReturnValue(treeResourceMock.iconPath); sut = new CICSRegionTree( - "regionName", region, globalMocks.CICSSessionTreeMock as any as CICSSessionTree, globalMocks.CICSPlexTree as any as CICSPlexTree, - "Parent", + globalMocks.CICSPlexTree as any as CICSPlexTree, ); - expect(getIconByStatusMock).toHaveBeenCalledWith("REGION", sut); + expect(sut.iconPath).toHaveProperty("light"); + expect(sut.iconPath).toHaveProperty("dark"); + // @ts-ignore + expect(sut.iconPath?.light).toContain("region-dark.svg"); + // @ts-ignore + expect(sut.iconPath?.dark).toContain("region-light.svg"); expect(sut.isActive).toBeTruthy(); }); @@ -62,29 +63,37 @@ describe("Test suite for CICSRegionTree", () => { jest.resetAllMocks(); }); - it("Should load region Tree when cicsstate is DISABLED", () => { + it("Should load region Tree when cicsstate is INACTIVE", () => { sut = new CICSRegionTree( - "regionName", region_disable, globalMocks.CICSSessionTreeMock as any as CICSSessionTree, globalMocks.CICSPlexTree as any as CICSPlexTree, - region, + globalMocks.CICSPlexTree as any as CICSPlexTree, ); - expect(getIconByStatusMock).toHaveBeenCalledWith("REGION", sut); + expect(sut.iconPath).toHaveProperty("light"); + expect(sut.iconPath).toHaveProperty("dark"); + // @ts-ignore + expect(sut.iconPath?.light).toContain("region-disabled-dark.svg"); + // @ts-ignore + expect(sut.iconPath?.dark).toContain("region-disabled-light.svg"); expect(sut.isActive).toBeFalsy(); }); it("Should load region Tree when cicsstate is ACTIVE", () => { sut = new CICSRegionTree( - "regionName", region_undefined, globalMocks.CICSSessionTreeMock as any as CICSSessionTree, globalMocks.CICSPlexTree as any as CICSPlexTree, - region, + globalMocks.CICSPlexTree as any as CICSPlexTree, ); - expect(getIconByStatusMock).toHaveBeenCalledWith("REGION", sut); + expect(sut.iconPath).toHaveProperty("light"); + expect(sut.iconPath).toHaveProperty("dark"); + // @ts-ignore + expect(sut.iconPath?.light).toContain("region-disabled-dark.svg"); + // @ts-ignore + expect(sut.iconPath?.dark).toContain("region-disabled-light.svg"); expect(sut.isActive).toBeFalsy(); }); @@ -98,7 +107,7 @@ describe("Test suite for CICSRegionTree", () => { }); it("Should return parent", () => { - expect(sut.getParent()).toBe("Parent"); + expect(sut.getParent()).toBe(globalMocks.CICSPlexTree); }); it("Should return isActive", () => { diff --git a/packages/vsce/__tests__/__unit__/trees/CICSTaskTree.unit.test.ts b/packages/vsce/__tests__/__unit__/trees/CICSTaskTree.unit.test.ts deleted file mode 100644 index 351a536c..00000000 --- a/packages/vsce/__tests__/__unit__/trees/CICSTaskTree.unit.test.ts +++ /dev/null @@ -1,147 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -const getFolderIconMock = jest.fn(); - -import { CICSRegionTree } from "../../../src/trees/CICSRegionTree"; -import { CICSTaskTree } from "../../../src/trees/CICSTaskTree"; -import * as globalMocks from "../../__utils__/globalMocks"; -import { CICSTaskTreeItem } from "../../../src/trees/treeItems/CICSTaskTreeItem"; -import * as vscode from "vscode"; -import CustomError from "../../__utils__/CustomError"; - -jest.mock("@zowe/cics-for-zowe-sdk"); -jest.mock("../../../src/utils/iconUtils", () => { - return { getFolderIcon: getFolderIconMock }; -}); -jest.mock("../../../src/trees/treeItems/CICSTaskTreeItem", () => ({ - get CICSTaskTreeItem() { - return jest.fn().mockImplementation(() => { - return { - setLabel: () => { - this.label = "label"; - }, - label: "Label", - }; - }); - }, -})); - -const getResourceMock = globalMocks.getResourceMock; -const treeResourceMock = globalMocks.getDummyTreeResources("cicstask", "fileName*"); -const cicsTaskTreeItemMock = {}; -const workspaceMock = jest.spyOn(vscode.workspace, "getConfiguration"); -const get = jest.fn(); -const workspaceConfiguration = { - get: get, - update: jest.fn(), - isFile: jest.fn().mockReturnValue(true), -}; -const record = [{ prop: "test1" }, { prop: "test2" }]; -const toEscapedCriteriaString = globalMocks.toEscapedCriteriaString; - -describe("Test suite for CICSTaskTree", () => { - let sut: CICSTaskTree; - - beforeEach(() => { - getFolderIconMock.mockReturnValue(treeResourceMock.iconPath); - - sut = new CICSTaskTree(globalMocks.cicsRegionTreeMock as any as CICSRegionTree); - expect(getFolderIconMock).toHaveBeenCalledWith(false); - }); - - afterEach(() => { - jest.resetAllMocks(); - }); - - describe("Test suite for addLibrary()", () => { - it("Should add CICSProgramTreeItem into library", () => { - sut.addTask(cicsTaskTreeItemMock as any as CICSTaskTreeItem); - expect(sut.children.length).toBeGreaterThanOrEqual(1); - }); - }); - - describe("Test suite for loadContents()", () => { - beforeEach(() => { - getResourceMock.mockResolvedValue(globalMocks.ICMCIApiResponseMock); - workspaceMock.mockReturnValue(workspaceConfiguration as any as vscode.WorkspaceConfiguration); - get.mockReturnValue(treeResourceMock.defaultCriteria); - }); - afterEach(() => { - getResourceMock.mockClear(); - jest.resetAllMocks(); - }); - - it("Should add newCICSTaskTreeItem into the addTask() and activeTransactionFilter is undefined", async () => { - globalMocks.ICMCIApiResponseMock.response.records[treeResourceMock.resourceName.toLowerCase()] = record; - - await sut.loadContents(); - expect(sut.children.length).toBeGreaterThanOrEqual(1); - expect(getFolderIconMock).toHaveBeenCalledWith(true); - expect(sut.activeTransactionFilter).toBeUndefined(); - expect(workspaceMock).toHaveBeenCalledTimes(1); - expect(sut.label).toBe("Tasks [2]"); - }); - - it("Should add newProgramItem into the addProgram() and invoke toEscapedCriteriaString when activeTransactionFilter is defined", async () => { - sut.activeTransactionFilter = "Active"; - globalMocks.ICMCIApiResponseMock.response.records[treeResourceMock.resourceName.toLowerCase()] = record; - toEscapedCriteriaString.mockReturnValueOnce("PROGRAM"); - get.mockReturnValue([]); - - await sut.loadContents(); - expect(toEscapedCriteriaString).toHaveBeenCalled(); - expect(sut.activeTransactionFilter).toBeDefined(); - expect(sut.children.length).toBeGreaterThanOrEqual(1); - expect(getFolderIconMock).toHaveBeenCalledWith(true); - expect(workspaceMock).toHaveBeenCalledTimes(2); - expect(sut.label).toBe("Tasks (Active) [2]"); - }); - - it("Should throw exception when error.mMessage includes {exceeded a resource limit}", async () => { - getResourceMock.mockRejectedValue(new CustomError("Error in the method exceeded a resource limit")); - await sut.loadContents(); - expect(getResourceMock).toHaveBeenCalled(); - }); - - it("Should throw exception when error.mMessage include {exceeded a resource limit}", async () => { - getResourceMock.mockRejectedValue(new CustomError("Error in the method")); - - await sut.loadContents(); - expect(getResourceMock).toHaveBeenCalled(); - expect(sut.label).toEqual("Tasks [0]"); - }); - }); - - describe("Test suite for clearFilter", () => { - it("Should clear active filter to undefined and set contextValue to unfiltered", () => { - sut.activeTransactionFilter = "Active"; - - sut.clearFilter(); - expect(sut.activeTransactionFilter).toBeUndefined(); - expect(sut.contextValue).toEqual("cicstreetask.unfiltered.tasks"); - }); - }); - - describe("Test suite for setFilter", () => { - it("Should set active filter and set contextValue to filtered", () => { - sut.setFilter("ActiveFilter"); - expect(sut.activeTransactionFilter).toEqual("ActiveFilter"); - expect(sut.contextValue).toEqual("cicstreetask.filtered.tasks"); - }); - }); - - describe("Test suite for getFilter", () => { - it("Should return activeFilter object", () => { - expect(sut.getFilter()).toBe(sut.activeTransactionFilter); - }); - }); -}); diff --git a/packages/vsce/__tests__/__unit__/trees/CICSTransactionTree.unit.test.ts b/packages/vsce/__tests__/__unit__/trees/CICSTransactionTree.unit.test.ts deleted file mode 100644 index 895a8a08..00000000 --- a/packages/vsce/__tests__/__unit__/trees/CICSTransactionTree.unit.test.ts +++ /dev/null @@ -1,128 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -const getFolderIconMock = jest.fn(); - -import { CICSRegionTree } from "../../../src/trees/CICSRegionTree"; -import * as globalMocks from "../../__utils__/globalMocks"; -import CustomError from "../../__utils__/CustomError"; -import { CICSTransactionTree } from "../../../src/trees/CICSTransactionTree"; -import { CICSTransactionTreeItem } from "../../../src/trees/treeItems/CICSTransactionTreeItem"; -import * as filterUtils from "../../../src/utils/filterUtils"; - -jest.mock("@zowe/cics-for-zowe-sdk"); -jest.mock("../../../src/utils/iconUtils", () => { - return { getFolderIcon: getFolderIconMock }; -}); -jest.mock("../../../src/trees/treeItems/CICSTransactionTreeItem"); - -const getResourceMock = globalMocks.getResourceMock; -const treeResourceMock = globalMocks.getDummyTreeResources("cicslocaltransaction", "fileName*"); -const cicsTransactionTreeItemMock = {}; -const record = [{ prop: "test1" }, { prop: "test2" }]; -const toEscapedCriteriaString = globalMocks.toEscapedCriteriaString; -const getDefaultTransactionFilter = jest.spyOn(filterUtils, "getDefaultTransactionFilter"); - -describe("Test suite for CICSTaskTree", () => { - let sut: CICSTransactionTree; - - beforeEach(() => { - getFolderIconMock.mockReturnValue(treeResourceMock.iconPath); - - sut = new CICSTransactionTree(globalMocks.cicsRegionTreeMock as any as CICSRegionTree); - expect(getFolderIconMock).toHaveBeenCalledWith(false); - }); - - afterEach(() => { - jest.resetAllMocks(); - }); - - describe("Test suite for addTransaction()", () => { - it("Should add CICSTransactionTreeItem into transaction", () => { - sut.addTransaction(cicsTransactionTreeItemMock as any as CICSTransactionTreeItem); - expect(sut.children.length).toBeGreaterThanOrEqual(1); - }); - }); - - describe("Test suite for loadContents()", () => { - beforeEach(() => { - getResourceMock.mockResolvedValue(globalMocks.ICMCIApiResponseMock); - getDefaultTransactionFilter.mockResolvedValueOnce("PROGRAM"); - }); - afterEach(() => { - getResourceMock.mockClear(); - jest.resetAllMocks(); - }); - - it("Should add newTransactionItem into the addTransaction() and activeFilter is undefined", async () => { - globalMocks.ICMCIApiResponseMock.response.records[treeResourceMock.resourceName.toLowerCase()] = record; - - await sut.loadContents(); - - expect(sut.children.length).toBeGreaterThanOrEqual(1); - expect(getFolderIconMock).toHaveBeenCalledWith(true); - expect(sut.activeFilter).toBeUndefined(); - expect(sut.label).toBe("Transactions [2]"); - }); - - it("Should add newTransactionItem into the addTransaction() and invoke toEscapedCriteriaString when activeFilter is defined", async () => { - globalMocks.ICMCIApiResponseMock.response.records[treeResourceMock.resourceName.toLowerCase()] = record; - sut.activeFilter = "Active"; - toEscapedCriteriaString.mockReturnValueOnce("PROGRAM"); - - await sut.loadContents(); - expect(toEscapedCriteriaString).toHaveBeenCalled(); - expect(sut.activeFilter).toBeDefined(); - expect(sut.children.length).toBeGreaterThanOrEqual(1); - expect(getFolderIconMock).toHaveBeenCalledWith(true); - expect(sut.label).toBe("Transactions (Active) [2]"); - }); - - it("Should throw exception when error.mMessage includes {exceeded a resource limit}", async () => { - getResourceMock.mockRejectedValue(new CustomError("Error in the method exceeded a resource limit")); - await sut.loadContents(); - expect(getResourceMock).toHaveBeenCalled(); - }); - - it("Should throw exception when error.mMessage include {exceeded a resource limit}", async () => { - getResourceMock.mockRejectedValue(new CustomError("Error in the method")); - - await sut.loadContents(); - expect(getResourceMock).toHaveBeenCalled(); - expect(sut.label).toEqual("Transactions [0]"); - }); - }); - - describe("Test suite for clearFilter", () => { - it("Should clear active filter to undefined and set contextValue to unfiltered", () => { - sut.activeFilter = "Active"; - - sut.clearFilter(); - expect(sut.activeFilter).toBeUndefined(); - expect(sut.contextValue).toEqual("cicstreetransaction.unfiltered.transactions"); - }); - }); - - describe("Test suite for setFilter", () => { - it("Should set active filter and set contextValue to filtered", () => { - sut.setFilter("ActiveFilter"); - - expect(sut.activeFilter).toEqual("ActiveFilter"); - expect(sut.contextValue).toEqual("cicstreetransaction.filtered.transactions"); - }); - }); - - describe("Test suite for getFilter", () => { - it("Should return activeFilter object", () => { - expect(sut.getFilter()).toBe(sut.activeFilter); - }); - }); -}); diff --git a/packages/vsce/__tests__/__unit__/trees/CICSWebTree.unit.test.ts b/packages/vsce/__tests__/__unit__/trees/CICSWebTree.unit.test.ts deleted file mode 100644 index 1d22b0be..00000000 --- a/packages/vsce/__tests__/__unit__/trees/CICSWebTree.unit.test.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * This program and the accompanying materials are made available under the terms of the - * Eclipse Public License v2.0 which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-v20.html - * - * SPDX-License-Identifier: EPL-2.0 - * - * Copyright Contributors to the Zowe Project. - * - */ - -const getFolderIconMock = jest.fn(); - -import { CICSRegionTree } from "../../../src/trees/CICSRegionTree"; -import { CICSWebTree } from "../../../src/trees/CICSWebTree"; -import * as globalMocks from "../../__utils__/globalMocks"; - -jest.mock("../../../src/trees/treeItems/web/CICSTCPIPServiceTree"); -jest.mock("../../../src/trees/treeItems/web/CICSURIMapTree"); -jest.mock("../../../src/trees/treeItems/web/CICSPipelineTree"); -jest.mock("../../../src/trees/treeItems/web/CICSWebServiceTree"); - -jest.mock("../../../src/utils/iconUtils", () => { - return { getFolderIcon: getFolderIconMock }; -}); - -const treeResourceMock = globalMocks.getDummyTreeResources("cicsregion", ""); - -describe("Test suite for CICSRegionTree", () => { - let sut: CICSWebTree; - - beforeEach(() => { - getFolderIconMock.mockReturnValue(treeResourceMock.iconPath); - sut = new CICSWebTree(globalMocks.cicsRegionTreeMock as any as CICSRegionTree); - expect(getFolderIconMock).toHaveBeenCalledWith(false); - }); - - afterEach(() => { - jest.resetAllMocks(); - }); - - it("Should load content", () => { - sut.loadContents(); - - expect(getFolderIconMock).toHaveBeenCalledWith(true); - }); - - it("Should return return all cics tree in children array", () => { - const result = sut.getChildren(); - expect(result?.length).toBeGreaterThanOrEqual(4); - }); - - it("Should return parent", () => { - expect(sut.getParent()).toBe(globalMocks.cicsRegionTreeMock); - }); -}); From 6ded85d96a5ffd0ed3595ce75ca3f2d1dccf6758 Mon Sep 17 00:00:00 2001 From: Andrew Twydell Date: Wed, 5 Feb 2025 22:27:35 +0000 Subject: [PATCH 17/17] remove commands from command pallette Signed-off-by: Andrew Twydell --- packages/vsce/package.json | 215 ++++++++++++++++++++++++++++++++++++- 1 file changed, 211 insertions(+), 4 deletions(-) diff --git a/packages/vsce/package.json b/packages/vsce/package.json index 3b2c6f78..9b4553bb 100644 --- a/packages/vsce/package.json +++ b/packages/vsce/package.json @@ -15,10 +15,7 @@ "categories": [ "Other" ], - "activationEvents": [ - "onCommand:cics-extension-for-zowe.addSession", - "onView:cics-view" - ], + "activationEvents": [], "extensionDependencies": [ "Zowe.vscode-extension-for-zowe" ], @@ -738,6 +735,216 @@ "command": "cics-extension-for-zowe.purgeTask", "group": "000_zowecics_main@1" } + ], + "commandPalette": [ + { + "command": "cics-extension-for-zowe.addSession", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.refreshTree", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.newCopyProgram", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterPrograms", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterDatasetPrograms", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterLibraries", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterDatasets", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterTCPIPServices", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterURIMaps", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterPipelines", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterWebServices", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterTransactions", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterTasks", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterLocalFiles", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterPlexResources", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterAllPrograms", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterAllLibraries", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterAllPipelines", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterAllWebServices", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterAllTCPIPServices", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterAllURIMaps", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterAllTransactions", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterAllLocalFiles", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.filterAllTasks", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.clearFilter", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.clearPlexFilter", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.showProgramAttributes", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.showLibraryAttributes", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.showLibraryDatasetsAttributes", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.showTCPIPServiceAttributes", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.showURIMapAttributes", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.showTransactionAttributes", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.showLocalFileAttributes", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.showTaskAttributes", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.showPipelineAttributes", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.showWebServiceAttributes", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.showRegionAttributes", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.showRegionParameters", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.enableProgram", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.disableProgram", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.enableTransaction", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.disableTransaction", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.enableLocalFile", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.disableLocalFile", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.disableLibrary", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.closeLocalFile", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.openLocalFile", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.phaseInCommand", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.manageSession", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.inquireTransaction", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.inquireProgram", + "when": "never" + }, + { + "command": "cics-extension-for-zowe.purgeTask", + "when": "never" + } ] }, "configuration": {