Mercurial > hg > ltpda
view src/MPipeline/src/mpipeline/Plist.java @ 30:317b5f447f3e database-connection-manager
Update workspaceBrowser
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Mon, 05 Dec 2011 16:20:06 +0100 |
parents | f0afece42f48 |
children |
line wrap: on
line source
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package mpipeline; import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * A class to capture a java representation of a plist - a list of parameter * objects. * * @author hewitson */ public class Plist implements Serializable { MBlock owner = null; ArrayList<Param> params = new ArrayList<Param>(); String name = ""; /** * Construct an empty plist. */ public Plist() { } /** * Construct an empty plist with the given name. * @param n */ public Plist(String n) { name = n; } /** * Construct a plist from the node of an XML DOM. * @param pn */ public Plist(Node pn){ // get name attribute NamedNodeMap nm = pn.getAttributes(); // get mcategory Node nameNode = nm.getNamedItem("name"); name = nameNode.getNodeValue(); // read child nodes NodeList cns = pn.getChildNodes(); for(int jj=0; jj<cns.getLength(); jj++){ Node cn = cns.item(jj); if (cn.getNodeName().equals("param")){ Param p = new Param(cn); params.add(p); } } } /** * Get the block that owns this plist. * @return */ public MBlock getOwner() { return owner; } /** * Set the block which owns this plist. * @param owner */ public void setOwner(MBlock owner) { this.owner = owner; } /** * Set the name of this plist. * @param n */ public void setName(String n) { name = n; } /** * Get the name of this plist. * @return */ public String getName() { return name; } /** * Convert this plist to a string. * @return */ @Override public String toString() { String out = "<html>-------------------<br>" + name + "<br>"; Iterator it = params.iterator(); while (it.hasNext()) { Param p = (Param) it.next(); out += " "; out += p.toString(); out += "<br>"; } out += "-------------------</html>"; return out; } /** * Add a parameter to the parameter list. * * @param p */ public void addParam(Param p) { // check against all others String newKey = checkParamKey(p.getKey()); p.setKey(newKey); params.add(p); } /** * Change the key of the parameter with the given key. * @param key * @param value */ public void setKeyForKey(String key, Object value) { Iterator it = params.iterator(); while (it.hasNext()) { Param p = (Param) it.next(); if (p.getKey().equals(key)) { p.setKey((String) value); } } } /** * Get a list of the param objects in the list. * @return */ public ArrayList<Param> getParams() { return params; } /** * Set the params list. * @param params */ public void setParams(ArrayList<Param> params) { this.params = params; } /** * Attach this plist to an XML DOM. * @param doc * @param node */ public void attachToDom(Document doc, Element node) { // start new document node Element docnode = doc.createElement("plist"); docnode.setAttribute("name", name); // attach each parameter Iterator it = params.iterator(); while(it.hasNext()){ Param p = (Param)it.next(); p.attachToDom(doc, docnode); } // attach to the DOM node.appendChild(docnode); } /** * Check a parameter key and return a valid key. * @param s * @return */ private String checkParamKey(String s) { Iterator it = params.iterator(); while (it.hasNext()) { Param pt = (Param) it.next(); if (pt.getKey().equals(s)) { s += "_1"; } } return s; } /** * Display this plist to standard output. */ public void display() { String header = "-------" + getName() + "--------"; String footer = "-"; while (footer.length() < header.length()) { footer += "-"; } System.out.println(header); Iterator it = params.iterator(); while (it.hasNext()) { Param p = (Param) it.next(); p.display(); } System.out.println(footer); } /** * Add a parameter to this plist. * @param key * @param val * @param type */ public void addParam(String key, Object val, String type) { key = checkParamKey(key); Param p = new Param(key, val, type); params.add(p); } /** * Return the value of the parameter with the given key. * * @param key * @return */ public Object findVal(String key) { Iterator it = params.iterator(); while (it.hasNext()) { Param p = (Param) it.next(); if (p.getKey().equals(key)) { return p.getVal(); } } return null; } /** * Set the value of the parameter with the given key. * @param key * @param val */ public void setValueForKey(String key, Object val) { Iterator it = params.iterator(); while (it.hasNext()) { Param p = (Param) it.next(); if (p.getKey().equals(key)) { p.setVal(val); } } } /** * Return the ith parameter. * @param i * @return */ public Param getParam(int i) { return params.get(i); } /** * Return the key of the parameter at index idx. * @param idx * @return */ public String getKey(int idx) { return params.get(idx).getKey(); } /** * Return the value of the parameter at index idx. * @param idx * @return */ public Object getVal(int idx) { return params.get(idx).getVal(); } /** * Return the number of parameters in this parameter list. * @return */ public int getNparams() { return params.size(); } /** * Remove the parameter with the given key. * @param pm */ public void removeParam(String pm) { Param prmv = null; Iterator it = params.iterator(); while (it.hasNext()) { Param p = (Param) it.next(); if (p.getKey().equals(pm)) { prmv = p; break; } } params.remove(prmv); } }