@Override protected void storeChilds(String deviceDN, Device device) throws NamingException { super.storeChilds(deviceDN, device); if (!(device instanceof ArchiveDevice)) return; ArchiveDevice arcDev = (ArchiveDevice) device; for (Entity entity : Entity.values()) createSubcontext( dnOf("dcmEntity", entity.toString(), deviceDN), storeTo(arcDev.getAttributeFilter(entity), entity, new BasicAttributes(true))); }
@Override protected void mergeChilds(Device prev, Device device, String deviceDN) throws NamingException { super.mergeChilds(prev, device, deviceDN); if (!(prev instanceof ArchiveDevice && device instanceof ArchiveDevice)) return; ArchiveDevice aa = (ArchiveDevice) prev; ArchiveDevice bb = (ArchiveDevice) device; for (Entity entity : Entity.values()) modifyAttributes( dnOf("dcmEntity", entity.toString(), deviceDN), storeDiffs( aa.getAttributeFilter(entity), bb.getAttributeFilter(entity), new ArrayList<ModificationItem>())); }
private static Attributes storeTo(AttributeFilter filter, Entity entity, BasicAttributes attrs) { attrs.put("objectclass", "dcmAttributeFilter"); attrs.put("dcmEntity", entity.name()); attrs.put(tagsAttr("dcmTag", filter.getSelection())); storeNotNull(attrs, "dcmCustomAttribute1", filter.getCustomAttribute1()); storeNotNull(attrs, "dcmCustomAttribute2", filter.getCustomAttribute2()); storeNotNull(attrs, "dcmCustomAttribute3", filter.getCustomAttribute3()); return attrs; }
private void loadAttributeFilters(ArchiveDevice device, String deviceDN) throws NamingException { NamingEnumeration<SearchResult> ne = search(deviceDN, "(objectclass=dcmAttributeFilter)"); try { while (ne.hasMore()) { SearchResult sr = ne.next(); Attributes attrs = sr.getAttributes(); AttributeFilter filter = new AttributeFilter(tags(attrs.get("dcmTag"))); filter.setCustomAttribute1(valueSelector(attrs.get("dcmCustomAttribute1"))); filter.setCustomAttribute2(valueSelector(attrs.get("dcmCustomAttribute2"))); filter.setCustomAttribute3(valueSelector(attrs.get("dcmCustomAttribute3"))); device.setAttributeFilter(Entity.valueOf(stringValue(attrs.get("dcmEntity"))), filter); } } finally { safeClose(ne); } }