|
2 | 2 |
|
3 | 3 | import static org.carlspring.strongbox.db.schema.Edges.ARTIFACT_COORDINATES_INHERIT_GENERIC_ARTIFACT_COORDINATES; |
4 | 4 | import static org.carlspring.strongbox.db.schema.Edges.ARTIFACT_GROUP_HAS_ARTIFACTS; |
| 5 | +import static org.carlspring.strongbox.db.schema.Edges.ARTIFACT_HAS_ARTIFACT_ARCHIVE_LISTING; |
5 | 6 | import static org.carlspring.strongbox.db.schema.Edges.ARTIFACT_HAS_ARTIFACT_COORDINATES; |
6 | 7 | import static org.carlspring.strongbox.db.schema.Edges.ARTIFACT_HAS_TAGS; |
7 | 8 | import static org.carlspring.strongbox.db.schema.Edges.REMOTE_ARTIFACT_INHERIT_ARTIFACT; |
| 9 | +import static org.carlspring.strongbox.db.schema.Properties.CACHED; |
| 10 | +import static org.carlspring.strongbox.db.schema.Properties.CHECKSUMS; |
| 11 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_ABI; |
| 12 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_ARCHITECTURE; |
| 13 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_ARTIFACT_ID; |
| 14 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_BASE_NAME; |
| 15 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_BUILD; |
| 16 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_CLASSIFIER; |
| 17 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_DISTRIBUTION; |
| 18 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_EXTENSION; |
| 19 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_FILENAME; |
| 20 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_GROUP_ID; |
| 21 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_ID; |
| 22 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_LANGUAGE_IMPLEMENTATION_VERSION; |
| 23 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_NAME; |
| 24 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_PACKAGE_TYPE; |
| 25 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_PACKAGING; |
| 26 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_PATH; |
| 27 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_PLATFORM; |
| 28 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_RELEASE; |
| 29 | +import static org.carlspring.strongbox.db.schema.Properties.COORDINATES_SCOPE; |
| 30 | +import static org.carlspring.strongbox.db.schema.Properties.CREATED; |
| 31 | +import static org.carlspring.strongbox.db.schema.Properties.DOWNLOAD_COUNT; |
| 32 | +import static org.carlspring.strongbox.db.schema.Properties.ENABLED; |
| 33 | +import static org.carlspring.strongbox.db.schema.Properties.FILE_NAME; |
| 34 | +import static org.carlspring.strongbox.db.schema.Properties.LAST_UPDATED; |
| 35 | +import static org.carlspring.strongbox.db.schema.Properties.LAST_USED; |
| 36 | +import static org.carlspring.strongbox.db.schema.Properties.NAME; |
| 37 | +import static org.carlspring.strongbox.db.schema.Properties.PASSWORD; |
| 38 | +import static org.carlspring.strongbox.db.schema.Properties.REPOSITORY_ID; |
| 39 | +import static org.carlspring.strongbox.db.schema.Properties.ROLES; |
| 40 | +import static org.carlspring.strongbox.db.schema.Properties.SECURITY_TOKEN_KEY; |
| 41 | +import static org.carlspring.strongbox.db.schema.Properties.SIZE_IN_BYTES; |
| 42 | +import static org.carlspring.strongbox.db.schema.Properties.SOURCE_ID; |
| 43 | +import static org.carlspring.strongbox.db.schema.Properties.STORAGE_ID; |
| 44 | +import static org.carlspring.strongbox.db.schema.Properties.USERNAME; |
| 45 | +import static org.carlspring.strongbox.db.schema.Properties.UUID; |
| 46 | +import static org.carlspring.strongbox.db.schema.Properties.VERSION; |
8 | 47 | import static org.carlspring.strongbox.db.schema.Vertices.ARTIFACT; |
| 48 | +import static org.carlspring.strongbox.db.schema.Vertices.ARTIFACT_ARCHIVE_LISTING; |
9 | 49 | import static org.carlspring.strongbox.db.schema.Vertices.ARTIFACT_COORDINATES; |
10 | 50 | import static org.carlspring.strongbox.db.schema.Vertices.ARTIFACT_ID_GROUP; |
11 | 51 | import static org.carlspring.strongbox.db.schema.Vertices.ARTIFACT_TAG; |
12 | 52 | import static org.carlspring.strongbox.db.schema.Vertices.GENERIC_ARTIFACT_COORDINATES; |
13 | | -import static org.carlspring.strongbox.db.schema.Vertices.RAW_ARTIFACT_COORDINATES; |
14 | 53 | import static org.carlspring.strongbox.db.schema.Vertices.MAVEN_ARTIFACT_COORDINATES; |
15 | 54 | import static org.carlspring.strongbox.db.schema.Vertices.NPM_ARTIFACT_COORDINATES; |
16 | 55 | import static org.carlspring.strongbox.db.schema.Vertices.NUGET_ARTIFACT_COORDINATES; |
17 | 56 | import static org.carlspring.strongbox.db.schema.Vertices.PYPI_ARTIFACT_COORDINATES; |
| 57 | +import static org.carlspring.strongbox.db.schema.Vertices.RAW_ARTIFACT_COORDINATES; |
18 | 58 | import static org.carlspring.strongbox.db.schema.Vertices.REMOTE_ARTIFACT; |
19 | 59 | import static org.carlspring.strongbox.db.schema.Vertices.USER; |
20 | 60 | import static org.janusgraph.core.Multiplicity.MANY2ONE; |
@@ -228,78 +268,83 @@ private void applySchemaChanges(JanusGraphManagement jgm) |
228 | 268 | makeVertexLabelIfDoesNotExist(jgm, ARTIFACT_TAG); |
229 | 269 | makeVertexLabelIfDoesNotExist(jgm, ARTIFACT_ID_GROUP); |
230 | 270 | makeVertexLabelIfDoesNotExist(jgm, USER); |
| 271 | + makeVertexLabelIfDoesNotExist(jgm, ARTIFACT_ARCHIVE_LISTING); |
231 | 272 |
|
232 | 273 | // Edges |
233 | 274 | makeEdgeLabelIfDoesNotExist(jgm, ARTIFACT_HAS_ARTIFACT_COORDINATES, MANY2ONE); |
234 | 275 | makeEdgeLabelIfDoesNotExist(jgm, ARTIFACT_HAS_TAGS, MULTI); |
235 | 276 | makeEdgeLabelIfDoesNotExist(jgm, REMOTE_ARTIFACT_INHERIT_ARTIFACT, ONE2ONE); |
236 | 277 | makeEdgeLabelIfDoesNotExist(jgm, ARTIFACT_COORDINATES_INHERIT_GENERIC_ARTIFACT_COORDINATES, ONE2ONE); |
237 | 278 | makeEdgeLabelIfDoesNotExist(jgm, ARTIFACT_GROUP_HAS_ARTIFACTS, ONE2MANY); |
238 | | - |
| 279 | + makeEdgeLabelIfDoesNotExist(jgm, ARTIFACT_HAS_ARTIFACT_ARCHIVE_LISTING, MANY2ONE); |
| 280 | + |
239 | 281 | } |
240 | 282 |
|
241 | 283 | private void createProperties(JanusGraphManagement jgm) |
242 | 284 | { |
243 | | - makePropertyKeyIfDoesNotExist(jgm, "uuid", String.class).ifPresent(p -> jgm.setConsistency(p, ConsistencyModifier.LOCK)); |
244 | | - makePropertyKeyIfDoesNotExist(jgm, "storageId", String.class); |
245 | | - makePropertyKeyIfDoesNotExist(jgm, "repositoryId", String.class); |
246 | | - makePropertyKeyIfDoesNotExist(jgm, "name", String.class); |
247 | | - makePropertyKeyIfDoesNotExist(jgm, "lastUpdated", Long.class, Cardinality.SINGLE); |
248 | | - |
249 | | - //Artifact |
250 | | - makePropertyKeyIfDoesNotExist(jgm, "sizeInBytes", Long.class, Cardinality.SINGLE); |
251 | | - makePropertyKeyIfDoesNotExist(jgm, "lastUsed", Long.class, Cardinality.SINGLE); |
252 | | - makePropertyKeyIfDoesNotExist(jgm, "created", Long.class, Cardinality.SINGLE); |
253 | | - makePropertyKeyIfDoesNotExist(jgm, "downloadCount", Integer.class, Cardinality.SINGLE); |
254 | | - makePropertyKeyIfDoesNotExist(jgm, "filenames", String.class, Cardinality.SET); |
255 | | - makePropertyKeyIfDoesNotExist(jgm, "checksums", String.class, Cardinality.SET); |
256 | | - |
257 | | - //RemoteArtifact |
258 | | - makePropertyKeyIfDoesNotExist(jgm, "cached", Boolean.class, Cardinality.SINGLE); |
| 285 | + makePropertyKeyIfDoesNotExist(jgm, UUID, |
| 286 | + String.class).ifPresent(p -> jgm.setConsistency(p, ConsistencyModifier.LOCK)); |
| 287 | + makePropertyKeyIfDoesNotExist(jgm, STORAGE_ID, String.class); |
| 288 | + makePropertyKeyIfDoesNotExist(jgm, REPOSITORY_ID, String.class); |
| 289 | + makePropertyKeyIfDoesNotExist(jgm, NAME, String.class); |
| 290 | + makePropertyKeyIfDoesNotExist(jgm, LAST_UPDATED, Long.class, Cardinality.SINGLE); |
259 | 291 |
|
260 | | - //Common coordinates |
261 | | - makePropertyKeyIfDoesNotExist(jgm, "version", String.class, Cardinality.SINGLE); |
262 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.extension", String.class, Cardinality.SINGLE); |
263 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.name", String.class, Cardinality.SINGLE); |
264 | | - |
265 | | - //Maven |
266 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.groupId", String.class, Cardinality.SINGLE); |
267 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.artifactId", String.class, Cardinality.SINGLE); |
268 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.classifier", String.class, Cardinality.SINGLE); |
269 | | - |
270 | | - //Npm |
271 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.scope", String.class, Cardinality.SINGLE); |
272 | | - |
273 | | - //Nuget |
274 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.id", String.class, Cardinality.SINGLE); |
275 | | - |
276 | | - //P2 |
277 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.filename", String.class, Cardinality.SINGLE); |
278 | | - |
279 | | - //Pypi |
280 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.build", String.class, Cardinality.SINGLE); |
281 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.languageImplementationVersion", String.class, Cardinality.SINGLE); |
282 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.abi", String.class, Cardinality.SINGLE); |
283 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.platform", String.class, Cardinality.SINGLE); |
284 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.packaging", String.class, Cardinality.SINGLE); |
285 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.distribution", String.class, Cardinality.SINGLE); |
286 | | - |
287 | | - //Raw |
288 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.path", String.class, Cardinality.SINGLE); |
289 | | - |
290 | | - //Rpm |
291 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.base_name", String.class, Cardinality.SINGLE); |
292 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.release", String.class, Cardinality.SINGLE); |
293 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.architecture", String.class, Cardinality.SINGLE); |
294 | | - makePropertyKeyIfDoesNotExist(jgm, "coordinates.package_type", String.class, Cardinality.SINGLE); |
| 292 | + // Artifact |
| 293 | + makePropertyKeyIfDoesNotExist(jgm, SIZE_IN_BYTES, Long.class, Cardinality.SINGLE); |
| 294 | + makePropertyKeyIfDoesNotExist(jgm, LAST_USED, Long.class, Cardinality.SINGLE); |
| 295 | + makePropertyKeyIfDoesNotExist(jgm, CREATED, Long.class, Cardinality.SINGLE); |
| 296 | + makePropertyKeyIfDoesNotExist(jgm, DOWNLOAD_COUNT, Integer.class, Cardinality.SINGLE); |
| 297 | + makePropertyKeyIfDoesNotExist(jgm, CHECKSUMS, String.class, Cardinality.SET); |
| 298 | + |
| 299 | + // RemoteArtifact |
| 300 | + makePropertyKeyIfDoesNotExist(jgm, CACHED, Boolean.class, Cardinality.SINGLE); |
| 301 | + |
| 302 | + // Common coordinates |
| 303 | + makePropertyKeyIfDoesNotExist(jgm, VERSION, String.class, Cardinality.SINGLE); |
| 304 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_EXTENSION, String.class, Cardinality.SINGLE); |
| 305 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_NAME, String.class, Cardinality.SINGLE); |
| 306 | + |
| 307 | + // Maven |
| 308 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_GROUP_ID, String.class, Cardinality.SINGLE); |
| 309 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_ARTIFACT_ID, String.class, Cardinality.SINGLE); |
| 310 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_CLASSIFIER, String.class, Cardinality.SINGLE); |
| 311 | + |
| 312 | + // Npm |
| 313 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_SCOPE, String.class, Cardinality.SINGLE); |
| 314 | + |
| 315 | + // Nuget |
| 316 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_ID, String.class, Cardinality.SINGLE); |
| 317 | + |
| 318 | + // P2 |
| 319 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_FILENAME, String.class, Cardinality.SINGLE); |
295 | 320 |
|
296 | | - //User |
297 | | - makePropertyKeyIfDoesNotExist(jgm, "username", String.class, Cardinality.SINGLE); |
298 | | - makePropertyKeyIfDoesNotExist(jgm, "password", String.class, Cardinality.SINGLE); |
299 | | - makePropertyKeyIfDoesNotExist(jgm, "enabled", Boolean.class, Cardinality.SINGLE); |
300 | | - makePropertyKeyIfDoesNotExist(jgm, "roles", String.class, Cardinality.SET); |
301 | | - makePropertyKeyIfDoesNotExist(jgm, "securityTokenKey", String.class, Cardinality.SINGLE); |
302 | | - makePropertyKeyIfDoesNotExist(jgm, "sourceId", String.class, Cardinality.SINGLE); |
| 321 | + // Pypi |
| 322 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_BUILD, String.class, Cardinality.SINGLE); |
| 323 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_LANGUAGE_IMPLEMENTATION_VERSION, String.class, Cardinality.SINGLE); |
| 324 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_ABI, String.class, Cardinality.SINGLE); |
| 325 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_PLATFORM, String.class, Cardinality.SINGLE); |
| 326 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_PACKAGING, String.class, Cardinality.SINGLE); |
| 327 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_DISTRIBUTION, String.class, Cardinality.SINGLE); |
| 328 | + |
| 329 | + // Raw |
| 330 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_PATH, String.class, Cardinality.SINGLE); |
| 331 | + |
| 332 | + // Rpm |
| 333 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_BASE_NAME, String.class, Cardinality.SINGLE); |
| 334 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_RELEASE, String.class, Cardinality.SINGLE); |
| 335 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_ARCHITECTURE, String.class, Cardinality.SINGLE); |
| 336 | + makePropertyKeyIfDoesNotExist(jgm, COORDINATES_PACKAGE_TYPE, String.class, Cardinality.SINGLE); |
| 337 | + |
| 338 | + // User |
| 339 | + makePropertyKeyIfDoesNotExist(jgm, USERNAME, String.class, Cardinality.SINGLE); |
| 340 | + makePropertyKeyIfDoesNotExist(jgm, PASSWORD, String.class, Cardinality.SINGLE); |
| 341 | + makePropertyKeyIfDoesNotExist(jgm, ENABLED, Boolean.class, Cardinality.SINGLE); |
| 342 | + makePropertyKeyIfDoesNotExist(jgm, ROLES, String.class, Cardinality.SET); |
| 343 | + makePropertyKeyIfDoesNotExist(jgm, SECURITY_TOKEN_KEY, String.class, Cardinality.SINGLE); |
| 344 | + makePropertyKeyIfDoesNotExist(jgm, SOURCE_ID, String.class, Cardinality.SINGLE); |
| 345 | + |
| 346 | + // ArtifactArchiveListing |
| 347 | + makePropertyKeyIfDoesNotExist(jgm, FILE_NAME, String.class, Cardinality.SINGLE); |
303 | 348 | } |
304 | 349 |
|
305 | 350 | private Optional<String> buildIndexIfNecessary(final JanusGraphManagement jgm, |
|
0 commit comments