/*******************************************************************************
* Copyright (c) 2010, Luca Conte @ BERT Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
*         Redistributions of source code must retain the above copyright
*          notice, this list of conditions and the following disclaimer.
*
*         Redistributions in binary form must reproduce the above copyright
*       notice, this list of conditions and the following disclaimer in the
*       documentation and/or other materials provided with the distribution.
*
*         Neither the name of Adobe Systems Incorporated nor the names of its
*       contributors may be used to endorse or promote products derived from
*       this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************/
package org.bert.ebooks.processors;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import org.bert.ebooks.BlogEPUBlisher;
import org.bert.ebooks.BlogEntryProcessor;
import org.bert.ebooks.DeveloperUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import com.adobe.dp.epub.ncx.TOCEntry;
import com.adobe.dp.epub.opf.NCXResource;
import com.adobe.dp.epub.opf.OPSResource;
import com.adobe.dp.epub.opf.Publication;
import com.adobe.dp.epub.ops.OPSDocument;
import com.adobe.dp.epub.style.Stylesheet;

public class NazioneIndiana implements BlogEntryProcessor {
 
private boolean processImages=true;
 
@Override
 
public boolean isProcessImages() {
   
   
return processImages;
 
}

 
@Override
 
public void processURL(BlogEPUBlisher publisher,OPSResource post,
      TOCEntry rootTOCEntry,  String url
)
     
throws MalformedURLException, IOException {
   
Document doc = Jsoup.parse(new URL(url), 60000);
   
// get the post DIV
   
Elements e = doc.select("div.post");
   
// get chapter document
   
OPSDocument mainDoc = post.getDocument();

   
// add chapter to the table of contents with title=post's title
   
TOCEntry mainTOCEntry = publisher.getToc().createTOCEntry(e.select("h2.entry-title").text(),
        mainDoc.getRootXRef
());
    rootTOCEntry.add
(mainTOCEntry);

   
// chapter XHTML body element
   
com.adobe.dp.epub.ops.Element body = mainDoc.getBody();
   
// add a header
   
com.adobe.dp.epub.ops.Element h = mainDoc.createElement("h1");
   
//the title
   
BlogEPUBlisher.processContents(publisher.getEpub(),mainDoc, BlogEPUBlisher.getFirstElement(e.select("h2.entry-title")), h,isProcessImages());
    body.add
(h);
    h = mainDoc.createElement
("h4");
    h.add
("( "+url+" )");
   
//the entry date
   
h = mainDoc.createElement("h2");
    BlogEPUBlisher.processContents
(publisher.getEpub(),mainDoc, BlogEPUBlisher.getFirstElement(e.select("abbr.published")), h,isProcessImages());
    body.add
(h);

   
// add a paragraph
   
com.adobe.dp.epub.ops.Element paragraph = null;

    e = e.select
("div.entry-content").select("p");

   
for (Element element : e) {
     
if (element.hasText()&&!element.parent().classNames().contains("entry-yarpp")) {
       
paragraph = mainDoc.createElement("p");
        BlogEPUBlisher.processContents
(publisher.getEpub(),mainDoc, element, paragraph,isProcessImages());
        body.add
(paragraph);
     
}
    }

   
Elements c = doc.select("li.comment");
   
if (c.size() > 0) {
     
com.adobe.dp.epub.ops.Element elm = mainDoc.createElement("h2");
      elm.add
("COMMENTI");
      body.add
(elm);
      mainTOCEntry.add
(publisher.getToc().createTOCEntry("Commenti", elm.getSelfRef()));

     
for (Element ce : c) {
       
elm = mainDoc.createElement("hr");

        body.add
(elm);

        elm = mainDoc.createElement
("h3");
        BlogEPUBlisher.processContents
(publisher.getEpub(),mainDoc, BlogEPUBlisher.getFirstElement(ce.select("div.comment-author")), elm,isProcessImages());
        body.add
(elm);

        elm = mainDoc.createElement
("h4");
        BlogEPUBlisher.processContents
(publisher.getEpub(),mainDoc,
            BlogEPUBlisher.getFirstElement
(ce.select("div.comment-meta")), elm,isProcessImages());
        body.add
(elm);

       
for (Element pe : ce.select("p")) {
         
elm = mainDoc.createElement("p");
          BlogEPUBlisher.processContents
(publisher.getEpub(),mainDoc, pe, elm,isProcessImages());
          body.add
(elm);
       
}

      }
    }
   
  }

 
public void setProcessImages(boolean processImage) {
   
this.processImages = processImage;
 
}

}