1 package com.calipso.reportgenerator.userinterface; 2 3 import org.apache.commons.vfs.FileSystemManager; 4 import org.apache.commons.vfs.FileObject; 5 import org.apache.commons.vfs.FileSystemException; 6 import org.exolab.castor.xml.Unmarshaller; 7 import com.calipso.reportgenerator.services.FileSystemResolver; 8 import com.calipso.reportgenerator.common.ReportManagerLogger; 9 import com.calipso.reportgenerator.common.LanguageTraslator; 10 import com.calipso.reportgenerator.common.InfoException; 11 import com.calipso.reportgenerator.common.ReportGeneratorConfiguration; 12 import com.calipso.reportgenerator.reportdefinitions.ReportDefinition; 13 import com.calipso.reportgenerator.reportdefinitions.ReportSourceDefinition; 14 15 import java.io.FileReader ; 16 import java.io.IOException ; 17 18 24 public class DefinitionEditor { 25 26 private static String nameFileReportDefinitionSchema = "ReportDefinition.xsd"; 27 private static String nameFileReportSourceDefinitionSchema = "ReportSourceDefinition.xsd"; 28 private static String pathSchema; 29 private static String reportDefinitionID; 30 private static String reportSourceDefinitionID; 31 private static ReportGeneratorConfiguration reportGeneratorConfiguration; 32 33 public static void reportDefinitionEditor(String reportDefID, ReportGeneratorConfiguration reportGenerator) throws InfoException { 34 try{ 35 reportDefinitionID = reportDefID; 36 reportGeneratorConfiguration = reportGenerator; 37 pathSchema = reportGenerator.getSourceReportSchemasPath(); 38 String pathReportDefinition = pathReportDefinitionResolver(); 39 String pathReportDefinitionSchema = pathReportDefinitionSchemaResolver(); 40 if (!(pathReportDefinition.equalsIgnoreCase(""))){ 41 runPollo(pathReportDefinition,pathReportDefinitionSchema, reportGenerator.getPolloPath()); 42 } 43 } catch (Exception e) { 44 throw new InfoException(LanguageTraslator.traslate("541"), e); 45 } 46 } 47 48 private static String pathReportDefinitionResolver() throws InfoException { 49 String pathReportDefinition = ""; 50 try { 51 FileSystemManager fileSystemManager = FileSystemResolver.getFileSystemManager(reportGeneratorConfiguration); 52 FileObject fileObject = fileSystemManager.resolveFile(reportGeneratorConfiguration.getSourceReportDefinitionsPath()); 53 String fileName; 54 for (int i = 0; i < fileObject.getChildren().length; i++) { 55 fileName = fileObject.getChildren()[i].getName().getBaseName(); 56 if(!fileName.endsWith(".xml")) { 57 continue; 58 } 59 String reportDefinitionIDViewer; 60 reportDefinitionIDViewer = ((ReportDefinition) Unmarshaller.unmarshal(ReportDefinition.class, new FileReader (reportGeneratorConfiguration.getSourceReportDefinitionsPath() + "/" + fileName))).getId(); 61 if (reportDefinitionID.equalsIgnoreCase(reportDefinitionIDViewer)){ 62 pathReportDefinition = reportGeneratorConfiguration.getSourceReportDefinitionsPath() + "/" + fileName; 63 } 64 } 65 } catch (Exception e) { 66 throw new InfoException(LanguageTraslator.traslate("542"), e); 67 } 68 return pathReportDefinition; 69 } 70 71 private static String pathReportDefinitionSchemaResolver() throws InfoException { 72 String pathReportDefinitionSchema = ""; 73 try { 74 pathReportDefinitionSchema = pathSchema + "/" + nameFileReportDefinitionSchema; 75 new FileReader (pathReportDefinitionSchema); 76 } catch (Exception e){ 77 pathReportDefinitionSchema = ""; 78 } 79 return pathReportDefinitionSchema; 80 } 81 82 public static void reportSourceDefinitionEditor(String reportDefID, ReportGeneratorConfiguration reportGenerator) throws InfoException { 83 try{ 84 reportDefinitionID = reportDefID; 85 reportGeneratorConfiguration = reportGenerator; 86 pathSchema = reportGenerator.getSourceReportSchemasPath(); 87 String pathReportDefinition = pathReportDefinitionResolver(); 88 if (!(pathReportDefinition.equalsIgnoreCase(""))){ 89 reportSourceDefinitionID = ((ReportDefinition) Unmarshaller.unmarshal(ReportDefinition.class, new FileReader (pathReportDefinition))).getReportSource(); 90 String pathReportSourceDefinition = pathReportSourceDefinitionResolver(); 91 String pathReportSourceDefinitionSchema = pathReportSourceDefinitionSchemaResolver(); 92 if (!(pathReportSourceDefinition.equalsIgnoreCase(""))){ 93 runPollo(pathReportSourceDefinition,pathReportSourceDefinitionSchema,reportGenerator.getPolloPath()); 94 } 95 } 96 } catch (Exception e) { 97 throw new InfoException(LanguageTraslator.traslate("543"), e); 98 } 99 } 100 101 private static void runPollo(String pathReportSourceDefinition, String pathReportSourceDefinitionSchema, String polloPath) throws IOException { 102 Runtime.getRuntime().exec("java -jar "+ polloPath+" "+pathReportSourceDefinition +" "+ pathReportSourceDefinitionSchema); 103 } 104 105 private static String pathReportSourceDefinitionResolver() throws InfoException { 106 String pathReportSourceDefinition = ""; 107 try { 108 FileSystemManager fileSystemManager = FileSystemResolver.getFileSystemManager(reportGeneratorConfiguration); 109 FileObject fileObject = fileSystemManager.resolveFile(reportGeneratorConfiguration.getSourceReportSourceDefinitionsPath()); 110 String fileName; 111 for (int i = 0; i < fileObject.getChildren().length; i++) { 112 fileName = fileObject.getChildren()[i].getName().getBaseName(); 113 if(!fileName.endsWith(".xml")) { 114 continue; 115 } 116 String reportSourceDefinitionIDViewer; 117 reportSourceDefinitionIDViewer = ((ReportSourceDefinition) Unmarshaller.unmarshal(ReportSourceDefinition.class, new FileReader (reportGeneratorConfiguration.getSourceReportSourceDefinitionsPath() + "/" + fileName))).getId(); 118 if (reportSourceDefinitionID.equalsIgnoreCase(reportSourceDefinitionIDViewer)){ 119 pathReportSourceDefinition = reportGeneratorConfiguration.getSourceReportSourceDefinitionsPath() + "/" + fileName; 120 } 121 } 122 } 123 catch (Exception e) { 124 throw new InfoException(LanguageTraslator.traslate("544"), e); 125 } 126 return pathReportSourceDefinition; 127 } 128 129 private static String pathReportSourceDefinitionSchemaResolver() throws InfoException{ 130 String pathReportSourceDefinitionSchema = ""; 131 try { 132 pathReportSourceDefinitionSchema = pathSchema + "/" + nameFileReportSourceDefinitionSchema; 133 new FileReader (pathReportSourceDefinitionSchema); 134 } catch (Exception e){ 135 pathReportSourceDefinitionSchema = ""; 136 } 137 return pathReportSourceDefinitionSchema; 138 } 139 } 140 | Popular Tags |