@Override public VirSchemaTO getVirSchemaTO(final String key) { VirSchema schema = virSchemaDAO.find(key); if (schema == null) { throw new NotFoundException("Virtual Schema '" + key + "'"); } VirSchemaTO schemaTO = new VirSchemaTO(); schemaTO.setKey(schema.getKey()); schemaTO.setExtAttrName(schema.getExtAttrName()); schemaTO.setReadonly(schema.isReadonly()); labels(schema, schemaTO); schemaTO.setAnyTypeClass(schema.getAnyTypeClass() == null ? null : schema.getAnyTypeClass().getKey()); schemaTO.setResource(schema.getProvision().getResource().getKey()); schemaTO.setAnyType(schema.getProvision().getAnyType().getKey()); return schemaTO; } }
@Override public void delete(final String key) { VirSchema schema = find(key); if (schema == null) { return; } schema.getLabels().forEach(label -> label.setSchema(null)); resourceDAO.deleteMapping(key); if (schema.getAnyTypeClass() != null) { schema.getAnyTypeClass().getVirSchemas().remove(schema); } entityManager().remove(schema); } }
private VirSchema fill(final VirSchema schema, final VirSchemaTO schemaTO) { schema.setKey(schemaTO.getKey()); schema.setExtAttrName(schemaTO.getExtAttrName()); schema.setReadonly(schema.isReadonly()); && (schema.getAnyTypeClass() == null || !schemaTO.getAnyTypeClass().equals(schema.getAnyTypeClass().getKey()))) { } else { anyTypeClass.add(schema); schema.setAnyTypeClass(anyTypeClass); } else if (schemaTO.getAnyTypeClass() == null && schema.getAnyTypeClass() != null) { schema.getAnyTypeClass().getVirSchemas().remove(schema); schema.setAnyTypeClass(null); throw sce; schema.setProvision(provision);
if (ownedResources.contains(schema.getProvision().getResource())) { VirAttrCacheValue virAttrCacheValue = virAttrCache.get(any.getType().getKey(), any.getKey(), schema.getKey()); } else if (schema.getProvision().getAnyType().equals(any.getType())) { Set<VirSchema> schemasToRead = toRead.get(schema.getProvision()); if (schemasToRead == null) { schemasToRead = new HashSet<>(); toRead.put(schema.getProvision(), schemasToRead); schema, any, schema.getProvision().getResource()); linkingMappingItems.add(connObjectKeyItem.get()); linkingMappingItems.addAll(schemasToRead.stream(). map(schema -> schema.asLinkingMappingItem()).collect(Collectors.toSet())); } else { schemasToRead.forEach(schema -> { Attribute attr = connectorObject.getAttributeByName(schema.getExtAttrName()); if (attr != null) { VirAttrCacheValue virAttrCacheValue = new VirAttrCacheValue(); virAttrCacheValue.setValues(attr.getValue()); virAttrCache.put( any.getType().getKey(), any.getKey(), schema.getKey(), virAttrCacheValue); LOG.debug("Values for {} set in cache: {}", schema, virAttrCacheValue);
@Override public String getIntAttrName() { return virSchema.getKey(); }
if (schema == null) { LOG.warn("Ignoring invalid {} {}", VirSchema.class.getSimpleName(), vAttr.getSchema()); } else if (schema.isReadonly()) { LOG.warn("Ignoring read-only {} {}", VirSchema.class.getSimpleName(), vAttr.getSchema()); } else if (anyUtilsFactory.getInstance(any).dao(). findAllowedSchemas(any, VirSchema.class).contains(schema) && virtualResources.contains(schema.getProvision().getResource().getKey())) { Set<Attribute> values = vAttrMap.get(schema.getProvision().getResource().getKey()); if (values == null) { values = new HashSet<>(); vAttrMap.put(schema.getProvision().getResource().getKey(), values); values.add(AttributeBuilder.build(schema.getExtAttrName(), vAttr.getValues())); if (!propByRes.contains(ResourceOperation.CREATE, schema.getProvision().getResource().getKey())) { propByRes.add(ResourceOperation.UPDATE, schema.getProvision().getResource().getKey()); schema.getProvision().getResource(), schema, any);
Attribute attr = processed.getObject().getAttributeByName(virSchema.getExtAttrName()); for (String anyKey : keys) { if (attr == null) { provision.getAnyType().getKey(), anyKey, virSchema.getKey()); } else { VirAttrCacheValue cacheValue = new VirAttrCacheValue(); provision.getAnyType().getKey(), anyKey, virSchema.getKey(), cacheValue);
provisionTO.getVirSchemas().add(virSchema.getKey()); MappingItem linkingMappingItem = virSchema.asLinkingMappingItem();
virSchemaDAO.delete(schema.getKey()); VirSchema.class.getSimpleName(), schemaName); } else { schema.setProvision(provision); if (resourceTO.getProvision(provision.getAnyType().getKey()) == null) { virSchemaDAO.findByProvision(provision).forEach(schema -> { virSchemaDAO.delete(schema.getKey()); });
map(virSchema -> virSchema.asLinkingMappingItem()).collect(Collectors.toSet()); Iterator<MappingItem> mapItems = new IteratorChain<>( provision.getMapping().getItems().iterator(),
schema.setAnyTypeClass(null); }); anyTypeClassTO.getVirSchemas().forEach(schemaName -> { VirSchema schema = virSchemaDAO.find(schemaName); if (schema == null || schema.getAnyTypeClass() != null) { LOG.debug("Invalid or already in use" + VirSchema.class.getSimpleName() + "{}, ignoring...", schemaName);
@Override public AnyTypeClass save(final AnyTypeClass anyTypeClass) { AnyTypeClass merge = entityManager().merge(anyTypeClass); for (PlainSchema schema : merge.getPlainSchemas()) { schema.setAnyTypeClass(merge); } for (DerSchema schema : merge.getDerSchemas()) { schema.setAnyTypeClass(merge); } for (VirSchema schema : merge.getVirSchemas()) { schema.setAnyTypeClass(merge); } return merge; }
@Override public Mapping getMapping() { return virSchema.getProvision().getMapping(); }
@Override public String getExtAttrName() { return virSchema.getExtAttrName(); }
@Override public MappingPurpose getPurpose() { return virSchema.isReadonly() ? MappingPurpose.PULL : MappingPurpose.BOTH; }
: virSchemaDAO.findByKeyword(keyword) : virSchemaDAO.findByAnyTypeClasses(classes)).stream(). map(schema -> (T) binder.getVirSchemaTO(schema.getKey())).collect(Collectors.toList()); break;
map(virSchema -> virSchema.asLinkingMappingItem()).collect(Collectors.toSet()); Iterator<MappingItem> mapItems = new IteratorChain<>( init.getRight().getMapping().getItems().iterator(),
@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); }
if (schema != null && schema.getProvision().equals(item.getMapping().getProvision())) { invalidMapping.getElements().add( "No need to map virtual schema on linking resource");
protected void fillTO( final AnyTO anyTO, final String realmFullPath, final Collection<? extends AnyTypeClass> auxClasses, final Collection<? extends PlainAttr<?>> plainAttrs, final Map<DerSchema, String> derAttrs, final Map<VirSchema, List<String>> virAttrs, final Collection<? extends ExternalResource> resources, final boolean details) { anyTO.setRealm(realmFullPath); anyTO.getAuxClasses().addAll(auxClasses.stream().map(Entity::getKey).collect(Collectors.toList())); plainAttrs.forEach(plainAttr -> { anyTO.getPlainAttrs().add(new AttrTO.Builder(). schema(plainAttr.getSchema().getKey()). values(plainAttr.getValuesAsStrings()).build()); }); derAttrs.forEach((schema, value) -> { anyTO.getDerAttrs().add(new AttrTO.Builder().schema(schema.getKey()).value(value).build()); }); virAttrs.forEach((schema, values) -> { anyTO.getVirAttrs().add(new AttrTO.Builder().schema(schema.getKey()).values(values).build()); }); anyTO.getResources().addAll(resources.stream().map(Entity::getKey).collect(Collectors.toSet())); }