ibm-igc-lineage
Version:
Re-usable functions for handling lineage flow documents (XML) and operational metadata (OMD XML)
119 lines (107 loc) • 4.48 kB
JavaScript
/***
* Copyright 2016 IBM Corp. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
;
/**
* AssetTypeFactory class -- for encapsulating information about asset types
*/
class AssetTypeFactory {
constructor() { }
static getAssetsToExtract() {
return [
"Applications",
"Files",
"Databases",
"Data Files"
];
}
static getDataAssetTypes() {
return [
"Files",
"Databases",
"Data Files"
];
}
static getAssetTypeFromAssetName(assetName) {
const assetNameToAssetType = {
"Applications": "application",
"Files": "file",
"Databases": "database",
"Data Files": "data_file"
};
if (!assetNameToAssetType.hasOwnProperty(assetName)) {
throw new Error("Unable to find an asset named '" + assetName + "'.");
}
return assetNameToAssetType[assetName];
}
static getAssetParentTypeFromType(assetType) {
const assetTypeToParentType = {
"database": "host",
"data_file": "host"
};
return (assetTypeToParentType.hasOwnProperty(assetType)) ? assetTypeToParentType[assetType] : null;
}
static getAssetProperties(assetType) {
const assetTypeToProperties = {
"application": {
_id: { displayName: "RID", isRequired: true },
_name: { displayName: "Name", isRequired: true },
short_description: { displayName: "Short Description", isRequired: false },
long_description: { displayName: "Long Description", isRequired: false }
},
"file": {
_id: { displayName: "RID", isRequired: true },
_type: { displayName: "Type", isRequired: true },
_name: { displayName: "Name", isRequired: true },
short_description: { displayName: "Short Description", isRequired: false },
long_description: { displayName: "Long Description", isRequired: false }
},
"database": {
_id: { displayName: "RID", isRequired: true },
_type: { displayName: "Type", isRequired: true },
_name: { displayName: "Name", isRequired: true },
"host.name": { displayName: "Host", isRequired: true },
short_description: { displayName: "Short Description", isRequired: false },
long_description: { displayName: "Long Description", isRequired: false }
},
"data_file": {
_id: { displayName: "RID", isRequired: true },
_type: { displayName: "Type", isRequired: true },
_name: { displayName: "Name", isRequired: true },
"host.name": { displayName: "Host", isRequired: true },
path: { displayName: "Path", isRequired: true },
short_description: { displayName: "Short Description", isRequired: false },
long_description: { displayName: "Long Description", isRequired: false }
}
};
if (!assetTypeToProperties.hasOwnProperty(assetType)) {
throw new Error("Unable to find a asset type named '" + assetType + "'.");
}
return assetTypeToProperties[assetType];
}
static getDataContainerHeaders() {
return {
__spreadsheetId: { displayName: "Qualified ID", isRequired: true },
_id: { displayName: "RID", isRequired: true },
_type: { displayName: "Type", isRequired: true },
_name: { displayName: "Name", isRequired: true },
"host.name": { displayName: "Host", isRequired: false },
path: { displayName: "Path", isRequired: false },
short_description: { displayName: "Short Description", isRequired: false },
long_description: { displayName: "Long Description", isRequired: false }
};
}
}
module.exports = AssetTypeFactory;