Set some attribute properties. (execute DbPutDeviceAttributeProperty2 on DB device)

@param deviceName
The device name
@param attributeName
The attribute name
@param properties
The properties names and values.
@throws DevFailed
197427
@Override
    public void setAttributeProperties(final String deviceName, final String attributeName,
            final Map<String, String[]> properties) throws DevFailed {
        cache.setAttributeProperties(deviceName, attributeName, properties);
    }
234352
public void removeAttributeProperties(final String attributeName) throws DevFailed {
        final AttributeImpl attr = AttributeGetterSetter.getAttribute(attributeName, device.getAttributeList());
        attr.removeProperties();
    }
1125556
public void write_attribute(final DeviceProxy deviceProxy,
                                final DeviceAttribute[] deviceAttributes) throws DevFailed {
		checkIfTango(deviceProxy, "write_attribute");
		build_connection(deviceProxy);

		//
		// Manage Access control
		//
		if (deviceProxy.access == TangoConst.ACCESS_READ) {
	    	// ping the device to throw execption
	    	// if failed (for reconnection)
	    	ping(deviceProxy);

        	throwNotAuthorizedException(deviceProxy.devname + ".write_attribute()",
                	"DeviceProxy.write_attribute()");
		}
		// Build an AttributeValue IDL object array
        AttributeValue_4[] attributeValues_4 = new AttributeValue_4[0];
		AttributeValue[] attributeValues = new AttributeValue[0];

		if (deviceProxy.device_5 != null || deviceProxy.device_4 != null) {
	    	attributeValues_4 = new AttributeValue_4[deviceAttributes.length];
	    	for (int i=0 ; i<deviceAttributes.length ; i++) {
                attributeValues_4[i] = deviceAttributes[i].getAttributeValueObject_4();
	    	}
		} else {
	    	attributeValues = new AttributeValue[deviceAttributes.length];
	    	for (int i = 0; i < deviceAttributes.length; i++) {
                attributeValues[i] = deviceAttributes[i].getAttributeValueObject_2();
	    	}
		}
		boolean done = false;
		final int retries = deviceProxy.transparent_reconnection ? 2 : 1;
		for (int i = 0; i < retries && !done; i++) {
	    	// write attributes on device server
	    	try {
				if (deviceProxy.device_5 != null) {
		    		deviceProxy.device_5.write_attributes_4(
                            attributeValues_4, DevLockManager.getInstance().getClntIdent());
				} else
                if (deviceProxy.device_4 != null) {
		    		deviceProxy.device_4.write_attributes_4(
                            attributeValues_4, DevLockManager.getInstance().getClntIdent());
				} else
                if (deviceProxy.device_3 != null) {
		    		deviceProxy.device_3.write_attributes_3(attributeValues);
				} else {
		    		deviceProxy.device.write_attributes(attributeValues);
				}
				done = true;
	    	} catch (final DevFailed e) {
				// Except.print_exception(e);
				throw e;
	    	} catch (final MultiDevFailed e) {
				throw new NamedDevFailedList(e, name(deviceProxy),
						"DeviceProxy.write_attribute", "MultiDevFailed");
	    	} catch (final Exception e) {
				manageExceptionReconnection(deviceProxy, retries, i, e,
					this.getClass() + ".DeviceProxy.write_attribute");
	    	}
		} // End of for ( ; ; )
   	}
534318
public void delete_device_attribute_property(String devname, String attname, String[] propnames) throws DevFailed {
		databaseDAO.delete_device_attribute_property(this, devname, attname, propnames);
	}
752491
public String getAttributePropertyFromDB(final String attributeName, final String propertyName) throws DevFailed {
        xlogger.entry(propertyName);
        String[] result = new String[] {};
        final Map<String, String[]> prop = DatabaseFactory.getDatabase().getAttributeProperties(deviceName,
                attributeName);
        if (prop.get(propertyName) != null) {
            // get value
            result = prop.get(propertyName);
            logger.debug(attributeName + " property {} is {}", propertyName, Arrays.toString(result));
        }
        xlogger.exit();
        String single = "";
        if (result.length == 1 && !result[0].isEmpty()) {
            single = result[0];
        }
        return single;
    }
911868
public DbDatum[] get_device_property(String name, DbDatum[] properties) throws DevFailed {
		return databaseDAO.get_device_property(this, name, properties);
	}
421582
private Map<String, String> getAttributePropertiesFromDBSingle(final String attributeName) throws DevFailed {
        xlogger.entry(attributeName);
        final Map<String, String> result = new CaseInsensitiveMap<String>();
        final Map<String, String[]> prop = DatabaseFactory.getDatabase().getAttributeProperties(deviceName,
                attributeName);
        for (final Entry<String, String[]> entry : prop.entrySet()) {
            final String name = entry.getKey();
            final String[] value = entry.getValue();
            if (value.length > 0) {
                result.put(name, value[0]);
            } else {
                result.put(name, "");
            }
        }
        xlogger.exit();
        return result;
    }
1087823
public void delete_attribute_property(String attname, String propname) throws DevFailed {
        deviceProxyDAO.delete_attribute_property(this, attname, propname);
    }
646065
public DbDatum get_device_property(String name, String propname) throws DevFailed {
		return databaseDAO.get_device_property(this, name, propname);
	}
951827
public void put_property(Database database, String name, DbDatum[] properties)
            throws DevFailed {
        if (!database.isAccess_checked()) checkAccess(database);

        String[] array = dbdatum2StringArray(name, properties);
        DeviceData argIn = new DeviceData();
        argIn.insert(array);
        command_inout(database, "DbPutProperty", argIn);
    }
1010532
public static void setDevicePipePropertiesInDB(final String deviceName, final String pipeName,
                                                   final Map<String, String[]> properties) throws DevFailed {
        LOGGER.debug("update pipe {} device properties {} in DB ", pipeName, properties.keySet());
        DatabaseFactory.getDatabase().setDevicePipeProperties(deviceName, pipeName, properties);
    }
939082
public void delete_device_property(String name, DbDatum[] properties) throws DevFailed {
		databaseDAO.delete_device_property(this, name, properties);
	}
70848
public DbPipe getDevicePipeProperties(String deviceName, String pipeName) throws DevFailed {
        return databaseDAO.getDevicePipeProperties(this, deviceName, pipeName);
    }
614271
public DbDatum[] get_device_property(Database database, String name, DbDatum[] properties)
            throws DevFailed {
        String type = "Device";    //	Device object type
        return get_obj_property(database, name, type, properties);
    }
1252198
public DbAttribute[] get_device_attribute_property(Database database, String deviceName, String[] attnames)
            throws DevFailed {
        if (!database.isAccess_checked()) checkAccess(database);

        DeviceData argIn = new DeviceData();
        DeviceData argOut;
        int mode = 2;

        try {
            //	value is an array
            argIn.insert(ApiUtil.toStringArray(deviceName, attnames));
            argOut = command_inout(database, "DbGetDeviceAttributeProperty2", argIn);
        } catch (DevFailed e) {
            if (e.errors[0].reason.equals("API_CommandNotFound")) {
                //	Value is just one element
                argOut = command_inout(database, "DbGetDeviceAttributeProperty", argIn);
                mode = 1;
            } else
                throw e;
        }
        return ApiUtil.toDbAttributeArray(argOut.extractStringArray(), mode);
    }
2410
public void delete_device_property(String name, String propname) throws DevFailed {
		databaseDAO.delete_device_property(this, name, propname);
	}
648219
@Override
    public void setClassProperties(final String name, final Map<String, String[]> properties) throws DevFailed {
        cache.setClassProperties(name, properties);
    }