org.semanticwb.portal.util.ContentUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of SWBPortal Show documentation
Show all versions of SWBPortal Show documentation
SemanticWebBuilder Portal API components and utilities
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("");
//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(" ");
strb1.append(" ");
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("");
//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(" ");
strb1.append(" ");
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("