import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Iterator;
+import java.util.Vector;
import mir.config.MirPropertiesConfiguration;
import mir.entity.EntityBrowser;
public PDFGenerator(ByteArrayOutputStream out){
logger = new LoggerWrapper("PDFGenerator");
- try {
- configuration = MirPropertiesConfiguration.instance();
- }
- catch (MirPropertiesConfiguration.PropertiesConfigExc e) {
- throw new RuntimeException("Can't get configuration: " + e.getMessage());
- }
+ configuration = MirPropertiesConfiguration.instance();
localImageDir=configuration.getString("Producer.Image.Path");
try {
try {
ColumnText ict = new ColumnText(cb);
- String theTitle = entityContent.getValue("title");
- String theCreator = entityContent.getValue("creator");
+ String theTitle = entityContent.getFieldValue("title");
+ String theCreator = entityContent.getFieldValue("creator");
Phrase titleP=new Phrase(" - " + theTitle,new Font(indexFontFamily,indexFontSize,Font.BOLD));
Phrase creatorP=new Phrase( " :: " + theCreator,new Font(indexFontFamily,indexFontSize));
float toYPosition = currentYPosition - indexLineHeight;
while (images.hasNext()){
EntityImages currentImage=(EntityImages) images.next();
- float img_width=(new Float(currentImage.getValue("img_width"))).floatValue();
- float img_height=(new Float(currentImage.getValue("img_height"))).floatValue();
+ float img_width=(new Float(currentImage.getFieldValue("img_width"))).floatValue();
+ float img_height=(new Float(currentImage.getFieldValue("img_height"))).floatValue();
if (img_height>maxImageHeight){
img_width=(new Float((new Float(img_width*(maxImageHeight/img_height))).intValue())).floatValue();
img_height=maxImageHeight;
img_width=maxImageWidth;
}
- String img_title=currentImage.getValue("title");
- String img_path=currentImage.getValue("publish_path");
+ String img_title=currentImage.getFieldValue("title");
+ String img_path=currentImage.getFieldValue("publish_path");
if ((status & ColumnText.NO_MORE_TEXT) == 0){
// there is still text, so add an image which will have text wrapped around it, then add the text which
* source
*/
- Iterator images = new EntityBrowser(
- DatabaseImages.getInstance(),
- "exists (select * from content_x_media where content_id=" + entityContent.getId() + " and media_id=id)",
- "id desc", 30, -1, 0);
+ Vector extraTables = new Vector();
+ extraTables.add("content_x_media cxm");
+ Iterator images = new EntityBrowser(
+ DatabaseImages.getInstance(), "i", extraTables,
+ "cxm.content_id="+entityContent.getId()+"and cxm.media_id=i.id",
+ "i.id desc", 30, -1, 0);
- String isHTML = entityContent.getValue("is_html");
- String theTitle = entityContent.getValue("title");
- String theCreator = entityContent.getValue("creator");
+ String isHTML = entityContent.getFieldValue("is_html");
+ String theTitle = entityContent.getFieldValue("title");
+ String theCreator = entityContent.getFieldValue("creator");
String theDate = DateTimeFunctions.advancedDateFormat(
configuration.getString("RDF.Meta.DateFormat"),
- StringUtil.convertMirInternalDateToDate(entityContent.getValue("webdb_create")),
+ StringUtil.convertMirInternalDateToDate(entityContent.getFieldValue("webdb_create")),
configuration.getString("Mir.DefaultTimezone"));
- String theDescriptionRaw = entityContent.getValue("description");
- String theContentRaw = entityContent.getValue("content_data");
- String theSource = configuration.getString("Producer.ProductionHost") + "/" + configuration.getString("StandardLanguage") + entityContent.getValue("publish_path") + entityContent.getValue("id") + ".shtml";
+ String theDescriptionRaw = entityContent.getFieldValue("description");
+ String theContentRaw = entityContent.getFieldValue("content_data");
+ String theSource = configuration.getString("Producer.PublicationHost") + "/" + configuration.getString("StandardLanguage") + entityContent.getFieldValue("publish_path") + entityContent.getFieldValue("id") + ".shtml";
try {
RE nobackslashr = new RE("\r");
theContent= nobackslashr.substituteAll(theContentRaw,"");
+ theDescription= nobackslashr.substituteAll(theDescriptionRaw,"");
RE HxTag = new RE("</?h[1-6][^>]*>",RE.REG_ICASE);
theContent = HxTag.substituteAll(theContent,"\n\n");
+ theDescription = HxTag.substituteAll(theDescription,"\n\n");
RE ListItemTag = new RE("<li[^>]*>",RE.REG_ICASE);
theContent = ListItemTag.substituteAll(theContent,"\n * ");
+ theDescription = ListItemTag.substituteAll(theDescription,"\n * ");
RE ListTag = new RE("<(u|o)l[^>]*>",RE.REG_ICASE);
theContent = ListTag.substituteAll(theContent,"\n");
+ theDescription = ListTag.substituteAll(theDescription,"\n");
RE DivTag = new RE("</?div[^>]*>",RE.REG_ICASE);
theContent= DivTag.substituteAll(theContent,"\n");
+ theDescription= DivTag.substituteAll(theDescription,"\n");
RE PTag = new RE("<(p|P)([:space:]+[^>]*)?>");
theContent= PTag.substituteAll(theContent,"\n ");
+ theDescription= PTag.substituteAll(theDescription,"\n ");
RE PTagClose = new RE("</(p|P)([:space:]+[^>]*)?>");
theContent= PTagClose.substituteAll(theContent,"\n");
+ theDescription= PTagClose.substituteAll(theDescription,"\n");
RE BRTag = new RE("<(br|BR)([:space:]+[^>]*)?>");
theContent= BRTag.substituteAll(theContent,"\n");
+ theDescription= BRTag.substituteAll(theDescription,"\n");
RE ATagAll = new RE("<a[^>]*href=(?:\"|\')([^#\"\'][^\'\"]+)(?:\"|\')[^>]*>(.*?)</a>",RE.REG_ICASE);
REMatchEnumeration atags= ATagAll.getMatchEnumeration(theContent);
}
theContent=theContentCopy;
+ REMatchEnumeration atags2= ATagAll.getMatchEnumeration(theDescription);
+ String theDescriptionCopy=theDescription;
+ while (atags2.hasMoreMatches()){
+ REMatch atag = atags2.nextMatch();
+ String atagString=atag.toString();
+ String atagStringHref=atag.toString(1);
+ String atagStringText=atag.toString(2);
+ int begin=theDescriptionCopy.indexOf(atagString);
+ theDescriptionCopy=theDescriptionCopy.substring(0,begin) + atagStringText + " ["+ atagStringHref + "] " + theDescriptionCopy.substring(begin+atagString.length());
+ }
+ theDescription=theDescriptionCopy;
+
+
RE noTags = new RE("<[^>]*>");
theContent= noTags.substituteAll(theContent," ");
+ theDescription= noTags.substituteAll(theDescription," ");
theContent=mir.util.Translate.decode(theContent);
+ theDescription=mir.util.Translate.decode(theDescription);
RE re1 = new RE("\r?\n\r?\n");
- String theDescription1 = re1.substituteAll(theDescriptionRaw,"BREAKHERE");
+ String theDescription1 = re1.substituteAll(theDescription,"BREAKHERE");
RE re2 = new RE("\r?\n");
String theDescription2 = re2.substituteAll(theDescription1," ");