From e8306c02bf009f446b242f3bd793416519218670 Mon Sep 17 00:00:00 2001 From: Carlos Alberto Date: Thu, 7 Apr 2016 12:37:58 -0300 Subject: [PATCH] Implementação dos recursos de relatório --- cit-esi-api/src/main/java/br/com/centralit/api/service/impl/InicializarEsiServiceImpl.java | 38 +++++++++++++++++++++++++++----------- cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportDataSource.java | 34 +++++++++++++++++++++++++++++----- cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportVersion.java | 4 ++-- cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/ResourceService.java | 3 +++ cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/JasperReportManagerImpl.java | 21 ++++++++++++++------- cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ReportVersionServiceImpl.java | 51 ++++++++++++++++++++++++++++----------------------- cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ResourceServiceImpl.java | 16 ++++++++++++++++ cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ResourceVersionServiceImpl.java | 9 ++++++--- cit-esi-web/src/main/java/br/com/centralit/listener/StartupListenerEsi.java | 2 ++ cit-esi-web/src/main/resources/reports/empregado.jrxml | 14 ++++++-------- cit-esi-web/src/main/resources/reports/empregado_telefone.jrxml | 12 +++++++----- cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportController.js | 118 +++++++++++++++------------------------------------------------------------------------------------------------------- cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportFileController.js | 201 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportFileListController.js | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cit-esi-web/src/main/webapp/html/report/reportEdit.html | 50 ++++++++++++++++++++------------------------------ cit-esi-web/src/main/webapp/html/report/reportList.html | 5 ----- cit-esi-web/src/main/webapp/html/reportFile/reportFile.html | 2 ++ cit-esi-web/src/main/webapp/html/reportFile/reportFileEdit.html | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cit-esi-web/src/main/webapp/html/reportFile/reportFileList.html | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 19 files changed, 652 insertions(+), 202 deletions(-) create mode 100644 cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportFileController.js create mode 100644 cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportFileListController.js create mode 100644 cit-esi-web/src/main/webapp/html/reportFile/reportFile.html create mode 100644 cit-esi-web/src/main/webapp/html/reportFile/reportFileEdit.html create mode 100644 cit-esi-web/src/main/webapp/html/reportFile/reportFileList.html diff --git a/cit-esi-api/src/main/java/br/com/centralit/api/service/impl/InicializarEsiServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/api/service/impl/InicializarEsiServiceImpl.java index 5590b53..6331591 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/api/service/impl/InicializarEsiServiceImpl.java +++ b/cit-esi-api/src/main/java/br/com/centralit/api/service/impl/InicializarEsiServiceImpl.java @@ -86,7 +86,8 @@ public class InicializarEsiServiceImpl extends UtilStartup{ Pagina pgCss = new Pagina("CSS", "/cit-esi-web/html/css/css.html"); Pagina pgPage = new Pagina("Página HTML", "/cit-esi-web/html/page/page.html"); Pagina pgFile = new Pagina("Arquivo", "/cit-esi-web/html/file/file.html"); - Pagina pgReport = new Pagina("Relatório", "/cit-esi-web/html/report/report.html"); + Pagina pgReportFile = new Pagina("Arquivo de Relatório", "/cit-esi-web/html/reportFile/reportFile.html"); + Pagina pgReport = new Pagina("Configuração de Relatório", "/cit-esi-web/html/report/report.html"); Pagina pgFormWidget = new Pagina("Componente", "/cit-esi-web/html/formWidget/formWidget.html"); Pagina pgDataType = new Pagina("Tipo de Dado", "/cit-esi-web/html/dataType/dataType.html"); Pagina pgDatabase = new Pagina("Banco de Dados", "/cit-esi-web/html/database/database.html"); @@ -116,6 +117,7 @@ public class InicializarEsiServiceImpl extends UtilStartup{ pgCss = this.paginaService.saveIfNotExist(pgCss); pgPage = this.paginaService.saveIfNotExist(pgPage); pgFile = this.paginaService.saveIfNotExist(pgFile); + pgReportFile = this.paginaService.saveIfNotExist(pgReportFile); pgReport = this.paginaService.saveIfNotExist(pgReport); pgFormWidget = this.paginaService.saveIfNotExist(pgFormWidget); pgDataSource = this.paginaService.saveIfNotExist(pgDataSource); @@ -195,10 +197,7 @@ public class InicializarEsiServiceImpl extends UtilStartup{ Menu menuPage = new Menu("Página HTML", pgPage, menuRepositorio, null, 4, corBuilder, cssMenuBuilder, opacidadeMenuBuilder, classeBuilder, moduloSelecionado); menuPage.setIncludes(this.gerarArquivosMenu(menuPage, CIT_ESI_WEB_ANGULAR, "Page", true, true, true)); - Menu menuReport = new Menu("Relatório", pgReport, menuRepositorio, null, 5, corBuilder, cssMenuBuilder, opacidadeMenuBuilder, classeBuilder, moduloSelecionado); - menuReport.setIncludes(this.gerarArquivosMenu(menuReport, CIT_ESI_WEB_ANGULAR, "Report", true, true, true)); - - Menu menuFile = new Menu("Arquivo", pgFile, menuRepositorio, null, 6, corBuilder, cssMenuBuilder, opacidadeMenuBuilder, classeBuilder, moduloSelecionado); + Menu menuFile = new Menu("Arquivo", pgFile, menuRepositorio, null, 5, corBuilder, cssMenuBuilder, opacidadeMenuBuilder, classeBuilder, moduloSelecionado); menuFile.setIncludes(this.gerarArquivosMenu(menuFile, CIT_ESI_WEB_ANGULAR, "File", true, true, true)); // menuBuilder - Drools @@ -243,11 +242,22 @@ public class InicializarEsiServiceImpl extends UtilStartup{ Menu menuDataObject = new Menu("Objeto de Banco", pgDataObject, menuData, null, 4, corBuilder, cssMenuBuilder, opacidadeMenuBuilder, classeBuilder, moduloSelecionado); menuDataObject.setIncludes(this.gerarArquivosMenu(menuDataObject, CIT_ESI_WEB_ANGULAR, "DataObject", true, true, true)); + // menuReport - Report + Menu menuReport = new Menu("Relatórios", null, menuBuilder, 2, 1, corBuilder, cssMenuBuilder, opacidadeMenuBuilder, classeBuilder, moduloSelecionado); + + Menu menuReportFile = new Menu("Arquivo", pgReportFile, menuReport, null, 1, corBuilder, cssMenuBuilder, opacidadeMenuBuilder, classeBuilder, moduloSelecionado); + menuReportFile.setChave("ARQUIVO_RELATORIO"); + menuReportFile.setIncludes(this.gerarArquivosMenu(menuReportFile, CIT_ESI_WEB_ANGULAR, "ReportFile", true, true, false)); + + Menu menuReportConfig = new Menu("Configuração", pgReport, menuReport, null, 2, corBuilder, cssMenuBuilder, opacidadeMenuBuilder, classeBuilder, moduloSelecionado); + menuReportConfig.setChave("CONFIGURACAO_RELATORIO"); + menuReportConfig.setIncludes(this.gerarArquivosMenu(menuReportConfig, CIT_ESI_WEB_ANGULAR, "Report", true, true, true)); + // menuBuilder - Implantação - Menu menuImplantacao = new Menu("Implantação", null, menuBuilder, 2, 1, corBuilder, cssMenuBuilder, opacidadeMenuBuilder, classeBuilder, moduloSelecionado); + Menu menuImplantacao = new Menu("Implantação", null, menuBuilder, 3, 1, corBuilder, cssMenuBuilder, opacidadeMenuBuilder, classeBuilder, moduloSelecionado); - Menu menuPack = new Menu("Pacote", pgPack, menuData, null, 1, corBuilder, cssMenuBuilder, opacidadeMenuBuilder, classeBuilder, moduloSelecionado); - menuPack.setIncludes(this.gerarArquivosMenu(menuDataType, CIT_ESI_WEB_ANGULAR, "Pack", true, true, false)); + Menu menuPack = new Menu("Pacote", pgPack, menuImplantacao, null, 1, corBuilder, cssMenuBuilder, opacidadeMenuBuilder, classeBuilder, moduloSelecionado); + menuPack.setIncludes(this.gerarArquivosMenu(menuPack, CIT_ESI_WEB_ANGULAR, "Pack", true, true, false)); // MenuEsi menuEsi = this.menuService.mergeIfNotExist(menuEsi); @@ -327,9 +337,6 @@ public class InicializarEsiServiceImpl extends UtilStartup{ menuPage.setParent(menuRepositorio); menuPage = this.menuService.mergeIfNotExist(menuPage); - menuReport.setParent(menuRepositorio); - menuReport = this.menuService.mergeIfNotExist(menuReport); - menuFile.setParent(menuRepositorio); menuFile = this.menuService.mergeIfNotExist(menuFile); @@ -360,6 +367,15 @@ public class InicializarEsiServiceImpl extends UtilStartup{ menuForm.setParent(menuFormBuilder); menuForm = this.menuService.mergeIfNotExist(menuForm); + menuReport.setParent(menuBuilder); + menuReport = this.menuService.mergeIfNotExist(menuReport); + + menuReportFile.setParent(menuReport); + menuReportFile = this.menuService.mergeIfNotExist(menuReportFile); + + menuReportConfig.setParent(menuReport); + menuReportConfig = this.menuService.mergeIfNotExist(menuReportConfig); + menuImplantacao.setParent(menuBuilder); menuImplantacao = this.menuService.mergeIfNotExist(menuImplantacao); diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportDataSource.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportDataSource.java index 3f199bf..68e55f5 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportDataSource.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportDataSource.java @@ -62,17 +62,25 @@ public class ReportDataSource extends PersistentObject { @Column(nullable = true) @JsonView({ Views.EsiResourceEditView.class, Views.EsiPackageExportView.class}) private String outputAttributeName; + + @JsonView({ Views.EsiResourceEditView.class, Views.EsiPackageExportView.class}) + private Boolean restoreManyToOne; + + @JsonView({ Views.EsiResourceEditView.class, Views.EsiPackageExportView.class}) + private Boolean restoreOneToMany; public ReportDataSource() { // TODO Auto-generated constructor stub } public ReportDataSource(ReportDataSource reportDataSource) { - this.type = reportDataSource.type; - this.dataObject = reportDataSource.dataObject; - this.flow = reportDataSource.flow; - this.scriptCode = reportDataSource.scriptCode; - this.outputAttributeName = reportDataSource.outputAttributeName; + this.type = reportDataSource.getType(); + this.dataObject = reportDataSource.getDataObject(); + this.flow = reportDataSource.getFlow(); + this.scriptCode = reportDataSource.getScriptCode(); + this.outputAttributeName = reportDataSource.getOutputAttributeName(); + this.restoreManyToOne = reportDataSource.getRestoreManyToOne(); + this.restoreOneToMany = reportDataSource.getRestoreOneToMany(); } @Override @@ -141,4 +149,20 @@ public class ReportDataSource extends PersistentObject { this.customSQL = customSQL; } + public Boolean getRestoreManyToOne() { + return restoreManyToOne; + } + + public void setRestoreManyToOne(Boolean restoreManyToOne) { + this.restoreManyToOne = restoreManyToOne; + } + + public Boolean getRestoreOneToMany() { + return restoreOneToMany; + } + + public void setRestoreOneToMany(Boolean restoreOneToMany) { + this.restoreOneToMany = restoreOneToMany; + } + } diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportVersion.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportVersion.java index 53ad479..27ce0a1 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportVersion.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/model/ReportVersion.java @@ -33,11 +33,11 @@ public class ReportVersion extends ResourceVersion { @JsonView({ Views.GenericView.class}) private ReportEngineEnum engine; - @ManyToOne(fetch=FetchType.LAZY, optional=false) + @ManyToOne(fetch=FetchType.LAZY, optional=true) @JsonView({ Views.EsiResourceEditView.class}) protected Resource form; - @ManyToOne(cascade = { CascadeType.ALL }, fetch=FetchType.LAZY, optional=false) + @ManyToOne(cascade = { CascadeType.ALL }, fetch=FetchType.LAZY, optional=true) @JsonView({ Views.EsiResourceEditView.class, Views.EsiPackageExportView.class}) protected ReportDataSource dataSource; diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/ResourceService.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/ResourceService.java index 3958821..676d8be 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/ResourceService.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/ResourceService.java @@ -2,12 +2,15 @@ package br.com.centralit.esi.api.resource.service; import java.util.List; +import br.com.centralit.esi.api.enumerated.ResourceTypeEnum; import br.com.centralit.esi.api.resource.model.Resource; import br.com.centralit.framework.service.arquitetura.GenericService; public interface ResourceService extends GenericService { public Resource findByName(String name); + + public Resource findByNameAndType(String name, ResourceTypeEnum type); public List findByDescription(String description); diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/JasperReportManagerImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/JasperReportManagerImpl.java index 47b53b5..587341d 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/JasperReportManagerImpl.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/JasperReportManagerImpl.java @@ -18,6 +18,8 @@ import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import org.json.JSONArray; import org.springframework.stereotype.Component; +import br.com.centralit.esi.api.enumerated.RelationshipTypeEnum; +import br.com.centralit.esi.api.enumerated.ResourceTypeEnum; import br.com.centralit.esi.api.execution.component.ExecuteScript; import br.com.centralit.esi.api.resource.model.ReportDataSource; import br.com.centralit.esi.api.resource.model.ReportVersion; @@ -37,12 +39,10 @@ public class JasperReportManagerImpl extends ReportManagerImpl implements Jasper @Override - public void compile(ReportVersion reportVersion) { - String path = reportVersion.buildBasePath(); + public void compile(ReportVersion reportVersion) { + String pathReport = servletContext.getRealPath(reportVersion.buildBasePath()+"/"+reportVersion.getFileName()); - String pathReport = servletContext.getRealPath(path+"/"+reportVersion.getFileName()); - - String pathReportJasper = pathReport.replaceAll(".jrxml", ".jasper"); + String pathReportJasper = servletContext.getRealPath(ResourceTypeEnum.REPORT.getPath())+ "/"+reportVersion.getFileName().replaceAll(".jrxml", ".jasper"); try { JasperCompileManager.compileReportToFile(pathReport, pathReportJasper); @@ -57,7 +57,7 @@ public class JasperReportManagerImpl extends ReportManagerImpl implements Jasper JasperPrint print = null; byte[] buffer = null; - String path = report.buildBasePath(); + String path = ResourceTypeEnum.REPORT.getPath(); String pathReport = servletContext.getRealPath(path+"/"+report.getFileName()); @@ -122,7 +122,14 @@ public class JasperReportManagerImpl extends ReportManagerImpl implements Jasper case DATAOBJECT: String SQLName = reportDataSource.getCustomSQL() != null ? reportDataSource.getCustomSQL().getName() : null; List> resultSet = dataManager.executeQuery(reportDataSource.getDataObject(), SQLName, inputMap); - dataManager.restoreAllRelationships(reportDataSource.getDataObject(), resultSet); + + if (reportDataSource.getRestoreManyToOne()) { + dataManager.restoreRelationships(reportDataSource.getDataObject(), RelationshipTypeEnum.MANY_TO_ONE, resultSet); + } + if (reportDataSource.getRestoreOneToMany()) { + dataManager.restoreRelationships(reportDataSource.getDataObject(), RelationshipTypeEnum.ONE_TO_MANY, resultSet); + } + dataSource = new JRBeanCollectionDataSource(net.sf.json.JSONArray.fromObject(resultSet)); break; diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ReportVersionServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ReportVersionServiceImpl.java index a3e705b..94d82a3 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ReportVersionServiceImpl.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ReportVersionServiceImpl.java @@ -27,7 +27,7 @@ import br.com.centralit.esi.api.resource.service.PentahoReportManager; import br.com.centralit.esi.api.resource.service.ReportDataSourceService; import br.com.centralit.esi.api.resource.service.ReportParameterService; import br.com.centralit.esi.api.resource.service.ReportVersionService; -import br.com.centralit.esi.exception.EsiBusinessException; +import br.com.centralit.framework.util.UtilString; @Service("reportVersionService") public class ReportVersionServiceImpl extends ResourceVersionServiceImpl implements ReportVersionService { @@ -84,6 +84,14 @@ public class ReportVersionServiceImpl extends ResourceVersionServiceImpl impleme protected void build(ResourceVersion resourceVersion) { ReportVersion reportVersion = (ReportVersion) resourceVersion; + if (reportVersion.getEngine() == null && !UtilString.isNullOrEmpty(reportVersion.getFileName())) { + if (reportVersion.getFileName().toUpperCase().indexOf(".JRXML") > 0) { + reportVersion.setEngine(ReportEngineEnum.JASPER); + }else{ + reportVersion.setEngine(ReportEngineEnum.PENTAHO); + } + } + if (reportVersion.getParameters() != null) { for (ReportParameter parameter : reportVersion.getParameters()) { parameter.setId(null); @@ -113,6 +121,13 @@ public class ReportVersionServiceImpl extends ResourceVersionServiceImpl impleme if (reportVersion.getDataSource() != null) { ReportDataSource reportDataSource = reportVersion.getDataSource(); reportDataSource.setId(null); + if (reportDataSource.getRestoreManyToOne() == null) { + reportDataSource.setRestoreManyToOne(false); + } + if (reportDataSource.getRestoreOneToMany() == null) { + reportDataSource.setRestoreOneToMany(false); + } + switch (reportDataSource.getType()) { case CONNECTION: reportDataSource.setConnection(dataSourceService.find(reportDataSource.getConnection().getId())); @@ -141,17 +156,17 @@ public class ReportVersionServiceImpl extends ResourceVersionServiceImpl impleme } } - this.compile(reportVersion); - FormVersion formVersion = reportVersion.getFormVersion(); - formVersion.setPath(reportVersion.getPath()); - formVersion.setGenerateDefaultPage(true); - if (formVersion.isNew()) { - formVersion = (FormVersion) formVersionService.save(reportVersion.getFormVersion()); - }else{ - formVersion = (FormVersion) formVersionService.merge(reportVersion.getFormVersion()); + if (formVersion != null) { + formVersion.setPath(reportVersion.getPath()); + formVersion.setGenerateDefaultPage(true); + if (formVersion.isNew()) { + formVersion = (FormVersion) formVersionService.save(reportVersion.getFormVersion()); + }else{ + formVersion = (FormVersion) formVersionService.merge(reportVersion.getFormVersion()); + } + reportVersion.setForm(formVersion.getResource()); } - reportVersion.setForm(formVersion.getResource()); } @Override @@ -205,21 +220,11 @@ public class ReportVersionServiceImpl extends ResourceVersionServiceImpl impleme @Override public ResourceVersion save(Long id, String name, String description, String path, MultipartFile file, Boolean replace) { - ResourceVersion resourceVersion = null; - - resourceVersion = (ResourceVersion) this.getReference(id); - if (resourceVersion == null) { - throw new EsiBusinessException("Arquivo não encontrado"); - } - - this.loadFile(resourceVersion, file); - - this.upload(resourceVersion); - - return resourceVersion; + ReportVersion reportVersion = (ReportVersion) super.save(id, name, description, path, file, replace); + this.compile(reportVersion); + return reportVersion; } - private void compile(ReportVersion reportVersion) { if (reportVersion.getEngine().equals(ReportEngineEnum.JASPER)) { jasperReportManager.compile(reportVersion); diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ResourceServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ResourceServiceImpl.java index 5c87524..a5c7834 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ResourceServiceImpl.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ResourceServiceImpl.java @@ -5,6 +5,7 @@ import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import br.com.centralit.esi.api.enumerated.ResourceTypeEnum; import br.com.centralit.esi.api.resource.dao.ResourceDao; import br.com.centralit.esi.api.resource.model.Resource; import br.com.centralit.esi.api.resource.service.ResourceService; @@ -52,5 +53,20 @@ public class ResourceServiceImpl extends GenericServiceImpl impl Resource auxResource = super.getReference(resource.getId()); auxResource.setDataBloqueio(resource.getDataBloqueio() == null ? UtilDate.getDataAtualCalendar() : resource.getDataBloqueio()); return super.merge(auxResource); + } + + @Override + public Resource findByNameAndType(String name, ResourceTypeEnum type) { + Resource result = null; + + List lista = this.resourceDao.listByName(name); + if (lista != null) { + for (Resource resource : lista) { + if (resource.getType().equals(type)) { + result = resource; + } + } + } + return result; } } \ No newline at end of file diff --git a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ResourceVersionServiceImpl.java b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ResourceVersionServiceImpl.java index 62b767c..70ee78a 100644 --- a/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ResourceVersionServiceImpl.java +++ b/cit-esi-api/src/main/java/br/com/centralit/esi/api/resource/service/impl/ResourceVersionServiceImpl.java @@ -42,7 +42,7 @@ public class ResourceVersionServiceImpl extends GenericServiceImpl - - - - + + @@ -42,7 +40,7 @@ - + @@ -55,13 +53,13 @@ - + - - + + diff --git a/cit-esi-web/src/main/resources/reports/empregado_telefone.jrxml b/cit-esi-web/src/main/resources/reports/empregado_telefone.jrxml index e50f151..74db6ea 100644 --- a/cit-esi-web/src/main/resources/reports/empregado_telefone.jrxml +++ b/cit-esi-web/src/main/resources/reports/empregado_telefone.jrxml @@ -3,16 +3,18 @@ - - - + + + + + - + - + diff --git a/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportController.js b/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportController.js index 389368d..f7ac04e 100644 --- a/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportController.js +++ b/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportController.js @@ -1,7 +1,7 @@ 'use strict'; -citApp.controller('ReportController', ["$scope", "appService", "ReportRepository", "FlowRepository", "FormWidgetRepository", "ParameterRepository", "MenuRepository", "FormBuilderRepository", "DataSourceRepository", "DataObjectRepository", "$filter", "$translate", "DomainRepository", "$timeout", 'FileUploader', "$http", "$rootScope", "$modal", - function ReportController($scope, appService, ReportRepository, FlowRepository, FormWidgetRepository, ParameterRepository, MenuRepository, FormBuilderRepository, DataSourceRepository, DataObjectRepository, $filter, $translate, DomainRepository, $timeout, FileUploader, $http, $rootScope, $modal) { +citApp.controller('ReportController', ["$scope", "appService", "ReportRepository", "FlowRepository", "FormWidgetRepository", "ParameterRepository", "MenuRepository", "FormBuilderRepository", "DataSourceRepository", "DataObjectRepository", "$filter", "$translate", "DomainRepository", "$timeout", "$http", "$rootScope", "$modal", + function ReportController($scope, appService, ReportRepository, FlowRepository, FormWidgetRepository, ParameterRepository, MenuRepository, FormBuilderRepository, DataSourceRepository, DataObjectRepository, $filter, $translate, DomainRepository, $timeout, $http, $rootScope, $modal) { var componentsPage = '/cit-esi-web/assets/js/angular/custom/directive/html/formComponents.html'; $scope.appController = angular.element("#citapp-controller").scope(); @@ -312,12 +312,6 @@ citApp.controller('ReportController', ["$scope", "appService", "ReportRepository //verifica se o formulario esta valido para salvar if($scope.reportForm.$valid){ - - if(!$scope.uploader.queue || $scope.uploader.queue.length == 0){ - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false); - return; - } - if ($scope.isValidProperties($scope.report.formVersion)) { $scope.setFormAttributes(); $scope.removeComponentWorkspace(); @@ -342,12 +336,12 @@ citApp.controller('ReportController', ["$scope", "appService", "ReportRepository if (oldVersion) { ReportRepository.replace($scope.report).then(function(result) { $scope.report = result.originalElement; - $scope.uploadFile(); + $scope.afterSave(); }); }else{ ReportRepository.save($scope.report).then(function(result) { $scope.report = result.originalElement; - $scope.uploadFile(); + $scope.afterSave(); }); } } @@ -356,6 +350,16 @@ citApp.controller('ReportController', ["$scope", "appService", "ReportRepository $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false); } }; + + $scope.afterSave = function() { + $scope.setLoading(false); + + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); + $scope.reportForm.$submitted = false; + + $scope.getReport(result.originalElement, true); + + }; $scope.verifyDataSource = function() { var dataSource = $scope.report.dataSource; @@ -383,26 +387,11 @@ citApp.controller('ReportController', ["$scope", "appService", "ReportRepository $scope.report.dataSource.customSQL = null; } }; - - $scope.uploadFile = function() { - if ($scope.uploader.queue.length > 0) { - $scope.uploader.url = '/cit-esi-web/rest/esi/resource/report/upload?'; - $scope.uploader.url += 'name=' + $scope.report.resource.name; - $scope.uploader.url += '&description=' + $scope.report.resource.description; - $scope.uploader.url += '&path=' + $scope.report.path; - $scope.uploader.url += '&replace=true'; - $scope.uploader.url += '&id=' + $scope.report.id; - - $scope.uploader.queue[0].url = $scope.uploader.url; - $scope.uploader.uploadAll(); - } - }; - + // Limpa o formulario preenchido $scope.limparReport = function(){ $scope.report = {resource: {type: "REPORT"}, className: className, majorVersion: 1, minorVersion: 0 , formVersion: $scope.createFormVersion(), dataSource: {type: 'NONE'}, parameters: []}; - $scope.uploader.clearQueue(); }; // Consulta entidade e mostra no formulario @@ -413,8 +402,6 @@ citApp.controller('ReportController', ["$scope", "appService", "ReportRepository ReportRepository.get(report.id).then(function(result) { $scope.report = result.originalElement; - - $scope.uploader.addToQueue("/cit-esi-web/reports/"+$scope.report.path+"/"+$scope.report.fileName); $scope.report.formVersion = $scope.createFormVersion(); if ($scope.report.form) { @@ -450,81 +437,6 @@ citApp.controller('ReportController', ["$scope", "appService", "ReportRepository }); }; - // INSTANCIA DO OBJETO PARA FAZER UPLOAD - $scope.uploader = new FileUploader({ - autoUpload: false, - queueLimit: 2, - removeAfterUpload: false, - url: '/cit-esi-web/rest/esi/resource/report/upload?' - }); - - // FILTERS - $scope.uploader.filters.push({ - name: 'reportFilter', - fn: function(item /*{File|FileLikeObject}*/, options) { - return item.name.indexOf(".jasper") !== -1 || item.name.indexOf(".jrxml") !== -1; - } - }); - - $scope.uploader.onCompleteAll = function() { - $scope.reportForm.$submitted = false; - $scope.reportForm.$setPristine(); - - if (!$scope.error) { - $scope.uploader.clearQueue(); - - ReportRepository.getByName($scope.report.resource.name).then(function(result) { - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); - $scope.report = result.originalElement; - - $scope.uploader.addToQueue("/cit-esi-web/reports/"+$scope.report.path+"/"+$scope.report.fileName); - - $scope.edit = true; - $scope.setLoading(false); - }); - } - $scope.error = false; - - console.info('onCompleteAll'); - }; - - $scope.uploader.onAfterAddingFile = function() { - if ($scope.uploader.queue.length > 1) { - $scope.uploader.removeFromQueue(0); - $scope.newReport = true; - } - if (!$scope.report.resource.name || $scope.report.resource.name == '') { - $scope.report.resource.name = $scope.uploader.queue[0].file.name; - $scope.report.resource.name = appService.replaceSpecialChar($scope.report.resource.name); - } - }; - - $scope.uploader.onErrorItem = function(fileItem, response, status, headers) { - console.info('onErrorItem', fileItem, response, status, headers); - - $scope.uploader.queue.filter(function(item) { - item.isUploaded = false; - }); - - $scope.setLoading(false); - $scope.showAlert("error", $translate.instant(response.stack)); - $scope.error = true; - }; - - $scope.uploader.onWhenAddingFileFailed = function(item /*{File|FileLikeObject}*/, filter, options) { - $scope.uploader.clearQueue(); - console.info('onWhenAddingFileFailed', item, filter, options); - }; - - $scope.view = function(){ - if ($scope.report && $scope.report.fileName) { - $scope.url = '/cit-esi-web/reports/'+$scope.report.path+'/'+$scope.report.fileName; - - $scope.openModal('viewFile', 'lg'); - } - - } - $scope.openModal = function (modalId, size) { if(modalId === undefined) { return; diff --git a/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportFileController.js b/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportFileController.js new file mode 100644 index 0000000..997becf --- /dev/null +++ b/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportFileController.js @@ -0,0 +1,201 @@ +'use strict'; + +citApp.controller('ReportFileController', ["$scope", "appService", "ReportRepository", "$filter", "$translate", "DomainRepository", "$timeout", 'FileUploader', "$http", "$modal", + function ReportFileController($scope, appService, ReportRepository, $filter, $translate, DomainRepository, $timeout, FileUploader, $http, $modal) { + + var className = "ReportVersion"; + $scope.report = {}; + $scope.newReport = true; + + DomainRepository.getEnumeratedDomain('ReportEngineEnum').then(function(result) { + $scope.reportEngineList = result; + }); + + // Limpa formulário para novo cadastro + $scope.resetForm = function() { + $scope.limparReport(); + $scope.edit = true; + $timeout(function(){ + $scope.reportForm.$submitted = false; + $scope.reportForm.$setPristine(); + }); + }; + + // Atualiza pagina de pesquisa + $scope.atualizaPaginaPesquisa = function () { + angular.element('#searchReportFile').scope().fetchResult(); + }; + + // MODAL QUE CONFIRMA REMOVER + $scope.remove = function(report){ + $scope.report = report; + $scope.$openModalConfirm({ + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'), + callback: function () { + ReportRepository.remove($scope.report).then(function() { + + $scope.$modalConfirmInstance.dismiss('cancel'); + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO')); + angular.element('#searchReportFile').scope().fetchResult(); + + $scope.resetForm(); + }); + } + }); + }; + + $scope.saveOrUpdate = function(oldVersion){ + $scope.reportForm.$submitted = true; + + //verifica se o formulario esta valido para salvar + if($scope.reportForm.$valid){ + + if(!$scope.uploader.queue || $scope.uploader.queue.length == 0){ + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false); + return; + } + + if (oldVersion == undefined) { + oldVersion = $scope.report.id > 0; + } + + $scope.setLoadingSalva(true); + + $scope.uploader.url = '/cit-esi-web/rest/esi/resource/report/upload?'; + $scope.uploader.url += 'name=' + $scope.report.resource.name; + $scope.uploader.url += '&description=' + $scope.report.resource.description; + $scope.uploader.url += '&path=' + $scope.report.path; + + if (oldVersion) { + $scope.uploader.url += '&replace=true'; + } + + if ($scope.report.id) { + $scope.uploader.url += '&id=' + $scope.report.id; + } + + $scope.uploader.queue[0].url = $scope.uploader.url; + $scope.uploader.uploadAll(); + }else{ + //Mensagem de erro de campos obrigatorios não preenchidos + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false); + } + }; + + // Limpa o formulario preenchido + $scope.limparReport = function(){ + $scope.report = {resource: {type: "REPORT"}, className: className, majorVersion: 1, minorVersion: 0}; + $scope.uploader.clearQueue(); + }; + + // Consulta entidade e mostra no formulario + $scope.getReport = function(report, edit){ + $scope.setLoadingGet(true); + + ReportRepository.get(report.id).then(function(result) { + $scope.report = result.originalElement; + + $scope.uploader.addToQueue("/cit-esi-web/reports/"+$scope.report.path+"/"+$scope.report.fileName); + + $scope.edit = edit; + + $scope.newReport = false; + + $scope.setLoading(false); + }); + }; + + // INSTANCIA DO OBJETO PARA FAZER UPLOAD + $scope.uploader = new FileUploader({ + autoUpload: false, + queueLimit: 2, + removeAfterUpload: false, + url: '/cit-esi-web/rest/esi/resource/report/upload?' + }); + + // FILTERS + $scope.uploader.filters.push({ + name: 'reportFilter', + fn: function(item /*{File|FileLikeObject}*/, options) { + return item.name.indexOf(".jrxml") !== -1; + } + }); + + $scope.uploader.onCompleteAll = function() { + $scope.reportForm.$submitted = false; + $scope.reportForm.$setPristine(); + + if (!$scope.error) { + $scope.uploader.clearQueue(); + + ReportRepository.getByName($scope.report.resource.name).then(function(result) { + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); + $scope.report = result.originalElement; + + $scope.uploader.addToQueue("/cit-esi-web/reports/"+$scope.report.path+"/"+$scope.report.fileName); + + $scope.edit = true; + $scope.setLoading(false); + }); + } + $scope.error = false; + + console.info('onCompleteAll'); + }; + + $scope.uploader.onAfterAddingFile = function() { + if ($scope.uploader.queue.length > 1) { + $scope.uploader.removeFromQueue(0); + $scope.newReport = true; + } + var fileName = $scope.uploader.queue[0].file.name; + if (!$scope.report.resource.name || $scope.report.resource.name == '') { + $scope.report.resource.name = fileName.substr(0, fileName.indexOf(".")); + $scope.report.resource.name = appService.replaceSpecialChar($scope.report.resource.name); + } + $scope.report.engine = undefined; + if (fileName.indexOf(".jrxml") > 0) {; + $scope.report.engine = 'JASPER'; + } + }; + + $scope.uploader.onErrorItem = function(fileItem, response, status, headers) { + console.info('onErrorItem', fileItem, response, status, headers); + + $scope.uploader.queue.filter(function(item) { + item.isUploaded = false; + }); + + $scope.setLoading(false); + $scope.showAlert("error", $translate.instant(response.stack)); + $scope.error = true; + }; + + $scope.uploader.onWhenAddingFileFailed = function(item /*{File|FileLikeObject}*/, filter, options) { + $scope.uploader.clearQueue(); + console.info('onWhenAddingFileFailed', item, filter, options); + }; + + $scope.view = function(){ + if ($scope.report && $scope.report.fileName) { + $scope.url = '/cit-esi-web/reports/'+$scope.report.fileName; + + $scope.openModal('viewFile', 'lg'); + } + + } + + $scope.openModal = function (modalId, size) { + if(modalId === undefined) { + return; + } + + $scope.$modalInstance = $modal.open({ + templateUrl: modalId, + size: size, + windowClass: 'modal-buttons-top modal-no-backdrop mod-green', + backdrop: false, + scope: this + }); + }; +}]); diff --git a/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportFileListController.js b/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportFileListController.js new file mode 100644 index 0000000..e31d354 --- /dev/null +++ b/cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/ReportFileListController.js @@ -0,0 +1,73 @@ +'use strict'; + +citApp.controller('ReportFileListController', ["$scope", "ReportRepository", "ResourceRepository", "$translate", "$timeout", "DominioRepository", + function ReportFileListController($scope, ReportRepository, ResourceRepository, $translate, $timeout, DominioRepository) { + $scope.$showAdvancedFilters = false; + + var className = "ReportVersion"; + + $scope.resetForm = function() { + angular.element("#editReportFile").scope().resetForm(); + }; + + $scope.headers = [ {title : $translate.instant('ESI.RECURSO'), value : 'fullPath' }, + {title : $translate.instant('LABEL.NOME'), value : 'resource.name' } , + {title : $translate.instant('LABEL.DESCRICAO'), value : 'resource.description' } , + {title : $translate.instant('LABEL.VERSAO'), value : 'versionNumber' }]; + + $scope.filterCriteria = { + start : 1, + dir : 'asc', + sort : 'fullPath', + limit : 10, + fields: ['id', 'fullPath', 'resource.name', 'resource.description', 'versionNumber'], + filters : [ {type : 'string', field : 'fullPath' } , + {type : 'string', field : 'resource.name' } , + {type : 'string', field : 'resource.description' }, + {type : 'string', field : 'versionNumber' }] + }; + + // ABRI Report SELECIONADA + $scope.abrirVisualizar = function(edit){ + var report = $scope.reportChecked; + + $scope.abrir(report, edit); + }; + + $scope.abrir = function(report, edit) { + if(!report) { + $scope.showAlert('warning', !edit ? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO')); + return; + } + angular.element('#editReportFile').scope().getReport(report, edit); + $scope.$showPageEditWorkspace($scope.workspace); + }; + + $scope.retrieveVersions = function(){ + $scope.versions = []; + + $scope.currentVersion = $scope.reportChecked; + + if(!$scope.currentVersion) { + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO')); + + return; + } + + $scope.setLoading(true); + ResourceRepository.get($scope.currentVersion.id).then(function(result) { + $scope.currentVersion = result.originalElement; + $scope.currentVersion.className = className; + ReportRepository.getAllVersions($scope.currentVersion).then(function(result) { + $scope.versions = result; + $scope.setLoading(false); + }); + }); + }; + + $scope.openVersion = function(version, edit){ + $scope.abrir(version, edit); + }; + + +}]); diff --git a/cit-esi-web/src/main/webapp/html/report/reportEdit.html b/cit-esi-web/src/main/webapp/html/report/reportEdit.html index ea4a8c7..e9682d3 100644 --- a/cit-esi-web/src/main/webapp/html/report/reportEdit.html +++ b/cit-esi-web/src/main/webapp/html/report/reportEdit.html @@ -65,7 +65,7 @@
+ form="reportForm" ng-obrigatorio="true" ng-custom-maxlength="100" ng-disabled="!edit" />
@@ -77,13 +77,13 @@
+ form="reportForm" ng-obrigatorio="true" ng-custom-maxlength="255" ng-disabled="!edit" ng-disabled="true" />
+ ng-obrigatorio="true" ng-list="reportEngineList | domainFilter" ng-disabled="true"/>
@@ -92,33 +92,8 @@
-
- -
- ESI.CONTEUDO -
-
-
-
-
- MSG.ARRASTE_SOLTE_ARQUIVO - {{uploader.queue[0].file.name}} -
-
- -
-
-
-
- -
-
-
-
- +
+  ESI.DATASOURCE @@ -179,6 +154,21 @@ ng-list="report.dataSource.dataObject.sqls" ng-custom-options="sql.id as sql.description for sql" > +
+
+
+ +

+
+ +
+
diff --git a/cit-esi-web/src/main/webapp/html/report/reportList.html b/cit-esi-web/src/main/webapp/html/report/reportList.html index e89dc4d..7705be6 100644 --- a/cit-esi-web/src/main/webapp/html/report/reportList.html +++ b/cit-esi-web/src/main/webapp/html/report/reportList.html @@ -3,11 +3,6 @@
- - + + + + + + + + + + + + + +
+ +
+ + + + + +
+
+
+ + + +
+

+ ( * ) LABEL.CAMPOS_OBRIGATORIOS +

+ +
+ + ESI.RELATORIO + +
+
+ +
+ +
+ +
+
+ +
+
+ +
+ +
+ +
+ +
+
+ + +
+
+
+ +
+ ESI.CONTEUDO +
+
+
+
+
+ MSG.ARRASTE_SOLTE_ARQUIVO + {{uploader.queue[0].file.name}} +
+
+ +
+
+
+
+ +
+
+
+
+ +
+ +
+ + + + diff --git a/cit-esi-web/src/main/webapp/html/reportFile/reportFileList.html b/cit-esi-web/src/main/webapp/html/reportFile/reportFileList.html new file mode 100644 index 0000000..fb04d81 --- /dev/null +++ b/cit-esi-web/src/main/webapp/html/reportFile/reportFileList.html @@ -0,0 +1,61 @@ +
+
+
+
+ + + + + + + + + + + + + + + +
+ +
+ + + +
+
+
+ + + + + +
-- libgit2 0.21.2