dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #23164
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 11264: PDF data entry from code cleanup and I18n the element names
------------------------------------------------------------
revno: 11264
committer: James Chang <jamesbchang@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2013-06-26 15:56:44 +0700
message:
PDF data entry from code cleanup and I18n the element names
modified:
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/DefaultPdfDataEntryFormService.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfDataEntryFormService.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfDataEntryFormUtil.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFieldCell.java
dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFormFontSettings.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/PDFFormController.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/DefaultPdfDataEntryFormService.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/DefaultPdfDataEntryFormService.java 2013-06-02 01:38:28 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/DefaultPdfDataEntryFormService.java 2013-06-26 08:56:44 +0000
@@ -61,7 +61,6 @@
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
-import com.lowagie.text.pdf.CMYKColor;
import com.lowagie.text.pdf.PdfAnnotation;
import com.lowagie.text.pdf.PdfAppearance;
import com.lowagie.text.pdf.PdfBorderDictionary;
@@ -73,6 +72,10 @@
import com.lowagie.text.pdf.RadioCheckField;
import com.lowagie.text.pdf.TextField;
+/**
+ * @author James Chang
+ */
+
public class DefaultPdfDataEntryFormService
implements PdfDataEntryFormService
{
@@ -148,13 +151,17 @@
throws IOException, DocumentException, ParseException, Exception
{
DataSet dataSet = dataSetService.getDataSet( dataSetUid );
-
+
if ( dataSet == null )
{
throw new Exception( "Error - DataSet not found for UID " + dataSetUid );
}
else
{
+
+ // Get I18n locale language translated version of DataSet
+ dataSet = dataSetService.getDataSet( dataSet.getId(), true, true, false );
+
setDataSet_DocumentTopSection( document, dataSet );
document.add( Chunk.NEWLINE );
@@ -185,7 +192,7 @@
document.add( new Paragraph( dataSet.getDisplayName(), pdfFormFontSettings
.getFont( PdfFormFontSettings.FONTTYPE_TITLE ) ) );
- document.add( new Paragraph( dataSet.getDescription(), pdfFormFontSettings
+ document.add( new Paragraph( dataSet.getDisplayDescription(), pdfFormFontSettings
.getFont( PdfFormFontSettings.FONTTYPE_DESCRIPTION ) ) );
}
@@ -552,6 +559,7 @@
}
// Insert 'Save As' button to document.
+ @SuppressWarnings( "unused" )
private void insertSaveAsButton( Document document, PdfWriter writer, String name )
throws DocumentException
{
@@ -699,6 +707,7 @@
table.addCell( cell );
}
+ @SuppressWarnings( "unused" )
private void addCell_WithRadioButton( PdfPTable table, PdfWriter writer, String strfldName )
{
// Add to the main table
=== modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfDataEntryFormService.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfDataEntryFormService.java 2013-05-25 11:38:41 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfDataEntryFormService.java 2013-06-26 08:56:44 +0000
@@ -32,6 +32,10 @@
import com.lowagie.text.pdf.PdfWriter;
import org.hisp.dhis.i18n.I18nFormat;
+/**
+ * @author James Chang
+ */
+
public interface PdfDataEntryFormService
{
void generatePDFDataEntryForm( Document document, PdfWriter writer, String inputUid, int typeId,
=== modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfDataEntryFormUtil.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfDataEntryFormUtil.java 2013-05-31 08:03:08 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfDataEntryFormUtil.java 2013-06-26 08:56:44 +0000
@@ -49,6 +49,10 @@
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfReader;
+/**
+ * @author James Chang
+ */
+
public class PdfDataEntryFormUtil
{
public static final int DATATYPE_DATASET = 0;
@@ -216,6 +220,7 @@
// Loop Through the Fields and get data.
+ @SuppressWarnings( "unchecked" )
Set<String> fldNames = form.getFields().keySet();
for ( String fldName : fldNames )
=== modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFieldCell.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFieldCell.java 2013-05-30 10:42:28 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFieldCell.java 2013-06-26 08:56:44 +0000
@@ -45,6 +45,10 @@
import com.lowagie.text.pdf.PushbuttonField;
import com.lowagie.text.pdf.RadioCheckField;
+/**
+ * @author James Chang
+ */
+
public class PdfFieldCell
implements PdfPCellEvent
{
@@ -132,6 +136,8 @@
{
PdfContentByte canvasText = canvases[PdfPTable.TEXTCANVAS];
+
+ // PENDING LOGIC
// PdfContentByte canvasLine = canvases[PdfPTable.LINECANVAS];
//
// float margin = 2;
@@ -143,10 +149,8 @@
//
// canvasLine.rectangle( x1, y1, x2 - x1, y2 - y1 );
- switch ( type )
+ if ( type == TYPE_RADIOBUTTON )
{
- case TYPE_RADIOBUTTON:
-
if ( parent != null )
{
float leftLoc = rect.getLeft();
@@ -193,10 +197,9 @@
writer.addAnnotation( parent );
}
-
- break;
-
- case TYPE_BUTTON:
+ }
+ else if ( type == TYPE_BUTTON )
+ {
// Add the push button
PushbuttonField button = new PushbuttonField( writer, rect, name );
button.setBackgroundColor( new GrayColor( 0.75f ) );
@@ -213,40 +216,39 @@
formField = button.getField();
formField.setAction( PdfAction.javaScript( jsAction, writer ) );
-
- break;
-
- case TYPE_CHECKBOX:
-
+ }
+ else if ( type == TYPE_CHECKBOX )
+ {
// Start from the middle of the cell width.
float startingPoint = rect.getLeft() + ((rect.getWidth() + width) / 2.0f);
formField.setWidget(
new Rectangle( startingPoint, rect.getBottom(), startingPoint + width, rect.getTop() ),
PdfAnnotation.HIGHLIGHT_NONE );
-
- break;
-
- case TYPE_TEXT_ORGUNIT:
- formField.setAdditionalActions( PdfName.BL, PdfAction.javaScript(
- "if(event.value == '') app.alert('Warning! Please Enter The Org ID.');", writer ) );
-
- case TYPE_TEXT_NUMBER:
-
- default:
-
+ }
+ else
+ {
+
+ if ( type == TYPE_TEXT_ORGUNIT )
+ {
+ formField.setAdditionalActions( PdfName.BL, PdfAction.javaScript(
+ "if(event.value == '') app.alert('Warning! Please Enter The Org ID.');", writer ) );
+ }
+
+ // TYPE_TEXT_NUMBER case included as well here.
+
+ // PENDING LOGIC
// Add -1, +1 to create cellpadding effect - spacing between
// rows/cells
// formField.setWidget(
// new Rectangle( rect.getLeft() + 1, rect.getBottom() + 1,
// rect.getLeft() + width - 1, rect.getTop() - 1 ),
// PdfAnnotation.HIGHLIGHT_NONE );
+
formField.setWidget(
new Rectangle( rect.getLeft(), rect.getBottom(), rect.getLeft() + width, rect.getTop() ),
PdfAnnotation.HIGHLIGHT_NONE );
- break;
-
}
writer.addAnnotation( formField );
=== modified file 'dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFormFontSettings.java'
--- dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFormFontSettings.java 2013-05-30 11:00:42 +0000
+++ dhis-2/dhis-dxf2/src/main/java/org/hisp/dhis/dxf2/pdfform/PdfFormFontSettings.java 2013-06-26 08:56:44 +0000
@@ -29,86 +29,56 @@
import com.lowagie.text.Font;
import java.awt.*;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author James Chang
+ */
public class PdfFormFontSettings
{
public final static int FONTTYPE_BODY = 0;
+
public final static int FONTTYPE_TITLE = 1;
+
public final static int FONTTYPE_DESCRIPTION = 2;
+
public final static int FONTTYPE_SECTIONHEADER = 3;
+
public final static int FONTTYPE_FOOTER = 4;
private final static float FONTSIZE_BODY = 10;
+
private final static float FONTSIZE_TITLE = 16;
+
private final static float FONTSIZE_DESCRIPTION = 11;
+
private final static float FONTSIZE_SECTIONHEADER = 14;
+
private final static float FONTSIZE_FOOTER = 8;
private final static String FONTFAMILY = "HELVETICA";
- private Font fontBody;
- private Font fontTitle;
- private Font fontDescription;
- private Font fontSectionHeader;
- private Font fontFooter;
+ private Map<Integer, Font> fontTypeMap = new HashMap<Integer, Font>();
public PdfFormFontSettings()
{
- fontBody = createFont( FONTTYPE_BODY );
- fontTitle = createFont( FONTTYPE_TITLE );
- fontDescription = createFont( FONTTYPE_DESCRIPTION );
- fontSectionHeader = createFont( FONTTYPE_SECTIONHEADER );
- fontFooter = createFont( FONTTYPE_FOOTER );
+ fontTypeMap.put( FONTTYPE_BODY, createFont( FONTTYPE_BODY ) );
+ fontTypeMap.put( FONTTYPE_TITLE, createFont( FONTTYPE_TITLE ) );
+ fontTypeMap.put( FONTTYPE_DESCRIPTION, createFont( FONTTYPE_DESCRIPTION ) );
+ fontTypeMap.put( FONTTYPE_SECTIONHEADER, createFont( FONTTYPE_SECTIONHEADER ) );
+ fontTypeMap.put( FONTTYPE_FOOTER, createFont( FONTTYPE_FOOTER ) );
}
- //TODO use map instead of fixed properties
-
public void setFont( int fontType, Font font )
{
- switch ( fontType )
- {
- case FONTTYPE_BODY:
- fontBody = font;
- break;
- case FONTTYPE_TITLE:
- fontTitle = font;
- break;
- case FONTTYPE_DESCRIPTION:
- fontDescription = font;
- break;
- case FONTTYPE_SECTIONHEADER:
- fontSectionHeader = font;
- break;
- case FONTTYPE_FOOTER:
- fontFooter = font;
- break;
- }
+ fontTypeMap.put( fontType, font );
}
public Font getFont( int fontType )
{
- Font font = null;
-
- switch ( fontType )
- {
- case FONTTYPE_BODY:
- font = fontBody;
- break;
- case FONTTYPE_TITLE:
- font = fontTitle;
- break;
- case FONTTYPE_DESCRIPTION:
- font = fontDescription;
- break;
- case FONTTYPE_SECTIONHEADER:
- font = fontSectionHeader;
- break;
- case FONTTYPE_FOOTER:
- font = fontFooter;
- break;
- }
-
- return font;
+ return fontTypeMap.get( fontType );
}
private Font createFont( int fontType )
@@ -118,29 +88,29 @@
switch ( fontType )
{
- case FONTTYPE_BODY:
- font.setSize( FONTSIZE_BODY );
- break;
- case FONTTYPE_TITLE:
- font.setSize( FONTSIZE_TITLE );
- font.setStyle( java.awt.Font.BOLD );
- font.setColor( new Color( 0, 0, 128 ) ); // Navy Color
- break;
- case FONTTYPE_DESCRIPTION:
- font.setSize( FONTSIZE_DESCRIPTION );
- font.setColor( Color.DARK_GRAY );
- break;
- case FONTTYPE_SECTIONHEADER:
- font.setSize( FONTSIZE_SECTIONHEADER );
- font.setStyle( java.awt.Font.BOLD );
- font.setColor( new Color( 70, 130, 180 ) ); // Steel Blue Color
- break;
- case FONTTYPE_FOOTER:
- font.setSize( FONTSIZE_FOOTER );
- break;
- default:
- font.setSize( FONTSIZE_BODY );
- break;
+ case FONTTYPE_BODY:
+ font.setSize( FONTSIZE_BODY );
+ break;
+ case FONTTYPE_TITLE:
+ font.setSize( FONTSIZE_TITLE );
+ font.setStyle( java.awt.Font.BOLD );
+ font.setColor( new Color( 0, 0, 128 ) ); // Navy Color
+ break;
+ case FONTTYPE_DESCRIPTION:
+ font.setSize( FONTSIZE_DESCRIPTION );
+ font.setColor( Color.DARK_GRAY );
+ break;
+ case FONTTYPE_SECTIONHEADER:
+ font.setSize( FONTSIZE_SECTIONHEADER );
+ font.setStyle( java.awt.Font.BOLD );
+ font.setColor( new Color( 70, 130, 180 ) ); // Steel Blue Color
+ break;
+ case FONTTYPE_FOOTER:
+ font.setSize( FONTSIZE_FOOTER );
+ break;
+ default:
+ font.setSize( FONTSIZE_BODY );
+ break;
}
return font;
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/PDFFormController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/PDFFormController.java 2013-05-31 08:03:08 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/PDFFormController.java 2013-06-26 08:56:44 +0000
@@ -31,6 +31,8 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -41,6 +43,8 @@
import org.hisp.dhis.api.utils.ContextUtils.CacheStrategy;
import org.hisp.dhis.api.utils.PdfDataEntryFormImportUtil;
import org.hisp.dhis.common.IdentifiableObject.IdentifiableProperty;
+import org.hisp.dhis.dataset.DataSet;
+import org.hisp.dhis.dataset.DataSetService;
import org.hisp.dhis.dxf2.datavalueset.DataValueSetService;
import org.hisp.dhis.dxf2.metadata.ImportOptions;
import org.hisp.dhis.dxf2.pdfform.PdfDataEntryFormService;
@@ -49,6 +53,9 @@
import org.hisp.dhis.i18n.I18nManager;
import org.hisp.dhis.i18n.I18nManagerException;
import org.hisp.dhis.importexport.ImportStrategy;
+import org.hisp.dhis.period.Period;
+import org.hisp.dhis.program.ProgramStage;
+import org.hisp.dhis.program.ProgramStageService;
import org.hisp.dhis.scheduling.TaskCategory;
import org.hisp.dhis.scheduling.TaskId;
import org.hisp.dhis.system.notification.Notifier;
@@ -74,6 +81,8 @@
{
private static final Log log = LogFactory.getLog( PDFFormController.class );
+ //private static final String DATEFORMAT_DEFAULT = "MMMM dd, yyyy";
+
// -------------------------------------------------------------------------
// Dependencies
// -------------------------------------------------------------------------
@@ -88,6 +97,12 @@
private DataValueSetService dataValueSetService;
@Autowired
+ private DataSetService dataSetService;
+
+ @Autowired
+ private ProgramStageService programStageService;
+
+ @Autowired
private I18nManager i18nManager;
@Autowired
@@ -125,10 +140,13 @@
pdfFormFontSettings, i18nManager.getI18nFormat() );
// 3. - Response Header/Content Type Set
-
- contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_PDF, CacheStrategy.NO_CACHE );
- response.setContentLength( baos.size() );
+ String fileName = dataSetService.getDataSet( dataSetUid ).getName() + " " + (new SimpleDateFormat(
+ Period.DEFAULT_DATE_FORMAT )).format( new Date() ) ;
+
+ contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_PDF, CacheStrategy.NO_CACHE, fileName, false );
+ response.setContentLength( baos.size() );
+
// 4. - Output the data into Stream and close the stream.
writeToOutputStream( baos, response );
@@ -202,7 +220,10 @@
// 3. - Response Header/Content Type Set
- contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_PDF, CacheStrategy.NO_CACHE );
+ String fileName = programStageService.getProgramStage( programStageUid ).getName() + " "
+ + (new SimpleDateFormat(Period.DEFAULT_DATE_FORMAT )).format( new Date() ) ;
+
+ contextUtils.configureResponse( response, ContextUtils.CONTENT_TYPE_PDF, CacheStrategy.NO_CACHE, fileName, false );
response.setContentLength( baos.size() );
// 4. - write ByteArrayOutputStream to the ServletOutputStream