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

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

Introduction

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

Prototype

public SubnodeConfiguration configurationAt(String key) 

Source Link

Document

Returns a hierarchical subnode configuration for the node specified by the given key.

Usage

From source file:com.eyeq.pivot4j.ui.property.ConditionalProperty.java

/**
 * @see com.eyeq.pivot4j.ui.property.AbstractProperty#saveSettings(org.apache.commons.configuration.HierarchicalConfiguration)
 *///w w  w .ja va 2  s . com
@Override
public void saveSettings(HierarchicalConfiguration configuration) {
    super.saveSettings(configuration);

    if (defaultValue != null) {
        configuration.setProperty("default", defaultValue);
    }

    if (values != null) {
        int index = 0;

        configuration.setProperty("conditions", "");

        SubnodeConfiguration configurations = configuration.configurationAt("conditions");

        for (ConditionalValue value : values) {
            String prefix = String.format("condition-property(%s)", index++);

            configurations.setProperty(prefix + ".condition", "");
            configurations.setProperty(prefix + ".value", value.getValue());

            SubnodeConfiguration conditionConfig = configurations.configurationAt(prefix + ".condition");

            value.getCondition().saveSettings(conditionConfig);
        }
    }
}

From source file:com.vangent.hieos.empi.config.EMPIConfig.java

/**
 *
 * @param hc//w ww .ja v  a  2 s.  c  o  m
 * @throws EMPIException
 */
private void loadAccountNumberTreatmentConfig(HierarchicalConfiguration hc) throws EMPIException {
    HierarchicalConfiguration hcAccountNumberTreatment = hc.configurationAt(ACCOUNT_NUMBER_TREATMENT);
    accountNumberTreatmentConfig = new AccountNumberTreatmentConfig();
    accountNumberTreatmentConfig.load(hcAccountNumberTreatment, this);

}

From source file:net.datenwerke.sandbox.util.SandboxParser.java

public void configureSandboxService(SandboxService sandboxService, Configuration config) {
    if (!(config instanceof HierarchicalConfiguration))
        throw new IllegalArgumentException("Expected HierarchicalConfiguration format");

    HierarchicalConfiguration conf = (HierarchicalConfiguration) config;

    /* general properties */
    SubnodeConfiguration properties = null;
    try {//  www .j  a  va2  s . co m
        properties = conf.configurationAt("security.properties");
    } catch (IllegalArgumentException e) {
    }
    if (null != properties) {
        /* remote */
        boolean remoteConfig = properties.getBoolean("remote.configureService", false);
        if (remoteConfig) {
            boolean remote = properties.getBoolean("remote[@enable]", false);
            if (remote) {
                Integer poolsize = properties.getInteger("remote.jvm[@poolsize]", 2);
                Integer freelancersize = properties.getInteger("remote.jvm[@freelancersize]", 2);

                String vmArgs = properties.getString("remote.jvm.vmargs", null);
                Integer rmiMinPort = properties.getInteger("remote.jvm.rmi[@minport]", 10000);
                Integer rmiMaxPort = properties.getInteger("remote.jvm.rmi[@maxport]", 10200);

                sandboxService.shutdownJvmPool();
                JvmPoolImpl jvmPoolImpl = new JvmPoolImpl(
                        new JvmPoolConfigImpl(poolsize, freelancersize, new JvmInstantiatorImpl(rmiMinPort,
                                rmiMaxPort, null != vmArgs && "".equals(vmArgs.trim()) ? null : vmArgs)));
                sandboxService.initJvmPool(jvmPoolImpl);
            } else {
                sandboxService.shutdownJvmPool();
            }
        }

        /* daemons */
        Integer monitorCheckInterval = properties.getInteger("monitor[@checkinterval]", 10);
        sandboxService.setMonitorDaemonCheckInterval(monitorCheckInterval);
        Integer monitorWatchdogCheckInterval = properties.getInteger("monitor[@watchdogCheckinterval]", 10000);
        sandboxService.setMonitorWatchdogCheckInterval(monitorWatchdogCheckInterval);

        /* codesource */
        boolean enableCodesource = properties.getBoolean("codesource[@enable]", false);
        sandboxService.setCodesourceSecurityChecks(enableCodesource);
    }

    /* sandboxes */
    parse(config);
    for (Entry<String, SandboxContext> e : getRestrictionSets().entrySet())
        sandboxService.registerContext(e.getKey(), e.getValue());
}

From source file:edu.psu.citeseerx.messaging.MsgService.java

/**
 * Configures a JMS provider based on configuration, passing execution
 * to other handlers for specific channel descriptors.
 * @param config/*from  www. j a  va2s.c  om*/
 * @throws Exception
 */
private void processProvider(HierarchicalConfiguration config) throws Exception {

    String url = config.getString("url");
    String clientID = config.getString("clientID");
    JMSProvider provider = new JMSProvider(url);
    provider.setClientID(clientID);
    jmsProviders.put(url, provider);

    System.out.println("processing provider: " + url);

    List queues = config.getList("queue.name");
    for (int i = 0; i < queues.size(); i++) {
        processChannel(provider, config.configurationAt("queue(" + i + ")"), QUEUE);
    }
    List topics = config.getList("topic.name");
    for (int i = 0; i < topics.size(); i++) {
        processChannel(provider, config.configurationAt("topic(" + i + ")"), TOPIC);
    }

}

From source file:edu.kit.dama.scheduler.servlet.JobSchedulerInitializerListener.java

/**
 * Load configuration from XML-File/*  w ww.jav a 2 s  . com*/
 */
private void loadConfiguration() {

    URL configURL;
    HierarchicalConfiguration hc;

    try {
        configURL = DataManagerSettings.getConfigurationURL();
        LOGGER.debug("Loading configuration from {}", configURL);
        hc = new HierarchicalConfiguration(new XMLConfiguration(configURL));
        LOGGER.debug("Configuration successfully loaded");
    } catch (ConfigurationException ex) {
        // error in configuration
        // reason see debug log message:
        LOGGER.warn("Failed to load configuration, using default values.", ex);
        loadDefaultConfiguration();
        return;
    }

    SubnodeConfiguration configurationAt = hc.configurationAt(CONFIG_ROOT);

    if (configurationAt != null) {

        String jobStoreDriverParam = null;
        try {
            jobStoreDriverParam = configurationAt.getString(JOB_STORE_DRIVER, null);
        } catch (ConversionException ex) {
            LOGGER.error("Failed to parse parameter '{}'.", JOB_STORE_DRIVER);
        }
        if (jobStoreDriverParam != null) {
            jobStoreDriver = jobStoreDriverParam;
        } else {
            LOGGER.info("No parameter '{}' defined, defaulting to {}.", JOB_STORE_DRIVER,
                    DEFAULT_JOB_STORE_DRIVER);
            jobStoreDriver = DEFAULT_JOB_STORE_DRIVER;
        }

        String jobStoreConnectionStringParam = null;
        try {
            jobStoreConnectionStringParam = configurationAt.getString(JOB_STORE_CONNECTION_STRING, null);
        } catch (ConversionException ex) {
            LOGGER.error("Failed to parse parameter '{}'.", JOB_STORE_CONNECTION_STRING);
        }
        if (jobStoreConnectionStringParam != null) {
            jobStoreConnectionString = jobStoreConnectionStringParam;
        } else {
            LOGGER.info("No parameter '{}' defined, defaulting to {}.", JOB_STORE_CONNECTION_STRING,
                    DEFAULT_JOB_STORE_CONNECTION_STRING);
            jobStoreConnectionString = DEFAULT_JOB_STORE_CONNECTION_STRING;
        }

        String jobStoreUserParam = null;
        try {
            jobStoreUserParam = configurationAt.getString(JOB_STORE_USER, null);
        } catch (ConversionException ex) {
            LOGGER.error("Failed to parse parameter '{}'.", JOB_STORE_USER);
        }
        if (jobStoreUserParam != null) {
            jobStoreUser = jobStoreUserParam;
        } else {
            LOGGER.info("No parameter '{}' defined, defaulting to {}.", JOB_STORE_USER, DEFAULT_JOB_STORE_USER);
            jobStoreUser = DEFAULT_JOB_STORE_USER;
        }
        String jobStorePasswordParam = null;
        try {
            jobStorePasswordParam = configurationAt.getString(JOB_STORE_PASSWORD, null);
        } catch (ConversionException ex) {
            LOGGER.error("Failed to parse parameter '{}'.", JOB_STORE_PASSWORD);
        }
        if (jobStoreUserParam != null) {
            jobStorePassword = jobStorePasswordParam;
        } else {
            LOGGER.info("No parameter '{}' defined, defaulting to {}.", JOB_STORE_PASSWORD,
                    DEFAULT_JOB_STORE_PASSWORD);
            jobStorePassword = DEFAULT_JOB_STORE_PASSWORD;
        }

        Boolean waitOnShutdownParam = null;
        try {
            waitOnShutdownParam = configurationAt.getBoolean(CONFIG_WAIT_ON_SHUTDOWN, null);
        } catch (ConversionException ex) {
            LOGGER.error("Failed to parse parameter '{}'.", CONFIG_WAIT_ON_SHUTDOWN);
        }
        if (waitOnShutdownParam != null) {
            waitOnShutdown = waitOnShutdownParam;
        } else {
            LOGGER.info("No parameter '{}' defined, defaulting to {}.", CONFIG_WAIT_ON_SHUTDOWN,
                    DEFAULT_WAIT_ON_SHUTDOWN);
            waitOnShutdown = DEFAULT_WAIT_ON_SHUTDOWN;
        }

        Boolean addDefaultSchedulesParam = null;
        try {
            addDefaultSchedulesParam = configurationAt.getBoolean(ADD_DEFAULT_SCHEDULES, null);
        } catch (ConversionException ex) {
            LOGGER.error("Failed to parse parameter '{}'.", ADD_DEFAULT_SCHEDULES);
        }
        if (addDefaultSchedulesParam != null) {
            addDefaultSchedules = addDefaultSchedulesParam;
        } else {
            LOGGER.info("No parameter '{}' defined, defaulting to {}.", ADD_DEFAULT_SCHEDULES,
                    DEFAULT_ADD_DEFAULT_SCHEDULES);
            addDefaultSchedules = DEFAULT_ADD_DEFAULT_SCHEDULES;
        }

        Integer startDelaySecondsParam = null;
        try {
            startDelaySecondsParam = configurationAt.getInteger(CONFIG_START_DELAY_SECONDS, null);
        } catch (ConversionException ex) {
            LOGGER.error("Failed to parse parameter '{}'.", CONFIG_START_DELAY_SECONDS);
        }
        if (startDelaySecondsParam != null) {
            startDelaySeconds = startDelaySecondsParam;
        } else {
            LOGGER.info("No parameter '{}' defined, defaulting to {}.", CONFIG_START_DELAY_SECONDS,
                    DEFAULT_START_DELAY_SECONDS);
            startDelaySeconds = DEFAULT_START_DELAY_SECONDS;
        }
    } else {
        LOGGER.info("No scheduler configuration node found in datamanager config. Using default values.");
    }
}

From source file:edu.kit.dama.mdm.core.MetaDataManagement.java

/**
 * Load configuration from XML-File// w  w w .  j a  va2  s  .c om
 */
private void loadConfiguration() {
    String firstImplementation = null;
    String firstPersistenceUnit = null;
    HierarchicalConfiguration hc = null;
    List<String> persistenceUnits = null;
    URL configURL = null;
    try {
        configURL = DataManagerSettings.getConfigurationURL();
        LOGGER.debug("Loading configuration from {}", configURL);
        hc = new HierarchicalConfiguration(new XMLConfiguration(configURL));
        LOGGER.debug("Configuration successfully loaded");
    } catch (ConfigurationException ex) {
        // error in configuration
        // reason see debug log message:
        LOGGER.error("Failed to load configuration.", ex);
        throw new RuntimeException(ex);
    }
    SubnodeConfiguration configurationAt = hc.configurationAt(CONFIG_ROOT);
    List fields = configurationAt.configurationsAt(CONFIG_PERSISTENCE_IMPL);
    LOGGER.debug("Found {} configured persistence implementations", fields.size());
    persistenceUnitMap = new HashMap<>();
    persistenceClassMap = new HashMap<>();
    persistenceUnitDefaultMap = new HashMap<>();

    String implementationName;
    IPersistenceFactory iPersistenceFactory = null;
    for (Iterator it = fields.iterator(); it.hasNext();) {
        HierarchicalConfiguration sub = (HierarchicalConfiguration) it.next();
        LOGGER.debug("Reading sub-configuration");
        // First get all persistence units.
        persistenceUnits = new ArrayList<>();
        try {
            List<HierarchicalConfiguration> persistenceUnitsList = sub
                    .configurationsAt(CONFIG_PERSISTENCE_UNIT);
            if (persistenceUnitsList == null) {
                persistenceUnitsList = new LinkedList<>();
            }
            LOGGER.debug("Configuration contains {} persistence units.", persistenceUnitsList.size());
            firstPersistenceUnit = null;
            for (HierarchicalConfiguration item : persistenceUnitsList) {
                String value = item.getString(".");
                String defaultAttribute = item.getString("[@default]");

                LOGGER.debug("PersistenceUnit found: " + value);
                LOGGER.debug("@default = {}", defaultAttribute);

                if (Boolean.parseBoolean(defaultAttribute)) {
                    if (firstPersistenceUnit == null) {
                        LOGGER.debug("{} is used as default persistence unit.", value);
                        firstPersistenceUnit = value;
                    } else {
                        LOGGER.warn(
                                "{} is an additional persistence unit defined as default. We'll ignore this.",
                                value);
                    }
                }

                LOGGER.debug("Adding persistence unit to list of units.");
                persistenceUnits.add(value);
            }

        } catch (Exception any) {
            LOGGER.error("Failed to read persistence units.", any);
        }
        LOGGER.debug("firstPersistenceUnit: " + firstPersistenceUnit);
        if ((persistenceUnits.size() > 0) && (firstPersistenceUnit == null)) {
            LOGGER.debug("No default persistence unit defined. Using first entry ({})",
                    persistenceUnits.get(0));
            firstPersistenceUnit = persistenceUnits.get(0);
        }
        LOGGER.debug("Getting implementation name.");
        implementationName = sub.getString(CONFIG_PERSISTENCE_NAME);
        LOGGER.debug("Implementation name '{}' found.", implementationName);
        if (firstImplementation == null) {
            LOGGER.debug("Using implementation '{}' as first implementation.", implementationName);
            firstImplementation = implementationName;
        }
        LOGGER.debug("Testing implementation '{}'", implementationName);
        if (sub.containsKey(CONFIG_DEFAULT_PERSISTENCE)) {
            LOGGER.debug("'{}' is configured as default implementation.", implementationName);
            if (defaultImplementation != null) {
                LOGGER.warn("{} is an additional implementation defined as default. We'll ignore this.",
                        implementationName);
            } else {
                defaultImplementation = implementationName;
            }
        }
        Class<?> loadClass;
        boolean success = false;
        String persistenceClass = sub.getString(CONFIG_PERSISTENCE_CLASS);
        try {

            LOGGER.debug("Loading class '{}': ", persistenceClass);
            loadClass = getClass().getClassLoader().loadClass(persistenceClass);
            LOGGER.debug("Checking IPersistenceFactory.class.assignableFrom({})", persistenceClass);
            success = IPersistenceFactory.class.isAssignableFrom(loadClass);
            iPersistenceFactory = null;
            if (success) {
                LOGGER.debug("Creating instance of class {}", persistenceClass);
                iPersistenceFactory = (IPersistenceFactory) loadClass.newInstance();
                LOGGER.debug("Persistence factory successfully instantiated.");
            } else {
                LOGGER.error("IPersistenceFactory seems not to be assignable from class {}", persistenceClass);
            }
        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException ex) {
            LOGGER.error("Failed to create instance of persistence implementation " + persistenceClass, ex);
            success = false;
        }
        if (success) {
            persistenceUnitMap.put(implementationName, persistenceUnits);
            persistenceClassMap.put(implementationName, iPersistenceFactory);
            persistenceUnitDefaultMap.put(implementationName, firstPersistenceUnit);
        } else {
            throw new edu.kit.dama.mdm.core.exception.ConfigurationException(
                    "Failed to initialize persistence factory from URL '" + configURL
                            + "'. See logfile for details.");
        }
    }
    if (defaultImplementation == null) {
        LOGGER.debug("Default implementation not set, yet. Using first one ({}) as default.",
                firstImplementation);
        defaultImplementation = firstImplementation;
    }
}

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);
        }//from w w w  .j  av a 2 s . co  m

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

From source file:com.intuit.tank.vm.settings.VmManagerConfig.java

/**
 * /*from   ww  w.j  a v a2  s  .c o  m*/
 * @param config
 */
@SuppressWarnings("unchecked")
public VmManagerConfig(@Nonnull HierarchicalConfiguration config) {
    this.config = config;
    if (this.config != null) {
        List<HierarchicalConfiguration> creds = config.configurationsAt("credentials");
        if (creds != null) {
            for (HierarchicalConfiguration credentialsConfig : creds) {
                CloudCredentials cloudCredentials = new CloudCredentials(credentialsConfig);
                credentialsMap.put(cloudCredentials.getType(), cloudCredentials);
            }
        }

        List<HierarchicalConfiguration> tags = config.configurationsAt("tags/tag");
        if (tags != null) {
            for (HierarchicalConfiguration tagsConfig : tags) {
                InstanceTag tag = new InstanceTag(tagsConfig.getString("@name"), tagsConfig.getString(""));
                if (tag.isValid()) {
                    tagList.add(tag);
                }
            }
        }

        HierarchicalConfiguration defaultInstance = config.configurationAt("default-instance-description");
        List<HierarchicalConfiguration> regionConfigs = config.configurationsAt("instance-descriptions");
        if (regionConfigs != null) {
            for (HierarchicalConfiguration regionConfig : regionConfigs) {
                VMRegion region = VMRegion.valueOf(regionConfig.getString("@region"));
                Map<VMImageType, InstanceDescription> instanceMap = new HashMap<VMImageType, InstanceDescription>();
                regionMap.put(region, instanceMap);
                List<HierarchicalConfiguration> instanceConfigs = regionConfig
                        .configurationsAt("instance-descripion");
                for (HierarchicalConfiguration instanceConfig : instanceConfigs) {
                    InstanceDescription description = new InstanceDescription(instanceConfig, defaultInstance);
                    instanceMap.put(description.getType(), description);
                }

            }
        }

        // get reserved elastic ips
        List<HierarchicalConfiguration> eipConfig = config.configurationsAt("reserved-elastic-ips/eip");
        if (eipConfig != null) {
            for (HierarchicalConfiguration eip : eipConfig) {
                reservedElasticIps.add(eip.getString(""));
            }
        }
        // get instance type definitions
        List<HierarchicalConfiguration> instanceTypesConfig = config.configurationsAt("instance-types/type");
        instanceTypes = new ArrayList<VmInstanceType>();
        if (instanceTypesConfig != null) {
            for (HierarchicalConfiguration instanceTypeConfig : instanceTypesConfig) {
                // example: <type name="c3.large" cost=".105" users="500" cpus="2" ecus="7" mem="3.75" />
                VmInstanceType type = VmInstanceType.builder().withName(instanceTypeConfig.getString("@name"))
                        .withCost(instanceTypeConfig.getDouble("@cost", 0D))
                        .withMemory(instanceTypeConfig.getDouble("@mem", 0D))
                        .withJvmArgs(instanceTypeConfig.getString("@jvmArgs"))
                        .withEcus(instanceTypeConfig.getInt("@ecus", 0))
                        .withCpus(instanceTypeConfig.getInt("@cpus", 0))
                        .withDefault(instanceTypeConfig.getBoolean("@default", false))
                        .withUsers(instanceTypeConfig.getInt("@users", 0)).build();
                instanceTypes.add(type);

            }
        }
    }
}

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  ww w.jav  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 parseEntites(KNXConnector knxConnector, ObjectBroker objectBroker,
        Hashtable<String, EntityImpl> entityById, Hashtable<String, DatapointImpl> datapointById, NetworkImpl n,
        Hashtable<String, String> resourceById, Hashtable<String, String> groupAddressByDatapointID,
        boolean enableGroupComm, boolean enableHistories) {
    for (int entityIdx = 0; entityIdx < sizeOfConfiguration(
            devicesConfig.getProperty("entities.entity[@id]")); entityIdx++) {
        // Entity
        HierarchicalConfiguration entityConfig = devicesConfig
                .configurationAt("entities.entity(" + entityIdx + ")");

        String entityId = entityConfig.getString("[@id]");
        String entityName = arrayToString(entityConfig.getStringArray("[@name]"));
        String entityDescription = arrayToString(entityConfig.getStringArray("[@description]"));
        String entityOrderNumber = entityConfig.getString("[@orderNumber]");
        String entityManufacturerId = entityConfig.getString("[@manufacturerId]");

        EntityImpl entity = new EntityImpl(entityId, entityName, entityDescription,
                resourceById.get(entityManufacturerId), entityOrderNumber);
        entityById.put(entityId, entity);
        n.getEntities().addEntity(entity);
        objectBroker.addObj(entity, true);

        // Translations
        for (int transIdx = 0; transIdx < sizeOfConfiguration(
                entityConfig.getProperty("translations.translation[@language]")); transIdx++) {
            HierarchicalConfiguration transConfig = entityConfig
                    .configurationAt("translations.translation(" + transIdx + ")");

            String language = transConfig.getString("[@language]");
            String attribute = transConfig.getString("[@attribute]");
            String value = arrayToString(transConfig.getStringArray("[@value]"));

            try {
                entity.addTranslation(language, attribute, value);
            } catch (Exception e) {
                log.warning(e.getMessage());
            }// w  ww.ja  va  2s. c  o  m
        }

        // DPs
        for (int datapointIdx = 0; datapointIdx < sizeOfConfiguration(
                entityConfig.getProperty("datapoints.datapoint[@id]")); datapointIdx++) {
            HierarchicalConfiguration datapointConfig = entityConfig
                    .configurationAt("datapoints.datapoint(" + datapointIdx + ")");

            String dataPointName = arrayToString(datapointConfig.getStringArray("[@name]"));
            String dataPointTypeIds = datapointConfig.getString("[@datapointTypeIds]");
            String dataPointId = datapointConfig.getString("[@id]");
            String dataPointDescription = arrayToString(datapointConfig.getStringArray("[@description]"));
            String dataPointWriteFlag = datapointConfig.getString("[@writeFlag]");
            String dataPointReadFlag = datapointConfig.getString("[@readFlag]");
            // String dataPointPriority = datapointConfig.getString("[@priority]");
            // String dataPointCommunicationFlag = datapointConfig.getString("[@communicationFlag]");
            // String dataPointReadOnInitFlag = datapointConfig.getString("[@readOnInitFlag]");
            // String dataPointTransmitFlag = datapointConfig.getString("[@transmitFlag]");
            // String updateFlag = datapointConfig.getString("[@updateFlag]");

            // use only the first DPTS
            if (dataPointTypeIds.indexOf(" ") >= 0) {
                dataPointTypeIds = dataPointTypeIds.substring(0, dataPointTypeIds.indexOf(" "));
            }

            log.info("Found data point type id: " + dataPointTypeIds);
            String clazzName = "at.ac.tuwien.auto.iotsys.gateway.obix.objects.knx.datapoint.impl."
                    + dataPointTypeIds.replace('-', '_') + "_ImplKnx";
            Class<?> clazz = null;

            try {
                log.info("Loading: " + clazzName);
                clazz = Class.forName(clazzName);
            } catch (ClassNotFoundException e) {
                log.warning(clazzName
                        + " not found. Cannot instantiate according sub data point type. Trying fallback to generic main type.");
                int firstIndexOf = dataPointTypeIds.indexOf('-');
                int secondIndexOf = dataPointTypeIds.indexOf('-', firstIndexOf + 1);
                clazzName = "at.ac.tuwien.auto.iotsys.gateway.obix.objects.knx.datapoint.impl." + "DPT_"
                        + dataPointTypeIds.substring(firstIndexOf + 1, secondIndexOf) + "_ImplKnx"; //

                try {
                    log.info("Loading: " + clazzName);
                    clazz = Class.forName(clazzName);
                } catch (ClassNotFoundException e1) {
                    e1.printStackTrace();
                    log.warning(clazzName + " not found. Cannot instantiate according main data point type.");
                }
            }

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

                    DataPointInit dptInit = new DataPointInit();
                    dptInit.setDisplay(dataPointDescription);
                    dptInit.setDisplayName(dataPointName);
                    dptInit.setReadable(
                            EnumsImpl.getInstance().getEnum(EnumEnabled.HREF).getBool(dataPointReadFlag));
                    dptInit.setName(dataPointId);
                    dptInit.setGroupAddress(
                            new GroupAddress(Integer.parseInt(groupAddressByDatapointID.get(dataPointId))));
                    dptInit.setWritable(
                            EnumsImpl.getInstance().getEnum(EnumEnabled.HREF).getBool(dataPointWriteFlag));

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

                    datapointById.put(dataPointId, dataPoint);
                    entity.addDatapoint(dataPoint);

                    if (enableGroupComm)
                        objectBroker.enableGroupComm(dataPoint);
                    if (enableHistories)
                        objectBroker.addHistoryToDatapoints(dataPoint);
                    objectBroker.addObj(dataPoint, true);

                    // Search for child "value"
                    Obj dpValue = dataPoint.get("value");
                    if (dpValue != null) {
                        dpValue.setDisplayName(dataPointDescription);
                    }

                    // Translations (DP)
                    for (int transIdx = 0; transIdx < sizeOfConfiguration(
                            datapointConfig.getProperty("translations.translation[@language]")); transIdx++) {
                        HierarchicalConfiguration transConfig = datapointConfig
                                .configurationAt("translations.translation(" + transIdx + ")");

                        String language = transConfig.getString("[@language]");
                        String attribute = transConfig.getString("[@attribute]");
                        String value = arrayToString(transConfig.getStringArray("[@value]"));

                        try {
                            dataPoint.addTranslation(language, attribute, value);

                            // translation for DisplayName of value
                            if (attribute.toLowerCase().trim().equals("description") && dpValue != null) {
                                dpValue.addTranslation(language, TranslationAttribute.displayName, value);
                            }
                        } catch (Exception e) {
                            log.warning(e.getMessage());
                        }
                    }
                }
            } catch (NoSuchMethodException e) {
                log.warning(clazzName + " no such method. Cannot instantiate according datapoint.");
            } catch (SecurityException e) {
                log.warning(clazzName + " security exception. Cannot instantiate according datapoint.");
            } catch (InstantiationException e) {
                log.warning(clazzName + " instantiation exception. Cannot instantiate according datapoint.");
            } catch (IllegalAccessException e) {
                log.warning(clazzName + " illegal access exception. Cannot instantiate according datapoint.");
            } catch (IllegalArgumentException e) {
                log.warning(clazzName + " illegal argument exception. Cannot instantiate according datapoint.");
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                log.warning(
                        clazzName + " invocation target exception. Cannot instantiate according datapoint.");
                e.printStackTrace();
            }
        }
    }
}