/* * RHQ Management Platform * Copyright (C) 2005-2011 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.core.domain.sync.entity; import java.io.Serializable; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Properties; import java.util.Set; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlValue; /** * A domain class representing the system settings of an RHQ installation. * * @author Lukas Krejci */ @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class SystemSettings extends AbstractExportedEntity { private static final long serialVersionUID = 2L; @XmlAccessorType(XmlAccessType.FIELD) public static class Entry implements Serializable { private static final long serialVersionUID = 1L; @XmlAttribute private String key; @XmlValue private String value; public Entry() { } public Entry(String key, String value) { this.key = key; this.value = value; } /** * @return the key */ public String getKey() { return key; } /** * @param key the key to set */ public void setKey(String key) { this.key = key; } /** * @return the value */ public String getValue() { return value; } /** * @param value the value to set */ public void setValue(String value) { this.value = value; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((key == null) ? 0 : key.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } Entry other = (Entry) obj; return key.equals(other.getKey()); } @Override public String toString() { return key + " = '" + value + "'"; } } @XmlElement(name = "entry") private Set<Entry> entries; public SystemSettings() { setReferencedEntityId(0); entries = new HashSet<Entry>(); } public SystemSettings(Map<String, String> settings) { this(); initFrom(settings); } public SystemSettings(Properties settings) { this(); HashMap<String, String> map = new HashMap<String, String>(); for (Map.Entry<Object, Object> entry : settings.entrySet()) { String key = entry.getKey().toString(); String value = entry.getValue().toString(); map.put(key, value); } initFrom(map); } public Map<String, String> toMap() { HashMap<String, String> settings = new HashMap<String, String>(); for(Entry e : entries) { settings.put(e.getKey(), e.getValue()); } return settings; } public Properties toProperties() { Properties ret = new Properties(); ret.putAll(toMap()); return ret; } public void initFrom(Map<String, String> settings) { entries.clear(); for(Map.Entry<String, String> e : settings.entrySet()) { entries.add(new Entry(e.getKey(), e.getValue())); } } @Override public String toString() { return "SystemSettings" + entries; } }