@sap/cds-dk 9.4.3 → 9.6.0

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.
Files changed (168) hide show
  1. package/CHANGELOG.md +115 -0
  2. package/bin/compile/index.js +1 -1
  3. package/bin/env.js +3 -3
  4. package/bin/export.js +1 -1
  5. package/bin/help.js +0 -1
  6. package/bin/import.js +8 -3
  7. package/bin/repl.js +7 -11
  8. package/bin/up.js +159 -23
  9. package/bin/util/containerize.js +79 -25
  10. package/bin/version.js +4 -4
  11. package/lib/bind/k8s.js +1 -1
  12. package/lib/build/plugins/helm/files/templates/_deployment_helpers.tpl +1 -1
  13. package/lib/build/plugins/helm/index.js +1 -1
  14. package/lib/build/provider/hana/2migration.js +16 -24
  15. package/lib/build/provider/hana/index.js +1 -1
  16. package/lib/build/provider/hana/template/.hdiconfig-all +7 -1
  17. package/lib/build/provider/hana/template/package.json +1 -1
  18. package/lib/build/provider/internalBuildPlugin.js +15 -1
  19. package/lib/build/provider/java/index.js +12 -1
  20. package/lib/build/provider/mtx-sidecar/index.js +2 -1
  21. package/lib/build/provider/nodejs/index.js +2 -1
  22. package/lib/build/util.js +36 -19
  23. package/lib/compile/to_openapi.js +1 -5
  24. package/lib/import/common.js +9 -2
  25. package/lib/import/odata/ParserContext.js +1 -0
  26. package/lib/import/odata/v4parser.js +57 -25
  27. package/lib/import/openapi/importOpenAPI.js +6 -1
  28. package/lib/init/constants.js +1 -1
  29. package/lib/init/index.js +20 -6
  30. package/lib/init/merge.js +16 -0
  31. package/lib/init/projectReader.js +34 -8
  32. package/lib/init/registries/mta.js +2 -2
  33. package/lib/init/template/ams/index.js +3 -3
  34. package/lib/init/template/app-frontend/files/app-package.json.hbs +1 -7
  35. package/lib/init/template/app-frontend/files/ui5.yaml.hbs +21 -1
  36. package/lib/init/template/app-frontend/index.js +2 -6
  37. package/lib/init/template/application-logging/index.js +11 -16
  38. package/lib/init/template/approuter/files/mta.yaml.hbs +0 -2
  39. package/lib/init/template/approuter/index.js +13 -10
  40. package/lib/init/template/attachments/index.js +4 -2
  41. package/lib/init/template/audit-logging/index.js +4 -2
  42. package/lib/init/template/cloud-logging/index.js +6 -5
  43. package/lib/init/template/connectivity/index.js +2 -2
  44. package/lib/init/template/console/files/package.json +5 -0
  45. package/lib/init/template/console/index.js +25 -0
  46. package/lib/init/template/containerize/index.js +4 -6
  47. package/lib/init/template/data/as-json.js +18 -20
  48. package/lib/init/template/destination/index.js +4 -2
  49. package/lib/init/template/dynatrace/files/package.json.hbs +2 -2
  50. package/lib/init/template/dynatrace/index.js +4 -4
  51. package/lib/init/template/enterprise-messaging/files/mta.yaml.hbs +3 -1
  52. package/lib/init/template/enterprise-messaging/index.js +4 -2
  53. package/lib/init/template/enterprise-messaging-shared/index.js +4 -2
  54. package/lib/init/template/github-actions/files/workflows/cf.yaml.hbs +16 -1
  55. package/lib/init/template/github-actions/files/workflows/release.yaml.hbs +2 -2
  56. package/lib/init/template/github-actions/files/workflows/test.yaml.hbs +20 -0
  57. package/lib/init/template/github-actions/index.js +7 -10
  58. package/lib/init/template/hana/files/db/package.json +2 -2
  59. package/lib/init/template/hana/files/mta.yaml.hbs +0 -4
  60. package/lib/init/template/hana/index.js +7 -9
  61. package/lib/init/template/helm/index.js +8 -10
  62. package/lib/init/template/helm-unified-runtime/index.js +1 -4
  63. package/lib/init/template/html5-repo/files/app-package.json.hbs +1 -7
  64. package/lib/init/template/html5-repo/files/ui5.yaml.hbs +21 -1
  65. package/lib/init/template/html5-repo/index.js +14 -18
  66. package/lib/init/template/ias/files/values.yaml.hbs +6 -6
  67. package/lib/init/template/ias/index.js +13 -21
  68. package/lib/init/template/java/index.js +14 -0
  69. package/lib/init/template/kafka/index.js +4 -2
  70. package/lib/init/template/{containerize → kyma}/files/containerize.yaml.hbs +17 -2
  71. package/lib/init/template/kyma/index.js +129 -5
  72. package/lib/init/template/malware-scanner/files/mta.yaml.hbs +3 -1
  73. package/lib/init/template/malware-scanner/files/values.yaml +3 -1
  74. package/lib/init/template/malware-scanner/index.js +4 -2
  75. package/lib/init/template/multitenancy/files/mta.yaml.hbs +1 -3
  76. package/lib/init/template/multitenancy/files/values.yaml.hbs +8 -0
  77. package/lib/init/template/multitenancy/index.js +15 -7
  78. package/lib/init/template/nodejs/files/.vscode/extensions.json +0 -3
  79. package/lib/init/template/nodejs/files/package.json.hbs +1 -1
  80. package/lib/init/template/pipeline/files/app-package.json.hbs +1 -7
  81. package/lib/init/template/pipeline/files/ui5.yaml.hbs +21 -1
  82. package/lib/init/template/pipeline/index.js +1 -2
  83. package/lib/init/template/portal/files/mta.yaml.hbs +5 -3
  84. package/lib/init/template/portal/index.js +8 -8
  85. package/lib/init/template/postgres/index.js +2 -2
  86. package/lib/init/template/redis/index.js +2 -3
  87. package/lib/init/template/redis-messaging/index.js +2 -3
  88. package/lib/init/template/sample/files/_i18n/i18n_de.properties +21 -0
  89. package/lib/init/template/sample/files/_i18n/i18n_en.properties +21 -0
  90. package/lib/init/template/sample/files/_i18n/i18n_fr.properties +21 -0
  91. package/lib/init/template/sample/files/_i18n/messages_de.properties +34 -0
  92. package/lib/init/template/sample/files/_i18n/messages_en.properties +34 -0
  93. package/lib/init/template/sample/files/_i18n/messages_fr.properties +34 -0
  94. package/lib/init/template/sample/files/app/_i18n/i18n.properties +13 -25
  95. package/lib/init/template/sample/files/app/_i18n/i18n_de.properties +13 -25
  96. package/lib/init/template/sample/files/app/admin-authors/fiori-service.cds +52 -0
  97. package/lib/init/template/sample/files/app/admin-authors/webapp/Component.js.hbs +3 -0
  98. package/lib/init/template/sample/files/app/admin-authors/webapp/i18n/i18n.properties +3 -0
  99. package/lib/init/template/sample/files/app/admin-authors/webapp/i18n/i18n_de.properties +3 -0
  100. package/lib/init/template/sample/files/app/admin-authors/webapp/i18n/i18n_en.properties +3 -0
  101. package/lib/init/template/sample/files/app/admin-authors/webapp/manifest.json +130 -0
  102. package/lib/init/template/sample/files/app/admin-books/fiori-service.cds +81 -88
  103. package/lib/init/template/sample/files/app/admin-books/webapp/Component.js.hbs +3 -0
  104. package/lib/init/template/sample/files/app/admin-books/webapp/i18n/i18n.properties +3 -3
  105. package/lib/init/template/sample/files/app/admin-books/webapp/i18n/i18n_de.properties +3 -3
  106. package/lib/init/template/sample/files/app/admin-books/webapp/i18n/i18n_en.properties +3 -3
  107. package/lib/init/template/sample/files/app/admin-books/webapp/manifest.json +24 -48
  108. package/lib/init/template/sample/files/app/appconfig/fioriSandboxConfig.json +56 -5
  109. package/lib/init/template/sample/files/app/browse/fiori-service.cds +30 -30
  110. package/lib/init/template/sample/files/app/browse/webapp/Component.js.hbs +3 -0
  111. package/lib/init/template/sample/files/app/browse/webapp/i18n/i18n.properties +3 -4
  112. package/lib/init/template/sample/files/app/browse/webapp/i18n/i18n_de.properties +3 -3
  113. package/lib/init/template/sample/files/app/browse/webapp/i18n/i18n_en.properties +3 -4
  114. package/lib/init/template/sample/files/app/browse/webapp/manifest.json +19 -24
  115. package/lib/init/template/sample/files/app/common.cds +127 -158
  116. package/lib/init/template/sample/files/app/fiori-apps.html +50 -0
  117. package/lib/init/template/sample/files/app/genres/fiori-service.cds +33 -0
  118. package/lib/init/template/sample/files/app/genres/tree-view.cds +42 -0
  119. package/lib/init/template/sample/files/app/genres/value-help.cds +6 -0
  120. package/lib/init/template/sample/files/app/genres/webapp/Component.js.hbs +3 -0
  121. package/lib/init/template/sample/files/app/genres/webapp/i18n/i18n.properties +3 -0
  122. package/lib/init/template/sample/files/app/genres/webapp/i18n/i18n_de.properties +3 -0
  123. package/lib/init/template/sample/files/app/genres/webapp/i18n/i18n_en.properties +3 -0
  124. package/lib/init/template/sample/files/app/genres/webapp/manifest.json +126 -0
  125. package/lib/init/template/sample/files/app/services.cds +6 -2
  126. package/lib/init/template/sample/files/db/currencies.cds +13 -0
  127. package/lib/init/template/sample/files/db/data/sap.capire.bookshop-Books.csv +5 -5
  128. package/lib/init/template/sample/files/db/data/{sap.capire.bookshop-Books_texts.csv → sap.capire.bookshop-Books.texts.csv} +4 -4
  129. package/lib/init/template/sample/files/db/data/sap.capire.bookshop-Genres.csv +42 -15
  130. package/lib/init/template/sample/files/db/data/sap.capire.bookshop-Genres.texts.csv +43 -0
  131. package/lib/init/template/sample/files/db/data/sap.common-Currencies.csv +12 -0
  132. package/lib/init/template/sample/files/db/data/sap.common-Currencies.texts.csv +15 -0
  133. package/lib/init/template/sample/files/db/hana/index.cds +10 -0
  134. package/lib/init/template/sample/files/db/schema.cds +35 -22
  135. package/lib/init/template/sample/files/db/sqlite/index.cds +10 -0
  136. package/lib/init/template/sample/files/package.json.hbs +14 -1
  137. package/lib/init/template/sample/files/srv/access-control.cds +3 -0
  138. package/lib/init/template/sample/files/srv/admin-service.cds +3 -2
  139. package/lib/init/template/sample/files/srv/cat-service.cds +7 -11
  140. package/lib/init/template/sample/index.js +40 -18
  141. package/lib/init/template/sqlite/files/package.json.hbs +13 -0
  142. package/lib/init/template/sqlite/index.js +1 -1
  143. package/lib/init/template/telemetry/index.js +1 -3
  144. package/lib/init/template/typescript/files/package.json +1 -1
  145. package/lib/init/template/workzone-standard/files/mta.yaml.hbs +0 -5
  146. package/lib/init/template/workzone-standard/index.js +0 -1
  147. package/lib/init/template/xsuaa/files/mta.yaml.hbs +4 -0
  148. package/lib/init/template/xsuaa/index.js +7 -6
  149. package/lib/lint/Linter.js +10 -4
  150. package/lib/lint/eslintHelp.json +1 -1
  151. package/lib/mtx/tenant_action.js +12 -4
  152. package/lib/util/checksum.js +41 -0
  153. package/lib/util/fs.js +8 -1
  154. package/lib/util/glob.js +26 -13
  155. package/lib/util/question.js +60 -7
  156. package/npm-shrinkwrap.json +141 -118
  157. package/package.json +2 -2
  158. package/lib/init/template/app-frontend/files/ui5-deploy.yaml.hbs +0 -25
  159. package/lib/init/template/github-actions/files/cf-setup/action.yaml +0 -53
  160. package/lib/init/template/html5-repo/files/ui5-deploy.yaml.hbs +0 -25
  161. package/lib/init/template/pipeline/files/ui5-deploy.yaml.hbs +0 -25
  162. package/lib/init/template/sample/files/app/admin-books/webapp/Component.js +0 -8
  163. package/lib/init/template/sample/files/app/browse/webapp/Component.js +0 -7
  164. package/lib/init/template/sample/files/app/index.html +0 -32
  165. package/lib/init/template/sqlite/files/package.json +0 -5
  166. /package/lib/init/template/{helm → kyma}/files/Chart.yaml.hbs +0 -0
  167. /package/lib/init/template/{helm → kyma}/files/values.schema.json +0 -0
  168. /package/lib/init/template/{helm → kyma}/files/values.yaml.hbs +0 -0
@@ -3,18 +3,12 @@
3
3
  "version": "1.0.0",
4
4
  "main": "webapp/index.html",
5
5
  "scripts": {
6
- "build": "ui5 build preload --clean-dest --config ui5-deploy.yaml",
7
- "build-local": "ui5 build preload --clean-dest",
6
+ "build": "ui5 build preload --clean-dest",
8
7
  "start": "ui5 serve"
9
8
  },
10
9
  "devDependencies": {
11
10
  "@ui5/cli": "^4",
12
11
  "ui5-task-zipper": "^3"
13
- },
14
- "ui5": {
15
- "dependencies": [
16
- "ui5-task-zipper"
17
- ]
18
12
  }
19
13
  {{/hasUI5}}
20
14
  }
@@ -1,6 +1,26 @@
1
1
  ---
2
2
  # yaml-language-server: $schema=https://sap.github.io/ui5-tooling/schema/ui5.yaml.json
3
- specVersion: '3.1'
3
+ specVersion: '4.0'
4
4
  metadata:
5
5
  name: {{app}}
6
6
  type: application
7
+ resources:
8
+ configuration:
9
+ propertiesFileSourceEncoding: UTF-8
10
+ builder:
11
+ resources:
12
+ excludes:
13
+ - "/test/**"
14
+ - "/localService/**"
15
+ customTasks:
16
+ - name: ui5-task-zipper
17
+ afterTask: generateVersionInfo
18
+ configuration:
19
+ archiveName: {{app}}
20
+ relativePaths: true
21
+ additionalFiles:
22
+ - xs-app.json
23
+ {{#isTypescript}}
24
+ - name: ui5-tooling-transpile-task
25
+ afterTask: replaceVersion
26
+ {{/isTypescript}}
@@ -38,8 +38,7 @@ module.exports = class PipelineTemplate extends require('../../plugin') {
38
38
  project.app = app
39
39
  await Promise.all([
40
40
  merge(__dirname, 'files/app-package.json.hbs').into(join(appPath, app, 'package.json'), { project }),
41
- merge(__dirname, 'files/ui5.yaml.hbs').into(join(appPath, app, 'ui5.yaml'), { project }),
42
- merge(__dirname, 'files/ui5-deploy.yaml.hbs').into(join(appPath, app, 'ui5-deploy.yaml'), { project })
41
+ merge(__dirname, 'files/ui5.yaml.hbs').into(join(appPath, app, 'ui5.yaml'), { project })
43
42
  ])
44
43
  }
45
44
  }
@@ -43,9 +43,11 @@ modules:
43
43
  {{#hasIas}}
44
44
  - name: {{appName}}-ias
45
45
  parameters:
46
- config:
47
- credential-type: X509_GENERATED
48
- app-identifier: portal-deployer
46
+ service-key:
47
+ config:
48
+ credential-type: X509_GENERATED
49
+ app-identifier: portal-deployer
50
+ name: {{appName}}-portal-deployer-ias-key
49
51
  {{/hasIas}}
50
52
  - name: {{appName}}-html5-repo-host
51
53
  - name: {{appName}}-app-deployer
@@ -4,6 +4,7 @@ const { readProject } = require('../../projectReader')
4
4
  const { merge } = require('../../merge')
5
5
  const { srv4, portal, portalDeployer, xsuaa, html5RepoHost, appDeployer, approuter, mtxSidecar4 } = require('../../registries/mta')
6
6
  const { renderAndCopy } = require('../../template')
7
+ const KymaTemplate = require('../kyma')
7
8
 
8
9
  module.exports = class PortalTemplate extends require('../../plugin') {
9
10
 
@@ -28,7 +29,7 @@ module.exports = class PortalTemplate extends require('../../plugin') {
28
29
 
29
30
  async combine() {
30
31
  const project = readProject()
31
- const { appName, isJava, addMta, hasMta, srvPath, addHtml5Repo, addXsuaa, addApprouter, addMultitenancy, addHelm, addHelmUnifiedRuntime, addContainerize, hasApprouter, hasHtml5Repo } = project
32
+ const { appName, isJava, addMta, hasMta, srvPath, addHtml5Repo, addXsuaa, addApprouter, addMultitenancy, addKyma, addContainerize, hasApprouter, hasHtml5Repo, hasMultitenancy, hasXsuaa } = project
32
33
 
33
34
  if (addMultitenancy) {
34
35
  await merge(__dirname, 'files/package.sidecar.json').into('mtx/sidecar/package.json')
@@ -45,15 +46,13 @@ module.exports = class PortalTemplate extends require('../../plugin') {
45
46
  into: [portalDeployer, 'requires', 'name']
46
47
  }]
47
48
 
48
- if (addXsuaa) {
49
- additions.push(xsuaa)
49
+ if (hasXsuaa) {
50
50
  relationships.push({
51
51
  insert: [xsuaa, 'name'],
52
52
  into: [portalDeployer, 'requires', 'name']
53
53
  })
54
54
  }
55
55
  if (hasHtml5Repo) {
56
- additions.push(html5RepoHost)
57
56
  relationships.push({
58
57
  insert: [html5RepoHost, 'name'],
59
58
  into: [portalDeployer, 'requires', 'name']
@@ -61,14 +60,13 @@ module.exports = class PortalTemplate extends require('../../plugin') {
61
60
  }
62
61
 
63
62
  if (hasApprouter) {
64
- additions.push(approuter)
65
63
  relationships.push({
66
64
  insert: [portal, 'name'],
67
65
  into: [approuter, 'requires', 'name']
68
66
  })
69
67
  }
70
68
 
71
- if (addMultitenancy) {
69
+ if (hasMultitenancy) {
72
70
  relationships.push({
73
71
  insert: [portal, 'name'],
74
72
  into: [isJava ? srv : mtxSidecar4('gen/mtx/sidecar'), 'requires', 'name']
@@ -80,7 +78,7 @@ module.exports = class PortalTemplate extends require('../../plugin') {
80
78
  })
81
79
  }
82
80
 
83
- if (addContainerize) {
81
+ if (addContainerize || addKyma) {
84
82
  const additions = [{
85
83
  in: 'modules',
86
84
  where: { name: `${appName}-portal-deployer` }
@@ -88,8 +86,10 @@ module.exports = class PortalTemplate extends require('../../plugin') {
88
86
  await merge(__dirname, '/files/containerize.yaml.hbs').into('containerize.yaml', { with: project, additions })
89
87
  }
90
88
 
91
- if (addHelm || addHelmUnifiedRuntime) {
89
+ if (addKyma) {
92
90
  await merge(__dirname, 'files/values.yaml.hbs').into('chart/values.yaml', { with: project })
91
+ await KymaTemplate.mergeDependency('service-instance', 'portal')
92
+ await KymaTemplate.mergeDependency('content-deployment', 'portal-deployer')
93
93
  }
94
94
  }
95
95
  }
@@ -12,8 +12,8 @@ module.exports = class PostgresTemplate extends require('../../plugin') {
12
12
  }
13
13
 
14
14
  async canRun() {
15
- const { hasMta, hasHelm, hasHelmUnifiedRuntime } = readProject()
16
- if ((hasHelm || hasHelmUnifiedRuntime) && !hasMta) throw `'cds add postgres' is not available for Kyma yet`
15
+ const { hasMta, hasKyma } = readProject()
16
+ if (hasKyma && !hasMta) throw `'cds add postgres' is not available for Kyma yet`
17
17
  return true
18
18
  }
19
19
 
@@ -9,10 +9,9 @@ module.exports = class extends require('../../plugin') {
9
9
  }
10
10
 
11
11
  async canRun() {
12
- const { hasMta, hasHelm, hasHelmUnifiedRuntime, isJava } = readProject()
13
- const onlyHelm = !hasMta && (hasHelmUnifiedRuntime || hasHelm)
12
+ const { hasMta, hasKyma, isJava } = readProject()
14
13
  if (isJava) throw `'cds add redis' is not available for Java yet`
15
- if (onlyHelm) throw `'cds add redis' is not available for Kyma yet`
14
+ if (hasKyma && !hasMta) throw `'cds add redis' is not available for Kyma yet`
16
15
  return true
17
16
  }
18
17
 
@@ -14,10 +14,9 @@ module.exports = class RedisMessagingTemplate extends require('../../plugin') {
14
14
  }
15
15
 
16
16
  async canRun() {
17
- const { hasMta, hasHelm, hasHelmUnifiedRuntime, isJava } = readProject()
18
- const onlyHelm = !hasMta && (hasHelmUnifiedRuntime || hasHelm)
17
+ const { hasMta, hasKyma, isJava } = readProject()
19
18
  if (isJava) throw `'cds add redis-messaging' is not available for Java yet`
20
- if (onlyHelm) throw `'cds add redis-messaging' is not available for Kyma yet`
19
+ if (hasKyma && !hasMta) throw `'cds add redis-messaging' is not available for Kyma yet`
21
20
  return true
22
21
  }
23
22
 
@@ -0,0 +1,21 @@
1
+ Books = Bücher
2
+ Book = Buch
3
+ ID = ID
4
+ Title = Titel
5
+ Description = Beschreibung
6
+ Stock = Bestand
7
+ Image = Bild
8
+ Price = Preis
9
+ Currency = Währung
10
+
11
+ Authors = Autoren
12
+ Author = Autor
13
+ AuthorID = ID des Autors
14
+ Name = Name
15
+ DateOfBirth = Geburtsort
16
+ DateOfDeath = Todesdatum
17
+ PlaceOfBirth = Geburtsort
18
+ PlaceOfDeath = Todesort
19
+
20
+ Genres = Genre
21
+ Genre = Genre
@@ -0,0 +1,21 @@
1
+ Books = Books
2
+ Book = Book
3
+ ID = ID
4
+ Title = Title
5
+ Description = Description
6
+ Stock = Stock
7
+ Image = Image
8
+ Price = Price
9
+ Currency = Currency
10
+
11
+ Authors = Authors
12
+ Author = Author
13
+ AuthorID = Author''s ID
14
+ Name = Name
15
+ DateOfBirth = Date of Birth
16
+ DateOfDeath = Date of Death
17
+ PlaceOfBirth = Place of Birth
18
+ PlaceOfDeath = Place of Death
19
+
20
+ Genres = Genres
21
+ Genre = Genre
@@ -0,0 +1,21 @@
1
+ Books = Livres
2
+ Book = Livre
3
+ ID = ID
4
+ Title = Titre
5
+ Description = Description
6
+ Stock = Action
7
+ Image = Image
8
+ Price = Prix
9
+ Currency = Devise
10
+
11
+ Authors = Auteurs
12
+ Author = Auteur
13
+ AuthorID = ID de l''auteur
14
+ Name = Nom
15
+ DateOfBirth = Date de naissance
16
+ DateOfDeath = Date de décès
17
+ PlaceOfBirth = Lieu de naissance
18
+ PlaceOfDeath = Lieu de décès
19
+
20
+ Genres = Genre
21
+ Genre = Genre
@@ -0,0 +1,34 @@
1
+ 400 = Ungültige Anfrage
2
+ 401 = Nicht autorisiert
3
+ 403 = Verboten
4
+ 404 = Nicht gefunden
5
+ 405 = Methode nicht zulässig
6
+ 406 = Nicht akzeptabel
7
+ 407 = Proxy-Authentifizierung erforderlich
8
+ 408 = Anfrage-Timeout
9
+ 409 = Konflikt
10
+ 410 = Weg
11
+ 411 = Erforderliche Länge
12
+ 412 = Vorbedingung fehlgeschlagen
13
+ 413 = Nutzlast zu groß
14
+ 414 = URI zu lang
15
+ 415 = Nicht unterstützter Medientyp
16
+ 416 = Bereich nicht erfüllbar
17
+ 417 = Erwartung fehlgeschlagen
18
+ 422 = Nicht verarbeitbarer Inhalt
19
+ 424 = Fehlgeschlagene Abhängigkeit
20
+ 428 = Vorbedingung erforderlich
21
+ 429 = Zu viele Anfragen
22
+ 431 = Anfrage-Headerfelder zu groß
23
+ 451 = Aus rechtlichen Gründen nicht verfügbar
24
+ 500 = Interner Serverfehler
25
+ 501 = Der Server unterstützt die zur Erfüllung der Anfrage erforderliche Funktionalität nicht
26
+ 502 = Ungültiges Gateway
27
+ 503 = Dienst nicht verfügbar
28
+ 504 = Gateway-Timeout
29
+
30
+ ASSERT_RANGE = Wert {0} liegt nicht im angegebenen Bereich [{1}, {2}]
31
+ ASSERT_FORMAT = Wert "{0}" liegt nicht im angegebenen Format "{1}"
32
+ ASSERT_ARRAY = Wert muss ein Array sein
33
+ ASSERT_ENUM = Wert {0} ist gemäß Enumerationsdeklaration {{1}} ungültig
34
+ ASSERT_NOT_NULL = Wert ist erforderlich
@@ -0,0 +1,34 @@
1
+ 400 = Bad Request
2
+ 401 = Unauthorized
3
+ 403 = Forbidden
4
+ 404 = Not Found
5
+ 405 = Method Not Allowed
6
+ 406 = Not Acceptable
7
+ 407 = Proxy Authentication Required
8
+ 408 = Request Timeout
9
+ 409 = Conflict
10
+ 410 = Gone
11
+ 411 = Length Required
12
+ 412 = Precondition Failed
13
+ 413 = Payload Too Large
14
+ 414 = URI Too Long
15
+ 415 = Unsupported Media Type
16
+ 416 = Range Not Satisfiable
17
+ 417 = Expectation Failed
18
+ 422 = Unprocessable Content
19
+ 424 = Failed Dependency
20
+ 428 = Precondition Required
21
+ 429 = Too Many Requests
22
+ 431 = Request Header Fields Too Large
23
+ 451 = Unavailable For Legal Reasons
24
+ 500 = Internal Server Error
25
+ 501 = The server does not support the functionality required to fulfill the request
26
+ 502 = Bad Gateway
27
+ 503 = Service Unavailable
28
+ 504 = Gateway Timeout
29
+
30
+ ASSERT_RANGE = Value {0} is not in specified range [{1}, {2}]
31
+ ASSERT_FORMAT = Value "{0}" is not in specified format "{1}"
32
+ ASSERT_ARRAY = Value must be an array
33
+ ASSERT_ENUM = Value {0} is invalid according to enum declaration {{1}}
34
+ ASSERT_NOT_NULL = Value is required
@@ -0,0 +1,34 @@
1
+ 400 = Requête incorrecte
2
+ 401 = Non autorisée
3
+ 403 = Interdite
4
+ 404 = Introuvable
5
+ 405 = Méthode non autorisée
6
+ 406 = Non acceptable
7
+ 407 = Authentification proxy requise
8
+ 408 = Délai d''expiration de la requête
9
+ 409 = Conflit
10
+ 410 = Disparu
11
+ 411 = Longueur requise
12
+ 412 = Échec de la condition préalable
13
+ 413 = Charge utile trop importante
14
+ 414 = URI trop longue
15
+ 415 = Type de média non pris en charge
16
+ 416 = Plage non satisfaisante
17
+ 417 = Échec de l''attente
18
+ 422 = Contenu non traitable
19
+ 424 = Dépendance échouée
20
+ 428 = Condition préalable requise
21
+ 429 = Trop de requêtes
22
+ 431 = Champs d''en-tête de requête trop importants
23
+ 451 = Indisponible pour des raisons juridiques
24
+ 500 = Erreur interne du serveur
25
+ 501 = Le serveur ne prend pas en charge la fonctionnalité requise pour répondre à la requête
26
+ 502 = Passerelle incorrecte
27
+ 503 = Service indisponible
28
+ 504 = Délai d''attente de la passerelle
29
+
30
+ ASSERT_RANGE = La valeur {0} n''est pas dans la plage spécifiée [{1}, {2}]
31
+ ASSERT_FORMAT = La valeur "{0}" n''est pas au format spécifié "{1}"
32
+ ASSERT_ARRAY = La valeur doit être un tableau
33
+ ASSERT_ENUM = La valeur {0} n''est pas valide selon la déclaration d''énumération {{1}}
34
+ ASSERT_NOT_NULL = La valeur est obligatoire
@@ -1,29 +1,17 @@
1
- Books = Books
2
- Book = Book
3
- ID = ID
4
- Title = Title
5
- Author = Author
6
- Authors = Authors
7
- AuthorID = Author ID
8
- AuthorName = Author Name
9
- Name = Name
10
1
  Age = Age
11
- Stock = Stock
12
- Order = Order
13
- Orders = Orders
14
- Price = Price
15
- Genre = Genre
16
- Genres = Genres
17
- DateOfBirth = Date of Birth
18
- DateOfDeath = Date of Death
19
- PlaceOfBirth = Place of Birth
20
- PlaceOfDeath = Place of Death
2
+ Lifetime = Lifetime
3
+
21
4
  Details = Details
22
- Languages = Languages
23
- Currencies = Currencies
24
- MainGenre = Main Genre
25
5
  SubGenres = Subgenres
26
- Admin = Admin
27
- Translations = Translations
6
+
7
+ NumCode = Numeric Code
8
+ MinorUnit = Minor Unit
9
+ Exponent = Exponent
10
+
28
11
  General = General
29
- Locale = Locale
12
+ Translations = Translations
13
+ Admin = Administrator
14
+ Languages = Languages
15
+
16
+ Extended = Extended
17
+ Currencies = Currencies
@@ -1,29 +1,17 @@
1
- Books = Bücher
2
- Book = Buch
3
- ID = ID
4
- Title = Titel
5
- Author = Autor
6
- Authors = Autoren
7
- AuthorID = ID des Autors
8
- AuthorName = Name des Autors
9
- Name = Name
10
1
  Age = Alter
11
- Stock = Bestand
12
- Order = Bestellung
13
- Orders = Bestellungen
14
- Price = Preis
15
- Genre = Genre
16
- Genres = Genres
17
- DateOfBirth = Geburtsdatum
18
- DateOfDeath = Todesdatum
19
- PlaceOfBirth = Geburtsort
20
- PlaceOfDeath = Todesort
2
+ Lifetime = Lebenszeitraum
3
+
21
4
  Details = Details
22
- Languages = Sprachen
23
- Currencies = Währungen
24
- MainGenre = Hauptgenre
25
5
  SubGenres = Subgenres
26
- Admin = Admin
27
- Translations = Übersetzungen
6
+
7
+ NumCode = Numeric Code
8
+ MinorUnit = Minor Unit
9
+ Exponent = Exponent
10
+
28
11
  General = Allgemein
29
- Locale = Gebietsschema
12
+ Translations = Übersetzungen
13
+ Admin = Administrator
14
+ Languages = Sprachen
15
+
16
+ Extended = Erweitert
17
+ Currencies = Währungen
@@ -0,0 +1,52 @@
1
+ using {AdminService} from '../../srv/admin-service';
2
+
3
+ annotate AdminService.Authors with @odata.draft.enabled;
4
+
5
+ ////////////////////////////////////////////////////////////////////////////
6
+ //
7
+ // Authors Object Page
8
+ //
9
+ annotate AdminService.Authors with @(UI : {
10
+ HeaderInfo : {
11
+ TypeName : 'Author',
12
+ TypeNamePlural : 'Authors',
13
+ Description : {Value : lifetime}
14
+ },
15
+ Facets : [
16
+ {
17
+ $Type : 'UI.ReferenceFacet',
18
+ Label : '{i18n>Details}',
19
+ Target : '@UI.FieldGroup#Details'
20
+ },
21
+ {
22
+ $Type : 'UI.ReferenceFacet',
23
+ Label : '{i18n>Books}',
24
+ Target : 'books/@UI.LineItem'
25
+ },
26
+ ],
27
+ FieldGroup #Details : {Data : [
28
+ {Value : placeOfBirth},
29
+ {Value : placeOfDeath},
30
+ {Value : dateOfBirth},
31
+ {Value : dateOfDeath},
32
+ {
33
+ Value : age,
34
+ Label : '{i18n>Age}'
35
+ },
36
+ ]},
37
+ });
38
+
39
+
40
+ // Workaround to avoid errors for unknown db-specific calculated fields above
41
+ extend sap.capire.bookshop.Authors with {
42
+ virtual age : Integer;
43
+ virtual lifetime : String;
44
+ }
45
+
46
+ annotate AdminService.Authors with {
47
+ age @Common.Label : '{i18n>Age}';
48
+ lifetime @Common.Label : '{i18n>Lifetime}'
49
+ }
50
+
51
+ // Workaround for Fiori popup for asking user to enter a new UUID on Create
52
+ annotate AdminService.Authors with { ID @Core.Computed; }
@@ -0,0 +1,3 @@
1
+ sap.ui.define(["sap/fe/core/AppComponent"], ac => ac.extend("{{appName}}.{{app}}.Component", {
2
+ metadata:{ manifest: 'json' }
3
+ }))
@@ -0,0 +1,3 @@
1
+ appTitle = Manage Authors
2
+ appSubTitle = CAP Sample Application
3
+ appDescription = CAP Sample Application to Manage Authors
@@ -0,0 +1,3 @@
1
+ appTitle = Verwalte Autoren
2
+ appSubTitle = CAP Beispielanwendung
3
+ appDescription = CAP Beispielanwendung zur Verwaltung von Autoren
@@ -0,0 +1,3 @@
1
+ appTitle = Manage Authors
2
+ appSubTitle = CAP Sample Application
3
+ appDescription = CAP Sample Application to Manage Authors
@@ -0,0 +1,130 @@
1
+ {
2
+ "_version": "1.28.0",
3
+ "sap.app": {
4
+ "id": "authors",
5
+ "type": "application",
6
+ "title": "{{appTitle}}",
7
+ "description": "{{appDescription}}",
8
+ "i18n": "i18n/i18n.properties",
9
+ "applicationVersion": {
10
+ "version": "1.0.0"
11
+ },
12
+ "dataSources": {
13
+ "AdminService": {
14
+ "uri": "odata/v4/admin/",
15
+ "type": "OData",
16
+ "settings": {
17
+ "odataVersion": "4.0"
18
+ }
19
+ }
20
+ },
21
+ "crossNavigation": {
22
+ "inbounds": {
23
+ "Authors-manage": {
24
+ "signature": {
25
+ "parameters": {
26
+ "Books.author.ID": {
27
+ "renameTo": "ID"
28
+ }
29
+ },
30
+ "additionalParameters": "ignored"
31
+ },
32
+ "semanticObject": "Authors",
33
+ "action": "manage",
34
+ "title": "{{appTitle}}",
35
+ "info": "{{appDescription}}",
36
+ "subTitle": "{{appSubTitle}}",
37
+ "icon": "sap-icon://SAP-icons-TNT/user",
38
+ "indicatorDataSource": {
39
+ "dataSource": "AdminService",
40
+ "path": "Authors/$count",
41
+ "refresh": 1800
42
+ }
43
+ }
44
+ }
45
+ }
46
+ },
47
+ "sap.ui5": {
48
+ "dependencies": {
49
+ "minUI5Version": "1.136.0",
50
+ "libs": {
51
+ "sap.fe.templates": {}
52
+ }
53
+ },
54
+ "models": {
55
+ "i18n": {
56
+ "type": "sap.ui.model.resource.ResourceModel",
57
+ "uri": "i18n/i18n.properties"
58
+ },
59
+ "": {
60
+ "dataSource": "AdminService",
61
+ "settings": {
62
+ "synchronizationMode": "None",
63
+ "operationMode": "Server",
64
+ "autoExpandSelect": true,
65
+ "earlyRequests": true
66
+ }
67
+ }
68
+ },
69
+ "routing": {
70
+ "routes": [
71
+ {
72
+ "pattern": ":?query:",
73
+ "name": "AuthorsList",
74
+ "target": "AuthorsList"
75
+ },
76
+ {
77
+ "pattern": "Authors({key}):?query:",
78
+ "name": "AuthorsDetails",
79
+ "target": "AuthorsDetails"
80
+ }
81
+ ],
82
+ "targets": {
83
+ "AuthorsList": {
84
+ "type": "Component",
85
+ "id": "AuthorsList",
86
+ "name": "sap.fe.templates.ListReport",
87
+ "options": {
88
+ "settings": {
89
+ "entitySet": "Authors",
90
+ "liveMode": true,
91
+ "navigation": {
92
+ "Authors": {
93
+ "detail": {
94
+ "route": "AuthorsDetails"
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+ },
101
+ "AuthorsDetails": {
102
+ "type": "Component",
103
+ "id": "AuthorsDetailsList",
104
+ "name": "sap.fe.templates.ObjectPage",
105
+ "options": {
106
+ "settings": {
107
+ "entitySet": "Authors"
108
+ }
109
+ }
110
+ }
111
+ }
112
+ },
113
+ "contentDensities": {
114
+ "compact": true,
115
+ "cozy": true
116
+ }
117
+ },
118
+ "sap.ui": {
119
+ "technology": "UI5",
120
+ "deviceTypes": {
121
+ "desktop": true,
122
+ "tablet": true,
123
+ "phone": true
124
+ }
125
+ },
126
+ "sap.fiori": {
127
+ "registrationIds": [],
128
+ "archeType": "transactional"
129
+ }
130
+ }