view src/MPipeline2/src/mpipeline/ltpdapreferences/RepositoryPrefGroup.java @ 33:5e7477b94d94 database-connection-manager

Add known repositories list to LTPDAPreferences
author Daniele Nicolodi <nicolodi@science.unitn.it>
date Mon, 05 Dec 2011 16:20:06 +0100
parents 5a49956df427
children
line wrap: on
line source

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mpipeline.ltpdapreferences;

import java.util.List;
import java.util.ArrayList;
import mpipeline.utils.MXMLUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;

/**
 *
 * @author hewitson
 */
public class RepositoryPrefGroup extends LTPDAPrefGroup {

  public static final int REPOSITORY_HOSTNAMES_CHANGED = 1;
  public static final int REPOSITORY_EXPIRY_CHANGED = 2;
  public static final int REPOSITORY_CACHE_PASSWORD_CHANGED = 3;
  public static final int REPOSITORY_MAX_CONNECTIONS_NUMBER_CHANGED = 4;
  
  private Integer expiry = 60;
  private Integer cachePassword = 2;
  private Integer maxConnectionsNumber = 10;
  private ArrayList<String[]> repositories = new ArrayList<String[]>(0);

  public RepositoryPrefGroup() {
  }
  
  public RepositoryPrefGroup(Node node, float version) {

    NamedNodeMap nmap = node.getAttributes();
    expiry = MXMLUtils.getIntegerFromNode("expiry", nmap, version, version);
    cachePassword = MXMLUtils.getIntegerFromNode("cachePassword", nmap, version, version);
    if (cachePassword < 0)
        cachePassword = 2;
    maxConnectionsNumber = MXMLUtils.getIntegerFromNode("maxConnectionsNumber", nmap, version, version);
    if (maxConnectionsNumber < 0)
        maxConnectionsNumber = 10;
    
    org.w3c.dom.NodeList nodes = node.getChildNodes();    
    for (int i = 0; i < nodes.getLength(); i++) {
      try {
        if (nodes.item(i).getNodeName().equals("Entry")) {
          NamedNodeMap map = nodes.item(i).getAttributes();
          String hostname = map.getNamedItem("hostname").getNodeValue();
          String database = map.getNamedItem("database").getNodeValue();
          String username = map.getNamedItem("username").getNodeValue();
          repositories.add(new String[]{hostname, database, username});
        }
      } catch (NullPointerException ex) {
        // continue
      }
    }
  }

  public void attachToDom(Document doc, Element tnode) {

    Element pnode = doc.createElement("Repository");
    pnode.setAttribute("expiry", ""+expiry);
    pnode.setAttribute("cachePassword", ""+cachePassword);
    pnode.setAttribute("maxConnectionsNumber", ""+maxConnectionsNumber);
    tnode.appendChild(pnode);
    for (String[] repo : repositories) {
      Element node = doc.createElement("Entry");
      node.setAttribute("hostname", repo[0]);
      node.setAttribute("database", repo[1]);
      node.setAttribute("username", repo[2]);
      pnode.appendChild(node);
    }
  }

  public Integer getExpiry() {
    return expiry;
  }

  public void setExpiry(Integer expiry) {
    this.expiry = expiry;
    setChanged();
    notifyObservers(REPOSITORY_EXPIRY_CHANGED);
  }
  
  public Integer getCachePassword() {
    return cachePassword;
  }

  public void setCachePassword(Integer value) {
    cachePassword = value;
    setChanged();
    notifyObservers(REPOSITORY_CACHE_PASSWORD_CHANGED);
  }

  public Integer getMaxConnectionsNumber() {
    return maxConnectionsNumber;
  }

  public void setMaxConnectionsNumber(Integer value) {
    maxConnectionsNumber = value;
    setChanged();
    notifyObservers(REPOSITORY_MAX_CONNECTIONS_NUMBER_CHANGED);
  }
  
  public ArrayList<String[]> getRepositories() {
    return repositories;
  }
  
  public void setRepositories(ArrayList<String[]> value) {
    repositories.clear();
    for (String[] repo : value) {
      repositories.add(repo);
    }
    setChanged();
  }
  
  public void display() {
    System.out.printf(
        "RepositoryPrefGroup(expiry=%d, cachePassword=%d, maxConnectionsNumber=%d)\n",
        expiry, cachePassword, maxConnectionsNumber);
  }
}