diff options
author | rpiazzi <rpiazzi@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c> | 2011-09-23 14:53:18 +0000 |
---|---|---|
committer | rpiazzi <rpiazzi@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c> | 2011-09-23 14:53:18 +0000 |
commit | b64e6b125b2474702686847afef75b8894ba58bc (patch) | |
tree | a4b9d37bd4f8d69bf9fdc46dbba506b9f0a8449f /pdf-as-web/src/main/java | |
parent | c58a0589e9330ae32749a2d32dc435f959b66930 (diff) | |
download | pdf-as-3-b64e6b125b2474702686847afef75b8894ba58bc.tar.gz pdf-as-3-b64e6b125b2474702686847afef75b8894ba58bc.tar.bz2 pdf-as-3-b64e6b125b2474702686847afef75b8894ba58bc.zip |
Changes due to new design of user interface. For this servlet some parameters where added (e.g. note within the signature block) and some if clause too, to set the submitted parameters correctly. Changes are documented within the code.
git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@806 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c
Diffstat (limited to 'pdf-as-web/src/main/java')
-rw-r--r-- | pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/SignServlet.java | 596 |
1 files changed, 407 insertions, 189 deletions
diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/SignServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/SignServlet.java index bedb1b1..5e6ee03 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/SignServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/SignServlet.java @@ -23,6 +23,7 @@ *
* $Id: Sign.java,v 1.7 2006/10/11 07:39:13 wprinz Exp $
*/
+
package at.gv.egiz.pdfas.web.servlets;
import java.io.BufferedInputStream;
@@ -51,6 +52,7 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import at.gv.egiz.pdfas.api.commons.Constants;
import at.gv.egiz.pdfas.api.exceptions.PdfAsException;
import at.gv.egiz.pdfas.api.io.DataSource;
import at.gv.egiz.pdfas.api.io.TextBased;
@@ -95,7 +97,24 @@ public class SignServlet extends HttpServlet */
private static Log log = LogFactory.getLog(SignServlet.class);
private static Log statLog = LogFactory.getLog("statistic");
-
+
+ public static final String SUBMITFORM_SIGNATURE_TYPE_KEY = "signupload.jsp:signatureType";
+ public static final String SUBMITFORM_SIGNATURE_MODE_KEY = "signupload.jsp:signatureMode";
+ public static final String SUBMITFORM_SIGNATURE_DEVICE_KEY = "signupload.jsp:signatureKey";
+ public static final String SUBMITFORM_PDFA_KEY = "signupload.jsp:pdfaKey";
+ public static final String SUBMITFORM_SOURCE_KEY = "signupload.jsp:sourceKey";
+ public static final String SUBMITFORM_FREETEXT_KEY = "signupload.jsp:freeTextKey";
+ public static final String SUBMITFORM_NOTE_KEY = "signupload.jsp:noteKey";
+ public static final String SUBMITFORM_FILE_KEY = "signupload.jsp:fileKey";
+ public static final String SUBMITFORM_FILENAME_KEY = "signupload.jsp:filenameKey";
+ public static final String SUBMITFORM_PREVIEW = "signupload.jsp:previewKey";
+
+ //Added by rpiazzi to know if an error occured within IFrame because this calls for
+ //a different display of the error
+ public static final String ERROR_WITHIN_IFRAME = "error_within_iframe";
+ //Added by rpiazzi to know the height of the div's in further jsp's
+ public static final String HEIGHT_SIGN_DIV = "height_sign_div";
+
protected void dispatch(HttpServletRequest request, HttpServletResponse response, String resource) throws ServletException, IOException
{
dispatch(request, response, resource, getServletContext());
@@ -131,7 +150,6 @@ public class SignServlet extends HttpServlet // check if pdf-as has been called by external webapp
if (request.getParameter(FormFields.FIELD_PDF_URL) != null)
{
-
String preview = (String) request.getParameter(FormFields.FIELD_PREVIEW);
String sig_type = (String) request.getParameter(FormFields.FIELD_SIGNATURE_TYPE);
String sig_app = (String) request.getParameter(FormFields.FIELD_CONNECTOR);
@@ -139,7 +157,6 @@ public class SignServlet extends HttpServlet String filename = (String) request.getParameter(FormFields.FIELD_FILENAME);
String pdf_url = (String) request.getParameter(FormFields.FIELD_PDF_URL);
String pdf_id = (String) request.getParameter(FormFields.FIELD_PDF_ID);
- String pdf_length = (String) request.getParameter(FormFields.FIELD_FILE_LENGTH);
String invoke_url = (String) request.getParameter(FormFields.FIELD_INVOKE_APP_URL);
String invoke_error_url = (String) request.getParameter(FormFields.FIELD_INVOKE_APP_ERROR_URL);
String session_id = (String) request.getParameter(FormFields.FIELD_SESSION_ID);
@@ -163,7 +180,8 @@ public class SignServlet extends HttpServlet // fixed by tknall: if we already have parameters "&" must be used instead of "?"
String paramSeparator = (pdf_url.indexOf("?") != -1) ? "&" : "?";
String query = pdf_url + paramSeparator + FormFields.FIELD_PDF_ID + "=" + pdf_id;
-
+ query = pdf_url;
+
// wprinz: rem: this allocation is useless
// byte[] extern_pdf = new byte[Integer.parseInt(pdf_length)];
URL source_url = new URL(query);
@@ -182,9 +200,13 @@ public class SignServlet extends HttpServlet ud_extern.sig_mode = sig_mode;
ud_extern.sig_type = sig_type;
+ ud_extern.note = true;
+ ud_extern.pdfa = false;
+
ud = ud_extern;
exappinf = new ExternAppInformation(invoke_url, pdf_id, session_id, invoke_error_url);
+
}
else
{
@@ -197,15 +219,67 @@ public class SignServlet extends HttpServlet // end modify
}
- catch (Exception e)
+ catch (PdfAsException e)
{
- log.error(e);
- request.setAttribute("error", "signservlet.error");
- request.setAttribute("cause", "signservlet.cause");
- request.setAttribute("resourcebundle", Boolean.TRUE);
+ log.error(e);
+
+ //Added by rpiazzi to know if error happened when request was within iframe
+ //In this case the visualization of the error has to be done differently
+ HttpSession session = request.getSession();
+ if (((String)session.getAttribute(SUBMITFORM_SIGNATURE_DEVICE_KEY)).equals(Constants.SIGNATURE_DEVICE_BKU)) {
+ request.setAttribute(ERROR_WITHIN_IFRAME, "no");
+ }
+ else {
+ request.setAttribute(ERROR_WITHIN_IFRAME, "yes");
+ }
+ //end added
+
+ prepareDispatchToErrorPage(e, request);
dispatch(request, response, "/jsp/error.jsp");
+
+
+
+
return;
}
+ catch (FileUploadException e) {
+ log.error(e);
+
+ //Added by rpiazzi to know if error happened when request was within iframe
+ //In this case the visualization of the error has to be done differently
+ HttpSession session = request.getSession();
+ if (((String)session.getAttribute(SUBMITFORM_SIGNATURE_DEVICE_KEY)).equals(Constants.SIGNATURE_DEVICE_BKU)) {
+ request.setAttribute(ERROR_WITHIN_IFRAME, "no");
+ }
+ else {
+ request.setAttribute(ERROR_WITHIN_IFRAME, "yes");
+ }
+ //end added
+
+ request.setAttribute("error", e.getMessage());
+ request.setAttribute("cause", e.getCause());
+ request.setAttribute("resourcebundle", Boolean.TRUE);
+ dispatch(request, response, "/jsp/error.jsp");
+ }
+ catch (IOException e) {
+ log.error(e);
+
+ //Added by rpiazzi to know if error happened when request was within iframe
+ //In this case the visualization of the error has to be done differently
+ HttpSession session = request.getSession();
+ if (((String)session.getAttribute(SUBMITFORM_SIGNATURE_DEVICE_KEY)).equals(Constants.SIGNATURE_DEVICE_BKU)) {
+ request.setAttribute(ERROR_WITHIN_IFRAME, "no");
+ }
+ else {
+ request.setAttribute(ERROR_WITHIN_IFRAME, "yes");
+ }
+ //end added
+
+ request.setAttribute("error", e.getMessage());
+ request.setAttribute("cause", e.getCause());
+ request.setAttribute("resourcebundle", Boolean.TRUE);
+ dispatch(request, response, "/jsp/error.jsp");
+ }
}
try
{
@@ -219,9 +293,12 @@ public class SignServlet extends HttpServlet si.mode = ud.sig_mode;
si.pdfDataSource = ud.pdfDataSource;
si.type = ud.sig_type;
+
si.filename = formatFileName(ud.file_name);
+
si.download_inline = ud.download_inline;
si.pdfa = ud.pdfa;
+ si.note = ud.note;
// added tzefferer:
si.exappinf = exappinf;
@@ -229,6 +306,20 @@ public class SignServlet extends HttpServlet // end add
HttpSession session = request.getSession();
+
+ //added by rpiazzi to change signature block with/without note
+ if (si.note) {
+ if (si.type.equals(FormFields.VALUE_SIGNATURE_TYPE_DE)) {
+ si.type = "SIGNATURBLOCK_DE_NOTE";
+ session.setAttribute(SUBMITFORM_SIGNATURE_TYPE_KEY, si.type);
+ }
+ else {
+ si.type = "SIGNATURBLOCK_EN_NOTE";
+ session.setAttribute(SUBMITFORM_SIGNATURE_TYPE_KEY, si.type);
+ }
+ }
+ //End added
+
log.info("Putting signature data into session " + session.getId());
session.setAttribute(SessionAttributes.ATTRIBUTE_SESSION_INFORMATION, si);
@@ -241,7 +332,8 @@ public class SignServlet extends HttpServlet SignServletHelper.prepareSign(ApiHelper.getPdfAsFromContext(getServletContext()), si);
- if (ud.preview)
+ //comment out by rpiazzi because preview has now its own Servlet
+ /*if (ud.preview)
{
String submit_url = response.encodeURL(request.getContextPath() + "/SignPreview");
String signature_data_url = response.encodeURL(WebUtils.buildRetrieveSignatureDataURL(request, response));
@@ -255,7 +347,8 @@ public class SignServlet extends HttpServlet dispatch(request, response, "/jsp/signpreview.jsp");
return;
- }
+ }*/
+
SignServletHelper.finishSign(si, request, response, getServletContext());
@@ -284,11 +377,12 @@ public class SignServlet extends HttpServlet // tzefferer:added
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
- doPost(request, response);
+ HttpSession session = request.getSession();
+ doPost(request, response);
}
// end add
- protected UploadedData retrieveUploadedDataFromRequest(HttpServletRequest request) throws ServletException, UnsupportedEncodingException, FileUploadException, PDFDocumentException
+ protected UploadedData retrieveUploadedDataFromRequest(HttpServletRequest request) throws ServletException, UnsupportedEncodingException, FileUploadException, PDFDocumentException, IOException
{
DiskFileItemFactory fif = new DiskFileItemFactory();
fif.setRepository(WebSettingsReader.getTemporaryDirectory());
@@ -296,183 +390,301 @@ public class SignServlet extends HttpServlet List items = sfu.parseRequest(request);
- FileItem preview_fi = null;
- FileItem sig_type_fi = null;
- FileItem sig_app_fi = null;
+ //FileItem preview_fi = null;
FileItem mode_fi = null;
FileItem file_upload_fi = null;
- FileItem download_fi = null;
- FileItem freeText = null;
- FileItem pdfa = null;
-
+ //FileItem download_fi = null;
+ FileItem freeText_fi = null;
+ FileItem source_fi = null;
+ FileItem sig_type_fi = null;
+ FileItem sig_app_fi = null;
+
+ boolean pdfaEnabled=false;
+ boolean noteEnabled=false;
+ String sig_type="";
+ String sig_app="";
+ String mode="";
+ String doc_file_name;
+ DataSource pdfDataSource;
+
+
Iterator it = items.iterator();
HttpSession session = request.getSession();
- while (it.hasNext())
- {
- FileItem item = (FileItem) it.next();
- log.debug("item = " + item.getFieldName()); //$NON-NLS-1$
-
- if (log.isDebugEnabled())
- {
- if (item.isFormField())
- {
- String item_string = item.getString("UTF-8"); //$NON-NLS-1$
- log.debug(" form field string = " + item_string); //$NON-NLS-1$
- }
- else
- {
- log.debug(" filename = " + item.getName()); //$NON-NLS-1$
- log.debug(" filesize = " + item.getSize()); //$NON-NLS-1$
- }
- }
-
- if (item.getFieldName().equals(FormFields.FIELD_PREVIEW))
- {
- preview_fi = item;
- continue;
- }
-
- if (item.getFieldName().equals(FormFields.FIELD_SIGNATURE_TYPE))
- {
- sig_type_fi = item;
- session.setAttribute(UpdateFormServlet.UPLOADFORM_SIGNATURE_TYPE_KEY, sig_type_fi.getString("UTF-8"));
- continue;
- }
-
- if (item.getFieldName().equals(FormFields.FIELD_CONNECTOR))
- {
- sig_app_fi = item;
- session.setAttribute(UpdateFormServlet.UPLOADFORM_SIGNATURE_DEVICE_KEY, sig_app_fi.getString("UTF-8"));
- continue;
- }
-
- if (item.getFieldName().equals(FormFields.FIELD_MODE))
- {
- mode_fi = item;
- session.setAttribute(UpdateFormServlet.UPLOADFORM_SIGNATURE_MODE_KEY, mode_fi.getString("UTF-8"));
- continue;
- }
-
- if (item.getFieldName().equals(FormFields.FIELD_UPLOAD))
- {
- file_upload_fi = item;
- continue;
- }
-
- if (item.getFieldName().equals(FormFields.FIELD_DOWNLOAD))
- {
- download_fi = item;
- continue;
- }
-
- if (FormFields.FIELD_PDFA_ENABLED.equals(item.getFieldName())) {
- pdfa = item;
- session.setAttribute(UpdateFormServlet.UPLOADFORM_PDFA_KEY, pdfa.getString("UTF-8"));
- continue;
- }
-
- if (FormFields.FIELD_FREETEXT.equals(item.getFieldName())) {
- freeText = item;
- String value = freeText.getString("UTF-8");
- if (value != null) {
- session.setAttribute(UpdateFormServlet.UPLOADFORM_FREETEXT_KEY, value);
- }
- continue;
- }
-
- if (FormFields.FIELD_SOURCE.equals(item.getFieldName())) {
- session.setAttribute(UpdateFormServlet.UPLOADFORM_SOURCE_KEY, item.getString("UTF-8"));
- continue;
- }
-
- throw new ServletException("Unrecognized POST data."); //$NON-NLS-1$
-
- }
-
- if (preview_fi == null || sig_type_fi == null || sig_app_fi == null || (file_upload_fi == null && freeText== null) || download_fi == null)
- {
- throw new ServletException("Insufficient data provided in request"); //$NON-NLS-1$
- }
-
- String mode = mode_fi.getString("UTF-8"); //$NON-NLS-1$
- if (!mode.equals(FormFields.VALUE_MODE_BINARY) && !mode.equals(FormFields.VALUE_MODE_TEXTUAL) && !mode.equals(FormFields.VALUE_MODE_DETACHED))
- {
- throw new ServletException("The mode '" + mode + "' is unrecognized."); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- String preview_str = preview_fi.getString("UTF-8"); //$NON-NLS-1$
- boolean preview = false;
- if (preview_str.equals("true")) //$NON-NLS-1$
- {
- preview = true;
+
+
+
+ //Added by rpiazzi. If servlet was called for preview data was already written into
+ //session.
+ //Now commented out because the preview function is no more supported
+ /*if ((((FileItem)items.get(0)).getFieldName().equals(SignServlet.SUBMITFORM_PREVIEW))) {
+ FileItem fi = (FileItem)items.get(1);
+
+ sig_app_fi = fi;
+ session.setAttribute(SUBMITFORM_SIGNATURE_DEVICE_KEY, sig_app_fi.getString("UTF-8"));
+
+ if (((String)session.getAttribute(SUBMITFORM_PDFA_KEY))!=null) {
+ if (((String)session.getAttribute(SUBMITFORM_PDFA_KEY)).equals("on")) {
+ pdfaEnabled = true;
+ }
+ }
+ if (((String)session.getAttribute(SUBMITFORM_NOTE_KEY))!=null) {
+ if (((String)session.getAttribute(SUBMITFORM_NOTE_KEY)).equals("on")) {
+ noteEnabled = true;
+ }
+ }
+
+ sig_type = (String)session.getAttribute(SUBMITFORM_SIGNATURE_TYPE_KEY);
+ sig_app = sig_app_fi.getString("UTF-8");
+
+ mode = (String)session.getAttribute(SUBMITFORM_SIGNATURE_MODE_KEY);
+ doc_file_name = (String)session.getAttribute(SUBMITFORM_FILENAME_KEY);
+ pdfDataSource = (DataSource)session.getAttribute(SUBMITFORM_FILE_KEY);
+
}
+ //end added
+ else {*/
- boolean pdfaEnabled = pdfa != null && "true".equalsIgnoreCase(pdfa.getString());
-
-
- boolean download_inline = true;
- if (download_fi.getString("UTF-8").equals(FormFields.VALUE_DOWNLOAD_ATTACHMENT)) //$NON-NLS-1$
- {
- download_inline = false;
+ //Added by rpiazzi to check wheter local bku button was hit. In this case the parameters
+ //were already put into session because before local bku, online bku has to be called
+ //and therefore this servlet was already called.
+ //First check if one submitted parameter is the local bku button.
+ boolean localFound = false;
+ int positionLocal = 0;
+ while (it.hasNext()) {
+ if (((FileItem)it.next()).getFieldName().equals(FormFields.FIELD_CONNECTOR_LOCALBKU)) {
+ localFound = true;
+ break;
+ }
+ positionLocal++;
}
-
- String sig_type = sig_type_fi.getString("UTF-8"); //$NON-NLS-1$
- String sig_app = sig_app_fi.getString("UTF-8"); //$NON-NLS-1$
-
- DataSource pdfDataSource;
- String doc_file_name = "nofilename";
- // distinguish between file and freetext
- if (file_upload_fi != null) {
- log.debug("Processing file.");
- File f = new File(file_upload_fi.getName());
- doc_file_name = f.getName();
- log.debug("file content type =" + file_upload_fi.getContentType()); //$NON-NLS-1$
-
- String extension = VerifyServlet.extractExtension(doc_file_name);
- if (extension != null && !extension.equals("pdf")) //$NON-NLS-1$
- {
- throw new PDFDocumentException(201, "The provided file '" + doc_file_name + "' doesn't have the PDF extension (.pdf)."); //$NON-NLS-1$//$NON-NLS-2$
- }
-
- if (file_upload_fi.getSize() <= 0)
- {
- throw new PDFDocumentException(250, "The document is empty."); //$NON-NLS-1$
- }
-
- try
- {
- pdfDataSource = new ByteArrayPdfDataSource(IOUtils.toByteArray(file_upload_fi.getInputStream()));
- }
- catch (IOException e)
- {
- throw new PDFDocumentException(201, "Couldn't store the file in the temp dir.", e);
- }
- } else {
- log.debug("Processing free text.");
- try {
- byte[] freeTextPDF = IText.createPDF(freeText.getString("UTF-8"), pdfaEnabled);
-
- pdfDataSource = new ByteArrayPdfDataSource(freeTextPDF);
- doc_file_name = IText.DEFAULT_FILENAME;
- } catch (DocumentException e) {
- throw new PDFDocumentException(201, "Unable to create PDF document.", e);
- } catch (IOException e) {
- throw new PDFDocumentException(201, "Unable to create PDF document.", e);
- }
-
+
+ if (localFound) {
+ session.setAttribute(SignServlet.ERROR_WITHIN_IFRAME, "no");
+ pdfaEnabled = "on".equalsIgnoreCase((String)session.getAttribute(SUBMITFORM_PDFA_KEY));
+ sig_type = (String)session.getAttribute(SUBMITFORM_SIGNATURE_TYPE_KEY);
+ noteEnabled = "on".equalsIgnoreCase((String)session.getAttribute(SUBMITFORM_NOTE_KEY));
+
+ session.setAttribute(SUBMITFORM_SIGNATURE_DEVICE_KEY, "bku");
+ sig_app = "bku";
+ session.setAttribute(SignServlet.ERROR_WITHIN_IFRAME, "no");
+
+
+ mode = (String)session.getAttribute(SUBMITFORM_SIGNATURE_MODE_KEY);
+ doc_file_name = (String)session.getAttribute(SUBMITFORM_FILENAME_KEY);
+ pdfDataSource = (DataSource)session.getAttribute(SUBMITFORM_FILE_KEY);
+ }
+ //end added
+ //else get settings from form fields
+ else {
+ session.setAttribute(SignServlet.ERROR_WITHIN_IFRAME, "yes");
+ it = items.iterator();
+ while (it.hasNext())
+ {
+ FileItem item = (FileItem) it.next();
+ log.debug("item = " + item.getFieldName()); //$NON-NLS-1$
+
+ if (log.isDebugEnabled())
+ {
+ if (item.isFormField())
+ {
+ String item_string = item.getString("UTF-8"); //$NON-NLS-1$
+ log.debug(" form field string = " + item_string); //$NON-NLS-1$
+ }
+ else
+ {
+ log.debug(" filename = " + item.getName()); //$NON-NLS-1$
+ log.debug(" filesize = " + item.getSize()); //$NON-NLS-1$
+ }
+ }
+
+ if (item.getFieldName().equals(FormFields.FIELD_SIGNATURE_TYPE))
+ {
+ sig_type_fi = item;
+ session.setAttribute(SUBMITFORM_SIGNATURE_TYPE_KEY, item.getString("UTF-8"));
+ sig_type=item.getString("UTF-8");
+ continue;
+ }
+
+ if ((item.getFieldName().equals(FormFields.FIELD_CONNECTOR_SMARTCARD)) || (item.getFieldName().equals(FormFields.FIELD_CONNECTOR_MOBILE))) {
+ if (item.getFieldName().equals(FormFields.FIELD_CONNECTOR_SMARTCARD)) {
+ session.setAttribute(SUBMITFORM_SIGNATURE_DEVICE_KEY, "moc");
+ sig_app = "moc";
+ }
+ if (item.getFieldName().equals(FormFields.FIELD_CONNECTOR_MOBILE)) {
+ session.setAttribute(SUBMITFORM_SIGNATURE_DEVICE_KEY, "mobile");
+ sig_app = "mobile";
+ }
+ continue;
+ }
+
+ if (item.getFieldName().equals(FormFields.FIELD_MODE))
+ {
+ mode_fi = item;
+ session.setAttribute(SUBMITFORM_SIGNATURE_MODE_KEY, mode_fi.getString("UTF-8"));
+ continue;
+ }
+
+ if (item.getFieldName().equals(FormFields.FIELD_SOURCE_FILE))
+ {
+ //changed by rpiazzi
+ //Item always contains something as it is just hidden by javascript
+ // because of this just set the value if not empty
+ if (item!=null) {
+ file_upload_fi = item;
+ }
+ continue;
+
+ }
+
+ //Added by rpiazzi to ignore the form fields for the inactive mode
+ //but not more needed
+ /*if (item.getFieldName().equals(FormFields.FIELD_MODE_INACTIVE)) {
+ continue;
+ }*/
+ //end added
+
+ /*Commented out by rpiazzi because not more needed
+ * if (item.getFieldName().equals(FormFields.FIELD_DOWNLOAD))
+ {
+ download_fi = item;
+ continue;
+ }*/
+
+ if (FormFields.FIELD_PDFA_ENABLED.equals(item.getFieldName())) {
+ if (item.getString("UTF-8")!=null) {
+ session.setAttribute(SUBMITFORM_PDFA_KEY, "on");
+ pdfaEnabled=true;
+ }
+ else {
+ session.setAttribute(SUBMITFORM_PDFA_KEY, "off");
+ pdfaEnabled=false;
+ }
+ continue;
+ }
+
+ if (FormFields.FIELD_SOURCE_FREETEXT.equals(item.getFieldName())) {
+ freeText_fi = item;
+ String value = freeText_fi.getString("UTF-8");
+ if (value != null) {
+ session.setAttribute(SUBMITFORM_FREETEXT_KEY, value);
+ }
+ continue;
+ }
+
+ if (FormFields.FIELD_SOURCE.equals(item.getFieldName())) {
+ source_fi = item;
+ session.setAttribute(SUBMITFORM_SOURCE_KEY, item.getString("UTF-8"));
+ continue;
+ }
+
+ //Added by rpiazzi. Feature added for inserting note into signature block
+ if (FormFields.FIELD_NOTE_ENABLED.equals(item.getFieldName())) {
+ if (item.getString("UTF-8")!=null) {
+ session.setAttribute(SUBMITFORM_NOTE_KEY, "on");
+ noteEnabled=true;
+ }
+ else {
+ session.setAttribute(SUBMITFORM_NOTE_KEY, "off");
+ noteEnabled=false;
+ }
+ continue;
+ }
+ //end added
+
+ //Added by rpiazzi to let later jsp's know the height of the div elements
+ if (FormFields.FIELD_HEIGHT_SIGNDIV.equals(item.getFieldName())) {
+ session.setAttribute(HEIGHT_SIGN_DIV, item.getString("UTF-8"));
+ continue;
+ }
+ //end added
+
+ throw new ServletException("Unrecognized POST data."); //$NON-NLS-1$
+
+ }
+
+ if (sig_type_fi == null || (file_upload_fi == null && freeText_fi== null))
+ {
+ throw new ServletException("Insufficient data provided in request"); //$NON-NLS-1$
+ }
+
+ mode = mode_fi.getString("UTF-8"); //$NON-NLS-1$
+ if (!mode.equals(FormFields.VALUE_MODE_BINARY) && !mode.equals(FormFields.VALUE_MODE_TEXTUAL) && !mode.equals(FormFields.VALUE_MODE_DETACHED))
+ {
+ throw new ServletException("The mode '" + mode + "' is unrecognized."); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+
+ //Commented out by rpiazzi because not more needed
+ /*boolean download_inline = true;
+ if (download_fi.getString("UTF-8").equals(FormFields.VALUE_DOWNLOAD_ATTACHMENT)) //$NON-NLS-1$
+ {
+ download_inline = false;
+ }*/
+
+
+ // distinguish between file and freetext
+ if (source_fi.getString("UTF-8").equals(FormFields.VALUE_SOURCE_FILE)) {
+ log.debug("Processing file.");
+ File f = new File(file_upload_fi.getName());
+ doc_file_name = f.getName();
+ log.debug("file content type =" + file_upload_fi.getContentType()); //$NON-NLS-1$
+
+ String extension = VerifyServlet.extractExtension(doc_file_name);
+ if (extension != null && !extension.equals("pdf")) //$NON-NLS-1$
+ {
+ throw new PDFDocumentException(201, "The provided file '" + doc_file_name + "' doesn't have the PDF extension (.pdf)."); //$NON-NLS-1$//$NON-NLS-2$
+ }
+
+ if (file_upload_fi.getSize() <= 0)
+ {
+ throw new PDFDocumentException(250, "The document is empty."); //$NON-NLS-1$
+ }
+
+ try
+ {
+ pdfDataSource = new ByteArrayPdfDataSource(IOUtils.toByteArray(file_upload_fi.getInputStream()));
+ session.setAttribute(SUBMITFORM_FILE_KEY, pdfDataSource);
+ session.setAttribute(SUBMITFORM_FILENAME_KEY, doc_file_name);
+ }
+ catch (IOException e)
+ {
+ throw new PDFDocumentException(201, "Couldn't store the file in the temp dir.", e);
+ }
+ } else {
+ log.debug("Processing free text.");
+ try {
+ byte[] freeTextPDF = IText.createPDF(freeText_fi.getString("UTF-8"), pdfaEnabled);
+ pdfDataSource = new ByteArrayPdfDataSource(freeTextPDF);
+ doc_file_name = IText.DEFAULT_FILENAME;
+ session.setAttribute(SUBMITFORM_FILE_KEY, pdfDataSource);
+ session.setAttribute(SUBMITFORM_FILENAME_KEY, doc_file_name);
+ } catch (DocumentException e) {
+ throw new PDFDocumentException(201, "Unable to create PDF document.", e);
+ } catch (IOException e) {
+ throw new PDFDocumentException(201, "Unable to create PDF document.", e);
+ }
+
+ }
+ // byte[] pdf = file_upload_fi.get();
+ //}
}
- // byte[] pdf = file_upload_fi.get();
+
+
+
+
+
UploadedData ud = new UploadedData();
- ud.preview = preview;
+ ud.preview = false;
ud.pdfa = pdfaEnabled;
- ud.download_inline = download_inline;
+ ud.download_inline = false;
ud.sig_type = sig_type;
ud.sig_app = sig_app;
ud.sig_mode = mode;
ud.file_name = doc_file_name;
ud.pdfDataSource = pdfDataSource;
+ ud.note = noteEnabled;
return ud;
}
@@ -511,6 +723,19 @@ public class SignServlet extends HttpServlet request.setAttribute("cause", "Der Platzhalter des Feldes " + phe.getField() + " ist um " + phe.getMissing() + " Bytes zu kurz. " + cause);
}
+
+ //Added by rpiazzi to know if error happened when request was within iframe
+ //In this case the visualization of the error has to be done differently
+ HttpSession session = request.getSession();
+ if (((String)session.getAttribute(SUBMITFORM_SIGNATURE_DEVICE_KEY)).equals(Constants.SIGNATURE_DEVICE_BKU)) {
+ request.setAttribute(ERROR_WITHIN_IFRAME, "no");
+ }
+ else {
+ request.setAttribute(ERROR_WITHIN_IFRAME, "yes");
+ }
+ //end added
+
+
// }
// else
// {
@@ -519,19 +744,7 @@ public class SignServlet extends HttpServlet // }
}
- public void dispatchToPreview(String document_text, String connector, String mode, String signature_type, String submit_url, HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException
- {
- request.setAttribute("document_text", document_text);
- request.setAttribute("connector", connector);
- request.setAttribute("mode", mode);
- request.setAttribute("signature_type", signature_type);
- request.setAttribute("submit_url", submit_url);
-
- dispatch(request, response, "/jsp/signpreview.jsp");
- }
-
- /**
+ /**
* Formats the file name so that it is suitable for content disposition.
*
* @param file_name
@@ -540,7 +753,7 @@ public class SignServlet extends HttpServlet */
public static String formatFileName(String file_name)
{
- File file = new File(file_name);
+ File file = new File(file_name);
String file_name_only = file.getName();
// the file_name contains \\ ==> remove them so Internet Explorer works
// correctly.
@@ -582,7 +795,7 @@ public class SignServlet extends HttpServlet }
// end add
-
+
protected static class UploadedData
{
protected boolean preview = false;
@@ -600,6 +813,11 @@ public class SignServlet extends HttpServlet protected String file_name = null;
protected DataSource pdfDataSource = null;
+
+ //added by rpiazzi
+ protected boolean note = false;
// protected byte[] pdf = null;
}
-}
\ No newline at end of file +
+}
+
|