Example usage for javax.activation DataHandler writeTo

List of usage examples for javax.activation DataHandler writeTo

Introduction

In this page you can find the example usage for javax.activation DataHandler writeTo.

Prototype

public void writeTo(OutputStream os) throws IOException 

Source Link

Document

Write the data to an OutputStream.

If the DataHandler was created with a DataSource, writeTo retrieves the InputStream and copies the bytes from the InputStream to the OutputStream passed in.

Usage

From source file:org.wso2.carbon.registry.ws.api.WSRegistry.java

public void wsRestore(String path, DataHandler dataHandler) throws RegistryException {

    ByteArrayOutputStream output = new ByteArrayOutputStream();
    try {//from  w w w .  j a va2s .com
        dataHandler.writeTo(output);
    } catch (IOException e) {
        String msg = "Failed to read the input";
        log.error(msg, e);
        throw new RegistryException(msg, e);
    }

    ByteArrayInputStream inputStream = new ByteArrayInputStream(output.toByteArray());
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

    restore(path, reader);
}

From source file:org.wso2.carbon.module.mgt.service.ModuleAdminService.java

private void writeToRepository(String path, String fileName, DataHandler dataHandler) throws Exception {
    File destFile = new File(path, fileName);
    FileOutputStream fos = null;/*from   w  w  w.  ja va 2 s.  co  m*/
    try {
        fos = new FileOutputStream(destFile);
        dataHandler.writeTo(fos);
        fos.flush();
        fos.close();
    } finally {
        if (fos != null) {
            fos.close();
        }
    }
}

From source file:org.iexhub.services.GetPatientDataService.java

@GET
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Response getPatientData(@Context HttpHeaders headers) {
    log.info("Entered getPatientData service");

    boolean tls = false;

    tls = (IExHubConfig.getProperty("XdsBRegistryEndpointURI") == null) ? false
            : ((IExHubConfig.getProperty("XdsBRegistryEndpointURI").toLowerCase().contains("https") ? true
                    : false));/*from  w w  w  .j a v  a  2 s  .  co m*/
    GetPatientDataService.testMode = IExHubConfig.getProperty("TestMode", GetPatientDataService.testMode);
    GetPatientDataService.testJSONDocumentPathname = IExHubConfig.getProperty("TestJSONDocumentPathname",
            GetPatientDataService.testJSONDocumentPathname);
    GetPatientDataService.cdaToJsonTransformXslt = IExHubConfig.getProperty("CDAToJSONTransformXSLT",
            GetPatientDataService.cdaToJsonTransformXslt);
    GetPatientDataService.iExHubDomainOid = IExHubConfig.getProperty("IExHubDomainOID",
            GetPatientDataService.iExHubDomainOid);
    GetPatientDataService.iExHubAssigningAuthority = IExHubConfig.getProperty("IExHubAssigningAuthority",
            GetPatientDataService.iExHubAssigningAuthority);
    GetPatientDataService.xdsBRepositoryUniqueId = IExHubConfig.getProperty("XdsBRepositoryUniqueId",
            GetPatientDataService.xdsBRepositoryUniqueId);

    String retVal = "";
    GetPatientDataResponse patientDataResponse = new GetPatientDataResponse();
    StringBuilder jsonOutput = new StringBuilder();

    if (!testMode) {
        try {
            if (xdsB == null) {
                log.info("Instantiating XdsB connector...");
                xdsB = new XdsB(null, null, tls);
                log.info("XdsB connector successfully started");
            }
        } catch (Exception e) {
            log.error("Error encountered instantiating XdsB connector, " + e.getMessage());
            throw new UnexpectedServerException("Error - " + e.getMessage());
        }

        try {
            MultivaluedMap<String, String> headerParams = headers.getRequestHeaders();
            String ssoAuth = headerParams.getFirst("ssoauth");
            log.info("HTTP headers successfully retrieved");

            // Extract patient ID, query start date, and query end date.  Expected format from the client is
            //   "PatientId={0}&LastName={1}&FirstName={2}&MiddleName={3}&DateOfBirth={4}&PatientGender={5}&MotherMaidenName={6}&AddressStreet={7}&AddressCity={8}&AddressState={9}&AddressPostalCode={10}&OtherIDsScopingOrganization={11}&StartDate={12}&EndDate={13}"
            String[] splitPatientId = ssoAuth.split("&LastName=");
            String patientId = (splitPatientId[0].split("=").length == 2) ? splitPatientId[0].split("=")[1]
                    : null;

            String[] parts = splitPatientId[1].split("&");
            String lastName = (parts[0].length() > 0) ? parts[0] : null;
            String firstName = (parts[1].split("=").length == 2) ? parts[1].split("=")[1] : null;
            String middleName = (parts[2].split("=").length == 2) ? parts[2].split("=")[1] : null;
            String dateOfBirth = (parts[3].split("=").length == 2) ? parts[3].split("=")[1] : null;
            String gender = (parts[4].split("=").length == 2) ? parts[4].split("=")[1] : null;
            String motherMaidenName = (parts[5].split("=").length == 2) ? parts[5].split("=")[1] : null;
            String addressStreet = (parts[6].split("=").length == 2) ? parts[6].split("=")[1] : null;
            String addressCity = (parts[7].split("=").length == 2) ? parts[7].split("=")[1] : null;
            String addressState = (parts[8].split("=").length == 2) ? parts[8].split("=")[1] : null;
            String addressPostalCode = (parts[9].split("=").length == 2) ? parts[9].split("=")[1] : null;
            String otherIDsScopingOrganization = (parts[10].split("=").length == 2) ? parts[10].split("=")[1]
                    : null;
            String startDate = (parts[11].split("=").length == 2) ? parts[11].split("=")[1] : null;
            String endDate = (parts[12].split("=").length == 2) ? parts[12].split("=")[1] : null;

            log.info("HTTP headers successfully parsed, now calling XdsB registry...");

            // Determine if a complete patient ID (including OID and ISO specification) was provided.  If not, then append IExHubDomainOid and IExAssigningAuthority...
            if (!patientId.contains("^^^&")) {
                patientId = "'" + patientId + "^^^&" + GetPatientDataService.iExHubDomainOid + "&"
                        + GetPatientDataService.iExHubAssigningAuthority + "'";
            }

            AdhocQueryResponse registryResponse = xdsB.registryStoredQuery(patientId,
                    (startDate != null) ? DateFormat.getDateInstance().format(startDate) : null,
                    (endDate != null) ? DateFormat.getDateInstance().format(endDate) : null);

            log.info("Call to XdsB registry successful");

            // Determine if registry server returned any errors...
            if ((registryResponse.getRegistryErrorList() != null)
                    && (registryResponse.getRegistryErrorList().getRegistryError().length > 0)) {
                for (RegistryError_type0 error : registryResponse.getRegistryErrorList().getRegistryError()) {
                    StringBuilder errorText = new StringBuilder();
                    if (error.getErrorCode() != null) {
                        errorText.append("Error code=" + error.getErrorCode() + "\n");
                    }
                    if (error.getCodeContext() != null) {
                        errorText.append("Error code context=" + error.getCodeContext() + "\n");
                    }

                    // Error code location (i.e., stack trace) only to be logged to IExHub error file
                    patientDataResponse.getErrorMsgs().add(errorText.toString());

                    if (error.getLocation() != null) {
                        errorText.append("Error location=" + error.getLocation());
                    }

                    log.error(errorText.toString());
                }
            }

            // Try to retrieve documents...
            RegistryObjectListType registryObjectList = registryResponse.getRegistryObjectList();
            IdentifiableType[] documentObjects = registryObjectList.getIdentifiable();
            if ((documentObjects != null) && (documentObjects.length > 0)) {
                log.info("Documents found in the registry, retrieving them from the repository...");

                HashMap<String, String> documents = new HashMap<String, String>();
                for (IdentifiableType identifiable : documentObjects) {
                    if (identifiable.getClass().equals(ExtrinsicObjectType.class)) {
                        // Determine if the "home" attribute (homeCommunityId in XCA parlance) is present...
                        String home = ((((ExtrinsicObjectType) identifiable).getHome() != null)
                                && (((ExtrinsicObjectType) identifiable).getHome().getPath().length() > 0))
                                        ? ((ExtrinsicObjectType) identifiable).getHome().getPath()
                                        : null;

                        ExternalIdentifierType[] externalIdentifiers = ((ExtrinsicObjectType) identifiable)
                                .getExternalIdentifier();

                        // Find the ExternalIdentifier that has the "XDSDocumentEntry.uniqueId" value...
                        String uniqueId = null;
                        for (ExternalIdentifierType externalIdentifier : externalIdentifiers) {
                            String val = externalIdentifier.getName().getInternationalStringTypeSequence()[0]
                                    .getLocalizedString().getValue().getFreeFormText();
                            if ((val != null) && (val.compareToIgnoreCase("XDSDocumentEntry.uniqueId") == 0)) {
                                log.info("Located XDSDocumentEntry.uniqueId ExternalIdentifier, uniqueId="
                                        + uniqueId);
                                uniqueId = externalIdentifier.getValue().getLongName();
                                break;
                            }
                        }

                        if (uniqueId != null) {
                            documents.put(uniqueId, home);
                            log.info("Document ID added: " + uniqueId + ", homeCommunityId: " + home);
                        }
                    } else {
                        String home = ((identifiable.getHome() != null)
                                && (identifiable.getHome().getPath().length() > 0))
                                        ? identifiable.getHome().getPath()
                                        : null;
                        documents.put(identifiable.getId().getPath(), home);
                        log.info("Document ID added: " + identifiable.getId().getPath() + ", homeCommunityId: "
                                + home);
                    }
                }

                log.info("Invoking XdsB repository connector retrieval...");
                RetrieveDocumentSetResponse documentSetResponse = xdsB
                        .retrieveDocumentSet(xdsBRepositoryUniqueId, documents, patientId);
                log.info("XdsB repository connector retrieval succeeded");

                // Invoke appropriate map(s) to process documents in documentSetResponse...
                if (documentSetResponse.getRetrieveDocumentSetResponse()
                        .getRetrieveDocumentSetResponseTypeSequence_type0() != null) {
                    DocumentResponse_type0[] docResponseArray = documentSetResponse
                            .getRetrieveDocumentSetResponse().getRetrieveDocumentSetResponseTypeSequence_type0()
                            .getDocumentResponse();
                    if (docResponseArray != null) {
                        jsonOutput.append("{\"Documents\":[");
                        boolean first = true;
                        try {
                            for (DocumentResponse_type0 document : docResponseArray) {
                                if (!first) {
                                    jsonOutput.append(",");
                                }
                                first = false;

                                log.info("Processing document ID="
                                        + document.getDocumentUniqueId().getLongName());

                                String mimeType = docResponseArray[0].getMimeType().getLongName();
                                if (mimeType.compareToIgnoreCase("text/xml") == 0) {
                                    final String filename = this.testOutputPath + "/"
                                            + document.getDocumentUniqueId().getLongName() + ".xml";
                                    log.info("Persisting document to filesystem, filename=" + filename);
                                    DataHandler dh = document.getDocument();
                                    File file = new File(filename);
                                    FileOutputStream fileOutStream = new FileOutputStream(file);
                                    dh.writeTo(fileOutStream);
                                    fileOutStream.close();

                                    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
                                    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
                                    Document doc = dBuilder.parse(new FileInputStream(filename));
                                    XPath xPath = XPathFactory.newInstance().newXPath();

                                    //set namespace to xpath
                                    xPath.setNamespaceContext(new NamespaceContext() {
                                        private final String uri = "urn:hl7-org:v3";
                                        private final String prefix = "hl7";

                                        @Override
                                        public String getNamespaceURI(String prefix) {
                                            return this.prefix.equals(prefix) ? uri : null;
                                        }

                                        @Override
                                        public String getPrefix(String namespaceURI) {
                                            return this.uri.equals(namespaceURI) ? this.prefix : null;
                                        }

                                        @Override
                                        public Iterator getPrefixes(String namespaceURI) {
                                            return null;
                                        }
                                    });

                                    NodeList nodes = (NodeList) xPath.evaluate(
                                            "/hl7:ClinicalDocument/hl7:templateId", doc.getDocumentElement(),
                                            XPathConstants.NODESET);

                                    boolean templateFound = false;
                                    if (nodes.getLength() > 0) {
                                        log.info("Searching for /ClinicalDocument/templateId, document ID="
                                                + document.getDocumentUniqueId().getLongName());

                                        for (int i = 0; i < nodes.getLength(); ++i) {
                                            String val = ((Element) nodes.item(i)).getAttribute("root");
                                            if ((val != null) && (val.compareToIgnoreCase(
                                                    "2.16.840.1.113883.10.20.22.1.2") == 0)) {
                                                log.info("/ClinicalDocument/templateId node found, document ID="
                                                        + document.getDocumentUniqueId().getLongName());

                                                log.info("Invoking XSL transform, document ID="
                                                        + document.getDocumentUniqueId().getLongName());

                                                DocumentBuilderFactory factory = DocumentBuilderFactory
                                                        .newInstance();
                                                factory.setNamespaceAware(true);
                                                DocumentBuilder builder = factory.newDocumentBuilder();
                                                Document mappedDoc = builder.parse(new File(filename));
                                                DOMSource source = new DOMSource(mappedDoc);

                                                TransformerFactory transformerFactory = TransformerFactory
                                                        .newInstance();

                                                Transformer transformer = transformerFactory
                                                        .newTransformer(new StreamSource(
                                                                GetPatientDataService.cdaToJsonTransformXslt));
                                                final String jsonFilename = this.testOutputPath + "/"
                                                        + document.getDocumentUniqueId().getLongName()
                                                        + ".json";
                                                File jsonFile = new File(jsonFilename);
                                                FileOutputStream jsonFileOutStream = new FileOutputStream(
                                                        jsonFile);
                                                StreamResult result = new StreamResult(jsonFileOutStream);
                                                transformer.transform(source, result);
                                                jsonFileOutStream.close();

                                                log.info("Successfully transformed CCDA to JSON, filename="
                                                        + jsonFilename);

                                                jsonOutput.append(new String(readAllBytes(get(jsonFilename))));

                                                templateFound = true;
                                            }
                                        }
                                    }

                                    if (!templateFound) {
                                        // Document doesn't match the template ID - add to error list...
                                        patientDataResponse.getErrorMsgs().add(
                                                "Document retrieved doesn't match required template ID - document ID="
                                                        + document.getDocumentUniqueId().getLongName());
                                    }
                                } else {
                                    patientDataResponse.getErrorMsgs()
                                            .add("Document retrieved is not XML - document ID="
                                                    + document.getDocumentUniqueId().getLongName());
                                }
                            }
                        } catch (Exception e) {
                            log.error("Error encountered, " + e.getMessage());
                            throw e;
                        }
                    }
                }

                if (jsonOutput.length() > 0) {
                    jsonOutput.append("]}");
                }
            }
        } catch (Exception e) {
            log.error("Error encountered, " + e.getMessage());
            throw new UnexpectedServerException("Error - " + e.getMessage());
        }
    } else {
        // Return test document when testMode is true
        try {
            retVal = FileUtils.readFileToString(new File(GetPatientDataService.testJSONDocumentPathname));
            return Response.status(Response.Status.OK).entity(retVal).type(MediaType.APPLICATION_JSON).build();
        } catch (Exception e) {
            throw new UnexpectedServerException("Error - " + e.getMessage());
        }
    }

    return Response.status(Response.Status.OK).entity(jsonOutput.toString()).type(MediaType.APPLICATION_JSON)
            .build();
}

From source file:org.wso2.carbon.relay.ExpandingMessageFormatter.java

private void findAndWrite2OutputStream(MessageContext messageContext, OutputStream out, boolean preserve)
        throws AxisFault {
    try {/*from  w  w  w . java  2 s.  c o m*/
        SOAPEnvelope envelope = messageContext.getEnvelope();
        OMElement contentEle = envelope.getBody().getFirstElement();
        if (contentEle != null) {
            OMNode node = contentEle.getFirstOMChild();
            if (!(node instanceof OMText)) {
                String msg = "Wrong Input for the Validator, "
                        + "the content of the first child element of the Body " + "should have the zip file";
                log.error(msg);
                throw new AxisFault(msg);
            }
            OMText binaryDataNode = (OMText) node;
            DataHandler dh = (DataHandler) binaryDataNode.getDataHandler();

            DataSource dataSource = dh.getDataSource();
            if (dataSource instanceof StreamingOnRequestDataSource) {
                if (((StreamingOnRequestDataSource) dataSource).isConsumed()) {
                    Object httpMethodObj = messageContext.getProperty(Constants.Configuration.HTTP_METHOD);
                    if ((httpMethodObj instanceof String)
                            && Constants.Configuration.HTTP_METHOD_POST.equals(httpMethodObj)) {
                        log.warn("Attempting to send an already consumed request ["
                                + messageContext.getTo().getAddress() + " POST/Empty Message Body]");
                    }

                    //Ask the data source to stream, if it has not already cached the request
                    if (!preserve) {
                        ((StreamingOnRequestDataSource) dataSource).setLastUse(true);
                    }
                }
            }
            dh.writeTo(out);
        }
    } catch (OMException e) {
        log.error(e);
        throw AxisFault.makeFault(e);
    } catch (IOException e) {
        log.error(e);
        throw AxisFault.makeFault(e);
    }
}

From source file:org.wso2.carbon.event.simulator.core.internal.ds.CarbonEventSimulator.java

private void writeResource(DataHandler dataHandler, String destPath, String fileName, File csvDest)
        throws IOException {
    File tempDestFile = new File(destPath, fileName);
    FileOutputStream fos = null;/*from   ww  w.  j a va  2 s. c om*/
    File destFile = new File(csvDest, fileName);
    try {
        fos = new FileOutputStream(tempDestFile);
        /* File stream is copied to a temp directory in order handle hot deployment issue
           occurred in windows */
        dataHandler.writeTo(fos);
        FileUtils.copyFile(tempDestFile, destFile);

    } catch (FileNotFoundException e) {
        log.error("Cannot find the file", e);
        throw e;
    } catch (IOException e) {
        log.error("IO error.");
        throw e;
    } finally {
        close(fos);
    }

    boolean isDeleted = tempDestFile.delete();
    if (!isDeleted) {
        log.warn("temp file: " + tempDestFile.getAbsolutePath()
                + " deletion failed, scheduled deletion on server exit.");
        tempDestFile.deleteOnExit();
    }
}

From source file:it.govpay.core.business.Rendicontazioni.java

public String downloadRendicontazioni(boolean deep) throws GovPayException {
    boolean errori = false;
    List<String> response = new ArrayList<String>();
    try {// www.  j  av a  2 s.c o  m
        GpThreadLocal.get().log("rendicontazioni.acquisizione");
        DominiBD dominiBD = new DominiBD(this);

        StazioniBD stazioniBD = new StazioniBD(this);
        List<Stazione> lstStazioni = stazioniBD.getStazioni();

        PspBD pspBD = new PspBD(this);
        List<Psp> lstPsp = pspBD.getPsp();
        closeConnection();

        for (Stazione stazione : lstStazioni) {

            List<TipoIdRendicontazione> flussiDaAcquisire = new ArrayList<TipoIdRendicontazione>();

            setupConnection(GpThreadLocal.get().getTransactionId());
            Intermediario intermediario = stazione.getIntermediario(this);
            NodoClient client = new NodoClient(intermediario, this);
            closeConnection();

            if (deep) {
                DominioFilter filter = dominiBD.newFilter();
                filter.setCodStazione(stazione.getCodStazione());
                List<Dominio> lstDomini = dominiBD.findAll(filter);

                for (Dominio dominio : lstDomini) {
                    List<String> sids = new ArrayList<String>();
                    for (Psp psp : lstPsp) {
                        if (sids.contains(psp.getCodPsp()))
                            continue;
                        sids.add(psp.getCodPsp());
                        log.debug("Acquisizione dei flussi di rendicontazione dal psp [" + psp.getCodPsp()
                                + "] per il dominio [" + dominio.getCodDominio() + "] in corso.");
                        flussiDaAcquisire.addAll(chiediListaFr(client, psp, stazione, dominio));
                    }
                }
            } else {
                log.debug("Acquisizione dei flussi di rendicontazione per la stazione ["
                        + stazione.getCodStazione() + "] in corso.");
                flussiDaAcquisire.addAll(chiediListaFr(client, null, stazione, null));
            }

            // Scarto i flussi gia acquisiti
            setupConnection(GpThreadLocal.get().getTransactionId());

            FrBD frBD = new FrBD(this);
            for (TipoIdRendicontazione idRendicontazione : flussiDaAcquisire) {
                if (frBD.exists(idRendicontazione.getIdentificativoFlusso()))
                    flussiDaAcquisire.remove(idRendicontazione);
            }
            closeConnection();

            for (TipoIdRendicontazione idRendicontazione : flussiDaAcquisire) {
                log.debug("Acquisizione flusso di rendicontazione "
                        + idRendicontazione.getIdentificativoFlusso());
                boolean hasFrAnomalia = false;
                String idTransaction2 = null;
                try {
                    idTransaction2 = GpThreadLocal.get().openTransaction();
                    GpThreadLocal.get().getContext().getRequest()
                            .addGenericProperty(new Property("codStazione", stazione.getCodStazione()));
                    GpThreadLocal.get().getContext().getRequest().addGenericProperty(
                            new Property("idFlusso", idRendicontazione.getIdentificativoFlusso()));
                    GpThreadLocal.get().setupNodoClient(stazione.getCodStazione(), null,
                            Azione.nodoChiediFlussoRendicontazione);
                    NodoChiediFlussoRendicontazione richiestaFlusso = new NodoChiediFlussoRendicontazione();
                    richiestaFlusso.setIdentificativoIntermediarioPA(
                            stazione.getIntermediario(this).getCodIntermediario());
                    richiestaFlusso.setIdentificativoStazioneIntermediarioPA(stazione.getCodStazione());
                    richiestaFlusso.setPassword(stazione.getPassword());
                    richiestaFlusso.setIdentificativoFlusso(idRendicontazione.getIdentificativoFlusso());

                    NodoChiediFlussoRendicontazioneRisposta risposta;
                    try {
                        risposta = client.nodoChiediFlussoRendicontazione(richiestaFlusso,
                                stazione.getIntermediario(this).getDenominazione());
                    } catch (Exception e) {
                        // Errore nella richiesta. Loggo e continuo con il prossimo flusso
                        response.add(idRendicontazione.getIdentificativoFlusso()
                                + "#Richiesta al nodo fallita: " + e + ".");
                        log.error("Richiesta flusso  rendicontazione ["
                                + idRendicontazione.getIdentificativoFlusso() + "] fallita: " + e);
                        GpThreadLocal.get().log("rendicontazioni.acquisizioneFlussoFail", e.getMessage());
                        errori = true;
                        continue;
                    }

                    if (risposta.getFault() != null) {
                        // Errore nella richiesta. Loggo e continuo con il prossimo flusso
                        response.add(idRendicontazione.getIdentificativoFlusso()
                                + "#Richiesta al nodo fallita: " + risposta.getFault().getFaultCode() + " "
                                + risposta.getFault().getFaultString() + ".");
                        log.error("Richiesta flusso rendicontazione ["
                                + idRendicontazione.getIdentificativoFlusso() + "] fallita: "
                                + risposta.getFault().getFaultCode() + " "
                                + risposta.getFault().getFaultString());
                        GpThreadLocal.get().log("rendicontazioni.acquisizioneFlussoKo",
                                risposta.getFault().getFaultCode(), risposta.getFault().getFaultString(),
                                risposta.getFault().getDescription());
                    } else {
                        byte[] tracciato = null;
                        try {
                            ByteArrayOutputStream output = new ByteArrayOutputStream();
                            DataHandler dh = risposta.getXmlRendicontazione();
                            dh.writeTo(output);
                            tracciato = output.toByteArray();
                        } catch (IOException e) {
                            response.add(idRendicontazione.getIdentificativoFlusso()
                                    + "#Lettura del flusso fallita: " + e + ".");
                            log.error("Errore durante la lettura del flusso di rendicontazione", e);
                            GpThreadLocal.get().log("rendicontazioni.acquisizioneFlussoFail",
                                    "Lettura del flusso fallita: " + e);
                            errori = true;
                            continue;
                        }

                        CtFlussoRiversamento flussoRendicontazione = null;
                        try {
                            flussoRendicontazione = JaxbUtils.toFR(tracciato);
                        } catch (Exception e) {
                            response.add(idRendicontazione.getIdentificativoFlusso()
                                    + "#Parsing del flusso fallita: " + e + ".");
                            log.error("Errore durante il parsing del flusso di rendicontazione", e);
                            GpThreadLocal.get().log("rendicontazioni.acquisizioneFlussoFail",
                                    "Errore durante il parsing del flusso di rendicontazione: " + e);
                            errori = true;
                            continue;
                        }

                        log.info("Ricevuto flusso rendicontazione per "
                                + flussoRendicontazione.getDatiSingoliPagamenti().size()
                                + " singoli pagamenti");

                        setupConnection(GpThreadLocal.get().getTransactionId());

                        GpThreadLocal.get().log("rendicontazioni.acquisizioneFlusso");
                        GpThreadLocal.get().getContext().getRequest().addGenericProperty(new Property("trn",
                                flussoRendicontazione.getIdentificativoUnivocoRegolamento()));

                        Fr fr = new Fr();
                        fr.setCodBicRiversamento(flussoRendicontazione.getCodiceBicBancaDiRiversamento());
                        fr.setCodFlusso(idRendicontazione.getIdentificativoFlusso());
                        fr.setIur(flussoRendicontazione.getIdentificativoUnivocoRegolamento());
                        fr.setDataAcquisizione(new Date());
                        fr.setDataFlusso(flussoRendicontazione.getDataOraFlusso());
                        fr.setDataRegolamento(flussoRendicontazione.getDataRegolamento());
                        fr.setNumeroPagamenti(flussoRendicontazione.getNumeroTotalePagamenti().longValue());
                        fr.setImportoTotalePagamenti(flussoRendicontazione.getImportoTotalePagamenti());

                        fr.setXml(tracciato);

                        String codPsp = null, codDominio = null;
                        try {
                            codPsp = idRendicontazione.getIdentificativoFlusso().substring(10,
                                    idRendicontazione.getIdentificativoFlusso().indexOf("-", 10));
                            fr.setCodPsp(codPsp);
                            log.debug("Identificativo PSP estratto dall'identificativo flusso: " + codPsp);
                            AnagraficaManager.getPsp(this, codPsp);
                            GpThreadLocal.get().getContext().getRequest()
                                    .addGenericProperty(new Property("codPsp", codPsp));
                        } catch (Exception e) {
                            GpThreadLocal.get().log("rendicontazioni.acquisizioneFlussoPspNonCensito",
                                    codPsp == null ? "null" : codPsp);
                            GpThreadLocal.get().getContext().getRequest().addGenericProperty(
                                    new Property("codPsp", codPsp == null ? "null" : codPsp));
                            fr.addAnomalia("007108", "L'identificativo PSP [" + codPsp
                                    + "] ricavato dal codice flusso non riferisce un PSP censito");
                        }

                        Dominio dominio = null;
                        try {
                            codDominio = flussoRendicontazione.getIstitutoRicevente()
                                    .getIdentificativoUnivocoRicevente().getCodiceIdentificativoUnivoco();
                            fr.setCodDominio(codDominio);
                            GpThreadLocal.get().getContext().getRequest()
                                    .addGenericProperty(new Property("codDominio", codDominio));
                            dominio = AnagraficaManager.getDominio(this, codDominio);
                        } catch (Exception e) {
                            if (codDominio == null) {
                                codDominio = "????";
                                GpThreadLocal.get().getContext().getRequest()
                                        .addGenericProperty(new Property("codDominio", "null"));
                            }
                            GpThreadLocal.get().log("rendicontazioni.acquisizioneFlussoDominioNonCensito");
                            fr.addAnomalia("007109", "L'indentificativo ricevente [" + codDominio
                                    + "] del flusso non riferisce un Dominio censito");
                        }

                        BigDecimal totaleImportiRendicontati = BigDecimal.ZERO;

                        PagamentiBD pagamentiBD = new PagamentiBD(this);
                        VersamentiBD versamentiBD = new VersamentiBD(this);
                        IuvBD iuvBD = new IuvBD(this);
                        for (CtDatiSingoliPagamenti dsp : flussoRendicontazione.getDatiSingoliPagamenti()) {

                            String iur = dsp.getIdentificativoUnivocoRiscossione();
                            String iuv = dsp.getIdentificativoUnivocoVersamento();
                            BigDecimal importoRendicontato = dsp.getSingoloImportoPagato();

                            log.debug("Rendicontato (Esito " + dsp.getCodiceEsitoSingoloPagamento()
                                    + ") per un importo di (" + dsp.getSingoloImportoPagato()
                                    + ") [CodDominio: " + codDominio + "] [Iuv: "
                                    + dsp.getIdentificativoUnivocoVersamento() + "][Iur: " + iur + "]");

                            it.govpay.bd.model.Rendicontazione rendicontazione = new it.govpay.bd.model.Rendicontazione();

                            // Gestisco un codice esito non supportato
                            try {
                                rendicontazione.setEsito(
                                        EsitoRendicontazione.toEnum(dsp.getCodiceEsitoSingoloPagamento()));
                            } catch (Exception e) {
                                GpThreadLocal.get().log("rendicontazioni.esitoSconosciuto", iuv, iur,
                                        dsp.getCodiceEsitoSingoloPagamento() == null ? "null"
                                                : dsp.getCodiceEsitoSingoloPagamento());
                                rendicontazione.addAnomalia("007110", "Codice esito ["
                                        + dsp.getCodiceEsitoSingoloPagamento() + "] sconosciuto");
                            }

                            rendicontazione.setData(dsp.getDataEsitoSingoloPagamento());
                            rendicontazione.setIur(dsp.getIdentificativoUnivocoRiscossione());
                            rendicontazione.setIuv(dsp.getIdentificativoUnivocoVersamento());
                            rendicontazione.setImporto(dsp.getSingoloImportoPagato());

                            totaleImportiRendicontati = totaleImportiRendicontati.add(importoRendicontato);

                            // Cerco il pagamento riferito
                            it.govpay.bd.model.Pagamento pagamento = null;
                            try {
                                pagamento = pagamentiBD.getPagamento(codDominio, iuv, iur);

                                // Pagamento trovato. Faccio i controlli semantici
                                rendicontazione.setIdPagamento(pagamento.getId());

                                // Verifico l'importo
                                if (rendicontazione.getEsito().equals(EsitoRendicontazione.REVOCATO)) {
                                    if (pagamento.getImportoRevocato()
                                            .compareTo(importoRendicontato.abs()) != 0) {
                                        GpThreadLocal.get().log("rendicontazioni.importoStornoErrato", iuv,
                                                iur);
                                        log.info("Revoca [Dominio:" + codDominio + " Iuv:" + iuv + " Iur: "
                                                + iur + "] rendicontato con errore: l'importo rendicontato ["
                                                + importoRendicontato.doubleValue()
                                                + "] non corrisponde a quanto stornato ["
                                                + pagamento.getImportoRevocato().doubleValue() + "]");
                                        rendicontazione.addAnomalia("007112",
                                                "L'importo rendicontato [" + importoRendicontato.doubleValue()
                                                        + "] non corrisponde a quanto stornato ["
                                                        + pagamento.getImportoRevocato().doubleValue() + "]");
                                    }

                                    // Verifico che il pagamento non sia gia' rendicontato
                                    if (pagamento.isPagamentoRendicontato(this)) {
                                        GpThreadLocal.get().log("rendicontazioni.giaStornato", iuv, iur);
                                        log.info("Pagamento [Dominio:" + codDominio + " Iuv:" + iuv + " Iur: "
                                                + iur
                                                + "] rendicontato con errore: storno gia' rendicontato da altri flussi");
                                        rendicontazione.addAnomalia("007113",
                                                "Lo storno riferito dalla rendicontazione risulta gia' rendicontato da altri flussi");
                                    }

                                } else {
                                    if (pagamento.getImportoPagato().compareTo(importoRendicontato) != 0) {
                                        GpThreadLocal.get().log("rendicontazioni.importoErrato", iuv, iur);
                                        log.info("Pagamento [Dominio:" + codDominio + " Iuv:" + iuv + " Iur: "
                                                + iur + "] rendicontato con errore: l'importo rendicontato ["
                                                + importoRendicontato.doubleValue()
                                                + "] non corrisponde a quanto pagato ["
                                                + pagamento.getImportoPagato().doubleValue() + "]");
                                        rendicontazione.addAnomalia("007104",
                                                "L'importo rendicontato [" + importoRendicontato.doubleValue()
                                                        + "] non corrisponde a quanto pagato ["
                                                        + pagamento.getImportoPagato().doubleValue() + "]");
                                    }

                                    // Verifico che il pagamento non sia gia' rendicontato
                                    if (pagamento.isPagamentoRendicontato(this)) {
                                        GpThreadLocal.get().log("rendicontazioni.giaRendicontato", iuv, iur);
                                        log.info("Pagamento [Dominio:" + codDominio + " Iuv:" + iuv + " Iur: "
                                                + iur
                                                + "] rendicontato con errore: pagamento gia' rendicontato da altri flussi");
                                        rendicontazione.addAnomalia("007103",
                                                "Il pagamento riferito dalla rendicontazione risulta gia' rendicontato da altri flussi");
                                    }
                                }

                            } catch (NotFoundException e) {
                                // Pagamento non trovato. Devo capire se ce' un errore.

                                // Controllo che sia per uno IUV generato da noi
                                if (!isInterno(dominio, iuv)) {
                                    rendicontazione.setStato(StatoRendicontazione.ALTRO_INTERMEDIARIO);
                                    continue;
                                }

                                // Controllo se e' un pagamento senza RPT
                                if (rendicontazione.getEsito()
                                        .equals(EsitoRendicontazione.ESEGUITO_SENZA_RPT)) {

                                    //Recupero il versamento, internamente o dall'applicazione esterna
                                    it.govpay.bd.model.Versamento versamento = null;
                                    String erroreVerifica = null;
                                    String codApplicazione = null;
                                    try {
                                        try {
                                            it.govpay.model.Iuv iuvModel = iuvBD.getIuv(dominio.getId(), iuv);
                                            versamento = versamentiBD.getVersamento(
                                                    iuvModel.getIdApplicazione(),
                                                    iuvModel.getCodVersamentoEnte());
                                        } catch (NotFoundException nfe) {
                                            codApplicazione = it.govpay.bd.GovpayConfig.getInstance()
                                                    .getDefaultCustomIuvGenerator().getCodApplicazione(dominio,
                                                            iuv, dominio.getApplicazioneDefault(this));
                                            if (codApplicazione == null) {
                                                response.add(idRendicontazione.getIdentificativoFlusso()
                                                        + "#Acquisizione flusso fallita. Impossibile individuare l'applicativo gestore del versamento per acquisirne i dati [Dominio:"
                                                        + codDominio + " Iuv:" + iuv + "].");
                                                log.error(
                                                        "Errore durante il processamento del flusso di Rendicontazione [Flusso:"
                                                                + idRendicontazione.getIdentificativoFlusso()
                                                                + "]: Impossibile individuare l'applicativo gestore del versamento per acquisirne i dati [Dominio:"
                                                                + codDominio + " Iuv:" + iuv
                                                                + "]. Flusso non acquisito.");
                                                GpThreadLocal.get().log("rendicontazioni.acquisizioneFlussoKo",
                                                        idRendicontazione.getIdentificativoFlusso(),
                                                        "Impossibile individuare l'applicativo gestore del versamento per acquisirne i dati [Dominio:"
                                                                + codDominio + " Iuv:" + iuv
                                                                + "].  Flusso non acquisito.");
                                                throw new GovPayException(EsitoOperazione.INTERNAL,
                                                        "Impossibile individuare l'applicativo gestore del versamento per acquisirne i dati [Dominio:"
                                                                + codDominio + " Iuv:" + iuv
                                                                + "].  Flusso non acquisito.");
                                            }
                                            versamento = VersamentoUtils.acquisisciVersamento(
                                                    AnagraficaManager.getApplicazione(this, codApplicazione),
                                                    null, null, null, codDominio, iuv, this);
                                        }
                                    } catch (VersamentoScadutoException e1) {
                                        erroreVerifica = "Versamento non acquisito dall'applicazione gestrice perche' SCADUTO.";
                                    } catch (VersamentoAnnullatoException e1) {
                                        erroreVerifica = "Versamento non acquisito dall'applicazione gestrice perche' ANNULLATO.";
                                    } catch (VersamentoDuplicatoException e1) {
                                        erroreVerifica = "Versamento non acquisito dall'applicazione gestrice perche' DUPLICATO.";
                                    } catch (VersamentoSconosciutoException e1) {
                                        erroreVerifica = "Versamento non acquisito dall'applicazione gestrice perche' SCONOSCIUTO.";
                                    } catch (ClientException ce) {
                                        response.add(idRendicontazione.getIdentificativoFlusso()
                                                + "#Acquisizione flusso fallita. Riscontrato errore nell'acquisizione del versamento dall'applicazione gestrice [Transazione: "
                                                + idTransaction2 + "].");
                                        log.error(
                                                "Errore durante il processamento del flusso di Rendicontazione [Flusso:"
                                                        + idRendicontazione.getIdentificativoFlusso()
                                                        + "]: impossibile acquisire i dati del versamento [Dominio:"
                                                        + codDominio + " Iuv:" + iuv
                                                        + "]. Flusso non acquisito.");
                                        GpThreadLocal.get().log("rendicontazioni.acquisizioneFlussoKo",
                                                idRendicontazione.getIdentificativoFlusso(),
                                                "Impossibile acquisire i dati di un versamento dall'applicativo gestore [Applicazione:"
                                                        + codApplicazione + " Dominio:" + codDominio + " Iuv:"
                                                        + iuv + "].  Flusso non acquisito.");
                                        throw new GovPayException(ce);
                                    }

                                    if (versamento == null) {
                                        // non ho trovato il versamento 
                                        GpThreadLocal.get().log("rendicontazioni.senzaRptNoVersamento", iuv,
                                                iur);
                                        log.info("Pagamento [Dominio:" + codDominio + " Iuv:" + iuv + " Iur: "
                                                + iur
                                                + "] rendicontato con errore: Pagamento senza RPT di versamento sconosciuto.");
                                        rendicontazione.addAnomalia("007111",
                                                "Il versamento risulta sconosciuto: " + erroreVerifica);
                                        continue;
                                    } else {

                                        if (versamento.getSingoliVersamenti(this).size() != 1) {
                                            // Un pagamento senza rpt DEVE riferire un pagamento tipo 3 con un solo singolo versamento
                                            GpThreadLocal.get().log(
                                                    "rendicontazioni.senzaRptVersamentoMalformato", iuv, iur);
                                            log.info("Pagamento [Dominio:" + codDominio + " Iuv:" + iuv
                                                    + " Iur: " + iur
                                                    + "] rendicontato con errore: Pagamento senza RPT di versamento sconosciuto.");
                                            rendicontazione.addAnomalia("007114",
                                                    "Il versamento presenta piu' singoli versamenti");
                                            continue;
                                        }

                                        // Trovato versamento. Creo il pagamento senza rpt 
                                        pagamento = new it.govpay.bd.model.Pagamento();
                                        pagamento.setCodDominio(codDominio);
                                        pagamento.setDataAcquisizione(rendicontazione.getData());
                                        pagamento.setDataPagamento(rendicontazione.getData());
                                        pagamento.setImportoPagato(rendicontazione.getImporto());
                                        pagamento.setIur(rendicontazione.getIur());
                                        pagamento.setIuv(rendicontazione.getIuv());
                                        pagamento.setCodDominio(fr.getCodDominio());
                                        pagamento.setSingoloVersamento(
                                                versamento.getSingoliVersamenti(this).get(0));

                                        rendicontazione.setPagamento(pagamento);
                                        rendicontazione.setPagamentoDaCreare(true);
                                        continue;
                                    }
                                }

                                GpThreadLocal.get().log("rendicontazioni.noPagamento", iuv, iur);
                                log.info("Pagamento [Dominio:" + codDominio + " Iuv:" + iuv + " Iur: " + iur
                                        + "] rendicontato con errore: il pagamento non risulta presente in base dati.");
                                rendicontazione.addAnomalia("007101",
                                        "Il pagamento riferito dalla rendicontazione non risulta presente in base dati.");
                                continue;
                            } catch (MultipleResultException e) {
                                // Individuati piu' pagamenti riferiti dalla rendicontazione
                                GpThreadLocal.get().log("rendicontazioni.poliPagamento", iuv, iur);
                                log.info("Pagamento rendicontato duplicato: [CodDominio: " + codDominio
                                        + "] [Iuv: " + iuv + "] [Iur: " + iur + "]");
                                rendicontazione.addAnomalia("007102",
                                        "La rendicontazione riferisce piu di un pagamento gestito.");
                            } finally {
                                if (!StatoRendicontazione.ALTRO_INTERMEDIARIO.equals(rendicontazione.getStato())
                                        && rendicontazione.getAnomalie().isEmpty()) {
                                    rendicontazione.setStato(StatoRendicontazione.OK);
                                } else if (!StatoRendicontazione.ALTRO_INTERMEDIARIO
                                        .equals(rendicontazione.getStato())
                                        && !rendicontazione.getAnomalie().isEmpty()) {
                                    rendicontazione.setStato(StatoRendicontazione.ANOMALA);
                                    hasFrAnomalia = true;
                                }
                                fr.addRendicontazione(rendicontazione);
                            }
                        }

                        // Singole rendicontazioni elaborate.
                        // Controlli di quadratura generali

                        if (totaleImportiRendicontati
                                .compareTo(flussoRendicontazione.getImportoTotalePagamenti()) != 0) {
                            GpThreadLocal.get().log("rendicontazioni.importoTotaleErrato");
                            log.info("La somma degli importi rendicontati [" + totaleImportiRendicontati
                                    + "] non corrisponde al totale indicato nella testata del flusso ["
                                    + flussoRendicontazione.getImportoTotalePagamenti() + "]");
                            fr.addAnomalia("007106",
                                    "La somma degli importi rendicontati [" + totaleImportiRendicontati
                                            + "] non corrisponde al totale indicato nella testata del flusso ["
                                            + flussoRendicontazione.getImportoTotalePagamenti() + "]");
                        }

                        try {
                            if (flussoRendicontazione.getDatiSingoliPagamenti().size() != flussoRendicontazione
                                    .getNumeroTotalePagamenti().longValueExact()) {
                                GpThreadLocal.get().log("rendicontazioni.numeroRendicontazioniErrato");
                                log.info("Il numero di pagamenti rendicontati ["
                                        + flussoRendicontazione.getDatiSingoliPagamenti().size()
                                        + "] non corrisponde al totale indicato nella testata del flusso ["
                                        + flussoRendicontazione.getNumeroTotalePagamenti().longValueExact()
                                        + "]");
                                fr.addAnomalia("007107", "Il numero di pagamenti rendicontati ["
                                        + flussoRendicontazione.getDatiSingoliPagamenti().size()
                                        + "] non corrisponde al totale indicato nella testata del flusso ["
                                        + flussoRendicontazione.getNumeroTotalePagamenti().longValueExact()
                                        + "]");
                            }
                        } catch (Exception e) {
                            GpThreadLocal.get().log("rendicontazioni.numeroRendicontazioniErrato");
                            log.info("Il numero di pagamenti rendicontati ["
                                    + flussoRendicontazione.getDatiSingoliPagamenti().size()
                                    + "] non corrisponde al totale indicato nella testata del flusso [????]");
                            fr.addAnomalia("007107", "Il numero di pagamenti rendicontati ["
                                    + flussoRendicontazione.getDatiSingoliPagamenti().size()
                                    + "] non corrisponde al totale indicato nella testata del flusso [????]");
                        }

                        // Decido lo stato del FR
                        if (fr.getAnomalie().isEmpty()) {
                            fr.setStato(StatoFr.ACCETTATA);
                        } else {
                            fr.setStato(StatoFr.ANOMALA);
                            hasFrAnomalia = true;
                        }

                        // Procedo al salvataggio
                        RendicontazioniBD rendicontazioniBD = new RendicontazioniBD(this);

                        // Tutte le operazioni di salvataggio devono essere in transazione.
                        setAutoCommit(false);
                        frBD.insertFr(fr);
                        for (Rendicontazione r : fr.getRendicontazioni(this)) {
                            r.setIdFr(fr.getId());

                            // controllo se c'e' un pagamento da creare relativo alla rendicontazione
                            // deve anche essere creato il pagamento.
                            if (r.isPagamentoDaCreare()) {
                                pagamentiBD.insertPagamento(r.getPagamento(this));
                                r.setIdPagamento(r.getPagamento(this).getId());
                            }
                            rendicontazioniBD.insert(r);
                        }
                        this.commit();
                        if (!hasFrAnomalia) {
                            log.info("Flusso di rendicontazione acquisito senza anomalie.");
                            GpThreadLocal.get().log("rendicontazioni.acquisizioneFlussoOk");
                        } else {
                            log.info("Flusso di rendicontazione acquisito con anomalie.");
                            GpThreadLocal.get().log("rendicontazioni.acquisizioneFlussoOkAnomalia");
                        }
                    }
                } catch (GovPayException ce) {
                    log.error("Flusso di rendicontazione non acquisito", ce);
                    errori = true;
                } finally {
                    GpThreadLocal.get().closeTransaction(idTransaction2);
                }
            }
        }
    } catch (Exception e) {
        GpThreadLocal.get().log("rendicontazioni.acquisizioneFlussiFail", e.getMessage());
        throw new GovPayException(e);
    } finally {
        try {
            if (isClosed())
                setupConnection(GpThreadLocal.get().getTransactionId());
        } catch (Exception e) {
            log.error("Errore nel ripristino della connessione", e);
        }
    }

    GpThreadLocal.get().log("rendicontazioni.acquisizioneOk");

    String rspTxt = "";
    if (errori)
        rspTxt = "WARNING#Processo di acquisizione completato parzialmente: uno o piu' flussi non sono stati acquisiti.|";
    else
        rspTxt = "OK#Processo di acquisizione completato con successo|";

    if (response.isEmpty()) {
        return rspTxt + "Processo di acquisizione completato con successo. #Nessun flusso acquisito.";
    } else {
        return rspTxt + StringUtils.join(response, "|");
    }
}

From source file:com.knowgate.dfs.FileSystem.java

private static void copyHTTPToFile(String sSource, String sTarget) throws MalformedURLException, IOException {
    URL oUrl = new URL(sSource);
    FileOutputStream oTrgt = new FileOutputStream(sTarget.substring(7));
    DataHandler oHndlr = new DataHandler(oUrl);
    oHndlr.writeTo(oTrgt);
    oTrgt.close();//  w  w w  .  jav  a  2 s  .  co  m
}

From source file:org.wso2.carbon.event.simulator.core.internal.CarbonEventSimulator.java

private void writeResource(DataHandler dataHandler, String destPath, String fileName, File csvDest)
        throws IOException {
    File tempDestinationFile = new File(destPath, fileName);
    FileOutputStream fos = null;//from  w  w w .ja v a  2  s. c  o  m
    File destinationFile = new File(csvDest, fileName);
    try {
        fos = new FileOutputStream(tempDestinationFile);
        /* File stream is copied to a temp directory in order handle hot deployment issue
           occurred in windows */
        dataHandler.writeTo(fos);
        FileUtils.copyFile(tempDestinationFile, destinationFile);

    } catch (FileNotFoundException e) {
        log.error("Cannot find the file that specified", e);
        throw e;
    } catch (IOException e) {
        log.error("Exception when reading the file", e);
        throw e;
    } finally {
        if (fos == null) {
            return;
        }
        try {
            fos.close();
        } catch (IOException e) {
            log.warn("Can't close file streams.", e);
        }
    }

    boolean isDeleted = tempDestinationFile.delete();
    if (!isDeleted) {
        log.warn("temp file: " + tempDestinationFile.getAbsolutePath()
                + " deletion failed, scheduled deletion on server exit.");
        tempDestinationFile.deleteOnExit();
    }
}

From source file:org.apache.synapse.samples.framework.clients.MTOMSwASampleClient.java

public SampleClientResult sendUsingSWA(String fileName, String targetEPR) {
    clientResult = new SampleClientResult();
    try {// www . ja v a2 s.c  o m
        Options options = new Options();
        options.setTo(new EndpointReference(targetEPR));
        options.setAction("urn:uploadFileUsingSwA");
        options.setProperty(Constants.Configuration.ENABLE_SWA, Constants.VALUE_TRUE);

        ConfigurationContext configContext = ConfigurationContextFactory
                .createConfigurationContextFromFileSystem(configuration.getClientRepo(),
                        configuration.getAxis2Xml());

        ServiceClient sender = new ServiceClient(configContext, null);

        sender.setOptions(options);
        OperationClient mepClient = sender.createClient(ServiceClient.ANON_OUT_IN_OP);

        MessageContext mc = new MessageContext();

        log.info("Sending file : " + fileName + " as SwA");
        FileDataSource fileDataSource = new FileDataSource(new File(fileName));
        DataHandler dataHandler = new DataHandler(fileDataSource);
        String attachmentID = mc.addAttachment(dataHandler);

        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
        SOAPEnvelope env = factory.getDefaultEnvelope();
        OMNamespace ns = factory.createOMNamespace("http://services.samples", "m0");
        OMElement payload = factory.createOMElement("uploadFileUsingSwA", ns);
        OMElement request = factory.createOMElement("request", ns);
        OMElement imageId = factory.createOMElement("imageId", ns);
        imageId.setText(attachmentID);
        request.addChild(imageId);
        payload.addChild(request);
        env.getBody().addChild(payload);
        mc.setEnvelope(env);

        mepClient.addMessageContext(mc);
        mepClient.execute(true);
        MessageContext response = mepClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);

        SOAPBody body = response.getEnvelope().getBody();
        String imageContentId = body
                .getFirstChildWithName(new QName("http://services.samples", "uploadFileUsingSwAResponse"))
                .getFirstChildWithName(new QName("http://services.samples", "response"))
                .getFirstChildWithName(new QName("http://services.samples", "imageId")).getText();

        Attachments attachment = response.getAttachmentMap();
        dataHandler = attachment.getDataHandler(imageContentId);
        File tempFile = File.createTempFile("swa-", ".gif");
        FileOutputStream fos = new FileOutputStream(tempFile);
        dataHandler.writeTo(fos);
        fos.flush();
        fos.close();

        log.info("Saved response to file : " + tempFile.getAbsolutePath());
        clientResult.incrementResponseCount();
    } catch (Exception e) {
        log.error("Error invoking service", e);
        clientResult.setException(e);
    }

    return clientResult;

}

From source file:com.clustercontrol.collect.action.RecordDataWriter.java

/**
 * ???????????????//from w w  w.ja v  a2  s  .c om
 *
 * @param fileName
 */
public void download(String prefName, String name) {
    if (null == name) {
        name = prefName;
    }
    m_log.debug("download() downloadFileName = " + prefName + ", name = " + name);
    m_log.info("download perf file  = " + name);

    FileOutputStream fileOutputStream = null;
    DataHandler handler = null;
    try {
        // ????
        m_log.info("download perf file = " + name + ", waitCount = " + waitCount);

        for (Map.Entry<String, List<String>> entry : m_targetManagerFacilityMap.entrySet()) {
            String managerName = entry.getKey();
            for (int i = 0; i < waitCount; i++) {
                if (!this.canceled) {
                    Thread.sleep(waitSleep);
                    m_log.debug("download perf file = " + name + ", create check. count = " + i);
                    // ???????????(out of memory)
                    CollectEndpointWrapper wrapper = CollectEndpointWrapper.getWrapper(managerName);
                    handler = wrapper.downloadPerfFile(prefName);
                    if (handler != null) {
                        m_log.info("download perf file = " + name + ", created !");
                        break;
                    }
                }
            }
            if (handler == null) {
                m_log.info("download handler is null");
                setCancelMessage(Messages.getString("performance.get.collecteddata.error.message")
                        + ": cannot create collected data for client-timeout");
                setCanceled(true);
                return;
            }
        }
        if (handler == null) {
            m_log.info("download handler is null");
            setCancelMessage(Messages.getString("performance.get.collecteddata.error.message")
                    + ": cannot create collected data for client-timeout");
            setCanceled(true);
            return;
        }

        File file = new File(this.fileDir, name);
        boolean ret = file.createNewFile();
        if (!ret) {
            m_log.warn("file is already exist.");
        }
        fileOutputStream = new FileOutputStream(file);
        handler.writeTo(fileOutputStream);

        m_log.info("download perf file  = " + name + ", succeed !");
        m_log.debug("download() succeed!");
    } catch (HinemosUnknown_Exception e) {
        setCancelMessage(
                Messages.getString("performance.get.collecteddata.error.message") + ":" + e.getMessage());
        setCanceled(true);
        m_log.warn("download()", e);
    } catch (InvalidUserPass_Exception e) {
        setCancelMessage(
                Messages.getString("performance.get.collecteddata.error.message") + ":" + e.getMessage());
        setCanceled(true);
        m_log.warn("download()", e);
    } catch (InvalidRole_Exception e) {
        setCancelMessage(
                Messages.getString("performance.get.collecteddata.error.message") + ":" + e.getMessage());
        setCanceled(true);
        m_log.warn("download()", e);
    } catch (InterruptedException e) {
        setCancelMessage(
                Messages.getString("performance.get.collecteddata.error.message") + ":" + e.getMessage());
        setCanceled(true);
        m_log.warn("download()", e);
    } catch (IOException e) {
        setCancelMessage(
                Messages.getString("performance.get.collecteddata.error.write") + ":" + e.getMessage());
        setCanceled(true);
        m_log.warn("download()", e);
    } finally {
        try {
            if (fileOutputStream != null) {
                fileOutputStream.close();
            }
        } catch (IOException e) {
            setCancelMessage(
                    Messages.getString("performance.get.collecteddata.error.write") + ":" + e.getMessage());
            setCanceled(true);
            m_log.warn("download()", e);
        }
    }
}