@contrail/flexplm 1.3.0-alpha.0 → 1.3.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +2 -1
- package/.github/pull_request_template.md +31 -31
- package/.github/workflows/flexplm-lib.yml +27 -27
- package/CHANGELOG.md +1 -1
- package/lib/entity-processor/base-entity-processor.d.ts +42 -0
- package/lib/entity-processor/base-entity-processor.js +377 -0
- package/lib/entity-processor/base-entity-processor.spec.d.ts +1 -0
- package/lib/entity-processor/base-entity-processor.spec.js +426 -0
- package/lib/flexplm-request.d.ts +3 -0
- package/lib/flexplm-request.js +34 -0
- package/lib/flexplm-utils.d.ts +5 -0
- package/lib/flexplm-utils.js +33 -0
- package/lib/flexplm-utils.spec.d.ts +1 -0
- package/lib/flexplm-utils.spec.js +26 -0
- package/lib/index.d.ts +22 -0
- package/lib/index.js +38 -0
- package/lib/interfaces/interfaces.d.ts +105 -0
- package/lib/interfaces/interfaces.js +2 -0
- package/lib/interfaces/item-family-changes.d.ts +20 -0
- package/lib/interfaces/item-family-changes.js +56 -0
- package/lib/interfaces/publish-change-data.d.ts +19 -0
- package/lib/interfaces/publish-change-data.js +32 -0
- package/lib/publish/base-process-publish-assortment-callback.d.ts +9 -0
- package/lib/publish/base-process-publish-assortment-callback.js +38 -0
- package/lib/publish/base-process-publish-assortment.d.ts +93 -0
- package/lib/publish/base-process-publish-assortment.js +944 -0
- package/lib/publish/base-process-publish-assortment.spec.d.ts +1 -0
- package/lib/publish/base-process-publish-assortment.spec.js +1670 -0
- package/lib/publish/mockData.d.ts +1389 -0
- package/lib/publish/mockData.js +4519 -0
- package/lib/transform/identifier-conversion-spec-mockData.d.ts +0 -0
- package/lib/transform/identifier-conversion-spec-mockData.js +444 -0
- package/lib/transform/identifier-conversion.d.ts +15 -0
- package/lib/transform/identifier-conversion.js +212 -0
- package/lib/transform/identifier-conversion.spec.d.ts +1 -0
- package/lib/transform/identifier-conversion.spec.js +339 -0
- package/lib/util/config-defaults.d.ts +8 -0
- package/lib/util/config-defaults.js +85 -0
- package/lib/util/config-defaults.spec.d.ts +1 -0
- package/lib/util/config-defaults.spec.js +293 -0
- package/lib/util/data-converter-spec-mockData.d.ts +0 -0
- package/lib/util/data-converter-spec-mockData.js +205 -0
- package/lib/util/data-converter.d.ts +39 -0
- package/lib/util/data-converter.js +592 -0
- package/lib/util/data-converter.spec.d.ts +1 -0
- package/lib/util/data-converter.spec.js +904 -0
- package/lib/util/error-response-object.d.ts +4 -0
- package/lib/util/error-response-object.js +47 -0
- package/lib/util/error-response-object.spec.d.ts +1 -0
- package/lib/util/error-response-object.spec.js +99 -0
- package/lib/util/event-short-message-status.d.ts +18 -0
- package/lib/util/event-short-message-status.js +22 -0
- package/lib/util/federation.d.ts +15 -0
- package/lib/util/federation.js +149 -0
- package/lib/util/flexplm-connect.d.ts +22 -0
- package/lib/util/flexplm-connect.js +176 -0
- package/lib/util/flexplm-connect.spec.d.ts +1 -0
- package/lib/util/flexplm-connect.spec.js +88 -0
- package/lib/util/logger-config.d.ts +1 -0
- package/lib/util/logger-config.js +26 -0
- package/lib/util/map-util-spec-mockData.d.ts +0 -0
- package/lib/util/map-util-spec-mockData.js +205 -0
- package/lib/util/map-utils.d.ts +6 -0
- package/lib/util/map-utils.js +15 -0
- package/lib/util/map-utils.spec.d.ts +1 -0
- package/lib/util/map-utils.spec.js +89 -0
- package/lib/util/mockData.d.ts +80 -0
- package/lib/util/mockData.js +103 -0
- package/lib/util/thumbnail-util.d.ts +34 -0
- package/lib/util/thumbnail-util.js +211 -0
- package/lib/util/thumbnail-util.spec.d.ts +1 -0
- package/lib/util/thumbnail-util.spec.js +398 -0
- package/lib/util/type-conversion-utils-spec-mockData.d.ts +0 -0
- package/lib/util/type-conversion-utils-spec-mockData.js +259 -0
- package/lib/util/type-conversion-utils.d.ts +23 -0
- package/lib/util/type-conversion-utils.js +266 -0
- package/lib/util/type-conversion-utils.spec.d.ts +1 -0
- package/lib/util/type-conversion-utils.spec.js +868 -0
- package/lib/util/type-defaults.d.ts +16 -0
- package/lib/util/type-defaults.js +221 -0
- package/lib/util/type-defaults.spec.d.ts +1 -0
- package/lib/util/type-defaults.spec.js +516 -0
- package/lib/util/type-utils.d.ts +13 -0
- package/lib/util/type-utils.js +114 -0
- package/lib/util/type-utils.spec.d.ts +1 -0
- package/lib/util/type-utils.spec.js +190 -0
- package/package.json +1 -1
- package/publish.bat +4 -4
- package/publish.sh +4 -4
- package/src/entity-processor/base-entity-processor.spec.ts +157 -0
- package/src/entity-processor/base-entity-processor.ts +21 -2
- package/src/flexplm-request.ts +28 -28
- package/src/flexplm-utils.spec.ts +27 -27
- package/src/flexplm-utils.ts +29 -29
- package/src/index.ts +21 -21
- package/src/interfaces/item-family-changes.ts +66 -66
- package/src/interfaces/publish-change-data.ts +42 -42
- package/src/publish/base-process-publish-assortment-callback.ts +50 -50
- package/src/transform/identifier-conversion-spec-mockData.ts +495 -495
- package/src/transform/identifier-conversion.spec.ts +353 -353
- package/src/transform/identifier-conversion.ts +281 -281
- package/src/util/config-defaults.spec.ts +350 -350
- package/src/util/config-defaults.ts +92 -92
- package/src/util/data-converter-spec-mockData.ts +230 -230
- package/src/util/error-response-object.spec.ts +115 -115
- package/src/util/error-response-object.ts +49 -49
- package/src/util/federation.ts +172 -172
- package/src/util/logger-config.ts +19 -19
- package/src/util/map-util-spec-mockData.ts +230 -230
- package/src/util/map-utils.spec.ts +102 -102
- package/src/util/map-utils.ts +40 -40
- package/src/util/mockData.ts +101 -97
- package/src/util/thumbnail-util.spec.ts +190 -0
- package/src/util/thumbnail-util.ts +126 -5
- package/src/util/type-conversion-utils.spec.ts +25 -25
- package/src/util/type-conversion-utils.ts +10 -9
- package/src/util/type-defaults.spec.ts +668 -668
- package/src/util/type-defaults.ts +280 -280
- package/src/util/type-utils.spec.ts +227 -227
- package/src/util/type-utils.ts +144 -144
- package/tsconfig.json +28 -26
- package/tslint.json +57 -57
- package/scripts/output.png +0 -0
- package/scripts/test-get-request.ts +0 -35
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
3
|
+
exports.mapping = {
|
|
4
|
+
typeConversion: {
|
|
5
|
+
vibe2flex: {
|
|
6
|
+
'custom-entity': {
|
|
7
|
+
getMapKey: (entity) => {
|
|
8
|
+
const typePath = entity['typePath'];
|
|
9
|
+
let mapKey = '';
|
|
10
|
+
switch (typePath) {
|
|
11
|
+
case 'custom-entity:pack':
|
|
12
|
+
mapKey = 'packaging';
|
|
13
|
+
break;
|
|
14
|
+
case 'custom-entity:prefix':
|
|
15
|
+
mapKey = 'prefix';
|
|
16
|
+
break;
|
|
17
|
+
case 'custom-entity:catName':
|
|
18
|
+
mapKey = 'catName';
|
|
19
|
+
break;
|
|
20
|
+
case 'custom-entity:partnerOrg':
|
|
21
|
+
mapKey = 'partnerOrg';
|
|
22
|
+
break;
|
|
23
|
+
case 'custom-entity:catFamily':
|
|
24
|
+
mapKey = 'catFamily';
|
|
25
|
+
break;
|
|
26
|
+
case 'custom-entity:formName':
|
|
27
|
+
mapKey = 'formName';
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
return mapKey;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
flex2vibe: {
|
|
35
|
+
LCSLast: {
|
|
36
|
+
getMapKey: (object) => { return 'catName'; }
|
|
37
|
+
},
|
|
38
|
+
LCSRevisableEntity: {
|
|
39
|
+
getMapKey: (object) => {
|
|
40
|
+
const typePath = object['flexPLMTypePath'];
|
|
41
|
+
let mapKey = '';
|
|
42
|
+
switch (typePath) {
|
|
43
|
+
case 'Revisable Entity\\packaging':
|
|
44
|
+
mapKey = 'packaging';
|
|
45
|
+
break;
|
|
46
|
+
case 'Revisable Entity\\prefix':
|
|
47
|
+
mapKey = 'prefix';
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
;
|
|
51
|
+
return mapKey;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
LCSProduct: {
|
|
57
|
+
vibeOwningKeys: ['itemNumber', 'lifecycleStage'],
|
|
58
|
+
vibe2flex: {
|
|
59
|
+
getClass: () => 'LCSProduct',
|
|
60
|
+
getSoftType: (entity) => {
|
|
61
|
+
const prodType = entity['prodType'];
|
|
62
|
+
let val = '';
|
|
63
|
+
switch (prodType) {
|
|
64
|
+
case 'acc':
|
|
65
|
+
val = 'Product\\Accesories';
|
|
66
|
+
break;
|
|
67
|
+
case 'app':
|
|
68
|
+
val = 'Product\\Apparel';
|
|
69
|
+
break;
|
|
70
|
+
case 'eqp':
|
|
71
|
+
val = 'Product\\Equipment';
|
|
72
|
+
break;
|
|
73
|
+
case 'foot':
|
|
74
|
+
val = 'Product\\Footwear';
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
return val;
|
|
78
|
+
},
|
|
79
|
+
transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }, { processor: 'VALUE_TRANSFORM', functionTransformersKey: 'valueTransform' }],
|
|
80
|
+
rekey: {
|
|
81
|
+
productName: 'name',
|
|
82
|
+
vibeIQIdentifier: 'itemNumber'
|
|
83
|
+
},
|
|
84
|
+
valueTransform: {
|
|
85
|
+
transformEx: (row) => {
|
|
86
|
+
return row['otherProp'] + 'xxx';
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
flex2vibe: {
|
|
91
|
+
getClass: () => 'item',
|
|
92
|
+
transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
|
|
93
|
+
rekey: {
|
|
94
|
+
itemNumber: 'vibeIQIdentifier',
|
|
95
|
+
name: 'productName',
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
LCSSKU: {
|
|
100
|
+
vibeOwningKeys: ['itemNumber', 'lifecycleStage'],
|
|
101
|
+
vibe2flex: {
|
|
102
|
+
getClass: () => 'LCSSKU',
|
|
103
|
+
getSoftType: (entity) => {
|
|
104
|
+
const prodType = entity['prodType'];
|
|
105
|
+
let val = '';
|
|
106
|
+
switch (prodType) {
|
|
107
|
+
case 'acc':
|
|
108
|
+
val = 'Product\\Accesories';
|
|
109
|
+
break;
|
|
110
|
+
case 'app':
|
|
111
|
+
val = 'Product\\Apparel';
|
|
112
|
+
break;
|
|
113
|
+
case 'eqp':
|
|
114
|
+
val = 'Product\\Equipment';
|
|
115
|
+
break;
|
|
116
|
+
case 'foot':
|
|
117
|
+
val = 'Product\\Footwear';
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
return val;
|
|
121
|
+
},
|
|
122
|
+
transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
|
|
123
|
+
rekey: {
|
|
124
|
+
skuName: 'optionName',
|
|
125
|
+
vibeIQIdentifier: 'itemNumber'
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
flex2vibe: {
|
|
129
|
+
transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
|
|
130
|
+
rekey: {
|
|
131
|
+
itemNumber: 'vibeIQIdentifier',
|
|
132
|
+
optionName: 'skuName',
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
packaging: {
|
|
137
|
+
isOutboundCreatable: (entity, context) => {
|
|
138
|
+
return false;
|
|
139
|
+
},
|
|
140
|
+
syncInboundImages: (entity, context) => {
|
|
141
|
+
return true;
|
|
142
|
+
},
|
|
143
|
+
syncOutboundImages: (entity, context) => {
|
|
144
|
+
return false;
|
|
145
|
+
},
|
|
146
|
+
vibe2flex: {
|
|
147
|
+
transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
|
|
148
|
+
rekey: {
|
|
149
|
+
retailPackType: 'packType',
|
|
150
|
+
retailIntroDate: 'introDate'
|
|
151
|
+
},
|
|
152
|
+
getSoftType: () => 'Revisable Entity\\packaging',
|
|
153
|
+
getClass: () => 'LCSRevisableEntity'
|
|
154
|
+
},
|
|
155
|
+
flex2vibe: {
|
|
156
|
+
transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
|
|
157
|
+
rekey: {
|
|
158
|
+
packType: 'retailPackType',
|
|
159
|
+
introDate: 'retailIntroDate'
|
|
160
|
+
},
|
|
161
|
+
getClass: () => 'custom-entity',
|
|
162
|
+
getSoftType: () => 'custom-entity:pack',
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
prefix: {
|
|
166
|
+
isInboundCreatable: (object, context) => {
|
|
167
|
+
if (context && context.skipPrefix) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
return true;
|
|
171
|
+
},
|
|
172
|
+
isOutboundCreatable: (entity, context) => {
|
|
173
|
+
if (context && context.skipPrefix) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
return true;
|
|
177
|
+
},
|
|
178
|
+
syncInboundImages: (entity, context) => {
|
|
179
|
+
if (context && context.skipImages) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
return true;
|
|
183
|
+
},
|
|
184
|
+
syncOutboundImages: (entity, context) => {
|
|
185
|
+
if (context && context.skipImages) {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
return true;
|
|
189
|
+
},
|
|
190
|
+
vibe2flex: {
|
|
191
|
+
transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
|
|
192
|
+
rekey: {
|
|
193
|
+
retailOwner: 'owner',
|
|
194
|
+
retailIntroDate: 'introDate'
|
|
195
|
+
},
|
|
196
|
+
getSoftType: () => 'Revisable Entity\\prefix',
|
|
197
|
+
getClass: () => 'LCSRevisableEntity'
|
|
198
|
+
},
|
|
199
|
+
flex2vibe: {
|
|
200
|
+
transformOrder: [{ processor: 'REKEY', rekeyDelete: true, rekeyTransformersKey: 'rekey' }],
|
|
201
|
+
rekey: {
|
|
202
|
+
owner: 'retailOwner',
|
|
203
|
+
introDate: 'retailIntroDate'
|
|
204
|
+
},
|
|
205
|
+
getClass: () => 'custom-entity',
|
|
206
|
+
getSoftType: () => 'custom-entity:prefix',
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
catName: {
|
|
210
|
+
getIdentifierProperties: () => ['catName', 'catNumber'],
|
|
211
|
+
getInformationalProperties: () => ['longName'],
|
|
212
|
+
vibe2flex: {
|
|
213
|
+
transformOrder: [],
|
|
214
|
+
getSoftType: () => 'Last\\catName',
|
|
215
|
+
getClass: () => 'LCSLast'
|
|
216
|
+
},
|
|
217
|
+
flex2vibe: {
|
|
218
|
+
transformOrder: [],
|
|
219
|
+
getClass: () => 'custom-entity',
|
|
220
|
+
getSoftType: () => 'custom-entity:catName',
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
partnerOrg: {
|
|
224
|
+
vibe2flex: {
|
|
225
|
+
transformOrder: [],
|
|
226
|
+
getSoftType: () => 'Business Object\\partnerOrg',
|
|
227
|
+
getClass: () => 'LCSLifecycleManaged'
|
|
228
|
+
},
|
|
229
|
+
flex2vibe: {
|
|
230
|
+
transformOrder: [],
|
|
231
|
+
getClass: () => 'custom-entity',
|
|
232
|
+
getSoftType: () => 'custom-entity:partnerOrg',
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
catFamily: {
|
|
236
|
+
vibe2flex: {
|
|
237
|
+
transformOrder: [],
|
|
238
|
+
getSoftType: () => 'Revisable Entity\\catFamily',
|
|
239
|
+
getClass: () => 'LCSRevisableEntity'
|
|
240
|
+
},
|
|
241
|
+
flex2vibe: {
|
|
242
|
+
transformOrder: [],
|
|
243
|
+
getClass: () => 'custom-entity',
|
|
244
|
+
getSoftType: () => 'custom-entity:catFamily',
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
formName: {
|
|
248
|
+
vibe2flex: {
|
|
249
|
+
transformOrder: [],
|
|
250
|
+
getSoftType: () => 'Material\\form',
|
|
251
|
+
getClass: () => 'LCSMaterial'
|
|
252
|
+
},
|
|
253
|
+
flex2vibe: {
|
|
254
|
+
transformOrder: [],
|
|
255
|
+
getClass: () => 'custom-entity',
|
|
256
|
+
getSoftType: () => 'custom-entity:formName',
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { MapFileUtil } from '@contrail/transform-data';
|
|
2
|
+
export declare class TypeConversionUtils {
|
|
3
|
+
static NO_ENTITY_TYPE: string;
|
|
4
|
+
static VIBE2FLEX_DIRECTION: string;
|
|
5
|
+
static FLEX2VIBE_DIRECTION: string;
|
|
6
|
+
constructor();
|
|
7
|
+
static getObjectClass(transformMapFile: any, mapFileUtil: any, entity: any): Promise<string>;
|
|
8
|
+
static getObjectTypePath(transformMapFile: any, mapFileUtil: any, entity: any): Promise<string>;
|
|
9
|
+
static getIdentifierProperties(transformMapFile: any, mapFileUtil: any, entity: any): Promise<string[]>;
|
|
10
|
+
static getInformationalProperties(transformMapFile: any, mapFileUtil: any, entity: any): Promise<string[]>;
|
|
11
|
+
static getMapKey(transformMapFile: any, mapFileUtil: MapFileUtil, entity: any, direction: string): Promise<string>;
|
|
12
|
+
static getEntityType(entity: any): any;
|
|
13
|
+
static getEntityClassFromObject(fileId: any, mapFileUtil: any, object: any): Promise<string>;
|
|
14
|
+
static getEntityTypePathFromOjbect(fileId: any, mapFileUtil: any, object: any): Promise<string>;
|
|
15
|
+
static getIdentifierPropertiesFromObject(fileId: any, mapFileUtil: MapFileUtil, object: any): Promise<string[]>;
|
|
16
|
+
static getInformationalPropertiesFromObject(fileId: any, mapFileUtil: MapFileUtil, object: any): Promise<string[]>;
|
|
17
|
+
static getMapKeyFromObject(fileId: any, mapFileUtil: MapFileUtil, object: any, direction: string): Promise<string>;
|
|
18
|
+
static isInboundCreatableFromObject(fileId: string, mapFileUtil: MapFileUtil, object: any, context?: any): Promise<boolean>;
|
|
19
|
+
static isOutboundCreatableFromEntity(fileId: string, mapFileUtil: MapFileUtil, entity: any, context?: any): Promise<boolean>;
|
|
20
|
+
static syncInboundImages(fileId: string, mapFileUtil: MapFileUtil, object: any, context?: any): Promise<boolean>;
|
|
21
|
+
static syncOutboundImages(fileId: string, mapFileUtil: MapFileUtil, entity: any, context?: any): Promise<boolean>;
|
|
22
|
+
static getObjectType(object: any): any;
|
|
23
|
+
}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TypeConversionUtils = void 0;
|
|
4
|
+
const type_defaults_1 = require("./type-defaults");
|
|
5
|
+
const map_utils_1 = require("./map-utils");
|
|
6
|
+
class TypeConversionUtils {
|
|
7
|
+
constructor() {
|
|
8
|
+
}
|
|
9
|
+
static async getObjectClass(transformMapFile, mapFileUtil, entity) {
|
|
10
|
+
let objectClass = entity['flexPLMObjectClass'];
|
|
11
|
+
if (objectClass) {
|
|
12
|
+
return objectClass;
|
|
13
|
+
}
|
|
14
|
+
if (transformMapFile) {
|
|
15
|
+
const mapSectionKey = await this.getMapKey(transformMapFile, mapFileUtil, entity, TypeConversionUtils.VIBE2FLEX_DIRECTION);
|
|
16
|
+
const mapData = await mapFileUtil.getMappingSection(transformMapFile, mapSectionKey, TypeConversionUtils.VIBE2FLEX_DIRECTION);
|
|
17
|
+
if (mapData['getClass']) {
|
|
18
|
+
objectClass = await mapData['getClass'](entity);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (objectClass) {
|
|
22
|
+
return objectClass;
|
|
23
|
+
}
|
|
24
|
+
return type_defaults_1.TypeDefaults.getDefaultObjectClass(entity);
|
|
25
|
+
}
|
|
26
|
+
static async getObjectTypePath(transformMapFile, mapFileUtil, entity) {
|
|
27
|
+
let typePath = entity['flexPLMTypePath'];
|
|
28
|
+
if (typePath) {
|
|
29
|
+
return typePath;
|
|
30
|
+
}
|
|
31
|
+
if (transformMapFile) {
|
|
32
|
+
const mapSectionKey = await this.getMapKey(transformMapFile, mapFileUtil, entity, TypeConversionUtils.VIBE2FLEX_DIRECTION);
|
|
33
|
+
const mapData = await mapFileUtil.getMappingSection(transformMapFile, mapSectionKey, TypeConversionUtils.VIBE2FLEX_DIRECTION);
|
|
34
|
+
if (mapData['getSoftType']) {
|
|
35
|
+
typePath = await mapData['getSoftType'](entity);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (typePath) {
|
|
39
|
+
return typePath;
|
|
40
|
+
}
|
|
41
|
+
return type_defaults_1.TypeDefaults.getDefaultObjectTypePath(entity);
|
|
42
|
+
}
|
|
43
|
+
static async getIdentifierProperties(transformMapFile, mapFileUtil, entity) {
|
|
44
|
+
let identifiers = entity['flexPLMIdentifierProperties'];
|
|
45
|
+
if (identifiers) {
|
|
46
|
+
return identifiers;
|
|
47
|
+
}
|
|
48
|
+
if (transformMapFile) {
|
|
49
|
+
const mapKey = await this.getMapKey(transformMapFile, mapFileUtil, entity, TypeConversionUtils.VIBE2FLEX_DIRECTION);
|
|
50
|
+
const mapData = await map_utils_1.MapUtil.getFullMapSection(transformMapFile, mapFileUtil, mapKey);
|
|
51
|
+
if (mapData && mapData['getIdentifierProperties']) {
|
|
52
|
+
identifiers = await mapData['getIdentifierProperties'](entity);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (identifiers) {
|
|
56
|
+
return identifiers;
|
|
57
|
+
}
|
|
58
|
+
return type_defaults_1.TypeDefaults.getDefaultIdentifierProperties(entity);
|
|
59
|
+
}
|
|
60
|
+
static async getInformationalProperties(transformMapFile, mapFileUtil, entity) {
|
|
61
|
+
let identifiers = entity['flexPLMInformationalProperties'];
|
|
62
|
+
if (identifiers) {
|
|
63
|
+
return identifiers;
|
|
64
|
+
}
|
|
65
|
+
if (transformMapFile) {
|
|
66
|
+
const mapKey = await this.getMapKey(transformMapFile, mapFileUtil, entity, TypeConversionUtils.VIBE2FLEX_DIRECTION);
|
|
67
|
+
const mapData = await map_utils_1.MapUtil.getFullMapSection(transformMapFile, mapFileUtil, mapKey);
|
|
68
|
+
if (mapData && mapData['getInformationalProperties']) {
|
|
69
|
+
identifiers = await mapData['getInformationalProperties'](entity);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (identifiers) {
|
|
73
|
+
return identifiers;
|
|
74
|
+
}
|
|
75
|
+
return type_defaults_1.TypeDefaults.getDefaultInformationalProperties(entity);
|
|
76
|
+
}
|
|
77
|
+
static async getMapKey(transformMapFile, mapFileUtil, entity, direction) {
|
|
78
|
+
if (transformMapFile) {
|
|
79
|
+
const type = this.getEntityType(entity);
|
|
80
|
+
const mappingData = await mapFileUtil.getMappingSection(transformMapFile, 'typeConversion', direction);
|
|
81
|
+
if (mappingData && mappingData[type] && mappingData[type]['getMapKey']) {
|
|
82
|
+
const mapKey = await mappingData[type]['getMapKey'](entity);
|
|
83
|
+
return mapKey;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return type_defaults_1.TypeDefaults.getDefaultObjectClass(entity);
|
|
87
|
+
}
|
|
88
|
+
static getEntityType(entity) {
|
|
89
|
+
let entityType = entity['entityType'];
|
|
90
|
+
if (!entityType) {
|
|
91
|
+
const typePath = entity['typePath'];
|
|
92
|
+
if (typePath) {
|
|
93
|
+
const types = typePath.split(':');
|
|
94
|
+
if (types && types[0]) {
|
|
95
|
+
entityType = types[0];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (!entityType) {
|
|
100
|
+
throw Error(TypeConversionUtils.NO_ENTITY_TYPE);
|
|
101
|
+
}
|
|
102
|
+
return entityType;
|
|
103
|
+
}
|
|
104
|
+
static async getEntityClassFromObject(fileId, mapFileUtil, object) {
|
|
105
|
+
let entityClass = object['vibeIQEntityClass'];
|
|
106
|
+
if (entityClass) {
|
|
107
|
+
return entityClass;
|
|
108
|
+
}
|
|
109
|
+
if (fileId) {
|
|
110
|
+
const mapSectionKey = await this.getMapKeyFromObject(fileId, mapFileUtil, object, TypeConversionUtils.FLEX2VIBE_DIRECTION);
|
|
111
|
+
const mapData = await mapFileUtil.getMappingSection(fileId, mapSectionKey, TypeConversionUtils.FLEX2VIBE_DIRECTION);
|
|
112
|
+
if (mapData['getClass']) {
|
|
113
|
+
entityClass = await mapData['getClass'](object);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (entityClass) {
|
|
117
|
+
return entityClass;
|
|
118
|
+
}
|
|
119
|
+
return type_defaults_1.TypeDefaults.getDefaultEntityClass(object);
|
|
120
|
+
}
|
|
121
|
+
static async getEntityTypePathFromOjbect(fileId, mapFileUtil, object) {
|
|
122
|
+
let typePath = object['vibeIQTypePath'];
|
|
123
|
+
if (typePath) {
|
|
124
|
+
return typePath;
|
|
125
|
+
}
|
|
126
|
+
if (fileId) {
|
|
127
|
+
const mapSectionKey = await this.getMapKeyFromObject(fileId, mapFileUtil, object, TypeConversionUtils.FLEX2VIBE_DIRECTION);
|
|
128
|
+
const mapData = await mapFileUtil.getMappingSection(fileId, mapSectionKey, TypeConversionUtils.FLEX2VIBE_DIRECTION);
|
|
129
|
+
if (mapData['getSoftType']) {
|
|
130
|
+
typePath = await mapData['getSoftType'](object);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (typePath) {
|
|
134
|
+
return typePath;
|
|
135
|
+
}
|
|
136
|
+
return type_defaults_1.TypeDefaults.getDefaultEntityTypePath(object);
|
|
137
|
+
}
|
|
138
|
+
static async getIdentifierPropertiesFromObject(fileId, mapFileUtil, object) {
|
|
139
|
+
let identifiers = object['vibeIQIdentifierProperties'];
|
|
140
|
+
if (identifiers) {
|
|
141
|
+
return identifiers;
|
|
142
|
+
}
|
|
143
|
+
if (fileId) {
|
|
144
|
+
const mapKey = await this.getMapKeyFromObject(fileId, mapFileUtil, object, TypeConversionUtils.FLEX2VIBE_DIRECTION);
|
|
145
|
+
const mapData = await map_utils_1.MapUtil.getFullMapSection(fileId, mapFileUtil, mapKey);
|
|
146
|
+
if (mapData && mapData['getIdentifierProperties']) {
|
|
147
|
+
identifiers = await mapData['getIdentifierProperties'](object);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (identifiers) {
|
|
151
|
+
return identifiers;
|
|
152
|
+
}
|
|
153
|
+
return type_defaults_1.TypeDefaults.getDefaultIdentifierPropertiesFromObject(object);
|
|
154
|
+
}
|
|
155
|
+
static async getInformationalPropertiesFromObject(fileId, mapFileUtil, object) {
|
|
156
|
+
let identifiers = object['vibeIQInformationalProperties'];
|
|
157
|
+
if (identifiers) {
|
|
158
|
+
return identifiers;
|
|
159
|
+
}
|
|
160
|
+
if (fileId) {
|
|
161
|
+
const mapKey = await this.getMapKeyFromObject(fileId, mapFileUtil, object, TypeConversionUtils.FLEX2VIBE_DIRECTION);
|
|
162
|
+
const mapData = await map_utils_1.MapUtil.getFullMapSection(fileId, mapFileUtil, mapKey);
|
|
163
|
+
if (mapData && mapData['getInformationalProperties']) {
|
|
164
|
+
identifiers = await mapData['getInformationalProperties'](object);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (identifiers) {
|
|
168
|
+
return identifiers;
|
|
169
|
+
}
|
|
170
|
+
return type_defaults_1.TypeDefaults.getDefaultInformationalPropertiesFromObject(object);
|
|
171
|
+
}
|
|
172
|
+
static async getMapKeyFromObject(fileId, mapFileUtil, object, direction) {
|
|
173
|
+
const type = this.getObjectType(object);
|
|
174
|
+
if (fileId) {
|
|
175
|
+
const mappingData = await mapFileUtil.getMappingSection(fileId, 'typeConversion', direction);
|
|
176
|
+
if (mappingData && mappingData[type] && mappingData[type]['getMapKey']) {
|
|
177
|
+
const mapKey = await mappingData[type]['getMapKey'](object);
|
|
178
|
+
return mapKey;
|
|
179
|
+
}
|
|
180
|
+
return type;
|
|
181
|
+
}
|
|
182
|
+
return '';
|
|
183
|
+
}
|
|
184
|
+
static async isInboundCreatableFromObject(fileId, mapFileUtil, object, context) {
|
|
185
|
+
let isInboundCreatable = false;
|
|
186
|
+
if (fileId) {
|
|
187
|
+
const mapKey = await this.getMapKeyFromObject(fileId, mapFileUtil, object, TypeConversionUtils.FLEX2VIBE_DIRECTION);
|
|
188
|
+
const mapData = await map_utils_1.MapUtil.getFullMapSection(fileId, mapFileUtil, mapKey);
|
|
189
|
+
if (mapData && mapData['isInboundCreatable']) {
|
|
190
|
+
isInboundCreatable = await mapData['isInboundCreatable'](object, context);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return isInboundCreatable;
|
|
194
|
+
}
|
|
195
|
+
static async isOutboundCreatableFromEntity(fileId, mapFileUtil, entity, context) {
|
|
196
|
+
let isOutboundCreatable = true;
|
|
197
|
+
if (!fileId) {
|
|
198
|
+
return isOutboundCreatable;
|
|
199
|
+
}
|
|
200
|
+
let mapKey;
|
|
201
|
+
try {
|
|
202
|
+
mapKey = await this.getMapKey(fileId, mapFileUtil, entity, TypeConversionUtils.VIBE2FLEX_DIRECTION);
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
return isOutboundCreatable;
|
|
206
|
+
}
|
|
207
|
+
if (!mapKey) {
|
|
208
|
+
return isOutboundCreatable;
|
|
209
|
+
}
|
|
210
|
+
const mapData = await map_utils_1.MapUtil.getFullMapSection(fileId, mapFileUtil, mapKey);
|
|
211
|
+
if (mapData && mapData['isOutboundCreatable']) {
|
|
212
|
+
isOutboundCreatable = await mapData['isOutboundCreatable'](entity, context);
|
|
213
|
+
}
|
|
214
|
+
return isOutboundCreatable;
|
|
215
|
+
}
|
|
216
|
+
static async syncInboundImages(fileId, mapFileUtil, object, context) {
|
|
217
|
+
let syncImages = false;
|
|
218
|
+
if (!fileId) {
|
|
219
|
+
return syncImages;
|
|
220
|
+
}
|
|
221
|
+
let mapKey;
|
|
222
|
+
try {
|
|
223
|
+
mapKey = await this.getMapKeyFromObject(fileId, mapFileUtil, object, TypeConversionUtils.FLEX2VIBE_DIRECTION);
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return syncImages;
|
|
227
|
+
}
|
|
228
|
+
if (!mapKey) {
|
|
229
|
+
return syncImages;
|
|
230
|
+
}
|
|
231
|
+
const mapData = await map_utils_1.MapUtil.getFullMapSection(fileId, mapFileUtil, mapKey);
|
|
232
|
+
if (mapData && mapData['syncInboundImages']) {
|
|
233
|
+
syncImages = await mapData['syncInboundImages'](object, context);
|
|
234
|
+
}
|
|
235
|
+
return syncImages;
|
|
236
|
+
}
|
|
237
|
+
static async syncOutboundImages(fileId, mapFileUtil, entity, context) {
|
|
238
|
+
let syncImages = true;
|
|
239
|
+
if (!fileId) {
|
|
240
|
+
return syncImages;
|
|
241
|
+
}
|
|
242
|
+
let mapKey;
|
|
243
|
+
try {
|
|
244
|
+
mapKey = await this.getMapKey(fileId, mapFileUtil, entity, TypeConversionUtils.VIBE2FLEX_DIRECTION);
|
|
245
|
+
}
|
|
246
|
+
catch {
|
|
247
|
+
return syncImages;
|
|
248
|
+
}
|
|
249
|
+
if (!mapKey) {
|
|
250
|
+
return syncImages;
|
|
251
|
+
}
|
|
252
|
+
const mapData = await map_utils_1.MapUtil.getFullMapSection(fileId, mapFileUtil, mapKey);
|
|
253
|
+
if (mapData && mapData['syncOutboundImages']) {
|
|
254
|
+
syncImages = await mapData['syncOutboundImages'](entity, context);
|
|
255
|
+
}
|
|
256
|
+
return syncImages;
|
|
257
|
+
}
|
|
258
|
+
static getObjectType(object) {
|
|
259
|
+
let objectType = object['flexPLMObjectClass'];
|
|
260
|
+
return objectType;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
exports.TypeConversionUtils = TypeConversionUtils;
|
|
264
|
+
TypeConversionUtils.NO_ENTITY_TYPE = 'Not able to determine the entity type of the entity object';
|
|
265
|
+
TypeConversionUtils.VIBE2FLEX_DIRECTION = 'vibe2flex';
|
|
266
|
+
TypeConversionUtils.FLEX2VIBE_DIRECTION = 'flex2vibe';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|