+ cpsValidator.validateNameCharacters(dataspaceName, schemaSetName);
+ final var yangTextSchemaSourceSet = yangTextSchemaSourceSetCache
+ .get(dataspaceName, schemaSetName);
+ return SchemaSet.builder().name(schemaSetName).dataspaceName(dataspaceName)
+ .moduleReferences(yangTextSchemaSourceSet.getModuleReferences()).build();
+ }
+
+ @Override
+ public Collection<SchemaSet> getSchemaSets(final String dataspaceName) {
+ cpsValidator.validateNameCharacters(dataspaceName);
+ final Collection<SchemaSet> schemaSets =
+ cpsModulePersistenceService.getSchemaSetsByDataspaceName(dataspaceName);
+ schemaSets.forEach(schemaSet -> setModuleReferences(schemaSet, dataspaceName));
+ return schemaSets;
+ }
+
+ @Override
+ @Transactional
+ public void deleteSchemaSet(final String dataspaceName, final String schemaSetName,
+ final CascadeDeleteAllowed cascadeDeleteAllowed) {
+ cpsValidator.validateNameCharacters(dataspaceName, schemaSetName);
+ final Collection<Anchor> anchors = cpsAnchorService.getAnchors(dataspaceName, schemaSetName);
+ if (!anchors.isEmpty() && isCascadeDeleteProhibited(cascadeDeleteAllowed)) {
+ throw new SchemaSetInUseException(dataspaceName, schemaSetName);
+ }
+ for (final Anchor anchor : anchors) {
+ cpsAnchorService.deleteAnchor(dataspaceName, anchor.getName());
+ }
+ cpsModulePersistenceService.deleteSchemaSet(dataspaceName, schemaSetName);
+ yangTextSchemaSourceSetCache.removeFromCache(dataspaceName, schemaSetName);
+ cpsModulePersistenceService.deleteUnusedYangResourceModules();
+ }
+
+ @Override
+ @Transactional
+ public void deleteSchemaSetsWithCascade(final String dataspaceName, final Collection<String> schemaSetNames) {
+ cpsValidator.validateNameCharacters(dataspaceName);
+ cpsValidator.validateNameCharacters(schemaSetNames);
+ final Collection<String> anchorNames = cpsAnchorService.getAnchors(dataspaceName, schemaSetNames)
+ .stream().map(Anchor::getName).collect(Collectors.toSet());
+ cpsAnchorService.deleteAnchors(dataspaceName, anchorNames);
+ cpsModulePersistenceService.deleteSchemaSets(dataspaceName, schemaSetNames);
+ cpsModulePersistenceService.deleteUnusedYangResourceModules();
+ for (final String schemaSetName : schemaSetNames) {
+ yangTextSchemaSourceSetCache.removeFromCache(dataspaceName, schemaSetName);
+ }
+ }
+
+ @Override
+ public void upgradeSchemaSetFromModules(final String dataspaceName, final String schemaSetName,
+ final Map<String, String> newModuleNameToContentMap,
+ final Collection<ModuleReference> allModuleReferences) {
+ cpsValidator.validateNameCharacters(dataspaceName, schemaSetName);
+ cpsModulePersistenceService.updateSchemaSetFromModules(dataspaceName, schemaSetName,
+ newModuleNameToContentMap, allModuleReferences);
+ yangTextSchemaSourceSetCache.removeFromCache(dataspaceName, schemaSetName);
+ }
+
+
+ @Override
+ public Collection<ModuleReference> getYangResourceModuleReferences(final String dataspaceName) {
+ cpsValidator.validateNameCharacters(dataspaceName);
+ return cpsModulePersistenceService.getYangResourceModuleReferences(dataspaceName);
+ }
+
+ @Override
+ public Collection<ModuleReference> getYangResourcesModuleReferences(final String dataspaceName,
+ final String anchorName) {
+ cpsValidator.validateNameCharacters(dataspaceName, anchorName);
+ return cpsModulePersistenceService.getYangResourceModuleReferences(dataspaceName, anchorName);
+ }
+
+ @Override
+ public Collection<ModuleDefinition> getModuleDefinitionsByAnchorName(final String dataspaceName,
+ final String anchorName) {
+ cpsValidator.validateNameCharacters(dataspaceName, anchorName);
+ return cpsModulePersistenceService.getYangResourceDefinitions(dataspaceName, anchorName);
+ }
+
+ @Override
+ public Collection<ModuleDefinition> getModuleDefinitionsByAnchorAndModule(final String dataspaceName,
+ final String anchorName,
+ final String moduleName,
+ final String moduleRevision) {
+ return cpsModulePersistenceService.getYangResourceDefinitionsByAnchorAndModule(dataspaceName, anchorName,
+ moduleName, moduleRevision);
+ }
+
+ @Override
+ public Collection<ModuleReference> identifyNewModuleReferences(
+ final Collection<ModuleReference> moduleReferencesToCheck) {
+ return cpsModulePersistenceService.identifyNewModuleReferences(moduleReferencesToCheck);
+ }
+
+ private boolean isCascadeDeleteProhibited(final CascadeDeleteAllowed cascadeDeleteAllowed) {
+ return CascadeDeleteAllowed.CASCADE_DELETE_PROHIBITED == cascadeDeleteAllowed;
+ }
+
+ private void setModuleReferences(final SchemaSet schemaSet, final String dataspaceName) {
+ final YangTextSchemaSourceSet yangTextSchemaSourceSet = yangTextSchemaSourceSetCache
+ .get(dataspaceName, schemaSet.getName());
+ schemaSet.setModuleReferences(yangTextSchemaSourceSet.getModuleReferences());