Example usage for org.apache.commons.configuration HierarchicalConfiguration getProperty

List of usage examples for org.apache.commons.configuration HierarchicalConfiguration getProperty

Introduction

In this page you can find the example usage for org.apache.commons.configuration HierarchicalConfiguration getProperty.

Prototype

public Object getProperty(String key) 

Source Link

Document

Fetches the specified property.

Usage

From source file:at.ac.tuwien.auto.iotsys.gateway.connectors.knx.KNXDeviceLoaderImpl.java

public ArrayList<Connector> initDevices(ObjectBroker objectBroker) {
    setConfiguration(devicesConfig);/*from   w w w .  j  a  v a2  s  . c o  m*/
    objectBroker.getConfigDb().prepareDeviceLoader(getClass().getName());

    ArrayList<Connector> connectors = new ArrayList<Connector>();

    List<JsonNode> connectorsFromDb = objectBroker.getConfigDb().getConnectors("knx");
    int connectorsSize = 0;

    if (connectorsFromDb.size() <= 0) {
        Object knxConnectors = devicesConfig.getProperty("knx.connector.name");

        if (knxConnectors != null) {
            connectorsSize = 1;
        }

        if (knxConnectors instanceof Collection<?>) {
            connectorsSize = ((Collection<?>) knxConnectors).size();
        }
    } else
        connectorsSize = connectorsFromDb.size();

    for (int connector = 0; connector < connectorsSize; connector++) {

        HierarchicalConfiguration subConfig = devicesConfig.configurationAt("knx.connector(" + connector + ")");

        Object knxConfiguredDevices = subConfig.getProperty("device.type");// just to get the number of devices
        String connectorId = "";
        String connectorName = subConfig.getString("name");
        String routerIP = subConfig.getString("router.ip");
        int routerPort = subConfig.getInteger("router.port", 3671);
        String localIP = subConfig.getString("localIP");
        Boolean enabled = subConfig.getBoolean("enabled", false);

        try {
            connectorId = connectorsFromDb.get(connector).get("_id").asText();
            connectorName = connectorsFromDb.get(connector).get("name").asText();
            enabled = connectorsFromDb.get(connector).get("enabled").asBoolean();
            routerIP = connectorsFromDb.get(connector).get("routerHostname").asText();
            routerPort = connectorsFromDb.get(connector).get("routerPort").asInt();
            localIP = connectorsFromDb.get(connector).get("localIP").asText();
        } catch (Exception e) {
            log.info("Cannot fetch configuration from Database, using devices.xml");
        }

        if (enabled) {
            try {
                KNXConnector knxConnector = new KNXConnector(routerIP, routerPort, localIP);
                knxConnector.setName(connectorName);
                knxConnector.setTechnology("knx");
                knxConnector.setEnabled(enabled);
                //knxConnector.connect();
                connectors.add(knxConnector);

                int numberOfDevices = 0;
                List<Device> devicesFromDb = objectBroker.getConfigDb().getDevices(connectorId);

                if (connectorsFromDb.size() <= 0) {
                    if (knxConfiguredDevices != null) {
                        numberOfDevices = 1; // there is at least one
                                             // device.
                    }
                    if (knxConfiguredDevices instanceof Collection<?>) {
                        Collection<?> knxDevices = (Collection<?>) knxConfiguredDevices;
                        numberOfDevices = knxDevices.size();
                    }
                } else
                    numberOfDevices = devicesFromDb.size();

                log.info(
                        numberOfDevices + " KNX devices found in configuration for connector " + connectorName);
                for (int i = 0; i < numberOfDevices; i++) {

                    String type = subConfig.getString("device(" + i + ").type");
                    List<Object> address = subConfig.getList("device(" + i + ").address");
                    String addressString = address.toString();

                    String ipv6 = subConfig.getString("device(" + i + ").ipv6");
                    String href = subConfig.getString("device(" + i + ").href");

                    String name = subConfig.getString("device(" + i + ").name");

                    String displayName = subConfig.getString("device(" + i + ").displayName");

                    Boolean historyEnabled = subConfig.getBoolean("device(" + i + ").historyEnabled", false);

                    Boolean groupCommEnabled = subConfig.getBoolean("device(" + i + ").groupCommEnabled",
                            false);

                    Integer historyCount = subConfig.getInt("device(" + i + ").historyCount", 0);

                    Boolean refreshEnabled = subConfig.getBoolean("device(" + i + ").refreshEnabled", false);

                    Device deviceFromDb;
                    try {
                        deviceFromDb = devicesFromDb.get(i);
                        type = deviceFromDb.getType();
                        addressString = deviceFromDb.getAddress();
                        String subAddr[] = addressString.substring(1, addressString.length() - 1).split(", ");
                        address = Arrays.asList((Object[]) subAddr);
                        ipv6 = deviceFromDb.getIpv6();
                        href = deviceFromDb.getHref();
                        name = deviceFromDb.getName();
                        displayName = deviceFromDb.getDisplayName();
                        historyEnabled = deviceFromDb.isHistoryEnabled();
                        groupCommEnabled = deviceFromDb.isGroupcommEnabled();
                        refreshEnabled = deviceFromDb.isRefreshEnabled();
                        historyCount = deviceFromDb.getHistoryCount();
                    } catch (Exception e) {
                    }

                    // Transition step: comment when done
                    Device d = new Device(type, ipv6, addressString, href, name, displayName, historyCount,
                            historyEnabled, groupCommEnabled, refreshEnabled);
                    objectBroker.getConfigDb().prepareDevice(connectorName, d);

                    if (type != null && address != null) {
                        int addressCount = address.size();
                        try {
                            Constructor<?>[] declaredConstructors = Class.forName(type)
                                    .getDeclaredConstructors();
                            for (int k = 0; k < declaredConstructors.length; k++) {
                                if (declaredConstructors[k].getParameterTypes().length == addressCount + 1) { // constructor
                                    // that
                                    // takes
                                    // the
                                    // KNX
                                    // connector
                                    // and
                                    // group
                                    // address
                                    // as
                                    // argument
                                    Object[] args = new Object[address.size() + 1];
                                    // first arg is KNX connector

                                    args[0] = knxConnector;
                                    for (int l = 1; l <= address.size(); l++) {
                                        try {
                                            String adr = (String) address.get(l - 1);
                                            if (adr == null || adr.equals("null")) {
                                                args[l] = null;
                                            } else {
                                                args[l] = new GroupAddress(adr);
                                            }
                                        } catch (KNXFormatException e) {
                                            e.printStackTrace();
                                        }
                                    }
                                    try {
                                        // create a instance of the
                                        // specified KNX device
                                        Obj knxDevice = (Obj) declaredConstructors[k].newInstance(args);

                                        knxDevice.setHref(new Uri(
                                                URLEncoder.encode(connectorName, "UTF-8") + "/" + href));

                                        if (name != null && name.length() > 0) {
                                            knxDevice.setName(name);
                                        }

                                        if (displayName != null && displayName.length() > 0) {
                                            knxDevice.setDisplayName(displayName);
                                        }

                                        if (ipv6 != null) {
                                            objectBroker.addObj(knxDevice, ipv6);
                                        } else {
                                            objectBroker.addObj(knxDevice);
                                        }

                                        myObjects.add(knxDevice);

                                        knxDevice.initialize();

                                        if (historyEnabled != null && historyEnabled) {
                                            if (historyCount != null && historyCount != 0) {
                                                objectBroker.addHistoryToDatapoints(knxDevice, historyCount);
                                            } else {
                                                objectBroker.addHistoryToDatapoints(knxDevice);
                                            }
                                        }

                                        if (groupCommEnabled) {
                                            objectBroker.enableGroupComm(knxDevice);
                                        }

                                        if (refreshEnabled != null && refreshEnabled) {
                                            objectBroker.enableObjectRefresh(knxDevice);
                                        }

                                    } catch (IllegalArgumentException e) {
                                        e.printStackTrace();
                                    } catch (InstantiationException e) {
                                        e.printStackTrace();
                                    } catch (IllegalAccessException e) {
                                        e.printStackTrace();
                                    } catch (InvocationTargetException e) {
                                        e.printStackTrace();
                                    }
                                }
                            }
                        } catch (SecurityException e) {
                            e.printStackTrace();
                        } catch (ClassNotFoundException e) {
                            e.printStackTrace();
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

    return connectors;
}

From source file:com.sinfonier.util.XMLProperties.java

/**
 * Get a complex property. Complex property is a label which contains several sublabels.
 * //from  w  w w.j a  va 2  s .  c o m
 * @param type {@code com.sinfonier.util.ComponentType}.
 * @param componentName Name of component.
 * @param propertyName Property name.
 * @return
 */
public List<Map<String, Object>> getComplexProperty(ComponentType type, String componentName,
        String propertyName) {
    StringBuilder sb = new StringBuilder();
    String itemName = propertyName.substring(0, propertyName.length() - 1);
    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

    switch (type) {
    case BOLT:
        sb.append("bolts/bolt[@abstractionId='");
        break;
    case SPOUT:
        sb.append("spouts/spout[@abstractionId='");
        break;
    case DRAIN:
        sb.append("drains/drain[@abstractionId='");
        break;
    default:
        break;
    }
    sb.append(componentName).append("']/").append(propertyName).append("/").append(itemName);

    List<HierarchicalConfiguration> items = xml.configurationsAt(sb.toString());
    for (HierarchicalConfiguration item : items) {
        Iterator<String> keys = item.getKeys();
        Map<String, Object> map = new HashMap<String, Object>();
        while (keys.hasNext()) {
            String key = keys.next();
            map.put(key, item.getProperty(key));
        }
        list.add(map);
    }

    return list;
}

From source file:at.ac.tuwien.auto.iotsys.gateway.connectors.bacnet.BacnetDeviceLoaderImpl.java

public ArrayList<Connector> initDevices(ObjectBroker objectBroker) {
    setConfiguration(devicesConfig);//from www .jav  a  2  s  .  co  m
    objectBroker.getConfigDb().prepareDeviceLoader(getClass().getName());

    ArrayList<Connector> connectors = new ArrayList<Connector>();

    List<JsonNode> connectorsFromDb = objectBroker.getConfigDb().getConnectors("bacnet");
    int connectorsSize = 0;
    // bacnet
    if (connectorsFromDb.size() <= 0) {
        Object bacnetConnectors = devicesConfig.getProperty("bacnet.connector.name");

        if (bacnetConnectors != null) {
            connectorsSize = 1;
        } else {
            connectorsSize = 0;
        }

        if (bacnetConnectors instanceof Collection<?>) {
            connectorsSize = ((Collection<?>) bacnetConnectors).size();
        }
    } else
        connectorsSize = connectorsFromDb.size();

    for (int connector = 0; connector < connectorsSize; connector++) {
        HierarchicalConfiguration subConfig = devicesConfig
                .configurationAt("bacnet.connector(" + connector + ")");

        Object bacnetConfiguredDevices = subConfig.getProperty("device.type");
        String connectorId = "";
        String connectorName = subConfig.getString("name");
        String broadcastAddress = subConfig.getString("broadcastAddress");
        int localPort = subConfig.getInteger("localPort", 3671);
        int localDeviceID = subConfig.getInteger("localDeviceID", 12345);
        boolean enabled = subConfig.getBoolean("enabled", false);
        Boolean groupCommEnabled = subConfig.getBoolean("groupCommEnabled", null);
        Boolean historyEnabled = subConfig.getBoolean("historyEnabled", null);

        try {
            connectorId = connectorsFromDb.get(connector).get("_id").asText();
            connectorName = connectorsFromDb.get(connector).get("name").asText();
            enabled = connectorsFromDb.get(connector).get("enabled").asBoolean();
            groupCommEnabled = connectorsFromDb.get(connector).get("groupCommEnabled").asBoolean();
            historyEnabled = connectorsFromDb.get(connector).get("historyEnabled").asBoolean();
            broadcastAddress = connectorsFromDb.get(connector).get("broadcastAddress").asText();
            localPort = connectorsFromDb.get(connector).get("localPort").asInt();
            localDeviceID = connectorsFromDb.get(connector).get("localDeviceID").asInt();
        } catch (Exception e) {
            log.info("Cannot fetch configuration from Database, using devices.xml");
        }

        if (enabled) {
            try {
                BACnetConnector bacnetConnector = new BACnetConnector(localDeviceID, broadcastAddress,
                        localPort);
                bacnetConnector.setName(connectorName);
                bacnetConnector.setTechnology("bacnet");
                bacnetConnector.setEnabled(enabled);

                Obj bacRoot = bacnetConnector.getRootObj();
                bacRoot.setName(connectorName);
                bacRoot.setHref(new Uri(connectorName.replaceAll("[^a-zA-Z0-9-~\\(\\)]", "")));
                objectBroker.addObj(bacRoot, true);

                // Transition step: Moving configs to DB: all connector enabled, uncomment when done
                //bacnetConnector.connect();

                Boolean discoveryEnabled = subConfig.getBoolean("discovery-enabled", false);
                if (discoveryEnabled)
                    bacnetConnector.discover(
                            new DeviceDiscoveryListener(objectBroker, groupCommEnabled, historyEnabled));

                connectors.add(bacnetConnector);

                int numberOfDevices = 0;
                List<Device> devicesFromDb = objectBroker.getConfigDb().getDevices(connectorId);

                if (connectorsFromDb.size() <= 0) {
                    // TODO: bacnetConfiguredDevices is from devices.xml --> mismatch when a connector does not have any device associated,
                    // e.g., bacnet a-lab (auto) connector
                    // do like this for other device loaders!
                    if (bacnetConfiguredDevices != null) {
                        numberOfDevices = 1; // there is at least one device.
                    }
                    if (bacnetConfiguredDevices instanceof Collection<?>) {
                        Collection<?> bacnetDevices = (Collection<?>) bacnetConfiguredDevices;
                        numberOfDevices = bacnetDevices.size();
                    }
                } else
                    numberOfDevices = devicesFromDb.size();

                log.info(numberOfDevices + " BACnet devices found in configuration for connector "
                        + connectorName);

                // Transition step: comment when done
                for (int i = 0; i < numberOfDevices; i++) {
                    String type = subConfig.getString("device(" + i + ").type");
                    List<Object> address = subConfig.getList("device(" + i + ").address");
                    String addressString = address.toString();
                    String ipv6 = subConfig.getString("device(" + i + ").ipv6");
                    String href = subConfig.getString("device(" + i + ").href");

                    // device specific setting
                    Boolean historyEnabledDevice = subConfig.getBoolean("device(" + i + ").historyEnabled",
                            null);

                    if (historyEnabledDevice != null) {
                        historyEnabled = historyEnabledDevice;
                    }

                    // device specific setting
                    Boolean groupCommEnabledDevice = subConfig.getBoolean("device(" + i + ").groupCommEnabled",
                            null);

                    if (groupCommEnabledDevice != null) {
                        // overwrite general settings
                        groupCommEnabled = groupCommEnabledDevice;
                    }

                    String name = subConfig.getString("device(" + i + ").name");

                    String displayName = subConfig.getString("device(" + i + ").displayName");

                    Boolean refreshEnabled = subConfig.getBoolean("device(" + i + ").refreshEnabled", false);

                    Integer historyCount = subConfig.getInt("device(" + i + ").historyCount", 0);

                    Device deviceFromDb;
                    try {
                        deviceFromDb = devicesFromDb.get(i);
                        type = deviceFromDb.getType();
                        addressString = deviceFromDb.getAddress();
                        String subAddr[] = addressString.substring(1, addressString.length() - 1).split(", ");
                        address = Arrays.asList((Object[]) subAddr);
                        ipv6 = deviceFromDb.getIpv6();
                        href = deviceFromDb.getHref();
                        name = deviceFromDb.getName();
                        displayName = deviceFromDb.getDisplayName();
                        historyEnabled = deviceFromDb.isHistoryEnabled();
                        groupCommEnabled = deviceFromDb.isGroupcommEnabled();
                        refreshEnabled = deviceFromDb.isRefreshEnabled();
                        historyCount = deviceFromDb.getHistoryCount();
                    } catch (Exception e) {
                    }
                    // Transition step: comment when done
                    Device d = new Device(type, ipv6, addressString, href, name, displayName, historyCount,
                            historyEnabled, groupCommEnabled, refreshEnabled);
                    objectBroker.getConfigDb().prepareDevice(connectorName, d);

                    if (type != null && address != null) {

                        // now follow possible multiple data points
                        // identified through
                        // the device Id, object type, the instance number and the
                        // property identifier, which shall be packaged into an BacnetDatapointInfo object

                        ObjectIdentifier[] objectIdentifier = new ObjectIdentifier[(address.size()) / 4];
                        PropertyIdentifier[] propertyIdentifier = new PropertyIdentifier[(address.size()) / 4];

                        BacnetDataPointInfo[] bacnetDataPointInfo = new BacnetDataPointInfo[(address.size())
                                / 4];

                        int q = 0;
                        for (int p = 0; p <= address.size() - 4; p += 4) {
                            int remoteDeviceID = Integer.parseInt((String) address.get(p));
                            ObjectIdentifier objIdentifier = new ObjectIdentifier(
                                    new ObjectType(Integer.parseInt((String) address.get(p + 1))),
                                    Integer.parseInt((String) address.get(p + 2)));
                            PropertyIdentifier propIdentifier = new PropertyIdentifier(
                                    Integer.parseInt((String) address.get(p + 3)));
                            objectIdentifier[q] = objIdentifier;
                            propertyIdentifier[q] = propIdentifier;
                            bacnetDataPointInfo[q] = new BacnetDataPointInfo(remoteDeviceID, objIdentifier,
                                    propIdentifier);
                            q = q + 1;
                        }
                        Object[] args = new Object[q + 1];
                        args[0] = bacnetConnector;
                        //                        args[1] = Integer.parseInt(remoteDeviceID);
                        for (int p = 0; p < bacnetDataPointInfo.length; p++) {
                            args[1 + p] = bacnetDataPointInfo[p];
                        }

                        try {

                            Constructor<?>[] declaredConstructors = Class.forName(type)
                                    .getDeclaredConstructors();
                            for (int k = 0; k < declaredConstructors.length; k++) {
                                if (declaredConstructors[k].getParameterTypes().length == args.length) { // constructor
                                    // that
                                    // takes
                                    // the
                                    // KNX
                                    // connector
                                    // and
                                    // group
                                    // address
                                    // as
                                    // argument
                                    Obj bacnetDevice = (Obj) declaredConstructors[k].newInstance(args); // create
                                    // a
                                    // instance
                                    // of
                                    // the
                                    // specified
                                    // KNX
                                    // device
                                    bacnetDevice.setHref(
                                            new Uri(URLEncoder.encode(connectorName, "UTF-8") + "/" + href));

                                    if (name != null && name.length() > 0) {
                                        bacnetDevice.setName(name);
                                    }

                                    if (displayName != null && displayName.length() > 0) {
                                        bacnetDevice.setDisplayName(displayName);
                                    }

                                    if (ipv6 != null) {
                                        objectBroker.addObj(bacnetDevice, ipv6);
                                    } else {
                                        objectBroker.addObj(bacnetDevice);
                                    }

                                    myObjects.add(bacnetDevice);

                                    bacnetDevice.initialize();

                                    if (historyEnabled != null && historyEnabled) {
                                        if (historyCount != null && historyCount != 0) {
                                            objectBroker.addHistoryToDatapoints(bacnetDevice, historyCount);
                                        } else {
                                            objectBroker.addHistoryToDatapoints(bacnetDevice);
                                        }
                                    }

                                    if (refreshEnabled != null && refreshEnabled) {
                                        objectBroker.enableObjectRefresh(bacnetDevice);
                                    }

                                    if (groupCommEnabled != null && groupCommEnabled) {
                                        objectBroker.enableGroupComm(bacnetDevice);
                                    }
                                }
                            }
                        } catch (SecurityException e) {
                            e.printStackTrace();
                        } catch (ClassNotFoundException e) {
                            e.printStackTrace();
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

    return connectors;
}

From source file:de.uni_rostock.goodod.tools.Configuration.java

private HierarchicalConfiguration readTestConfig(File testFile)
        throws ConfigurationException, FileNotFoundException, IOException {
    HierarchicalConfiguration finalConf = null;
    CombinedConfiguration mergedConf = null;
    HierarchicalConfiguration loadedConf = null;
    if (isXMLConfig(testFile)) {
        loadedConf = new XMLPropertyListConfiguration(testFile);
    } else {//ww w .  jav  a 2 s . c  o  m
        loadedConf = new PropertyListConfiguration(testFile);
    }

    /*
     * Some compatibility magic: Our initial version had very specific uses and according configuration wording.
     * We want to be more generic, so we re-route some information in the configs.
     */

    HierarchicalConfiguration groupsConf = (HierarchicalConfiguration) loadedConf
            .getProperty("groupOntologies");
    if (null == loadedConf.getProperty("studentOntologies") && (null != groupsConf)) {
        HierarchicalConfiguration cfg = new HierarchicalConfiguration();
        mergedConf = new CombinedConfiguration(new OverrideCombiner());
        cfg.setProperty("studentOntologies", groupsConf);
        mergedConf.addConfiguration(cfg);
        mergedConf.addConfiguration(loadedConf);
        finalConf = mergedConf;
    } else {
        finalConf = loadedConf;
    }
    return finalConf;

}

From source file:at.ac.tuwien.auto.iotsys.gateway.connectors.knx.KNXDeviceLoaderETSImpl.java

private void parseBuildingView(HierarchicalConfiguration partConfig, Obj parent, Network n,
        ObjectBroker objectBroker, Hashtable<String, EntityImpl> entityById) {
    for (int partsIdx = 0; partsIdx < sizeOfConfiguration(partConfig.getProperty("part.[@id]")); partsIdx++) {
        String partId = partConfig.getString("part(" + partsIdx + ").[@id]");
        String partName = arrayToString(partConfig.getStringArray("part(" + partsIdx + ").[@name]"));
        String partDescription = arrayToString(
                partConfig.getStringArray("part(" + partsIdx + ").[@description]"));
        String partType = partConfig.getString("part(" + partsIdx + ").[@type]");

        PartImpl part = new PartImpl(partId, partName, partDescription, partType);

        // add part to parent part
        if (parent instanceof ViewBuildingImpl)
            ((ViewBuildingImpl) parent).addPart(part);
        else if (parent instanceof PartImpl)
            ((PartImpl) parent).addPart(part);
        else//from w ww  . ja  v  a 2 s .c o m
            parent.add(part);

        objectBroker.addObj(part, true);

        // add instances to part
        HierarchicalConfiguration concretePart = partConfig.configurationAt("part(" + partsIdx + ")");

        for (int instanceIdx = 0; instanceIdx < sizeOfConfiguration(
                concretePart.getProperty("instance.[@id]")); instanceIdx++) {
            String instanceId = concretePart.getString("instance(" + instanceIdx + ").[@id]");
            Obj instance = part.addInstance(entityById.get(instanceId));
            objectBroker.addObj(instance);
        }

        // recursively add more parts
        parseBuildingView(concretePart, part, n, objectBroker, entityById);

    }
}

From source file:at.ac.tuwien.auto.iotsys.gateway.connectors.knx.KNXDeviceLoaderETSImpl.java

private void parseGroupAddressConfig(HierarchicalConfiguration groupConfig,
        Hashtable<String, String> groupAddressByDatapointId) {
    // if there are no group elements return
    for (int groupsIdx = 0; groupsIdx < sizeOfConfiguration(
            groupConfig.getProperty("group.[@id]")); groupsIdx++) {
        String groupAddress = groupConfig.getString("group(" + groupsIdx + ").[@address]");

        // find instance elements for this group
        HierarchicalConfiguration concreteGroup = groupConfig.configurationAt("group(" + groupsIdx + ")");

        for (int instanceIdx = 0; instanceIdx < sizeOfConfiguration(
                concreteGroup.getProperty("instance.[@id]")); instanceIdx++) {
            String instanceId = concreteGroup.getString("instance(" + instanceIdx + ").[@id]");
            log.info("Mapping instanceID: " + instanceId + " to " + groupAddress);

            if (!groupAddressByDatapointId.containsKey(instanceId))
                groupAddressByDatapointId.put(instanceId, groupAddress);
        }//  w ww.  j  a  v  a2  s  .co m

        // recursively perform this method for nested groups
        parseGroupAddressConfig(concreteGroup, groupAddressByDatapointId);
    }
}

From source file:at.ac.tuwien.auto.iotsys.gateway.connectors.knx.KNXDeviceLoaderETSImpl.java

private void parseDomainView(HierarchicalConfiguration domainConfig, Obj parent, Network n,
        ObjectBroker objectBroker, Hashtable<String, EntityImpl> entityById,
        Hashtable<String, DatapointImpl> datapointById) {
    for (int domainIdx = 0; domainIdx < sizeOfConfiguration(
            domainConfig.getProperty("domain.[@id]")); domainIdx++) {
        String domainId = domainConfig.getString("domain(" + domainIdx + ").[@id]");
        String domainName = arrayToString(domainConfig.getStringArray("domain(" + domainIdx + ").[@name]"));
        String domainDescription = arrayToString(
                domainConfig.getStringArray("domain(" + domainIdx + ").[@description]"));

        DomainImpl domain = new DomainImpl(domainId, domainName, domainDescription);

        // add part to parent part
        if (parent instanceof ViewDomainsImpl)
            ((ViewDomainsImpl) parent).addDomain(domain);
        else if (parent instanceof DomainImpl)
            ((DomainImpl) parent).addDomain(domain);
        else/*w w w  .j  av  a  2s .  c o  m*/
            parent.add(domain);

        objectBroker.addObj(domain, true);

        // add instances to part
        HierarchicalConfiguration concreteDomain = domainConfig.configurationAt("domain(" + domainIdx + ")");

        for (int instanceIdx = 0; instanceIdx < sizeOfConfiguration(
                concreteDomain.getProperty("instance.[@id]")); instanceIdx++) {
            String instanceId = concreteDomain.getString("instance(" + instanceIdx + ").[@id]");
            Obj addInstance = domain.addInstance(entityById.get(instanceId));
            objectBroker.addObj(addInstance, true);
        }

        // recursively add more domains
        parseDomainView(concreteDomain, domain, n, objectBroker, entityById, datapointById);
    }
}

From source file:at.ac.tuwien.auto.iotsys.gateway.connectors.knx.KNXDeviceLoaderETSImpl.java

private void parseTopologyView(HierarchicalConfiguration areaConfig, Obj parent, Network n,
        ObjectBroker objectBroker, Hashtable<String, EntityImpl> entityById,
        Hashtable<String, DatapointImpl> datapointById, Hashtable<String, String> resourceById) {
    for (int areaIdx = 0; areaIdx < sizeOfConfiguration(areaConfig.getProperty("area.[@id]")); areaIdx++) {
        String areaId = areaConfig.getString("area(" + areaIdx + ").[@id]");
        String areaName = arrayToString(areaConfig.getStringArray("area(" + areaIdx + ").[@name]"));
        String areaDescription = arrayToString(
                areaConfig.getStringArray("area(" + areaIdx + ").[@description]"));
        String areaMediaTypeId = areaConfig.getString("area(" + areaIdx + ").[@mediaTypeId]");
        long areaAddress = areaConfig.getLong("area(" + areaIdx + ").[@address]");

        String areaMediaType = null;
        if (areaMediaTypeId != null) {
            areaMediaType = resourceById.get(areaMediaTypeId);
        }//  w ww.  java 2s  .  c  o m

        AreaImpl area = new AreaImpl(areaId, areaName, areaDescription, areaAddress, areaMediaType);

        // add part to parent part
        if (parent instanceof ViewTopologyImpl)
            ((ViewTopologyImpl) parent).addArea(area);
        else if (parent instanceof DomainImpl)
            ((AreaImpl) parent).addArea(area);
        else
            parent.add(area);

        objectBroker.addObj(area, true);

        // add instances to part
        HierarchicalConfiguration concreteArea = areaConfig.configurationAt("area(" + areaIdx + ")");

        for (int instanceIdx = 0; instanceIdx < sizeOfConfiguration(
                concreteArea.getProperty("instance.[@id]")); instanceIdx++) {
            String instanceId = concreteArea.getString("instance(" + instanceIdx + ").[@id]");
            long address = concreteArea.getLong("instance(" + instanceIdx + ").[@address]");

            Obj addInstance = area.addInstance(entityById.get(instanceId), address);
            objectBroker.addObj(addInstance, true);

        }

        // recursively add more domains
        parseTopologyView(concreteArea, area, n, objectBroker, entityById, datapointById, resourceById);
    }
}

From source file:it.grid.storm.namespace.config.xml.XMLParserUtil.java

public int getNumberOfPoolMembers(String nameOfFS, int poolCounter) throws NamespaceException {

    int numOfFS = retrieveNumberByName(nameOfFS, XMLConst.FS_BY_NAME);
    if (numOfFS == -1) {
        throw new NamespaceException("FS named '" + nameOfFS + "' does not exist in config");
    }//from  w  w w  .java 2 s.  co m
    String subTree = substituteNumberInPoolElement(nameOfFS, poolCounter, XMLConst.POOL);
    HierarchicalConfiguration sub = configuration.configurationAt(subTree);
    Object members = sub.getProperty("members.member[@member-id]");
    int numOfMembers = -1;
    if (members != null) {
        if (members instanceof Collection) {
            numOfMembers = ((Collection) members).size();
        } else {
            numOfMembers = 1;
        }
    } else {
        log.error("Error during the retrieve of the number of pool member of " + nameOfFS);
    }
    return numOfMembers;
}

From source file:at.ac.tuwien.auto.iotsys.gateway.connectors.knx.KNXDeviceLoaderETSImpl.java

private void parseFunctionalView(HierarchicalConfiguration groupConfig, Obj parent, Network n,
        ObjectBroker objectBroker, Hashtable<String, EntityImpl> entityById,
        Hashtable<String, DatapointImpl> datapointById, KNXConnector knxConnector,
        Hashtable<String, String> groupAddressByDatapointId) {
    for (int groupsIdx = 0; groupsIdx < sizeOfConfiguration(
            groupConfig.getProperty("group.[@id]")); groupsIdx++) {
        String groupId = groupConfig.getString("group(" + groupsIdx + ").[@id]");
        String groupName = arrayToString(groupConfig.getStringArray("group(" + groupsIdx + ").[@name]"));
        String groupDescription = arrayToString(
                groupConfig.getStringArray("group(" + groupsIdx + ").[@description]"));
        long groupAddress = groupConfig.getLong("group(" + groupsIdx + ").[@address]");

        GroupImpl group = new GroupImpl(groupId, groupName, groupDescription, groupAddress);

        // add part to parent part
        if (parent instanceof ViewFunctionalImpl)
            ((ViewFunctionalImpl) parent).addGroup(group);
        else if (parent instanceof GroupImpl)
            ((GroupImpl) parent).addGroup(group);
        else/*from  w w w .  j av  a2  s .com*/
            parent.add(group);

        objectBroker.addObj(group, true);

        // add instances to part
        HierarchicalConfiguration concreteGroup = groupConfig.configurationAt("group(" + groupsIdx + ")");

        for (int instanceIdx = 0; instanceIdx < sizeOfConfiguration(
                concreteGroup.getProperty("instance.[@id]")); instanceIdx++) {
            String instanceId = concreteGroup.getString("instance(" + instanceIdx + ").[@id]");
            String connector = concreteGroup.getString("instance(" + instanceIdx + ").[@connector]");

            try {
                DatapointImpl dp = datapointById.get(instanceId);
                if (dp == null) {
                    log.warning("No datapoint type found for instance: " + instanceId);
                    continue;
                }
                Class<?> clazz = dp.getClass();

                if (clazz != null) {
                    Constructor<?> constructor = clazz.getConstructor(KNXConnector.class, DataPointInit.class);
                    Object[] object = new Object[2];
                    object[0] = knxConnector;

                    DataPointInit dptInit = new DataPointInit();
                    dptInit.setName("function");
                    dptInit.setReadable(dp.isValueReadable());
                    dptInit.setWritable(dp.isValueWritable());
                    dptInit.setGroupAddress(
                            new GroupAddress(Integer.parseInt(groupAddressByDatapointId.get(instanceId))));

                    object[1] = dptInit;
                    DatapointImpl dataPoint = (DatapointImpl) constructor.newInstance(object);

                    group.addFunction(dataPoint);
                    objectBroker.addObj(dataPoint, true);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

            group.addInstance(datapointById.get(instanceId), connector);
        }

        // recursively add more parts
        parseFunctionalView(concreteGroup, group, n, objectBroker, entityById, datapointById, knxConnector,
                groupAddressByDatapointId);
    }
}