gwtipstricks:idxtipstricks:doc_mapping_xml

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
gwtipstricks:idxtipstricks:doc_mapping_xml [2021/03/17 10:37]
francesco.rosati [CODICE GROOVY PER LA CREAZIONE DINAMICA di XML e DOC]
gwtipstricks:idxtipstricks:doc_mapping_xml [2021/04/02 17:52] (versione attuale)
francesco.rosati
Linea 12: Linea 12:
 === Esempio: === === Esempio: ===
 <code groovy> <code groovy>
 +
 +import java.io.ByteArrayInputStream;​
 import java.io.ByteArrayOutputStream;​ import java.io.ByteArrayOutputStream;​
-import java.text.DateFormat;​ 
-import java.text.SimpleDateFormat;​ 
 import java.io.File;​ import java.io.File;​
 import java.io.FileInputStream;​ import java.io.FileInputStream;​
 import java.io.FileOutputStream;​ import java.io.FileOutputStream;​
 +import java.io.IOException;​
 +import java.io.InputStream;​
 +import java.io.OutputStream;​
 +import java.text.DateFormat;​
 +import java.text.SimpleDateFormat;​
 +import java.util.Enumeration;​
 import java.util.HashMap;​ import java.util.HashMap;​
-import org.apache.commons.io.FileUtils;+import java.util.zip.ZipEntry;​ 
 +import java.util.zip.ZipFile;​ 
 +import java.util.zip.ZipOutputStream;​ 
 + 
 +import javax.servlet.http.HttpServletResponse;​ 
 + 
 +import org.apache.poi.util.IOUtils; 
 import com.geowebframework.transfer.objects.webclient.GwBeanDocument;​ import com.geowebframework.transfer.objects.webclient.GwBeanDocument;​
 +
 //xml da produrre //xml da produrre
 String xml="";​ String xml="";​
  
 //1) recupero dei dati //1) recupero dei dati
-String ​id_contractor ​="123456789"; +String ​keyColumn ​= "id_test"
 +String itemId = (String) item.get(keyColumn)
 + 
 HashMap<​String,​ Object> valuesMapQuery = new HashMap<​String,​ Object>​();​ HashMap<​String,​ Object> valuesMapQuery = new HashMap<​String,​ Object>​();​
-valuesMapQuery.put("​id_contractor"​,id_contractor);+valuesMapQuery.put(keyColumn,itemId)
 + 
 +String xmlValue ="​questo è un test";
  
-//1.1)UN CAMPO+//1.1)RECUPERRO DEL VALORE DI UN CAMPO DAL DB
 String queryCitta = """​select case when descr_city is null then ' ' else descr_city end as descr_city from  String queryCitta = """​select case when descr_city is null then ' ' else descr_city end as descr_city from 
 msc_contractor inner join msc_tab_istat_city on msc_contractor.cod_cat_city=msc_tab_istat_city.cod_cat_city where  msc_contractor inner join msc_tab_istat_city on msc_contractor.cod_cat_city=msc_tab_istat_city.cod_cat_city where 
Linea 36: Linea 53:
  
 def cittaRes=services.queryService.executeQuery(queryCitta ,​valuesMapQuery) def cittaRes=services.queryService.executeQuery(queryCitta ,​valuesMapQuery)
-def citta = null;+String ​citta = null;
 if(cittaRes!=null && cittaRes.size()>​0 && cittaRes.get(0)!=null){ if(cittaRes!=null && cittaRes.size()>​0 && cittaRes.get(0)!=null){
    citta = cittaRes.get(0).get("​descr_city"​);​    citta = cittaRes.get(0).get("​descr_city"​);​
 } }
  
-//1.2): LISTE+//1.2)CREAZIONE DI UNA LISTA A APRTIRE DAI RECORD MULTIPLI
 //stringa di appoggio per una lista di elementi //stringa di appoggio per una lista di elementi
 String xml_riferimenti="";​ String xml_riferimenti="";​
Linea 48: Linea 65:
   ​   ​
 def recordRiferimenti = services.queryService.executeQuery(queryRiferimenti,​valuesMapQuery);​ def recordRiferimenti = services.queryService.executeQuery(queryRiferimenti,​valuesMapQuery);​
-String xml_riferimenti ="";​ 
 String numero_ordine = "";​ String numero_ordine = "";​
 String data_ordine ="";​  String data_ordine ="";​
Linea 73: Linea 89:
      </​Liste>​      </​Liste>​
  </​RelazioneTrimestrale>""";​  </​RelazioneTrimestrale>""";​
-//3)+ 
 +//3) recupero del template Doc
 ///////////////////////////////////////////////////////////////////​ ///////////////////////////////////////////////////////////////////​
-String classNameTemplate = "​nome_classe_template";​+// classe TEMPLATE DOC 
 +String classNameTemplate ​  ​= "​nome_classe_template";​
 String attributeColumnName = "​nome_attributo_document_template";​ String attributeColumnName = "​nome_attributo_document_template";​
 ///////////////////////////////////////////////////////////////////​ ///////////////////////////////////////////////////////////////////​
-//String itemId  +GwBeanDocument gwBeanDocument = services.gwDocumentDataService.getDocumentBeanByItemIdAndAttributeColumnName(classNameTemplate,​itemId,​attributeColumnName);​ 
- +//nome della cartella per i file temporanei
-GwBeanDocument gwBeanDocument = gwDocumentDataService.getDocumentBeanByItemIdAndAttributeColumnName(classNameTemplate,​itemId,​attributeColumnName ​ ); +
-//noime della cartella per i file temporanei+
 String tempDestDirName = "​gwdocxmltemp";​ String tempDestDirName = "​gwdocxmltemp";​
-String tempFilePath ​=""​;+File tempFile ​null;
 if(gwBeanDocument!=null && gwBeanDocument.getIs()!=null ){ if(gwBeanDocument!=null && gwBeanDocument.getIs()!=null ){
- + File tempDir = new File(System.getProperty("​java.io.tmpdir"​),​ tempDestDirName);​ 
-    ​File tempDir = new File(System.getProperty("​java.io.tmpdir"​),​ tempDestDirName);​ +    String tempDirPath = tempDir.getPath();​ 
-    String tempDirPath = tempDir.getPath();  +    log.debug("​GEOWEB_DEBUG:​ If doesn'​t already exist, trying to create the directory named by this path:"+tempDirPath);
-    log.debug("​GEOWEB_DEBUG:​ Trying to create a new File instance with this path "​+tempDirPath);  +
-    log.debug("​GEOWEB_DEBUG:​ If doesn'​t already exist, trying to create the directory named by this pathname ​"+tempDir); +
     if (!tempDir.exists()) {     if (!tempDir.exists()) {
        if (!tempDir.mkdir())         if (!tempDir.mkdir())
-   ​throw new IOException("​Could not create directory: " + tempDirPath);​+       throw new IOException("​Could not create directory: " + tempDirPath);​
        else        else
           log.debug("​GEOWEB_DEBUG:​ (FileManagerService) - The folder in the path " + tempDirPath + " was created"​);​           log.debug("​GEOWEB_DEBUG:​ (FileManagerService) - The folder in the path " + tempDirPath + " was created"​);​
     }     }
- + tempFile = new File(tempDir,​gwBeanDocument.getName());​ 
-  File tempFile = new File(tempDir,​gwBeanDocument.getName());​ + FileOutputStream output = new FileOutputStream(tempFile);​ 
-  ​tempFilePath = tempFile.getPath();​ + IOUtils.copy(gwBeanDocument.getIs() , output);
-  ​FileOutputStream output = new FileOutputStream(tempFile);​ +
-  IOUtils.copy(gwBeanDocument.getIs() , output);+
 }else{ }else{
     throw new RuntimeException("​Template doc non trovato"​);​     throw new RuntimeException("​Template doc non trovato"​);​
 } }
 + 
 +//4) SERVIZIO PER LA CREAZIONE DEL DOC AGGIORNATO:
 +String contentDisposition ="​attachment";​
  
-////4) SERVIZIO PER LA CREAZIONE DEL DOC AGGIORNATO: +//esempi di content type: 
-//INPUT: PATH sul SERVER dove memorizzare temporaneamente il file +//.doc      application/​msword 
-//OUTPUT: il doc aggiornato +//.docx     ​application/​vnd.openxmlformats-officedocument.wordprocessingml.document 
-byte[] ​ ​byteArray ​services.docxService.updateDocxXml(tempFilePath ​,xml);+//.xls      application/​vnd.ms-excel 
 +//​.xlsx ​    ​application/​vnd.openxmlformats-officedocument.spreadsheetml.sheet 
 +String contentType ="​application/​vnd.openxmlformats-officedocument.wordprocessingml.document";​ 
 +httpServletResponse.setContentType(contentType ); 
 +httpServletResponse.setHeader("​Content-Disposition",​contentDisposition+";​filename=\""​+gwBeanDocument.getName()+"​\""​);​ 
 +ZipFile zipFile = new ZipFile(tempFile);​ 
 +OutputStream out = httpServletResponse.getOutputStream();​ 
 +ZipOutputStream zos = new ZipOutputStream(out);​ 
 +  
 +for(Enumeration e = zipFile.entries();​ e.hasMoreElements();​ ) { 
 +    ZipEntry entryIn = (ZipEntry) e.nextElement();​ 
 +    if (!entryIn.getName().equalsIgnoreCase("​customXml/​item1.xml"​)) { 
 +        zos.putNextEntry(new ZipEntry(entryIn.getName()));​ 
 +        InputStream is = zipFile.getInputStream(entryIn);​ 
 +        IOUtils.copy(is,​zos);​ 
 +    } 
 +    else{ 
 +        zos.putNextEntry(new ZipEntry("​customXml/​item1.xml"​));​ 
 +        byte[] ​source ​(xml).getBytes("​UTF-8"​);​ 
 +        ByteArrayInputStream bis = new ByteArrayInputStream(source);​ 
 +        IOUtils.copy(bis,zos); 
 +    } 
 +    zos.closeEntry();​ 
 +
 +zos.close();
 </​code>​ </​code>​
  • gwtipstricks/idxtipstricks/doc_mapping_xml.1615973858.txt.gz
  • Ultima modifica: 2021/03/17 10:37
  • da francesco.rosati