public void populateMap() throws FroshProjectException {
        // Get the list of IDs
        //
        String idList = FroshProjectConfig.getProperty("WorldMap.ids");

        // Log a message
        //
        FroshProject.getLogger().log(Level.FINE,
                "List of Element ids " + idList);

        // Check the presence of the list
        //
        if (idList == null) {
            throw new FroshProjectException(
                    FroshProjectExceptionConfig.MAP_MISSING_IDS, null);
        }

        // Store it as an Integer list
        //
        List<Integer> ids = new LinkedList<Integer>();
        for (String s : idList.split(";")) {
            ids.add(Integer.parseInt(s));
        }

        // Create all the Elements
        //
        Map<String, Object> configuration;
        Integer elementX, elementY;
        Element currentElement;
        for (Integer id : ids) {
            // Get the configuration for that Element
            //
            configuration = FroshProjectConfig.getElementConfig(id);
            if (configuration == null) {
                throw new FroshProjectException(
                        FroshProjectExceptionConfig.ELEMENT_MISSING_CONFIG,
                        null);
            }

            // Get its location
            //
            elementX = (Integer) configuration.get("positionX");
            elementY = (Integer) configuration.get("positionY");

            // Create the Element
            //
            Class<? extends Element> elementClass;
            try {
                elementClass = ElementType.valueOf(
                        (String) configuration.get("type"))
                        .getAssociatedClass();
                currentElement = elementClass.getConstructor(Integer.class,
                        Map.class).newInstance(id, configuration);
            } catch (InstantiationException | IllegalAccessException
                    | IllegalArgumentException | InvocationTargetException
                    | NoSuchMethodException | SecurityException e1) {
                throw new FroshProjectException(
                        FroshProjectExceptionConfig.ELEMENT_INVALID_CONFIG,
                        null, id.toString());
            }

            // Put the Element in the matrix
            //
            try {
                population[elementX][elementY] = currentElement;
            } catch (Exception e) {
                throw new FroshProjectException(
                        FroshProjectExceptionConfig.MAP_INVALID_ELEMENT_LOCATION,
                        e, id.toString());
            }
        }
    }