From f4a1952fa7ba68366c36d75d3d7233ce9af80259 Mon Sep 17 00:00:00 2001
From: rpiazzi <rpiazzi@7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c>
Date: Thu, 3 Nov 2011 10:28:49 +0000
Subject: Added workaround for replacing special characters (Umlaute) that
 since July 2011 aren't rightly encoded by a-trust

git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@880 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c
---
 .../impl/signator/binary/BinarySignator_1_0_0.java | 60 +++++++++++++++++++---
 1 file changed, 53 insertions(+), 7 deletions(-)

(limited to 'src/main/java')

diff --git a/src/main/java/at/gv/egiz/pdfas/impl/signator/binary/BinarySignator_1_0_0.java b/src/main/java/at/gv/egiz/pdfas/impl/signator/binary/BinarySignator_1_0_0.java
index 5766b89..46e46cb 100644
--- a/src/main/java/at/gv/egiz/pdfas/impl/signator/binary/BinarySignator_1_0_0.java
+++ b/src/main/java/at/gv/egiz/pdfas/impl/signator/binary/BinarySignator_1_0_0.java
@@ -301,12 +301,11 @@ public class BinarySignator_1_0_0 implements Signator
       {
         throw new SignatorException(e);
       }
-
+      
       BinarySignature.replaceCertificate(iui);
       BinarySignature.replaceTimestamp(iui);
       BinarySignature.replacePlaceholders(iui);
-            
-//      dferbas: alternative sign attrib creation
+ //      dferbas: alternative sign attrib creation
 //      PdfReader reader = new PdfReader(iui.signed_pdf);      
 //
 //      OutputStream os = dataSink.createOutputStream(PdfAS.PDF_MIME_TYPE);
@@ -358,14 +357,61 @@ public class BinarySignator_1_0_0 implements Signator
     	 ReplaceInfo ri = (ReplaceInfo) it.next();
          String overrideVal = OverridePropertyHolder.getProperty(ri.sfd.field_name);
          if (overrideVal != null) {
-            ri.sfd.value = overrideVal;
+        	ri.sfd.value = overrideVal;
             ri.value = overrideVal;
          } else if (ognl.containsExpression(ri.sfd.value)) { // dferbas
             // evaluate expression
             String res = ognl.compileMessage(ri.sfd.value);
-            
-            ri.value = this.normalizer.normalize(res, true);                 
-            
+            ri.value = this.normalizer.normalize(res, true);  
+            //Workaround added by rpiazzi
+            //a-trust wrongly encodes since July 2011, therefore some special characters (e.g. Umlaute) have
+            //to replaced by their right character
+            if ((ri.value.contains("&#252;") || ri.value.contains("&#228;") || ri.value.contains("&#246;") ||
+            		ri.value.contains("&#225;") || ri.value.contains("&#223;") || ri.value.contains("&#214;") ||
+            		ri.value.contains("&#224;") || ri.value.contains("&#233;") || ri.value.contains("&#250;") ||
+            		ri.value.contains("&#231;")) && (ri.sfd.field_name.equals(SignatureTypes.SIG_SUBJECT))) {
+            	if (ri.value.contains("&#252;")) {
+            		ri.sfd.value = ri.sfd.value.replace("&#252;", "�");
+                	ri.value = ri.value.replace("&#252;", "�");
+            	}
+            	if (ri.value.contains("&#228;")) {
+            		ri.sfd.value = ri.sfd.value.replace("&#228;", "�");
+                	ri.value = ri.value.replace("&#228;", "�");
+            	}
+            	if (ri.value.contains("&#246;")) {
+            		ri.sfd.value = ri.sfd.value.replace("&#246;", "�");
+                	ri.value = ri.value.replace("&#246;", "�");
+            	}
+            	if (ri.value.contains("&#225;")) {
+            		ri.sfd.value = ri.sfd.value.replace("&#225;", "�");
+                	ri.value = ri.value.replace("&#225;", "�");
+            	}
+            	if (ri.value.contains("&#223;")) {
+            		ri.sfd.value = ri.sfd.value.replace("&#223;", "�");
+                	ri.value = ri.value.replace("&#223;", "�");
+            	}
+            	if (ri.value.contains("&#214;")) {
+            		ri.sfd.value = ri.sfd.value.replace("&#214;", "�");
+                	ri.value = ri.value.replace("&#214;", "�");
+            	}
+            	if (ri.value.contains("&#224;")) {
+            		ri.sfd.value = ri.sfd.value.replace("&#224;", "�");
+                	ri.value = ri.value.replace("&#224;", "�");
+            	}
+            	if (ri.value.contains("&#233;")) {
+            		ri.sfd.value = ri.sfd.value.replace("&#233;", "�");
+                	ri.value = ri.value.replace("&#233;", "�");
+            	}
+            	if (ri.value.contains("&#250;")) {
+            		ri.sfd.value = ri.sfd.value.replace("&#250;", "�");
+                	ri.value = ri.value.replace("&#250;", "�");
+            	}
+            	if (ri.value.contains("&#231;")) {
+            		ri.sfd.value = ri.sfd.value.replace("&#231;", "�");
+                	ri.value = ri.value.replace("&#231;", "�");
+            	}
+            }
+            //end added
          } else if (overrideVal == null) { 
         	//If SUBJECT is not overridden and and also isn't an expression
         	//check whether a set value for subject exists.
-- 
cgit v1.2.3