// Path: src/com/smartmarmot/dbforbix/zabbix/ZabbixItem.java
// public final class ZabbixItem implements Serializable {
// 
// 	public static int ZBX_STATE_NORMAL=0;
// 	public static int ZBX_STATE_NOTSUPPORTED=1;
// 	
// 	private static final long	serialVersionUID	= 1374520722821228793L;
// 
// 	private String					key;
// 	private String					value;
// 	private String					host;
// 	private int						state;
// 	private Long					clock;
// 	private String					lastlogsize;
// 	private IConfigurationElement 	configurationElement;
// 
// 
// 	//main case
// 	public ZabbixItem(String key, String value, int state, Long clock, IConfigurationElement configurationElement) {
// 		if (key == null || "".equals(key.trim()))
// 			throw new IllegalArgumentException("empty key");
// 		if (value == null)
// 			throw new IllegalArgumentException("null value for key '" + key + "'");
// 		if (configurationElement == null)
// 			throw new IllegalArgumentException("null configuration element for '" + host + "." + key + "'");
// 
// 		this.key = key;
// 		this.value = value;
// 		this.clock = clock;
// 		this.host=configurationElement.getConfigurationItem().getHost();
// 		this.setConfigurationElement(configurationElement);
// 		this.setState(state);
// 	}
// 
// 	
// 	//For persistence usage
// 	public ZabbixItem(String host, String key, String value, Long clock) {
// 		if (key == null || "".equals(key.trim()))
// 			throw new IllegalArgumentException("empty key");
// 		if (value == null)
// 			throw new IllegalArgumentException("null value for key '" + key + "'");
// 		if (configurationElement == null)
// 			throw new IllegalArgumentException("null configuration element for '" + host + "." + key + "'");
// 
// 		this.key = key;
// 		this.value = value;
// 		this.clock = clock;
// 		this.host=host;
// 		this.configurationElement=null;
// 	}
// 
// 
// 
// 
// 	/**
// 	 * @return The current hostname for this item.
// 	 */
// 	public String getHost() {
// 		return host;
// 	}
// 
// 	/**
// 	 * @return The monitoring server's key for this item.
// 	 */
// 	public String getKey() {
// 		return key;
// 	}
// 
// 	/**
// 	 * @return The current value for this item.
// 	 */
// 	public String getValue() {
// 		return value;
// 	}
// 	
// 	public Long getClock() {
// 		return clock;
// 	}
// 
// 	
// 	public String getLastlogsize() {
// 		return lastlogsize;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return getHost() + " " + getKey() + ": " + getValue();
// 	}
// 
// 	public IConfigurationElement getConfigurationElement() {
// 		return configurationElement;
// 	}
// 
// 	public void setConfigurationElement(IConfigurationElement configurationElement) {	
// 		this.configurationElement = configurationElement;
// 	}
// 
// 
// 	public int getState() {
// 		return state;
// 	}
// 
// 
// 	public void setState(int state) {
// 		this.state = state;
// 	}
// 	
// 	
// 	public void setValue(String value) {
// 		this.value = value;
// 	}
// }


import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;
import com.smartmarmot.dbforbix.zabbix.ZabbixItem;

	 * @return byte[] containing the encoded data
	 */
	private byte[] encodeString(String data) {
		try {
			return data.getBytes("ASCII");
		} catch (UnsupportedEncodingException e) {
			return data.getBytes();
		}
	}
	
    private String base64Encode(String data) {
		return new String(Base64.encodeBase64(encodeString(data)));
	}

	private String buildJSonString(String host, String item, String value, String clock) {
		 String head = "<req><host>" + base64Encode(host) + "</host><key>";
		 final StringBuilder message = new StringBuilder(head);
	       
	        message.append(base64Encode(item));
	        message.append(data);
	       
	        message.append(base64Encode(value == null ? "" : value));
	        message.append(time);
	        message.append(base64Encode(clock));
	        message.append(tail);

		return message.toString();
	}

	@Override

// Path: src/com/smartmarmot/dbforbix/zabbix/ZabbixItem.java
// public final class ZabbixItem implements Serializable {
// 
// 	public static int ZBX_STATE_NORMAL=0;
// 	public static int ZBX_STATE_NOTSUPPORTED=1;
// 	
// 	private static final long	serialVersionUID	= 1374520722821228793L;
// 
// 	private String					key;
// 	private String					value;
// 	private String					host;
// 	private int						state;
// 	private Long					clock;
// 	private String					lastlogsize;
// 	private IConfigurationElement 	configurationElement;
// 
// 
// 	//main case
// 	public ZabbixItem(String key, String value, int state, Long clock, IConfigurationElement configurationElement) {
// 		if (key == null || "".equals(key.trim()))
// 			throw new IllegalArgumentException("empty key");
// 		if (value == null)
// 			throw new IllegalArgumentException("null value for key '" + key + "'");
// 		if (configurationElement == null)
// 			throw new IllegalArgumentException("null configuration element for '" + host + "." + key + "'");
// 
// 		this.key = key;
// 		this.value = value;
// 		this.clock = clock;
// 		this.host=configurationElement.getConfigurationItem().getHost();
// 		this.setConfigurationElement(configurationElement);
// 		this.setState(state);
// 	}
// 
// 	
// 	//For persistence usage
// 	public ZabbixItem(String host, String key, String value, Long clock) {
// 		if (key == null || "".equals(key.trim()))
// 			throw new IllegalArgumentException("empty key");
// 		if (value == null)
// 			throw new IllegalArgumentException("null value for key '" + key + "'");
// 		if (configurationElement == null)
// 			throw new IllegalArgumentException("null configuration element for '" + host + "." + key + "'");
// 
// 		this.key = key;
// 		this.value = value;
// 		this.clock = clock;
// 		this.host=host;
// 		this.configurationElement=null;
// 	}
// 
// 
// 
// 
// 	/**
// 	 * @return The current hostname for this item.
// 	 */
// 	public String getHost() {
// 		return host;
// 	}
// 
// 	/**
// 	 * @return The monitoring server's key for this item.
// 	 */
// 	public String getKey() {
// 		return key;
// 	}
// 
// 	/**
// 	 * @return The current value for this item.
// 	 */
// 	public String getValue() {
// 		return value;
// 	}
// 	
// 	public Long getClock() {
// 		return clock;
// 	}
// 
// 	
// 	public String getLastlogsize() {
// 		return lastlogsize;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return getHost() + " " + getKey() + ": " + getValue();
// 	}
// 
// 	public IConfigurationElement getConfigurationElement() {
// 		return configurationElement;
// 	}
// 
// 	public void setConfigurationElement(IConfigurationElement configurationElement) {	
// 		this.configurationElement = configurationElement;
// 	}
// 
// 
// 	public int getState() {
// 		return state;
// 	}
// 
// 
// 	public void setState(int state) {
// 		this.state = state;
// 	}
// 	
// 	
// 	public void setValue(String value) {
// 		this.value = value;
// 	}
// }


// Path: src/com/smartmarmot/dbforbix/zabbix/protocol/Sender18.java
import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;
import com.smartmarmot.dbforbix.zabbix.ZabbixItem;

	 * @return byte[] containing the encoded data
	 */
	private byte[] encodeString(String data) {
		try {
			return data.getBytes("ASCII");
		} catch (UnsupportedEncodingException e) {
			return data.getBytes();
		}
	}
	
    private String base64Encode(String data) {
		return new String(Base64.encodeBase64(encodeString(data)));
	}

	private String buildJSonString(String host, String item, String value, String clock) {
		 String head = "<req><host>" + base64Encode(host) + "</host><key>";
		 final StringBuilder message = new StringBuilder(head);
	       
	        message.append(base64Encode(item));
	        message.append(data);
	       
	        message.append(base64Encode(value == null ? "" : value));
	        message.append(time);
	        message.append(base64Encode(clock));
	        message.append(tail);

		return message.toString();
	}

	@Override

	public String encodeItem(ZabbixItem item) {
