Commit 2ed91a45f83bd48e5438716980370f778f130c24
1 parent
d1c5ffd1
Exists in
master
Melhoria na importação de dataObject
Showing
1 changed file
with
62 additions
and
42 deletions
Show diff stats
cit-esi-api/src/main/java/br/com/centralit/esi/api/data/service/impl/DataObjectServiceImpl.java
... | ... | @@ -640,49 +640,9 @@ public class DataObjectServiceImpl extends GenericServiceImpl<DataObject, Long> |
640 | 640 | sourceObject.setGenerateController(sourceObject.getFormVersion() != null); |
641 | 641 | sourceObject.setDataSource(dataSourceService.save(sourceObject.getDataSource(), false)); |
642 | 642 | |
643 | - Database database = sourceObject.getDataSource().getDatabase(); | |
644 | 643 | if (sourceObject.getFields() != null) { |
645 | - for (DataColumn dataColumn: sourceObject.getColumns()) { | |
646 | - dataColumn.setId(null); | |
647 | - if (dataColumn.getWidget() != null) { | |
648 | - dataColumn.setWidget(formWidgetService.findByName(dataColumn.getWidget().getName())); | |
649 | - } | |
650 | - String name = dataColumn.getType().getName(); | |
651 | - dataColumn.setType(dataTypeService.findByName(name)); | |
652 | - if (dataColumn.getType() == null) { | |
653 | - String databaseType = dataColumn.getDatabaseType() != null ? dataColumn.getDatabaseType() : name; | |
654 | - for (DatabaseDomain domain : database.getTypes()) { | |
655 | - if (domain.getName().equalsIgnoreCase(databaseType)) { | |
656 | - dataColumn.setType(domain.getDataType()); | |
657 | - break; | |
658 | - } | |
659 | - } | |
660 | - } | |
661 | - if (dataColumn.getType() == null) { | |
662 | - throw new EsiBusinessException("Tipo de dados '"+name+"' não encontrado"); | |
663 | - } | |
664 | - | |
665 | - String databaseType = null; | |
666 | - boolean exists = false; | |
667 | - for (DatabaseDomain domain : database.getTypes()) { | |
668 | - if (domain.getDataType().getId().equals(dataColumn.getType().getId())) { | |
669 | - if (databaseType == null) { | |
670 | - databaseType = domain.getName(); | |
671 | - } | |
672 | - if (!UtilString.isNullOrEmpty(dataColumn.getDatabaseType()) && dataColumn.getDatabaseType().equalsIgnoreCase(domain.getName())) { | |
673 | - exists = true; | |
674 | - break; | |
675 | - } | |
676 | - } | |
677 | - } | |
678 | - if (!exists) { | |
679 | - dataColumn.setDatabaseType(databaseType); | |
680 | - } | |
681 | - | |
682 | - if (UtilString.isNullOrEmpty(dataColumn.getDatabaseType())) { | |
683 | - throw new EsiBusinessException("Tipo de dados '"+name+"' não encontrado no BD"); | |
684 | - } | |
685 | - } | |
644 | + this.verifyColumnsForImport(sourceObject); | |
645 | + | |
686 | 646 | for (Relationship relationship: sourceObject.getRelationships()) { |
687 | 647 | relationship.setId(null); |
688 | 648 | relationship.setReferencedColumn(null); |
... | ... | @@ -721,5 +681,65 @@ public class DataObjectServiceImpl extends GenericServiceImpl<DataObject, Long> |
721 | 681 | } |
722 | 682 | } |
723 | 683 | |
684 | + private void verifyColumnsForImport(DataObject sourceObject) { | |
685 | + List<DataColumn> columns = null; | |
686 | + Connection connection = dataSourceService.connect(sourceObject.getDataSource()); | |
687 | + try { | |
688 | + columns = DataObjectUtil.buildColumns(sourceObject.getDataSource(), connection, sourceObject.getSchema(), sourceObject.getName()); | |
689 | + } catch (Exception e) { | |
690 | + } | |
691 | + | |
692 | + Database database = sourceObject.getDataSource().getDatabase(); | |
693 | + for (DataColumn dataColumn: sourceObject.getColumns()) { | |
694 | + DataColumn DBColumn = null; | |
695 | + if (columns != null) { | |
696 | + for (DataColumn col : columns) { | |
697 | + if (col.getName().equalsIgnoreCase(dataColumn.getName())) { | |
698 | + DBColumn = col; | |
699 | + break; | |
700 | + } | |
701 | + } | |
702 | + } | |
703 | + | |
704 | + dataColumn.setId(null); | |
705 | + String name = dataColumn.getType().getName(); | |
706 | + if (DBColumn != null) { | |
707 | + dataColumn.setDatabaseType(DBColumn.getDatabaseType()); | |
708 | + dataColumn.setType(DBColumn.getType()); | |
709 | + }else{ | |
710 | + dataColumn.setType(dataTypeService.findByName(name)); | |
711 | + if (dataColumn.getType() == null) { | |
712 | + String databaseType = dataColumn.getDatabaseType() != null ? dataColumn.getDatabaseType() : name; | |
713 | + for (DatabaseDomain domain : database.getTypes()) { | |
714 | + if (domain.getName().equalsIgnoreCase(databaseType)) { | |
715 | + dataColumn.setType(domain.getDataType()); | |
716 | + break; | |
717 | + } | |
718 | + } | |
719 | + } | |
720 | + } | |
721 | + | |
722 | + if (dataColumn.getType() == null) { | |
723 | + throw new EsiBusinessException("Tipo de dados '"+name+"' não encontrado"); | |
724 | + } | |
725 | + | |
726 | + if (UtilString.isNullOrEmpty(dataColumn.getDatabaseType())) { | |
727 | + for (DatabaseDomain domain : database.getTypes()) { | |
728 | + if (domain.getDataType().getId().equals(dataColumn.getType().getId())) { | |
729 | + dataColumn.setDatabaseType(domain.getName()); | |
730 | + break; | |
731 | + } | |
732 | + } | |
733 | + } | |
734 | + | |
735 | + if (UtilString.isNullOrEmpty(dataColumn.getDatabaseType())) { | |
736 | + throw new EsiBusinessException("Tipo de dados '"+name+"' não encontrado no BD"); | |
737 | + } | |
738 | + | |
739 | + if (dataColumn.getWidget() != null) { | |
740 | + dataColumn.setWidget(formWidgetService.findByName(dataColumn.getWidget().getName())); | |
741 | + } | |
742 | + } | |
743 | + } | |
724 | 744 | |
725 | 745 | } |
726 | 746 | \ No newline at end of file | ... | ... |