org.quickserver.net.qsadmin.gui.PropertieSet.java Source code

Java tutorial

Introduction

Here is the source code for org.quickserver.net.qsadmin.gui.PropertieSet.java

Source

/*
 * This file is part of the QuickServer library 
 * Copyright (C) QuickServer.org
 *
 * Use, modification, copying and distribution of this software is subject to
 * the terms and conditions of the GNU Lesser General Public License. 
 * You should have received a copy of the GNU LGP License along with this 
 * library; if not, you can download a copy from <http://www.quickserver.org/>.
 *
 * For questions, suggestions, bug-reports, enhancement-requests etc.
 * visit http://www.quickserver.org
 *
 */

package org.quickserver.net.qsadmin.gui;

import java.util.*;
import java.net.URL;
import java.io.InputStream;
import org.quickserver.util.MyString;
import java.util.logging.*;
import org.apache.commons.digester3.Digester;

/**
 * A Simple class that Stores PropertieSet
 * @author Akshathkumar Shetty
 */
public class PropertieSet {
    private static Logger logger = Logger.getLogger(PropertieSet.class.getName());

    //stores commands from xml file
    private List list;
    private Map map;

    public PropertieSet() {
        list = new ArrayList();
        map = new HashMap();
    }

    public List getList() {
        return list;
    }

    public Map getMap() {
        return map;
    }

    public void addCommand(Propertie p) {
        list.add(p);
        map.put(p.getCommand(), p);
    }

    /* Returns SimpleCommandSet containing simple commands */
    public static PropertieSet getPropertieSet() {
        PropertieSet ps = null;
        try {
            Digester digester = new Digester();
            digester.setValidating(false);
            //digester.setNamespaceAware(true);
            //String xsd = "" + new File("quickserver_config.xsd").toURI();
            //digester.setSchema(xsd);

            //nested QSAdminServer tag
            String mainTag = "propertie-set";
            String subTag = "propertie";
            digester.addObjectCreate(mainTag, PropertieSet.class);
            digester.addObjectCreate(mainTag + "/" + subTag, Propertie.class);
            digester.addBeanPropertySetter(mainTag + "/" + subTag + "/name");
            digester.addBeanPropertySetter(mainTag + "/" + subTag + "/command");
            digester.addCallMethod(mainTag + "/" + subTag + "/get", "setGet", 0);
            digester.addCallMethod(mainTag + "/" + subTag + "/set", "setSet", 0);
            digester.addBeanPropertySetter(mainTag + "/" + subTag + "/type");
            digester.addBeanPropertySetter(mainTag + "/" + subTag + "/desc");
            digester.addBeanPropertySetter(mainTag + "/" + subTag + "/select");
            digester.addBeanPropertySetter(mainTag + "/" + subTag + "/target-needed", "targetNeeded");
            digester.addBeanPropertySetter(mainTag + "/" + subTag + "/version");
            digester.addSetNext(mainTag + "/" + subTag, "addCommand");

            URL configFile = PropertieSet.class
                    .getResource("/org/quickserver/net/qsadmin/gui/conf/PropertieSet.xml");
            if (configFile == null)
                throw new RuntimeException("XML File not found : " + "PropertieSet.xml");

            InputStream input = configFile.openStream();
            logger.fine("Loading command config from xml file : " + input);
            ps = (PropertieSet) digester.parse(input);
        } catch (Exception e) {
            logger.severe("Could not init from xml file : " + e);
            logger.fine("StackTrace:\n" + MyString.getStackTrace(e));
        }
        return ps;
    }
}