package eu.dnetlib.efg1914.various.utils;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;

import eu.dnetlib.efg1914.authoring.components.Topic;

@XmlRootElement(name = "themes")
public class Themes {
    private List<ThemeCredits> themesCredits;

    @XmlElementWrapper(name = "publishedThemes")
    @XmlElement(name = "themeCredits")
    public List<ThemeCredits> getThemesCredits() {
        return themesCredits;
    }

    public void setThemesCredits(List<ThemeCredits> themeCredits) {
        this.themesCredits = themeCredits;
    }


    public static void main(String[] args) throws JAXBException, UnsupportedEncodingException {
        JAXBContext jc = JAXBContext.newInstance(Themes.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        String s = "<themes><publishedThemes><themeCredits><theme id=\"eb8c1d7b-f57f-4e61-8818-ae8a593c6452\"><header><creationDate>2014-04-14 12:24:00</creationDate><lastModified>2014-05-15 15:00:45 </lastModified></header><alias>a-test</alias><cssClass>collectionType1</cssClass><curator>3757b421-0ea9-4192-96b8-fafebbcc2b2c</curator><description>&lt;br&gt;</description><introFrameId>8e8afd9c-5b8f-41f0-88af-228f280657ce</introFrameId><order>-1</order><published>true</published><shortDescription/><title>a theme!!</title><topics><topic>65cf78bb-6303-42c7-b945-08948d81c176</topic><topic>3538b01a-fc18-48f3-aef7-7b851577ea73</topic></topics></theme><topics><topic id=\"65cf78bb-6303-42c7-b945-08948d81c176\"><header><creationDate>24-02-2014 12:30:46</creationDate><lastModified>2014-05-15 12:42:53 </lastModified></header><credits><credit><header/><curator>123</curator><institution>uoa</institution><url>http://www.google.com</url></credit></credits><curator>3757b421-0ea9-4192-96b8-fafebbcc2b2c</curator><description>&lt;br&gt;</description><frames><frame>71dd1c99-c61a-4fe3-b17b-08b60cd5d818</frame><frame>77f76551-80c2-4d95-b0da-ec4567e6ea73</frame></frames><published>0</published><shortDescription/><suggestedThemes/><title>topic A.</title></topic><topic id=\"3538b01a-fc18-48f3-aef7-7b851577ea73\"><header><creationDate>24-02-2014 12:37:02</creationDate><lastModified>2014-05-15 12:42:54 </lastModified></header><credits><credit><header/><curator>argiro</curator><institution>di</institution><url>http://www.di.uoa.gr</url></credit></credits><curator>68003e99-454a-4757-9ead-8695810a03a8</curator><description>&lt;br&gt;</description><frames><frame>1ba5355d-db32-48fe-a67b-df83f82af539</frame><frame>fab3ae2e-6968-48ea-91af-1970be936f16</frame></frames><published>0</published><shortDescription/><suggestedThemes/><title>THis is the topic no 2</title></topic></topics></themeCredits><themeCredits><theme id=\"2ad1f12e-667d-4ae4-95f7-f6168a60b5cf\"><header><creationDate>2014-04-14 12:25:58</creationDate><lastModified>2014-05-15 12:50:21 </lastModified></header><alias>a-tess</alias><cssClass>collectionType1</cssClass><curator>3757b421-0ea9-4192-96b8-fafebbcc2b2c</curator><description>&lt;br&gt;</description><introFrameId>ad3651be-1db2-48e0-b756-3baf54d10026</introFrameId><order>-1</order><published>true</published><shortDescription/><title>sss</title><topics><topic>5211d31f-ff7f-457a-a849-2d99176db92f</topic></topics></theme><topics><topic id=\"5211d31f-ff7f-457a-a849-2d99176db92f\"><header><creationDate>2014-03-28 14:04:28</creationDate><lastModified>2014-05-15 13:08:44 </lastModified></header><credits><credit><header/><curator>aaaaaaaa</curator><institution>aaaaaaaaa</institution><url>http://aaaaaaaaaaaa</url></credit><credit><header/><curator>eeeeee</curator><institution>eeeeeeeee</institution><url>http://eeee</url></credit></credits><curator>a82f05e9-80d7-42f0-ba55-3f843382cb79</curator><description>&lt;br&gt;</description><frames><frame>e9a3e5b8-9210-4191-96e8-4d68af307ef8</frame><frame>bf2cfa0c-aa68-480d-8f13-83dc86b70608</frame></frames><published>0</published><shortDescription/><suggestedThemes/><title>topic created by topic curator</title></topic></topics></themeCredits><themeCredits><theme id=\"0b8c7077-36c6-4a60-8be7-e2ed028a2341\"><header><creationDate>2014-04-25 16:53:24</creationDate><lastModified>2014-05-15 12:49:20 </lastModified></header><alias>test</alias><cssClass>collectionType1</cssClass><curator>3757b421-0ea9-4192-96b8-fafebbcc2b2c</curator><description>&lt;br&gt;</description><introFrameId>d3f83b5e-a05d-4820-b41f-c04c6719249b</introFrameId><order>-1</order><published>true</published><shortDescription/><title>test!!</title><topics><topic>5211d31f-ff7f-457a-a849-2d99176db92f</topic></topics></theme><topics><topic id=\"5211d31f-ff7f-457a-a849-2d99176db92f\"><header><creationDate>2014-03-28 14:04:28</creationDate><lastModified>2014-05-15 13:08:44 </lastModified></header><credits><credit><header/><curator>aaaaaaaa</curator><institution>aaaaaaaaa</institution><url>http://aaaaaaaaaaaa</url></credit><credit><header/><curator>eeeeee</curator><institution>eeeeeeeee</institution><url>http://eeee</url></credit></credits><curator>a82f05e9-80d7-42f0-ba55-3f843382cb79</curator><description>&lt;br&gt;</description><frames><frame>e9a3e5b8-9210-4191-96e8-4d68af307ef8</frame><frame>bf2cfa0c-aa68-480d-8f13-83dc86b70608</frame></frames><published>0</published><shortDescription/><suggestedThemes/><title>topic created by topic curator</title></topic></topics></themeCredits></publishedThemes></themes>";

        InputStream stream = new ByteArrayInputStream(s.getBytes("UTF-8"));

        Themes themes = (Themes) unmarshaller.unmarshal(stream);
        for (ThemeCredits tc : themes.getThemesCredits()) {
            System.out.println("Theme::: " + tc.getTheme().getTitle());
            for (Topic t : tc.getTopics()) {
                System.out.println("Topic::: " + t.getTitle());
            }
        }

    }

    public static void main1(String[] args) throws JAXBException, UnsupportedEncodingException {
        JAXBContext jc = JAXBContext.newInstance(Themes.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        String s = "<themes><publishedThemes><themeCredits><theme id=\"eb8c1d7b-f57f-4e61-8818-ae8a593c6452\"><header><creationDate>2014-04-14 12:24:00</creationDate><lastModified>2014-05-15 15:00:45 </lastModified></header><alias>a-test</alias><cssClass>collectionType1</cssClass><curator>3757b421-0ea9-4192-96b8-fafebbcc2b2c</curator><description>&lt;br&gt;</description><introFrameId>8e8afd9c-5b8f-41f0-88af-228f280657ce</introFrameId><order>-1</order><published>true</published><shortDescription/><title>a theme!!</title><topics><topic>65cf78bb-6303-42c7-b945-08948d81c176</topic><topic>3538b01a-fc18-48f3-aef7-7b851577ea73</topic></topics></theme><topics><topic id=\"65cf78bb-6303-42c7-b945-08948d81c176\"><header><creationDate>24-02-2014 12:30:46</creationDate><lastModified>2014-05-15 12:42:53 </lastModified></header><credits><credit><header/><curator>123</curator><institution>uoa</institution><url>http://www.google.com</url></credit></credits><curator>3757b421-0ea9-4192-96b8-fafebbcc2b2c</curator><description>&lt;br&gt;</description><frames><frame>71dd1c99-c61a-4fe3-b17b-08b60cd5d818</frame><frame>77f76551-80c2-4d95-b0da-ec4567e6ea73</frame></frames><published>0</published><shortDescription/><suggestedThemes/><title>topic A.</title></topic><topic id=\"3538b01a-fc18-48f3-aef7-7b851577ea73\"><header><creationDate>24-02-2014 12:37:02</creationDate><lastModified>2014-05-15 12:42:54 </lastModified></header><credits><credit><header/><curator>argiro</curator><institution>di</institution><url>http://www.di.uoa.gr</url></credit></credits><curator>68003e99-454a-4757-9ead-8695810a03a8</curator><description>&lt;br&gt;</description><frames><frame>1ba5355d-db32-48fe-a67b-df83f82af539</frame><frame>fab3ae2e-6968-48ea-91af-1970be936f16</frame></frames><published>0</published><shortDescription/><suggestedThemes/><title>THis is the topic no 2</title></topic></topics></themeCredits><themeCredits><theme id=\"2ad1f12e-667d-4ae4-95f7-f6168a60b5cf\"><header><creationDate>2014-04-14 12:25:58</creationDate><lastModified>2014-05-15 12:50:21 </lastModified></header><alias>a-tess</alias><cssClass>collectionType1</cssClass><curator>3757b421-0ea9-4192-96b8-fafebbcc2b2c</curator><description>&lt;br&gt;</description><introFrameId>ad3651be-1db2-48e0-b756-3baf54d10026</introFrameId><order>-1</order><published>true</published><shortDescription/><title>sss</title><topics><topic>5211d31f-ff7f-457a-a849-2d99176db92f</topic></topics></theme><topics><topic id=\"5211d31f-ff7f-457a-a849-2d99176db92f\"><header><creationDate>2014-03-28 14:04:28</creationDate><lastModified>2014-05-15 13:08:44 </lastModified></header><credits><credit><header/><curator>aaaaaaaa</curator><institution>aaaaaaaaa</institution><url>http://aaaaaaaaaaaa</url></credit><credit><header/><curator>eeeeee</curator><institution>eeeeeeeee</institution><url>http://eeee</url></credit></credits><curator>a82f05e9-80d7-42f0-ba55-3f843382cb79</curator><description>&lt;br&gt;</description><frames><frame>e9a3e5b8-9210-4191-96e8-4d68af307ef8</frame><frame>bf2cfa0c-aa68-480d-8f13-83dc86b70608</frame></frames><published>0</published><shortDescription/><suggestedThemes/><title>topic created by topic curator</title></topic></topics></themeCredits><themeCredits><theme id=\"0b8c7077-36c6-4a60-8be7-e2ed028a2341\"><header><creationDate>2014-04-25 16:53:24</creationDate><lastModified>2014-05-15 12:49:20 </lastModified></header><alias>test</alias><cssClass>collectionType1</cssClass><curator>3757b421-0ea9-4192-96b8-fafebbcc2b2c</curator><description>&lt;br&gt;</description><introFrameId>d3f83b5e-a05d-4820-b41f-c04c6719249b</introFrameId><order>-1</order><published>true</published><shortDescription/><title>test!!</title><topics><topic>5211d31f-ff7f-457a-a849-2d99176db92f</topic></topics></theme><topics><topic id=\"5211d31f-ff7f-457a-a849-2d99176db92f\"><header><creationDate>2014-03-28 14:04:28</creationDate><lastModified>2014-05-15 13:08:44 </lastModified></header><credits><credit><header/><curator>aaaaaaaa</curator><institution>aaaaaaaaa</institution><url>http://aaaaaaaaaaaa</url></credit><credit><header/><curator>eeeeee</curator><institution>eeeeeeeee</institution><url>http://eeee</url></credit></credits><curator>a82f05e9-80d7-42f0-ba55-3f843382cb79</curator><description>&lt;br&gt;</description><frames><frame>e9a3e5b8-9210-4191-96e8-4d68af307ef8</frame><frame>bf2cfa0c-aa68-480d-8f13-83dc86b70608</frame></frames><published>0</published><shortDescription/><suggestedThemes/><title>topic created by topic curator</title></topic></topics></themeCredits></publishedThemes></themes>";

        InputStream stream = new ByteArrayInputStream(s.getBytes("UTF-8"));

        Themes themes = (Themes) unmarshaller.unmarshal(stream);
        for (ThemeCredits tc : themes.getThemesCredits()) {
            System.out.println("Theme::: " + tc.getTheme().getTitle());
            for (Topic t : tc.getTopics()) {
                System.out.println("Topic::: " + t.getTitle());
            }
        }

    }

}
