package com.idega.content.bean;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import javax.faces.context.FacesContext;
import org.apache.myfaces.custom.tree2.TreeNode;
import org.jdom.Document;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import com.idega.content.business.ContentUtil;
import com.idega.content.themes.business.TemplatesLoader;
import com.idega.content.themes.helpers.business.ThemesHelper;
import com.idega.content.tree.PageTemplate;
import com.idega.content.tree.TemplateComparator;
import com.idega.core.data.IWTreeNode;
import com.idega.idegaweb.IWMainApplication;
import com.idega.util.expression.ELUtil;
import com.idega.webface.WFTreeNode;
public class SiteTemplateBean {
// TO DO change IWTreeNode to PageTreeNode
TreeNode siteTree = null;
TreeNode pageTree = null;
String path = null;
Document siteDocument = null;
private Map <String, PageTemplate> pageMap = null;
public SiteTemplateBean() {
super();
FacesContext ctx = FacesContext.getCurrentInstance();
IWMainApplication iwma = IWMainApplication.getIWMainApplication(ctx);
pageMap = TemplatesLoader.getInstance(iwma).getPageTemplates();
}
public WFTreeNode getPage(WFTreeNode currNode) {
List<PageTemplate> pageTemplates = new ArrayList<PageTemplate>(pageMap.values());
Collections.sort(pageTemplates, new TemplateComparator());
for (int i = 0; i < pageTemplates.size(); i++) {
PageTemplate current = pageTemplates.get(i);
WFTreeNode newNode = new WFTreeNode(new IWTreeNode(current.getName()));
newNode.setIconURI(current.getIconFile());
newNode.setPageType(current.getType());
newNode.setTemplateURI(current.getTemplateFile());
currNode.addChild(newNode);
}
return currNode;
}
public TreeNode getPageTree(){
WFTreeNode rootNode = new WFTreeNode(new IWTreeNode("pageTemplatesRoot"));
rootNode = getPage(rootNode);
return rootNode;
}
public String getPath() {
return getThemesHelper().getWebRootWithoutContent() + ContentUtil.getBundle().getVirtualPathWithFileNameString("templates/site-templates.xml");
}
public void setPath(String path) {
this.path = path;
}
public void setSiteDocument(Document siteDocument) {
this.siteDocument = siteDocument;
}
public Document getXMLDocument(String link) {
URL url = null;
try {
url = new URL(link);
} catch (MalformedURLException e) {
return null;
}
SAXBuilder builder = new SAXBuilder();
Document document = null;
try {
document = builder.build(url);
} catch (JDOMException e) {
return null;
} catch (IOException e) {
return null;
}
return document;
}
public ThemesHelper getThemesHelper() {
return ELUtil.getInstance().getBean(ThemesHelper.class);
}
}