@Override
    public void buildFloralComposition(String fileName) throws DAOException {
        Document doc = null;
        try {
            doc = documentBuilder.parse(fileName);
            Element root = doc.getDocumentElement();
            NodeList cutFlowerList = root.getElementsByTagName(TagConstants.CUT_FLOWER_TAG);
            for (int i = 0; i < cutFlowerList.getLength(); i++) {
                Element cutFlowerElement = (Element) cutFlowerList.item(i);
                CutFlower cutFlower = buildCutFlower(cutFlowerElement);
                floralComposition.addFlower(cutFlower);
            }

            NodeList naturalFlowerList = root.getElementsByTagName(TagConstants.NATURAL_FLOWER_TAG);
            for (int i = 0; i < naturalFlowerList.getLength(); i++) {
                Element naturalFlowerElement = (Element) naturalFlowerList.item(i);
                NaturalFlower naturalFlower = buildNaturalFlower(naturalFlowerElement);
                floralComposition.addFlower(naturalFlower);
            }

            NodeList artificialFlowerList = root.getElementsByTagName(TagConstants.ARTIFICIAL_FLOWER_TAG);
            for (int i = 0; i < artificialFlowerList.getLength(); i++) {
                Element artificialFlowerElement = (Element) artificialFlowerList.item(i);
                ArtificialFlower artificialFlower = buildArtificialFlower(artificialFlowerElement);
                floralComposition.addFlower(artificialFlower);
            }

            NodeList flowerBasketList = root.getElementsByTagName(TagConstants.FLOWER_BASKET_TAG);
            if (flowerBasketList.getLength() > 0) {
                Element flowerBasketElement = (Element) flowerBasketList.item(0);
                FlowerBasket flowerBasket = buildFlowerBasket(flowerBasketElement);
                floralComposition.setFlowerPackaging(flowerBasket);
            } else {
                NodeList packagingPaperList = root.getElementsByTagName(TagConstants.PACKAGING_PAPER_TAG);
                if (packagingPaperList.getLength() > 0) {
                    Element packagingPaperElement = (Element) packagingPaperList.item(0);
                    PackagingPaper packagingPaper = buildPackagingPaper(packagingPaperElement);
                    floralComposition.setFlowerPackaging(packagingPaper);
                }
            }
        } catch (SAXException e) {
            throw new DAOException("Parsing failure. " + e.getMessage(), e);
        } catch (IOException e) {
            throw new DAOException("File or I/O error. " + e.getMessage(), e);
        }
    }