All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.semanticwb.portal.util.ContentUtils Maven / Gradle / Ivy

The newest version!
/*
 * SemanticWebBuilder es una plataforma para el desarrollo de portales y aplicaciones de integración,
 * colaboración y conocimiento, que gracias al uso de tecnología semántica puede generar contextos de
 * información alrededor de algún tema de interés o bien integrar información y aplicaciones de diferentes
 * fuentes, donde a la información se le asigna un significado, de forma que pueda ser interpretada y
 * procesada por personas y/o sistemas, es una creación original del Fondo de Información y Documentación
 * para la Industria INFOTEC, cuyo registro se encuentra actualmente en trámite.
 *
 * INFOTEC pone a su disposición la herramienta SemanticWebBuilder a través de su licenciamiento abierto al público (‘open source’),
 * en virtud del cual, usted podrá usarlo en las mismas condiciones con que INFOTEC lo ha diseñado y puesto a su disposición;
 * aprender de él; distribuirlo a terceros; acceder a su código fuente y modificarlo, y combinarlo o enlazarlo con otro software,
 * todo ello de conformidad con los términos y condiciones de la LICENCIA ABIERTA AL PÚBLICO que otorga INFOTEC para la utilización
 * del SemanticWebBuilder 4.0.
 *
 * INFOTEC no otorga garantía sobre SemanticWebBuilder, de ninguna especie y naturaleza, ni implícita ni explícita,
 * siendo usted completamente responsable de la utilización que le dé y asumiendo la totalidad de los riesgos que puedan derivar
 * de la misma.
 *
 * Si usted tiene cualquier duda o comentario sobre SemanticWebBuilder, INFOTEC pone a su disposición la siguiente
 * dirección electrónica:
 *  http://www.semanticwebbuilder.org
 */
package org.semanticwb.portal.util;

import com.arthurdo.parser.HtmlStreamTokenizer;
import com.arthurdo.parser.HtmlTag;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Properties;
import java.util.StringTokenizer;
import javax.servlet.http.HttpServletRequest;
import org.omg.PortableServer.REQUEST_PROCESSING_POLICY_ID;
import org.semanticwb.Logger;
import org.semanticwb.SWBPortal;
import org.semanticwb.SWBUtils;
import org.semanticwb.model.Resource;
import org.semanticwb.model.WebPage;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

// TODO: Auto-generated Javadoc
/**
 * The Class ContentUtils.
 * 
 * @author Jorge Jiménez
 */
public class ContentUtils {

    /** The norm_font. */
    String norm_font = null;
    
    /** The norm_size. */
    String norm_size = null;
    
    /** The norm_color. */
    String norm_color = null;
    
    /** The tit1_font. */
    String tit1_font = null;
    
    /** The tit1_size. */
    String tit1_size = null;
    
    /** The tit1_color. */
    String tit1_color = null;
    
    /** The tit2_font. */
    String tit2_font = null;
    
    /** The tit2_size. */
    String tit2_size = null;
    
    /** The tit2_color. */
    String tit2_color = null;
    
    /** The tit3_font. */
    String tit3_font = null;
    
    /** The tit3_size. */
    String tit3_size = null;
    
    /** The tit3_color. */
    String tit3_color = null;
    
    /** The css size. */
    static String cssSize = null;
    
    /** The remove links. */
    static boolean removeLinks = false;
    
    /** The flag. */
    static boolean flag = false;
    
    /** The h style objs. */
    HashMap hStyleObjs = null;
    
    /** The h t mh style objs. */
    static HashMap hTMhStyleObjs = new HashMap();
    
    /** The h tm change styles. */
    static HashMap hTMChangeStyles = new HashMap();
    
    /** The schange styles. */
    String schangeStyles = null;
    
    /** The recproperties. */
    static Properties recproperties = null;

    /** The log. */
    private static Logger log = SWBUtils.getLogger(ContentUtils.class);

    /**
     * Metodo que regresa el número de páginas con las que cuenta el contenido.
     * 
     * @param content the content
     * @return the ms content pages number
     */
    private int getMsContentPagesNumber(String content) {
        int pos = content.lastIndexOf("div.Section");
        if (pos > -1) {
            int pos1 = content.indexOf("{", pos);
            int npages = Integer.parseInt(content.substring(pos + 11, pos1 - 1).trim());
            return npages;
        }else {
            pos=content.lastIndexOf("div.WordSection");
            if (pos > -1) {
                int pos1 = content.indexOf("{", pos);
                int npages = Integer.parseInt(content.substring(pos + 15, pos1 - 1).trim());
                return npages;
            }
            return 1;
        }
    }

    //regresa string html de contenido páginado
    /**
     * Metodo que regresa el contenido por página.
     * 
     * @param content the content
     * @param totPages the tot pages
     * @param npage the npage
     * @param webpage the webpage
     * @param base the base
     * @param contentType the content type
     * @param snpages the snpages
     * @param stxtant the stxtant
     * @param stxtsig the stxtsig
     * @param stfont the stfont
     * @param position the position
     * @return the content by page
     */
    private String getContentByPage(HttpServletRequest request, String content, int totPages, int npage, WebPage webpage, Resource base, String contentType, int snpages, String stxtant, String stxtsig, String stfont, int position) {
        StringBuilder strb = new StringBuilder();
        try {

            StringBuilder strb1 = new StringBuilder();

            strb1.append("");
            strb1.append("");
            strb1.append("");
            strb1.append("");
            strb1.append("
"); //String path = webpage.getUrl() + "?"; String path = request.getRequestURI() + "?"; if (npage > 1) { strb1.append("<").append(stfont).append(">").append(stxtant).append(" "); } int ini = 1; int fin = snpages; int dif = 0; if ((totPages < snpages)) { fin = totPages; } if (totPages > snpages && npage > 1) { dif = npage - 1; if (totPages >= (snpages + dif)) { fin = snpages + dif; ini = 1 + dif; } else { fin = totPages; ini = totPages - snpages + 1; } } for (int i = ini; i <= fin; i++) { if (i != npage) { strb1.append("<" + stfont + ">" + String.valueOf(i) + " "); } else { strb1.append("" + String.valueOf(i) + " "); } } if (npage < totPages) { strb1.append("<" + stfont + ">" + stxtsig + ""); } strb1.append("
"); String data=null; if(contentType.equals("MsWord")) data=getContentByPage(content, npage); else if(contentType.equals("OpenOffice")) data=getContentOpenOfficeByPage(content, npage); else if(contentType.equals("HtmlContent")) data=getHtmlContentByPage(content, npage); if (position == 1) { strb.append(data); strb.append("

"); strb.append(strb1.toString()); } else if (position == 2) { strb.append(strb1.toString()); strb.append("

"); strb.append(data); } else if (position == 3) { strb.append(strb1.toString()); strb.append("

"); strb.append(data); strb.append("

"); strb.append(strb1.toString()); } } catch (Exception e) { log.error(e); } return strb.toString(); } private String getContentByPage(HttpServletRequest request,String content, int totPages, int npage, WebPage webpage, Resource base, String contentType, int snpages, String stxtant, String stxtsig, String stfont, int position,String uri) { { StringBuilder strb = new StringBuilder(); try { StringBuilder strb1 = new StringBuilder(); strb1.append(""); strb1.append(""); strb1.append(""); strb1.append(""); strb1.append("
"); //String path = webpage.getUrl() + "?"; String path = request.getRequestURI() + "?"; if (npage > 1) { if(uri==null) strb1.append("<" + stfont + ">" + stxtant + " "); else strb1.append("<" + stfont + ">" + stxtant + " "); } int ini = 1; int fin = snpages; int dif = 0; if ((totPages < snpages)) { fin = totPages; } if (totPages > snpages && npage > 1) { dif = npage - 1; if (totPages >= (snpages + dif)) { fin = snpages + dif; ini = 1 + dif; } else { fin = totPages; ini = totPages - snpages + 1; } } for (int i = ini; i <= fin; i++) { if (i != npage) { if(uri==null) strb1.append("<" + stfont + ">" + String.valueOf(i) + " "); else strb1.append("<" + stfont + ">" + String.valueOf(i) + " "); } else { strb1.append("" + String.valueOf(i) + " "); } } if (npage < totPages) { if(uri==null) strb1.append("<" + stfont + ">" + stxtsig + ""); else strb1.append("<" + stfont + ">" + stxtsig + ""); } strb1.append("
"); String data=null; if(contentType.equals("MsWord")) data=getContentByPage(content, npage); else if(contentType.equals("OpenOffice")) data=getContentOpenOfficeByPage(content, npage); else if(contentType.equals("HtmlContent")) data=getHtmlContentByPage(content, npage); if (position == 1) { strb.append(data); strb.append("

"); strb.append(strb1.toString()); } else if (position == 2) { strb.append(strb1.toString()); strb.append("

"); strb.append(data); } else if (position == 3) { strb.append(strb1.toString()); strb.append("

"); strb.append(data); strb.append("

"); strb.append(strb1.toString()); } } catch (Exception e) { log.error(e); } return strb.toString(); } } /** * Pagination ms word. * * @param htmlOut the html out * @param page the page * @param npage the npage * @param base the base * @param snpages the snpages * @param stxtant the stxtant * @param stxtsig the stxtsig * @param stfont the stfont * @param position the position * @return the string */ public String paginationMsWord(HttpServletRequest request,String htmlOut, WebPage page, String npage, Resource base, int snpages, String stxtant, String stxtsig, String stfont, int position) { int totPages = getMsContentPagesNumber(htmlOut); if (totPages > 1) { int ipage = 1; if (npage != null && npage.length()>0) { ipage = Integer.parseInt(npage); } else { ipage = 1; } htmlOut = getContentByPage(request,htmlOut, totPages, ipage, page, base, "MsWord", snpages, stxtant, stxtsig, stfont, position); } return htmlOut; } /** * Remueve estilos en las ligas del contenido. * * @param content the content * @param cadena the cadena * @return the string */ public String removeLinks(String content, String cadena) { int in = 0; while (in < content.length()) { int pos = -1; pos = content.indexOf(cadena, in); if (pos > -1) { int pos1 = -1; pos1 = content.indexOf(";}", pos); if (pos1 > -1) { content = content.substring(0, pos) + content.substring(pos1 + 2); } } else { in = content.length(); } } return content; } /** * Gets the content by page. * * @param datos the datos * @param page the page * @return the content by page */ private String getContentByPage(String datos, int page) { HtmlTag tag = new HtmlTag(); StringBuffer ret = new StringBuffer(); StringBuffer rettmp = new StringBuffer(); boolean flag = false; boolean flag1 = false; boolean flag2 = false; try { HtmlStreamTokenizer tok = new HtmlStreamTokenizer(new java.io.ByteArrayInputStream(datos.getBytes())); while (tok.nextToken() != HtmlStreamTokenizer.TT_EOF) { int ttype = tok.getTokenType(); if (ttype == HtmlStreamTokenizer.TT_TAG || ttype == HtmlStreamTokenizer.TT_COMMENT) { tok.parseTag(tok.getStringValue(), tag); if (tok.getRawString().toLowerCase().startsWith("