/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cismap.commons.preferences; import org.jdom.Attribute; import org.jdom.DataConversionException; import org.jdom.Element; import java.util.Iterator; import java.util.List; import java.util.TreeMap; /** * DOCUMENT ME! * * @author thorsten.hell@cismet.de * @version $Revision$, $Date$ */ public class CapabilitiesPreferences { //~ Static fields/initializers --------------------------------------------- static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(CapabilitiesPreferences.class); //~ Instance fields -------------------------------------------------------- private TreeMap<Integer, CapabilityLink> capabilities = new TreeMap<Integer, CapabilityLink>(); private CapabilitiesListTreeNode capabilitiesListTree; private boolean searchActivated; //~ Constructors ----------------------------------------------------------- /** * Creates a new CapabilitiesPreferences object. */ public CapabilitiesPreferences() { } /** * Creates a new instance of CapabilitiesPreferences. * * @param serverParent DOCUMENT ME! * @param localParent DOCUMENT ME! */ public CapabilitiesPreferences(final Element serverParent, final Element localParent) { final Element serverRoot = serverParent.getChild("cismapCapabilitiesPreferences"); // NOI18N final Element clientRoot = localParent.getChild("cismapCapabilitiesPreferences"); // NOI18N if (serverRoot != null) { final Attribute searchActive = serverRoot.getAttribute("searchPanelActivated"); if (searchActive != null) { try { searchActivated = searchActive.getBooleanValue(); } catch (DataConversionException e) { log.warn("Invalid value for attribute searchPanelActivated found", e); } } } if (clientRoot != null) { final Attribute searchActive = clientRoot.getAttribute("searchPanelActivated"); if (searchActive != null) { try { searchActivated = searchActive.getBooleanValue(); } catch (DataConversionException e) { log.warn("Invalid value for attribute searchPanelActivated found", e); } } final List caps = clientRoot.getChildren("capabilities"); // NOI18N final Iterator<Element> it = caps.iterator(); int counter = 0; while (it.hasNext()) { try { final Element elem = it.next(); final String type = elem.getAttribute("type").getValue(); // NOI18N final String link = elem.getTextTrim(); final String subparent = elem.getAttributeValue("subparent"); // NOI18N boolean active = false; try { active = elem.getAttribute("active").getBooleanValue(); } catch (Exception unhandled) { } // NOI18N boolean reverseAxisOrder = false; try { reverseAxisOrder = elem.getAttribute("reverseAxisOrder").getBooleanValue(); } catch (Exception unhandled) { } // NOI18N capabilities.put(new Integer(counter++), new CapabilityLink(type, link, reverseAxisOrder, active, subparent)); } catch (Throwable t) { log.warn("Error while reading the CapabilityPreferences.", t); // NOI18N } } } // capabilitiesList auslesen und in Baum speichern capabilitiesListTree = createCapabilitiesListTreeNode(null, serverRoot); } //~ Methods ---------------------------------------------------------------- /** * Erzeugt rekursiv aus einem JDom-Element einen CapabilitiesList-Knoten samt CapabilitiesList und Unterknoten. * * @param nodetitle Title des CapabilitiesList-Knotens * @param element JDom-Element * * @return CapabilitiesList-Knoten */ private static CapabilitiesListTreeNode createCapabilitiesListTreeNode(final String nodetitle, final Element element) { final CapabilitiesListTreeNode node = new CapabilitiesListTreeNode(); int listCounter = 0; node.setTitle(nodetitle); final TreeMap<Integer, CapabilityLink> capabilitiesList = new TreeMap<Integer, CapabilityLink>(); for (final Element elem : (List<Element>)element.getChildren("capabilitiesList")) { // NOI18N try { final String type = elem.getAttribute("type").getValue(); // NOI18N final String title = elem.getAttribute("titlestring").getValue(); // NOI18N boolean reverseAxisOrder = false; final Attribute reverseAxisOrderElement = elem.getAttribute("reverseAxisOrder"); if (reverseAxisOrderElement != null) { reverseAxisOrder = reverseAxisOrderElement.getBooleanValue(); } if (type.equals(CapabilityLink.MENU)) { // Unterknoten erzeugen node.addSubnode(createCapabilitiesListTreeNode(title, elem)); } else { // CapabilitiesList-Eintrag erzeugen final String link = elem.getTextTrim(); final String subparent = elem.getAttributeValue("subparent"); // NOI18N capabilitiesList.put(new Integer(listCounter++), new CapabilityLink(type, link, reverseAxisOrder, title, subparent)); } } catch (Throwable t) { log.warn("Error while reading the CapabilityListPreferences.", t); // NOI18N } } // CapabilitiesList node.setCapabilitiesList(capabilitiesList); // fertig return node; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public TreeMap<Integer, CapabilityLink> getCapabilities() { return capabilities; } /** * DOCUMENT ME! * * @param capabilities DOCUMENT ME! */ public void setCapabilities(final TreeMap<Integer, CapabilityLink> capabilities) { this.capabilities = capabilities; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public CapabilitiesListTreeNode getCapabilitiesListTree() { return capabilitiesListTree; } /** * DOCUMENT ME! * * @return the searchActivated */ public boolean isSearchActivated() { return searchActivated; } /** * DOCUMENT ME! * * @param searchActivated the searchActivated to set */ public void setSearchActivated(final boolean searchActivated) { this.searchActivated = searchActivated; } }