diff options
Diffstat (limited to 'moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/PDFCreateSignatureBindingImpl.java')
-rw-r--r-- | moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/PDFCreateSignatureBindingImpl.java | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/PDFCreateSignatureBindingImpl.java b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/PDFCreateSignatureBindingImpl.java new file mode 100644 index 0000000..dfe3ce5 --- /dev/null +++ b/moaSig/moa-sig/src/main/java/at/gv/egovernment/moa/spss/server/webservice/binding/PDFCreateSignatureBindingImpl.java @@ -0,0 +1,86 @@ +package at.gv.egovernment.moa.spss.server.webservice.binding; + +import java.math.BigInteger; +import java.util.Iterator; + +import at.gv.egiz.moasig.CreatePDFSignatureRequest; +import at.gv.egiz.moasig.CreatePDFSignatureResponseType; +import at.gv.egiz.moasig.ErrorResponseType; +import at.gv.egovernment.moa.spss.MOAApplicationException; +import at.gv.egovernment.moa.spss.api.SPSSFactory; +import at.gv.egovernment.moa.spss.server.webservice.PDFCreateSignatureBinding; +import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRequest; +import at.gv.egovernment.moa.spss.server.xmlbind.CreatePDFRespone; +import at.gv.egovernment.moa.spss.server.xmlbind.PDFSignatureInfo; +import at.gv.egovernment.moa.spss.server.xmlbind.SignedPDFInfo; + +public class PDFCreateSignatureBindingImpl implements PDFCreateSignatureBinding { + + public PDFCreateSignatureBindingImpl() { + } + + @Override + public CreatePDFRequest buildPDFRequest(CreatePDFSignatureRequest createCMSSignatureRequest) + throws MOAApplicationException { + String keyIdentifier = createCMSSignatureRequest.getKeyIdentifier(); + CreatePDFRequest createPDFRequest = new CreatePDFRequest(keyIdentifier); + Iterator<at.gv.egiz.moasig.CreatePDFSignatureRequest.SingleSignatureInfo> iter = + createCMSSignatureRequest.getSingleSignatureInfo().iterator(); + + while(iter.hasNext()) { + at.gv.egiz.moasig.CreatePDFSignatureRequest.SingleSignatureInfo singleSignatureInfo = iter.next(); + createPDFRequest.getSignatureInfoList().add(parseSingleSignatureInfo(singleSignatureInfo)); + } + + return createPDFRequest; + } + + @Override + public CreatePDFSignatureResponseType buildPDFResponse(CreatePDFRespone response) throws MOAApplicationException { + + CreatePDFSignatureResponseType createPDFSignatureResponseType = new CreatePDFSignatureResponseType(); + + Iterator<SignedPDFInfo> iter = response.getSignatureInfoList().iterator(); + + while(iter.hasNext()) { + SignedPDFInfo signedPDFInfo = iter.next(); + + createPDFSignatureResponseType.getPDFSignature().add(buildPDFSignedResponse(signedPDFInfo)); + } + return createPDFSignatureResponseType; + } + + public PDFSignatureInfo parseSingleSignatureInfo( + at.gv.egiz.moasig.CreatePDFSignatureRequest.SingleSignatureInfo singleSignatureInfo) + throws MOAApplicationException { + String signatureProfile = singleSignatureInfo.getSignatureProfile(); + String signaturePosition = singleSignatureInfo.getSignaturePosition(); + String signatureID = singleSignatureInfo.getSignatureID(); + byte[] inputPDF = singleSignatureInfo.getPDFDocument(); + PDFSignatureInfo PDFSignatureInfo = new PDFSignatureInfo(inputPDF, + signatureProfile, signaturePosition, signatureID); + + return PDFSignatureInfo; + } + + public at.gv.egiz.moasig.PDFSignedRepsonse buildPDFSignedResponse(SignedPDFInfo signedPDFInfo) { + at.gv.egiz.moasig.PDFSignedRepsonse response = new at.gv.egiz.moasig.PDFSignedRepsonse(); + + response.setSignatureID(signedPDFInfo.getSignatureID()); + + switch (signedPDFInfo.getResponseType()) { + case SignedPDFInfo.SUCCESS_SIGNATURE: + response.setPDFSignature(signedPDFInfo.getPdfDocument()); + break; + + default: + ErrorResponseType errorResponseType = new ErrorResponseType(); + errorResponseType.setErrorCode(BigInteger.valueOf(signedPDFInfo.getErrorCode())); + errorResponseType.setInfo(signedPDFInfo.getErrorInfo()); + response.setErrorResponse(errorResponseType); + break; + } + + return response; + } +} |