private boolean doesSchemaExist(final SchemaType schemaType, final String name) { boolean found; switch (schemaType) { case VIRTUAL: found = virSchemaDAO.find(name) != null; break; case DERIVED: found = derSchemaDAO.find(name) != null; break; case PLAIN: found = plainSchemaDAO.find(name) != null; break; default: found = false; } return found; }
derSchemaDAO.findByAnyTypeClasses(Collections.singletonList(anyTypeClass)).forEach((schema) -> { schema.setAnyTypeClass(null); }); DerSchema schema = derSchemaDAO.find(schemaName); if (schema == null || schema.getAnyTypeClass() != null) { LOG.debug("Invalid or already in use" + DerSchema.class.getSimpleName()
@PreAuthorize("hasRole('" + StandardEntitlement.SCHEMA_DELETE + "')") public void delete(final SchemaType schemaType, final String schemaKey) { if (!doesSchemaExist(schemaType, schemaKey)) { throw new NotFoundException(schemaType + "/" + schemaKey); } switch (schemaType) { case VIRTUAL: virSchemaDAO.delete(schemaKey); break; case DERIVED: derSchemaDAO.delete(schemaKey); break; case PLAIN: default: plainSchemaDAO.delete(schemaKey); } }
result = (classes.isEmpty() ? keyword == null ? derSchemaDAO.findAll() : derSchemaDAO.findByKeyword(keyword) : derSchemaDAO.findByAnyTypeClasses(classes)).stream(). map(schema -> (T) binder.getDerSchemaTO(schema.getKey())).collect(Collectors.toList()); break;
@PreAuthorize("hasRole('" + StandardEntitlement.SCHEMA_UPDATE + "')") public <T extends SchemaTO> void update(final SchemaType schemaType, final T schemaTO) { if (!doesSchemaExist(schemaType, schemaTO.getKey())) { throw new NotFoundException(schemaType + "/" + schemaTO.getKey()); } switch (schemaType) { case VIRTUAL: VirSchema virSchema = virSchemaDAO.find(schemaTO.getKey()); if (virSchema == null) { throw new NotFoundException("Virtual Schema '" + schemaTO.getKey() + "'"); } virSchemaDAO.save(binder.update((VirSchemaTO) schemaTO, virSchema)); break; case DERIVED: DerSchema derSchema = derSchemaDAO.find(schemaTO.getKey()); if (derSchema == null) { throw new NotFoundException("Derived schema '" + schemaTO.getKey() + "'"); } derSchemaDAO.save(binder.update((DerSchemaTO) schemaTO, derSchema)); break; case PLAIN: default: PlainSchema plainSchema = plainSchemaDAO.find(schemaTO.getKey()); if (plainSchema == null) { throw new NotFoundException("Schema '" + schemaTO.getKey() + "'"); } plainSchemaDAO.save(binder.update((PlainSchemaTO) schemaTO, plainSchema)); } }
@Override public void delete(final String key) { AnyTypeClass anyTypeClass = find(key); if (anyTypeClass == null) { return; } for (PlainSchema schema : plainSchemaDAO.findByAnyTypeClasses(Collections.singletonList(anyTypeClass))) { schema.setAnyTypeClass(null); } for (DerSchema schema : derSchemaDAO.findByAnyTypeClasses(Collections.singletonList(anyTypeClass))) { schema.setAnyTypeClass(null); } for (VirSchema schema : virSchemaDAO.findByAnyTypeClasses(Collections.singletonList(anyTypeClass))) { schema.setAnyTypeClass(null); } for (AnyType type : anyTypeDAO.findByTypeClass(anyTypeClass)) { type.getClasses().remove(anyTypeClass); } for (TypeExtension typeExt : groupDAO.findTypeExtensions(anyTypeClass)) { typeExt.getAuxClasses().remove(anyTypeClass); if (typeExt.getAuxClasses().isEmpty()) { typeExt.getGroup().getTypeExtensions().remove(typeExt); typeExt.setGroup(null); } } for (Provision provision : resourceDAO.findProvisionsByAuxClass(anyTypeClass)) { provision.getAuxClasses().remove(anyTypeClass); } entityManager().remove(anyTypeClass); }
@PreAuthorize("hasRole('" + StandardEntitlement.SCHEMA_CREATE + "')") @SuppressWarnings("unchecked") public <T extends SchemaTO> T create(final SchemaType schemaType, final T schemaTO) { if (StringUtils.isBlank(schemaTO.getKey())) { SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.RequiredValuesMissing); sce.getElements().add("Schema key"); throw sce; } if (doesSchemaExist(schemaType, schemaTO.getKey())) { throw new DuplicateException(schemaType + "/" + schemaTO.getKey()); } T created; switch (schemaType) { case VIRTUAL: VirSchema virSchema = virSchemaDAO.save(binder.create((VirSchemaTO) schemaTO)); created = (T) binder.getVirSchemaTO(virSchema.getKey()); break; case DERIVED: DerSchema derSchema = derSchemaDAO.save(binder.create((DerSchemaTO) schemaTO)); created = (T) binder.getDerSchemaTO(derSchema.getKey()); break; case PLAIN: default: PlainSchema plainSchema = plainSchemaDAO.save(binder.create((PlainSchemaTO) schemaTO)); created = (T) binder.getPlainSchemaTO(plainSchema.getKey()); } return created; }
DerSchema merged = derSchemaDAO.save(schema);
private SchemaType find(final String key) { Schema schema = plainSchemaDAO.find(key); if (schema == null) { schema = derSchemaDAO.find(key); if (schema == null) { schema = virSchemaDAO.find(key); if (schema == null) { return null; } else { return SchemaType.VIRTUAL; } } else { return SchemaType.DERIVED; } } else { return SchemaType.PLAIN; } }
@Override public List<A> findByDerAttrValue(final String schemaKey, final String value, final boolean ignoreCaseMatch) { DerSchema schema = derSchemaDAO.find(schemaKey); if (schema == null) { LOG.error("Invalid schema '{}'", schemaKey);
DerSchema schema = derSchemaDAO.find(recipientAttrName); if (schema == null) { LOG.warn("Ignoring non existing {} {}", DerSchema.class.getSimpleName(), recipientAttrName);
DerSchema derSchema = derSchemaDAO.find(key); if (derSchema == null) { VirSchema virSchema = virSchemaDAO.find(key);
@Override public DerSchemaTO getDerSchemaTO(final String key) { DerSchema schema = derSchemaDAO.find(key); if (schema == null) { throw new NotFoundException("Derived schema '" + key + "'"); } DerSchemaTO schemaTO = new DerSchemaTO(); schemaTO.setKey(schema.getKey()); schemaTO.setExpression(schema.getExpression()); labels(schema, schemaTO); schemaTO.setAnyTypeClass(schema.getAnyTypeClass() == null ? null : schema.getAnyTypeClass().getKey()); return schemaTO; }
DerSchema derSchema = derSchemaDAO.find(intAttrName.getSchemaName()); if (derSchema == null) { LOG.warn("Invalid DerSchema: {}", intAttrName.getSchemaName());