Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
gwtipstricks:idxtipstricks:doc_mapping_xml [2021/03/17 15:59] 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 39: | Linea 39: | ||
//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 55: | Linea 58: | ||
} | } | ||
- | //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 86: | 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); |
- | + | ||
- | GwBeanDocument gwBeanDocument = gwDocumentDataService.getDocumentBeanByItemIdAndAttributeColumnName(classNameTemplate,itemId,attributeColumnName ); | + | |
- | //noime della cartella per i file temporanei | + | |
- | String tempDestDirName = "gwdocxmltemp"; | + | |
- | String tempFilePath =""; | + | |
- | if(gwBeanDocument!=null && gwBeanDocument.getIs()!=null ){ | + | |
- | + | ||
- | File tempDir = new File(System.getProperty("java.io.tmpdir"), tempDestDirName); | + | |
- | String tempDirPath = tempDir.getPath(); | + | |
- | 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.mkdir()) | + | |
- | throw new IOException("Could not create directory: " + tempDirPath); | + | |
- | else | + | |
- | log.debug("GEOWEB_DEBUG: (FileManagerService) - The folder in the path " + tempDirPath + " was created"); | + | |
- | } | + | |
- | + | ||
- | File tempFile = new File(tempDir,gwBeanDocument.getName()); | + | |
- | tempFilePath = tempFile.getPath(); | + | |
- | FileOutputStream output = new FileOutputStream(tempFile); | + | |
- | IOUtils.copy(gwBeanDocument.getIs() , output); | + | |
- | }else{ | + | |
- | throw new RuntimeException("Template doc non trovato"); | + | |
- | } | + | |
- | + | ||
- | ////4) SERVIZIO PER LA CREAZIONE DEL DOC AGGIORNATO: | + | |
- | //INPUT: PATH sul SERVER dove memorizzare temporaneamente il file | + | |
- | //OUTPUT: il doc aggiornato | + | |
- | GwBeanDocument gwBeanDocument = gwDocumentDataService.getDocumentBeanByItemIdAndAttributeColumnName(classNameTemplate,itemId,attributeColumnName ); | + | |
//nome della cartella per i file temporanei | //nome della cartella per i file temporanei | ||
String tempDestDirName = "gwdocxmltemp"; | String tempDestDirName = "gwdocxmltemp"; | ||
File tempFile = null; | 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()); | |
- | tempFile = new File(tempDir,gwBeanDocument.getName()); | + | FileOutputStream output = new FileOutputStream(tempFile); |
- | FileOutputStream output = new FileOutputStream(tempFile); | + | IOUtils.copy(gwBeanDocument.getIs() , output); |
- | 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: | + | //4) SERVIZIO PER LA CREAZIONE DEL DOC AGGIORNATO: |
- | ZipFile zipFile = new ZipFile(tempFile); | + | String contentDisposition ="attachment"; |
- | ByteArrayOutputStream bos = new ByteArrayOutputStream(); | + | //esempi di content type: |
+ | //.doc application/msword | ||
+ | //.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document | ||
+ | //.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(); | OutputStream out = httpServletResponse.getOutputStream(); | ||
ZipOutputStream zos = new ZipOutputStream(out); | ZipOutputStream zos = new ZipOutputStream(out); | ||
+ | |||
for(Enumeration e = zipFile.entries(); e.hasMoreElements(); ) { | for(Enumeration e = zipFile.entries(); e.hasMoreElements(); ) { | ||
ZipEntry entryIn = (ZipEntry) e.nextElement(); | ZipEntry entryIn = (ZipEntry) e.nextElement(); |