Commit addc0172b021beab6df6403b011c59ed1e41f478

Authored by carlos.alberto
1 parent a2722954
Exists in master

Alteração no mecanismo de associação dos tipos de dados ao tipo de coluna do banco de dados

cit-esi-api/src/main/java/br/com/centralit/esi/api/data/core/DataObjectUtil.java
... ... @@ -299,7 +299,7 @@ public final class DataObjectUtil {
299 299 if (i > 0) {
300 300 sql.append(",");
301 301 }
302   - sql.append(System.getProperty("line.separator").toString()+" "+dataObject.convertName(dataColumn.getName())+" "+dataColumn.getType().getName());
  302 + sql.append(System.getProperty("line.separator").toString()+" "+dataObject.convertName(dataColumn.getName())+" "+dataColumn.getDatabaseType());
303 303 if (dataColumn.getType().getAllowSize() != null && dataColumn.getType().getAllowSize() && dataColumn.getSize() != null) {
304 304 sql.append("("+dataColumn.getSize()+")");
305 305 }
... ... @@ -735,8 +735,9 @@ public final class DataObjectUtil {
735 735 String[] typeArray = rsColumns.getString("TYPE_NAME").split(" ");
736 736 String type = typeArray[0];
737 737 for (DatabaseDomain databaseDomain : dataSource.getDatabase().getTypes()) {
738   - if (databaseDomain.getDataType().getName().equalsIgnoreCase(type)) {
  738 + if (databaseDomain.getName().equalsIgnoreCase(type)) {
739 739 dataColumn.setType(databaseDomain.getDataType());
  740 + dataColumn.setDatabaseType(type);
740 741 dataColumn.setWidget(databaseDomain.getDataType().getWidget());
741 742 dataColumn.setWidth(databaseDomain.getDataType().getWidth() != null ? databaseDomain.getDataType().getWidth() : new Integer(1));
742 743 if (typeArray.length > 1 && typeArray[1].trim().equalsIgnoreCase("IDENTITY")) {
... ...
cit-esi-api/src/main/java/br/com/centralit/esi/api/data/model/DataColumn.java
... ... @@ -60,6 +60,9 @@ public class DataColumn extends DataField {
60 60  
61 61 @JsonView({ Views.EsiDataObjectEditView.class, Views.EsiPackageExportView.class})
62 62 private Boolean autoIncrement;
  63 +
  64 + @JsonView({ Views.EsiDataObjectEditView.class, Views.EsiPackageExportView.class})
  65 + private String databaseType;
63 66  
64 67 @Transient
65 68 @JsonView({ Views.EsiDataObjectEditView.class})
... ... @@ -270,4 +273,12 @@ public class DataColumn extends DataField {
270 273 formComponentPropertyValue.setIntegerValue(new Long(this.getSize()));
271 274 }
272 275 }
  276 +
  277 + public String getDatabaseType() {
  278 + return databaseType;
  279 + }
  280 +
  281 + public void setDatabaseType(String databaseType) {
  282 + this.databaseType = databaseType;
  283 + }
273 284 }
... ...
cit-esi-api/src/main/java/br/com/centralit/esi/api/data/model/DataType.java
... ... @@ -14,10 +14,12 @@ import br.com.centralit.esi.api.resource.model.FormWidget;
14 14 import br.com.centralit.framework.json.Views;
15 15 import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit;
16 16  
  17 +import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
17 18 import com.fasterxml.jackson.annotation.JsonView;
18 19  
19 20 @Entity
20 21 @Table(name="ESI_DataType")
  22 +@JsonIgnoreProperties({ "$index" })
21 23 public class DataType extends PersistentObjectAudit {
22 24  
23 25 /**
... ... @@ -27,7 +29,7 @@ public class DataType extends PersistentObjectAudit {
27 29  
28 30 @Id
29 31 @GeneratedValue(strategy = GenerationType.AUTO)
30   - @JsonView({Views.EsiDataObjectListView.class, Views.EsiDataObjectEditView.class})
  32 + @JsonView({Views.GenericView.class})
31 33 protected Long id;
32 34  
33 35 @Column(nullable = false, length=100)
... ...
cit-esi-api/src/main/java/br/com/centralit/esi/api/data/model/DatabaseDomain.java
1 1 package br.com.centralit.esi.api.data.model;
2 2  
  3 +import javax.persistence.Column;
3 4 import javax.persistence.Entity;
4 5 import javax.persistence.FetchType;
5 6 import javax.persistence.GeneratedValue;
... ... @@ -12,10 +13,12 @@ import br.com.centralit.framework.json.Views;
12 13 import br.com.centralit.framework.model.arquitetura.PersistentObject;
13 14  
14 15 import com.fasterxml.jackson.annotation.JsonIgnore;
  16 +import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
15 17 import com.fasterxml.jackson.annotation.JsonView;
16 18  
17 19 @Entity
18 20 @Table(name="ESI_DatabaseDomain")
  21 +@JsonIgnoreProperties({ "$index" })
19 22 public class DatabaseDomain extends PersistentObject {
20 23  
21 24 /**
... ... @@ -25,23 +28,28 @@ public class DatabaseDomain extends PersistentObject {
25 28  
26 29 @Id
27 30 @GeneratedValue(strategy = GenerationType.AUTO)
28   - @JsonView({Views.EsiDataObjectListView.class, Views.EsiDataObjectEditView.class})
  31 + @JsonView({Views.GenericView.class})
29 32 protected Long id;
30 33  
  34 + @Column(nullable = false, length=100)
  35 + @JsonView({ Views.GenericView.class})
  36 + private String name;
  37 +
31 38 @ManyToOne(fetch = FetchType.LAZY, optional = false)
32 39 @JsonIgnore
33 40 private Database database;
34 41  
35 42 @ManyToOne(fetch = FetchType.LAZY, optional = false)
36   - @JsonView({ Views.EsiDataObjectListView.class, Views.EsiPackageExportView.class})
  43 + @JsonView({ Views.EsiDataObjectListView.class, Views.EsiDataObjectEditView.class, Views.EsiPackageExportView.class})
37 44 private DataType dataType;
38 45  
39 46 public DatabaseDomain() {
40 47 // TODO Auto-generated constructor stub
41 48 }
42 49  
43   - public DatabaseDomain(Database database, DataType dataType) {
  50 + public DatabaseDomain(Database database, String name, DataType dataType) {
44 51 this.database = database;
  52 + this.name = name;
45 53 this.dataType = dataType;
46 54 }
47 55  
... ... @@ -70,4 +78,12 @@ public class DatabaseDomain extends PersistentObject {
70 78 this.id = id;
71 79 }
72 80  
  81 + public String getName() {
  82 + return name;
  83 + }
  84 +
  85 + public void setName(String name) {
  86 + this.name = name;
  87 + }
  88 +
73 89 }
... ...
cit-esi-api/src/main/java/br/com/centralit/esi/api/data/service/impl/DataObjectServiceImpl.java
... ... @@ -15,6 +15,8 @@ import br.com.centralit.esi.api.data.model.CustomSQL;
15 15 import br.com.centralit.esi.api.data.model.DataColumn;
16 16 import br.com.centralit.esi.api.data.model.DataField;
17 17 import br.com.centralit.esi.api.data.model.DataObject;
  18 +import br.com.centralit.esi.api.data.model.Database;
  19 +import br.com.centralit.esi.api.data.model.DatabaseDomain;
18 20 import br.com.centralit.esi.api.data.model.Relationship;
19 21 import br.com.centralit.esi.api.data.model.RelationshipColumn;
20 22 import br.com.centralit.esi.api.data.service.CustomSQLService;
... ... @@ -493,11 +495,12 @@ public class DataObjectServiceImpl extends GenericServiceImpl<DataObject, Long>
493 495 dataObject.setGenerateController(false);
494 496 dataObject.setGenerateForm(false);
495 497  
  498 + this.save(dataObject, pack.getReplaceElement());
  499 +
496 500 if (pack.getExecuteDDL()) {
  501 + DataObjectUtil.buildDDL(dataObject);
497 502 this.executeDDL(dataObject);
498 503 }
499   -
500   - this.save(dataObject, pack.getReplaceElement());
501 504 }
502 505  
503 506 for (DataObject dataObject : dataObjects) {
... ... @@ -583,6 +586,7 @@ public class DataObjectServiceImpl extends GenericServiceImpl<DataObject, Long>
583 586 connection.commit();
584 587 }
585 588 } catch (Exception e) {
  589 + System.out.println(dataObject.getDdl());
586 590 throw new EsiBusinessException(e);
587 591 }finally{
588 592 this.dataSourceService.close(connection);
... ... @@ -633,14 +637,49 @@ public class DataObjectServiceImpl extends GenericServiceImpl<DataObject, Long>
633 637 sourceObject.setGenerateForm(sourceObject.getFormVersion() != null);
634 638 sourceObject.setGenerateController(sourceObject.getFormVersion() != null);
635 639 sourceObject.setDataSource(dataSourceService.save(sourceObject.getDataSource(), false));
636   -
  640 +
  641 + Database database = sourceObject.getDataSource().getDatabase();
637 642 if (sourceObject.getFields() != null) {
638 643 for (DataColumn dataColumn: sourceObject.getColumns()) {
639 644 dataColumn.setId(null);
640 645 if (dataColumn.getWidget() != null) {
641 646 dataColumn.setWidget(formWidgetService.findByName(dataColumn.getWidget().getName()));
642 647 }
643   - dataColumn.setType(dataTypeService.findByName(dataColumn.getType().getName()));
  648 + String name = dataColumn.getType().getName();
  649 + dataColumn.setType(dataTypeService.findByName(name));
  650 + if (dataColumn.getType() == null) {
  651 + String databaseType = dataColumn.getDatabaseType() != null ? dataColumn.getDatabaseType() : name;
  652 + for (DatabaseDomain domain : database.getTypes()) {
  653 + if (domain.getName().equalsIgnoreCase(databaseType)) {
  654 + dataColumn.setType(domain.getDataType());
  655 + break;
  656 + }
  657 + }
  658 + }
  659 + if (dataColumn.getType() == null) {
  660 + throw new EsiBusinessException("Tipo de dados '"+name+"' não encontrado");
  661 + }
  662 +
  663 + String databaseType = null;
  664 + boolean exists = false;
  665 + for (DatabaseDomain domain : database.getTypes()) {
  666 + if (domain.getDataType().getId().equals(dataColumn.getType().getId())) {
  667 + if (databaseType == null) {
  668 + databaseType = domain.getName();
  669 + }
  670 + if (!UtilString.isNullOrEmpty(dataColumn.getDatabaseType()) && dataColumn.getDatabaseType().equalsIgnoreCase(domain.getName())) {
  671 + exists = true;
  672 + break;
  673 + }
  674 + }
  675 + }
  676 + if (!exists) {
  677 + dataColumn.setDatabaseType(databaseType);
  678 + }
  679 +
  680 + if (UtilString.isNullOrEmpty(dataColumn.getDatabaseType())) {
  681 + throw new EsiBusinessException("Tipo de dados '"+name+"' não encontrado no BD");
  682 + }
644 683 }
645 684 for (Relationship relationship: sourceObject.getRelationships()) {
646 685 relationship.setId(null);
... ...
cit-esi-api/src/main/java/br/com/centralit/esi/api/pack/service/impl/PackServiceImpl.java
... ... @@ -132,44 +132,49 @@ public class PackServiceImpl extends GenericServiceImpl<Pack, Long> implements P
132 132  
133 133 @Override
134 134 public Pack importPackage(Pack pack) {
135   - pack.setElements(new ArrayList<PackElement>());
136   - if (pack.getDslrs() != null) {
137   - for (DroolsDSLR dslr : pack.getDslrs()) {
138   - dslr = droolsDSLRService.save(dslr, pack.getReplaceElement());
139   - pack.getElements().add(new PackElement(pack, PackElementTypeEnum.DSLR, dslr.getId(), dslr.getName(), dslr.getName()));
  135 + try {
  136 + pack.setElements(new ArrayList<PackElement>());
  137 + if (pack.getDslrs() != null) {
  138 + for (DroolsDSLR dslr : pack.getDslrs()) {
  139 + dslr = droolsDSLRService.save(dslr, pack.getReplaceElement());
  140 + pack.getElements().add(new PackElement(pack, PackElementTypeEnum.DSLR, dslr.getId(), dslr.getName(), dslr.getName()));
  141 + }
140 142 }
141   - }
142   - if (pack.getBusinessRules() != null) {
143   - for (BusinessRuleVersion businessRule : pack.getBusinessRules()) {
144   - businessRule = (BusinessRuleVersion) businessRuleVersionService.save(businessRule, pack.getReplaceElement());
145   - pack.getElements().add(new PackElement(pack, PackElementTypeEnum.BUSINESS_RULE, businessRule.getFlow().getId(), businessRule.getFlow().getName(), businessRule.getFlow().getDescription()));
  143 + if (pack.getBusinessRules() != null) {
  144 + for (BusinessRuleVersion businessRule : pack.getBusinessRules()) {
  145 + businessRule = (BusinessRuleVersion) businessRuleVersionService.save(businessRule, pack.getReplaceElement());
  146 + pack.getElements().add(new PackElement(pack, PackElementTypeEnum.BUSINESS_RULE, businessRule.getFlow().getId(), businessRule.getFlow().getName(), businessRule.getFlow().getDescription()));
  147 + }
146 148 }
147   - }
148   - if (pack.getFlows() != null) {
149   - for (FlowVersion flowVersion : pack.getFlows()) {
150   - flowVersion = flowVersionService.save(flowVersion, pack.getReplaceElement());
151   - pack.getElements().add(new PackElement(pack, PackElementTypeEnum.FLOW, flowVersion.getFlow().getId(), flowVersion.getFlow().getName(), flowVersion.getFlow().getDescription()));
  149 + if (pack.getFlows() != null) {
  150 + for (FlowVersion flowVersion : pack.getFlows()) {
  151 + flowVersion = flowVersionService.save(flowVersion, pack.getReplaceElement());
  152 + pack.getElements().add(new PackElement(pack, PackElementTypeEnum.FLOW, flowVersion.getFlow().getId(), flowVersion.getFlow().getName(), flowVersion.getFlow().getDescription()));
  153 + }
152 154 }
153   - }
154   - if (pack.getDataObjects() != null) {
155   - dataObjectService.importDataObjects(pack);
156   - }
157   - if (pack.getForms() != null) {
158   - for (FormVersion form : pack.getForms()) {
159   - form = (FormVersion) formVersionService.save(form, pack.getReplaceElement());
160   - pack.getElements().add(new PackElement(pack, PackElementTypeEnum.FORM, form.getResource().getId(), form.getResource().getName(), form.getResource().getDescription()));
  155 + if (pack.getDataObjects() != null) {
  156 + dataObjectService.importDataObjects(pack);
161 157 }
162   - }
163   - if (pack.getBusinessProcess() != null) {
164   - for (BusinessProcess businessProcess : pack.getBusinessProcess()) {
165   - businessProcess = businessProcessService.save(businessProcess, pack.getReplaceElement());
166   - pack.getElements().add(new PackElement(pack, PackElementTypeEnum.BUSINESS_PROCESS, businessProcess.getId(), businessProcess.getName(), businessProcess.getDescription()));
  158 + if (pack.getForms() != null) {
  159 + for (FormVersion form : pack.getForms()) {
  160 + form = (FormVersion) formVersionService.save(form, pack.getReplaceElement());
  161 + pack.getElements().add(new PackElement(pack, PackElementTypeEnum.FORM, form.getResource().getId(), form.getResource().getName(), form.getResource().getDescription()));
  162 + }
167 163 }
168   - }
169   - if (pack.isNew()) {
170   - return this.save(pack);
171   - }else{
172   - return this.merge(pack);
  164 + if (pack.getBusinessProcess() != null) {
  165 + for (BusinessProcess businessProcess : pack.getBusinessProcess()) {
  166 + businessProcess = businessProcessService.save(businessProcess, pack.getReplaceElement());
  167 + pack.getElements().add(new PackElement(pack, PackElementTypeEnum.BUSINESS_PROCESS, businessProcess.getId(), businessProcess.getName(), businessProcess.getDescription()));
  168 + }
  169 + }
  170 + if (pack.isNew()) {
  171 + return this.save(pack);
  172 + }else{
  173 + return this.merge(pack);
  174 + }
  175 + } catch (Exception e) {
  176 + e.printStackTrace();
  177 + throw e;
173 178 }
174 179 }
175 180  
... ...
cit-esi-web/src/main/java/br/com/centralit/listener/StartupListenerEsi.java
... ... @@ -333,156 +333,108 @@ public class StartupListenerEsi extends UtilStartup implements ApplicationListen
333 333 FormWidget widgetTextArea = formWidgetService.findByName("text-area");
334 334  
335 335 // name, description, javaClass, allowSize, allowGeneratedValue, allowPrecision, allowAutoIncrement, width, widget
336   -
337   - DataType dataType = new DataType("bigint", "bigint (inteiro longo)", JavaClassEnum.BIG_INTEGER, false, true, false, true, 2, widgetInteger);
338   - dataType = dataTypeService.save(dataType);
339   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
340   - databaseDomainService.save(new DatabaseDomain(mySQL, dataType));
341   - databaseDomainService.save(new DatabaseDomain(postgres, dataType));
342   -
343   - dataType = new DataType("int8", "int8 (inteiro longo)", JavaClassEnum.BIG_INTEGER, false, true, false, true, 2, widgetInteger);
  336 + DataType dataType = new DataType("bigint", "Big integer", JavaClassEnum.BIG_INTEGER, false, true, false, true, 2, widgetInteger);
344 337 dataType = dataTypeService.save(dataType);
345   - databaseDomainService.save(new DatabaseDomain(postgres, dataType));
  338 + databaseDomainService.save(new DatabaseDomain(sqlServer, "bigint", dataType));
  339 + databaseDomainService.save(new DatabaseDomain(mySQL, "bigint", dataType));
  340 + databaseDomainService.save(new DatabaseDomain(postgres, "bigint", dataType));
  341 + databaseDomainService.save(new DatabaseDomain(postgres, "int8", dataType));
  342 + databaseDomainService.save(new DatabaseDomain(oracle, "integer", dataType));
346 343  
347   - dataType = new DataType("smallint", "smallint (inteiro)", JavaClassEnum.INTEGER, false, true, false, true, 2, widgetInteger);
  344 + dataType = new DataType("int", "Small integer", JavaClassEnum.INTEGER, false, true, false, true, 2, widgetInteger);
348 345 dataType = dataTypeService.save(dataType);
349   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
350   - databaseDomainService.save(new DatabaseDomain(mySQL, dataType));
351   - databaseDomainService.save(new DatabaseDomain(postgres, dataType));
352   -
353   - dataType = new DataType("int", "int (inteiro)", JavaClassEnum.INTEGER, false, true, false, true, 2, widgetInteger);
  346 + databaseDomainService.save(new DatabaseDomain(sqlServer, "int", dataType));
  347 + databaseDomainService.save(new DatabaseDomain(sqlServer, "smallint", dataType));
  348 + databaseDomainService.save(new DatabaseDomain(mySQL, "smallint", dataType));
  349 + databaseDomainService.save(new DatabaseDomain(mySQL, "int", dataType));
  350 + databaseDomainService.save(new DatabaseDomain(postgres, "smallint", dataType));
  351 + databaseDomainService.save(new DatabaseDomain(oracle, "integer", dataType));
  352 +
  353 + dataType = new DataType("integer", "Integer", JavaClassEnum.INTEGER, false, true, false, true, 2, widgetInteger);
354 354 dataType = dataTypeService.save(dataType);
355   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
356   - databaseDomainService.save(new DatabaseDomain(mySQL, dataType));
  355 + databaseDomainService.save(new DatabaseDomain(sqlServer, "integer", dataType));
  356 + databaseDomainService.save(new DatabaseDomain(mySQL, "int", dataType));
  357 + databaseDomainService.save(new DatabaseDomain(postgres, "integer", dataType));
  358 + databaseDomainService.save(new DatabaseDomain(oracle, "integer", dataType));
357 359  
358   - dataType = new DataType("integer", "integer (inteiro)", JavaClassEnum.INTEGER, false, true, false, true, 2, widgetInteger);
  360 + dataType = new DataType("boolean", "Boolean", JavaClassEnum.BOOLEAN, false, false, false, false, 2, widgetCheckbox);
359 361 dataType = dataTypeService.save(dataType);
360   - databaseDomainService.save(new DatabaseDomain(postgres, dataType));
361   - databaseDomainService.save(new DatabaseDomain(oracle, dataType));
  362 + databaseDomainService.save(new DatabaseDomain(sqlServer, "bit", dataType));
  363 + databaseDomainService.save(new DatabaseDomain(mySQL, "bit", dataType));
  364 + databaseDomainService.save(new DatabaseDomain(postgres, "bool", dataType));
  365 + databaseDomainService.save(new DatabaseDomain(oracle, "integer", dataType));
362 366  
363   - dataType = new DataType("bit", "bit (booleano)", JavaClassEnum.BOOLEAN, false, false, false, false, 2, widgetCheckbox);
  367 + dataType = new DataType("bigdecimal", "Big decimal", JavaClassEnum.BIG_DECIMAL, true, false, true, false, 2, widgetDecimal);
364 368 dataType = dataTypeService.save(dataType);
365   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
366   - databaseDomainService.save(new DatabaseDomain(mySQL, dataType));
367   -
368   - dataType = new DataType("numeric", "numeric (decimal)", JavaClassEnum.BIG_DECIMAL, true, false, true, false, 2, widgetDecimal);
  369 + databaseDomainService.save(new DatabaseDomain(sqlServer, "float", dataType));
  370 + databaseDomainService.save(new DatabaseDomain(sqlServer, "numeric", dataType));
  371 + databaseDomainService.save(new DatabaseDomain(sqlServer, "decimal", dataType));
  372 + databaseDomainService.save(new DatabaseDomain(mySQL, "float", dataType));
  373 + databaseDomainService.save(new DatabaseDomain(mySQL, "numeric", dataType));
  374 + databaseDomainService.save(new DatabaseDomain(mySQL, "decimal", dataType));
  375 + databaseDomainService.save(new DatabaseDomain(postgres, "numeric", dataType));
  376 + databaseDomainService.save(new DatabaseDomain(oracle, "number", dataType));
  377 +
  378 + dataType = new DataType("float", "Float", JavaClassEnum.FLOAT, true, false, true, false, 2, widgetDecimal);
369 379 dataType = dataTypeService.save(dataType);
370   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
371   - databaseDomainService.save(new DatabaseDomain(mySQL, dataType));
372   - databaseDomainService.save(new DatabaseDomain(postgres, dataType));
373   -
374   - dataType = new DataType("number", "number (decimal)", JavaClassEnum.BIG_DECIMAL, true, false, true, false, 2, widgetDecimal);
  380 + databaseDomainService.save(new DatabaseDomain(sqlServer, "float", dataType));
  381 + databaseDomainService.save(new DatabaseDomain(sqlServer,"real", dataType));
  382 + databaseDomainService.save(new DatabaseDomain(mySQL, "double", dataType));
  383 + databaseDomainService.save(new DatabaseDomain(postgres, "numeric", dataType));
  384 + databaseDomainService.save(new DatabaseDomain(postgres,"real", dataType));
  385 + databaseDomainService.save(new DatabaseDomain(oracle, "number", dataType));
  386 +
  387 + dataType = new DataType("currency", "Currency", JavaClassEnum.CURRENCY, false, false, false, false, 2, widgetMoney);
375 388 dataType = dataTypeService.save(dataType);
376   - databaseDomainService.save(new DatabaseDomain(oracle, dataType));
  389 + databaseDomainService.save(new DatabaseDomain(sqlServer, "money", dataType));
  390 + databaseDomainService.save(new DatabaseDomain(sqlServer, "smallmoney", dataType));
  391 + databaseDomainService.save(new DatabaseDomain(mySQL, "float", dataType));
  392 + databaseDomainService.save(new DatabaseDomain(postgres, "money", dataType));
  393 + databaseDomainService.save(new DatabaseDomain(oracle, "number", dataType));
377 394  
378   - dataType = new DataType("decimal", "decimal", JavaClassEnum.BIG_DECIMAL, true, false, true, false, 2, widgetDecimal);
  395 + dataType = new DataType("date", "Date", JavaClassEnum.DATE, false, false, false, false, 2, widgetDate);
379 396 dataType = dataTypeService.save(dataType);
380   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
381   - databaseDomainService.save(new DatabaseDomain(mySQL, dataType));
  397 + databaseDomainService.save(new DatabaseDomain(sqlServer, "datetime", dataType));
  398 + databaseDomainService.save(new DatabaseDomain(sqlServer, "smalldatetime", dataType));
  399 + databaseDomainService.save(new DatabaseDomain(mySQL, "datetime", dataType));
  400 + databaseDomainService.save(new DatabaseDomain(postgres, "date", dataType));
  401 + databaseDomainService.save(new DatabaseDomain(oracle, "date", dataType));
382 402  
383   - dataType = new DataType("float", "float (decimal)", JavaClassEnum.FLOAT, true, false, true, false, 2, widgetDecimal);
  403 + dataType = new DataType("datetime", "Datetime", JavaClassEnum.DATE, false, false, false, false, 2, widgetDate);
384 404 dataType = dataTypeService.save(dataType);
385   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
386   - databaseDomainService.save(new DatabaseDomain(mySQL, dataType));
387   -
388   - dataType = new DataType("double", "double (decimal)", JavaClassEnum.DOUBLE, true, false, true, false, 2, widgetDecimal);
389   - dataType = dataTypeService.save(dataType);
390   - databaseDomainService.save(new DatabaseDomain(mySQL, dataType));
391   -
392   - dataType = new DataType("real", "real (decimal)", JavaClassEnum.FLOAT, true, false, true, false, 2, widgetDecimal);
393   - dataType = dataTypeService.save(dataType);
394   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
395   - databaseDomainService.save(new DatabaseDomain(postgres, dataType));
  405 + databaseDomainService.save(new DatabaseDomain(sqlServer, "datetime", dataType));
  406 + databaseDomainService.save(new DatabaseDomain(mySQL, "timestamp", dataType));
  407 + databaseDomainService.save(new DatabaseDomain(postgres, "timestamp", dataType));
  408 + databaseDomainService.save(new DatabaseDomain(oracle, "timestamp", dataType));
396 409  
397   - dataType = new DataType("smallmoney", "smallmoney (currency)", JavaClassEnum.CURRENCY, false, false, false, false, 2, widgetMoney);
  410 + dataType = new DataType("char", "Character", JavaClassEnum.STRING, true, false, false, false, 4, widgetText);
398 411 dataType = dataTypeService.save(dataType);
399   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
400   -
401   - dataType = new DataType("money", "money (currency)", JavaClassEnum.CURRENCY, false, false, false, false, 2, widgetMoney);
  412 + databaseDomainService.save(new DatabaseDomain(sqlServer, "char", dataType));
  413 + databaseDomainService.save(new DatabaseDomain(sqlServer, "nchar", dataType));
  414 + databaseDomainService.save(new DatabaseDomain(mySQL, "char", dataType));
  415 + databaseDomainService.save(new DatabaseDomain(postgres, "character", dataType));
  416 + databaseDomainService.save(new DatabaseDomain(oracle, "char", dataType));
  417 + databaseDomainService.save(new DatabaseDomain(oracle, "nchar", dataType));
  418 +
  419 + dataType = new DataType("varchar", "Text", JavaClassEnum.STRING, true, false, false, false, 4, widgetText);
402 420 dataType = dataTypeService.save(dataType);
403   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
404   - databaseDomainService.save(new DatabaseDomain(postgres, dataType));
405   -
406   - dataType = new DataType("smalldatetime", "smalldatetime (data)", JavaClassEnum.DATE, false, false, false, false, 2, widgetDate);
  421 + databaseDomainService.save(new DatabaseDomain(sqlServer, "varchar", dataType));
  422 + databaseDomainService.save(new DatabaseDomain(sqlServer, "nvarchar", dataType));
  423 + databaseDomainService.save(new DatabaseDomain(sqlServer, "varchar(max)", dataType));
  424 + databaseDomainService.save(new DatabaseDomain(mySQL, "varchar", dataType));
  425 + databaseDomainService.save(new DatabaseDomain(postgres, "varchar", dataType));
  426 + databaseDomainService.save(new DatabaseDomain(oracle, "varchar2", dataType));
  427 + databaseDomainService.save(new DatabaseDomain(oracle, "nvarchar2", dataType));
  428 + databaseDomainService.save(new DatabaseDomain(oracle, "varchar", dataType));
  429 +
  430 + dataType = new DataType("text", "Long text", JavaClassEnum.STRING, true, false, false, false, 6, widgetTextArea);
407 431 dataType = dataTypeService.save(dataType);
408   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
409   -
410   - dataType = new DataType("date", "date (data)", JavaClassEnum.DATE, false, false, false, false, 2, widgetDate);
411   - dataType = dataTypeService.save(dataType);
412   - databaseDomainService.save(new DatabaseDomain(postgres, dataType));
413   - databaseDomainService.save(new DatabaseDomain(oracle, dataType));
414   -
415   - dataType = new DataType("datetime", "datetime (data)", JavaClassEnum.DATE, false, false, false, false, 2, widgetDate);
416   - dataType = dataTypeService.save(dataType);
417   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
418   - databaseDomainService.save(new DatabaseDomain(mySQL, dataType));
419   -
420   - dataType = new DataType("timestamp", "timestamp (data e hora)", JavaClassEnum.DATE, false, false, false, false, 2, widgetDate);
421   - dataType = dataTypeService.save(dataType);
422   - databaseDomainService.save(new DatabaseDomain(mySQL, dataType));
423   - databaseDomainService.save(new DatabaseDomain(postgres, dataType));
424   - databaseDomainService.save(new DatabaseDomain(oracle, dataType));
425   -
426   - dataType = new DataType("char", "char (texto)", JavaClassEnum.STRING, true, false, false, false, 4, widgetText);
427   - dataType = dataTypeService.save(dataType);
428   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
429   - databaseDomainService.save(new DatabaseDomain(mySQL, dataType));
430   - databaseDomainService.save(new DatabaseDomain(oracle, dataType));
431   -
432   - dataType = new DataType("character", "character (texto)", JavaClassEnum.STRING, true, false, false, false, 4, widgetText);
433   - dataType = dataTypeService.save(dataType);
434   - databaseDomainService.save(new DatabaseDomain(postgres, dataType));
435   -
436   - dataType = new DataType("nchar", "nchar (texto)", JavaClassEnum.STRING, true, false, false, false, 4, widgetText);
437   - dataType = dataTypeService.save(dataType);
438   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
439   - databaseDomainService.save(new DatabaseDomain(oracle, dataType));
440   -
441   - dataType = new DataType("varchar", "varchar (texto)", JavaClassEnum.STRING, true, false, false, false, 4, widgetText);
442   - dataType = dataTypeService.save(dataType);
443   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
444   - databaseDomainService.save(new DatabaseDomain(mySQL, dataType));
445   - databaseDomainService.save(new DatabaseDomain(postgres, dataType));
446   - databaseDomainService.save(new DatabaseDomain(oracle, dataType));
447   -
448   - dataType = new DataType("varchar(max)", "varchar max (texto)", JavaClassEnum.STRING, true, false, false, false, 6, widgetTextArea);
449   - dataType = dataTypeService.save(dataType);
450   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
451   -
452   - dataType = new DataType("varchar2", "varchar2 (texto)", JavaClassEnum.STRING, true, false, false, false, 4, widgetText);
453   - dataType = dataTypeService.save(dataType);
454   - databaseDomainService.save(new DatabaseDomain(oracle, dataType));
455   -
456   - dataType = new DataType("nvarchar2", "nvarchar2 (texto)", JavaClassEnum.STRING, true, false, false, false, 4, widgetText);
457   - dataType = dataTypeService.save(dataType);
458   - databaseDomainService.save(new DatabaseDomain(oracle, dataType));
459   -
460   - dataType = new DataType("character varying", "character varying (texto)", JavaClassEnum.STRING, true, false, false, false, 4, widgetText);
461   - dataType = dataTypeService.save(dataType);
462   - databaseDomainService.save(new DatabaseDomain(postgres, dataType));
463   -
464   - dataType = new DataType("nvarchar", "nvarchar (texto)", JavaClassEnum.STRING, true, false, false, false, 4, widgetText);
465   - dataType = dataTypeService.save(dataType);
466   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
467   -
468   - dataType = new DataType("text", "text (texto longo)", JavaClassEnum.STRING, true, false, false, false, 6, widgetTextArea);
469   - dataType = dataTypeService.save(dataType);
470   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
471   - databaseDomainService.save(new DatabaseDomain(mySQL, dataType));
472   - databaseDomainService.save(new DatabaseDomain(postgres, dataType));
473   -
474   - dataType = new DataType("ntext", "ntext (texto longo)", JavaClassEnum.STRING, true, false, false, false, 6, widgetTextArea);
475   - dataType = dataTypeService.save(dataType);
476   - databaseDomainService.save(new DatabaseDomain(sqlServer, dataType));
477   -
478   - dataType = new DataType("clob", "clob (texto longo)", JavaClassEnum.STRING, true, false, false, false, 6, widgetTextArea);
479   - dataType = dataTypeService.save(dataType);
480   - databaseDomainService.save(new DatabaseDomain(oracle, dataType));
481   -
482   - dataType = new DataType("nclob", "nclob (texto longo)", JavaClassEnum.STRING, true, false, false, false, 6, widgetTextArea);
483   - dataType = dataTypeService.save(dataType);
484   - databaseDomainService.save(new DatabaseDomain(oracle, dataType));
485   -
  432 + databaseDomainService.save(new DatabaseDomain(sqlServer, "text", dataType));
  433 + databaseDomainService.save(new DatabaseDomain(sqlServer, "ntext", dataType));
  434 + databaseDomainService.save(new DatabaseDomain(mySQL, "text", dataType));
  435 + databaseDomainService.save(new DatabaseDomain(postgres, "text", dataType));
  436 + databaseDomainService.save(new DatabaseDomain(oracle, "clob", dataType));
  437 + databaseDomainService.save(new DatabaseDomain(oracle, "nclob", dataType));
486 438 }
487 439  
488 440 private void createDatabases() {
... ... @@ -2163,6 +2115,7 @@ public class StartupListenerEsi extends UtilStartup implements ApplicationListen
2163 2115 internacionalizacaoList.add(new Internacionalizacao("ESI.OBJETO_DESTINO", "Objeto JSON que será atualizado", dominio, modulo));
2164 2116 internacionalizacaoList.add(new Internacionalizacao("ESI.CADASTRO", "Cadastro", dominio, modulo));
2165 2117 internacionalizacaoList.add(new Internacionalizacao("ESI.NOME_ATRIBUTO", "Nome para atributo de objeto", dominio, modulo));
  2118 + internacionalizacaoList.add(new Internacionalizacao("ESI.TIPO_BD", "Tipo no BD", dominio, modulo));
2166 2119 internacionalizacaoList.add(new Internacionalizacao("ESI.TERMINO", "Término", dominio, modulo));
2167 2120 internacionalizacaoList.add(new Internacionalizacao("ESI.MOVER_ESQUERDA", "Mover para esquerda", dominio, modulo));
2168 2121 internacionalizacaoList.add(new Internacionalizacao("ESI.CONEXAO_BANCO", "Conexão de Banco", dominio, modulo));
... ...
cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/DataObjectController.js
... ... @@ -73,6 +73,11 @@ citApp.controller(&#39;DataObjectController&#39;, [&quot;$scope&quot;, &quot;FlowRepository&quot;, &quot;DataObje
73 73 });
74 74 });
75 75  
  76 + $scope.dataTypes = [];
  77 + DataTypeRepository.getList().then(function(result) {
  78 + $scope.dataTypes = result;
  79 + });
  80 +
76 81 // Limpa formulário para novo cadastro
77 82 $scope.resetForm = function() {
78 83 $scope.columnChecked = undefined;
... ... @@ -170,7 +175,7 @@ citApp.controller(&#39;DataObjectController&#39;, [&quot;$scope&quot;, &quot;FlowRepository&quot;, &quot;DataObje
170 175  
171 176 DataObjectRepository.get(dataObject.id).then(function(result) {
172 177 $scope.dataObject = result.originalElement;
173   - $scope.getDataTypes($scope.dataObject.dataSource);
  178 + $scope.getDatabaseDomains($scope.dataObject.dataSource);
174 179  
175 180 $scope.restoreRelationships();
176 181  
... ... @@ -221,19 +226,17 @@ citApp.controller(&#39;DataObjectController&#39;, [&quot;$scope&quot;, &quot;FlowRepository&quot;, &quot;DataObje
221 226 $scope.dataObject.dataSource = null;
222 227 };
223 228  
224   - $scope.getDataTypes = function(dataSource) {
225   - $scope.dataTypes = [];
  229 + $scope.getDatabaseDomains = function(dataSource) {
  230 + $scope.databaseDomains = [];
226 231 DataSourceRepository.get(dataSource.id).then(function(result) {
227   - angular.forEach(result.originalElement.database.types, function(databaseDomain){
228   - $scope.dataTypes.push(databaseDomain.dataType);
229   - });
  232 + $scope.databaseDomains = result.database.types;
230 233 });
231 234 };
232 235  
233 236 $scope.setDataSource = function (item) {
234 237 if(item && item.id) {
235 238 $scope.dataObject.dataSource = item;
236   - $scope.getDataTypes(item);
  239 + $scope.getDatabaseDomains(item);
237 240 }
238 241 };
239 242  
... ... @@ -599,10 +602,16 @@ citApp.controller(&#39;DataObjectController&#39;, [&quot;$scope&quot;, &quot;FlowRepository&quot;, &quot;DataObje
599 602  
600 603 $scope.setColumType = function(type) {
601 604 angular.forEach($scope.dataTypes, function(dataType){
602   - if (dataType.id == type) {
  605 + if (dataType.id == type.id) {
603 606 $scope.column.type = dataType;
604 607 }
605 608 });
  609 + $scope.column.databaseType = '';
  610 + angular.forEach($scope.databaseDomains, function(domain){
  611 + if (domain.dataType.id == type.id && $scope.column.databaseType == '') {
  612 + $scope.column.databaseType = domain.name;
  613 + }
  614 + });
606 615 };
607 616  
608 617 $scope.generateForm = function() {
... ...
cit-esi-web/src/main/webapp/assets/js/angular/custom/controller/DatabaseController.js
... ... @@ -8,31 +8,15 @@ citApp.controller(&#39;DatabaseController&#39;, [&quot;$scope&quot;, &quot;DatabaseRepository&quot;, &quot;DataTy
8 8 DomainRepository.getEnumeratedDomain('DatabaseTypeEnum').then(function(result) {
9 9 $scope.databaseTypes = result;
10 10 });
11   -
12   - var filterDataTypes = {
13   - start : 1,
14   - dir : 'asc',
15   - sort : 'name',
16   - limit : 999999,
17   - fields: ['id', 'name']
18   - };
19 11  
20 12 $scope.dataTypes = [];
21   -
22   - $scope.findDataTypes = function(){
23   - $scope.dataTypes = [];
24   - DataTypeRepository.getListPage(filterDataTypes).then(function(result) {
25   - angular.forEach(result.originalElement.objects, function(dataType){
26   - var item = {dataType: dataType};
27   - $scope.dataTypes.push(item);
28   - });
29   - });
30   - };
  13 + DataTypeRepository.getList().then(function(result) {
  14 + $scope.dataTypes = result;
  15 + });
31 16  
32 17 // Limpa formulário para novo cadastro
33 18 $scope.resetForm = function() {
34 19 $scope.limparDatabase();
35   - $scope.findDataTypes();
36 20 $scope.edit = true;
37 21 $timeout(function(){
38 22 $scope.databaseForm.$submitted = false;
... ... @@ -98,13 +82,37 @@ citApp.controller(&#39;DatabaseController&#39;, [&quot;$scope&quot;, &quot;DatabaseRepository&quot;, &quot;DataTy
98 82 $scope.setLoadingGet(true);
99 83  
100 84 DatabaseRepository.get(database.id).then(function(result) {
  85 + $scope.domainChecked = null;
  86 + $scope.domain = null;
101 87 $scope.database = result.originalElement;
102 88 $scope.edit = edit;
103   - $scope.findDataTypes();
104 89  
105 90 $scope.setLoading(false);
106 91 });
107 92 };
108 93  
  94 + $scope.checkDomain = function(index, domain) {
  95 + domain.$index = index;
  96 + $scope.domainChecked = domain;
  97 + };
  98 +
  99 + $scope.newDomain = function(){
  100 + $scope.database.types.push({});
  101 + };
109 102  
  103 + $scope.removeDomain = function(){
  104 + if(!$scope.domainChecked) {
  105 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO'));
  106 + return;
  107 + } else {
  108 + $scope.$openModalConfirm({
  109 + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),
  110 + callback: function () {
  111 + $scope.$modalConfirmInstance.dismiss('cancel');
  112 + $scope.database.types.splice($scope.domainChecked.$index, 1);
  113 + }
  114 + });
  115 + }
  116 + };
  117 +
110 118 }]);
... ...
cit-esi-web/src/main/webapp/html/dataObject/dataObjectEdit.html
... ... @@ -149,7 +149,7 @@
149 149 <th width="5%" class="text-center"></th>
150 150 <th width="25%"><translate>LABEL.NOME</translate></th>
151 151 <th width="40%"><translate>LABEL.DESCRICAO</translate></th>
152   - <th width="20%"><translate>LABEL.TIPO</translate></th>
  152 + <th width="20%"><translate>ESI.TIPO_BD</translate></th>
153 153 </tr>
154 154 </thead>
155 155 <tbody>
... ... @@ -164,7 +164,7 @@
164 164 </td>
165 165 <td class="vertical-middle">{{theColumn.name}}</td>
166 166 <td class="vertical-middle">{{theColumn.description}}</td>
167   - <td class="vertical-middle">{{theColumn.type.name}}</td>
  167 + <td class="vertical-middle">{{theColumn.databaseType}}</td>
168 168 </tr>
169 169 <tr ng-hide="dataObject.columns.length > 0">
170 170 <td colspan="5"><translate>LABEL.TABELA_VAZIA</translate></td>
... ...
cit-esi-web/src/main/webapp/html/dataObject/dialogDataColumn.html
... ... @@ -21,7 +21,7 @@
21 21 <legend><translate>ESI.COLUNA</translate></legend>
22 22  
23 23 <div class='row'>
24   - <div class="col-sm-5">
  24 + <div class="col-sm-4">
25 25 <label-input-identifier ng-label="ESI.NOME_BD" ng-type="text" ng-id="column.name" ng-obrigatorio="true"
26 26 ng-disabled="!edit" ng-model="column.name" ng-custom-maxlength="100" form="formDataColumn"
27 27 ng-evento-blur="verifyAttributeName()"/>
... ... @@ -30,15 +30,19 @@
30 30 <label-input-identifier ng-label="ESI.NOME_ATRIBUTO" ng-type="text" ng-id="column.attributeName" ng-obrigatorio="true"
31 31 ng-disabled="!edit" ng-model="column.attributeName" ng-custom-maxlength="100" form="formDataColumn"/>
32 32 </div>
33   - <div class="col-sm-3">
34   - <label-select ng-id="column.type" ng-label="LABEL.TIPO" ng-model="column.type.id" ng-obrigatorio='true' form="formDataColumn"
35   - ng-list="dataTypes" ng-custom-options="dataType.id as dataType.description for dataType" ng-custom-change="setColumType(model)">
  33 + <div class="col-sm-2">
  34 + <label-select ng-id="column.type" ng-label="LABEL.TIPO" ng-model="column.type" ng-obrigatorio='true' form="formDataColumn" track-by="track by dataType.id"
  35 + ng-list="dataTypes" ng-custom-options="dataType.originalElement as dataType.description for dataType" ng-custom-change="setColumType(model)">
36 36 </label-select>
37   - </div>
  37 + </div>
  38 + <div class="col-sm-2">
  39 + <label-input ng-label="ESI.TIPO_BD" ng-type="text" ng-id="column.databaseType" ng-obrigatorio="true"
  40 + ng-disabled="!edit" ng-model="column.databaseType" ng-custom-maxlength="100" form="formDataColumn"/>
  41 + </div>
38 42 </div>
39 43  
40 44 <div class='row'>
41   - <div class="col-sm-5">
  45 + <div class="col-sm-4">
42 46 <label-input ng-label="ESI.LABEL" ng-type="text" ng-id="column.description" ng-obrigatorio="true"
43 47 ng-disabled="!edit" ng-model="column.description" ng-custom-maxlength="255" form="formDataColumn"/>
44 48 </div>
... ...
cit-esi-web/src/main/webapp/html/database/databaseEdit.html
... ... @@ -47,7 +47,7 @@
47 47  
48 48 <fieldset>
49 49  
50   - <legend><translate>ESI.DADOS</translate></legend>
  50 + <legend><translate>ESI.ABA.IDENTIFICACAO</translate></legend>
51 51  
52 52 <div class="row">
53 53 <div class="col-md-4">
... ... @@ -62,20 +62,53 @@
62 62 </div><!-- .col -->
63 63 </div><!-- .row -->
64 64  
65   - <div class="row">
66   - <div class="col-sm-12">
67   - <div class="form-group">
68   - <label class="control-label"><translate>ESI.TIPOS_DADOS</translate></label>
69   -
70   - <ui-select multiple ng-model="$parent.database.types" theme="select2" ng-disabled="!edit" style="min-width: 100%;">
71   - <ui-select-match placeholder="Selecione...">{{$item.dataType.name}}</ui-select-match>
72   - <ui-select-choices repeat="databaseDomain in dataTypes | filter:$select.search">
73   - {{databaseDomain.dataType.name}}
74   - </ui-select-choices>
75   - </ui-select>
76   - </div><!-- .form-group -->
77   - </div><!-- .col -->
78   - </div><!-- .row -->
  65 + <fieldset>
  66 + <legend><translate>ESI.TIPOS_DADOS</translate></legend>
  67 +
  68 + <div class='row'>
  69 + <div class='col-sm-8'>
  70 + <div class="panel panel-default">
  71 + <div class="panel-heading clearfix">
  72 + <button class="btn btn-clear" ng-click="newDomain()" type="button" >
  73 + <i class="fa fa-plus-circle yellow-dark"></i>
  74 + <translate>LABEL.ADICIONAR</translate>
  75 + </button>
  76 +
  77 + <button class="btn btn-clear" ng-click="removeDomain()" ng-disabled="!domainChecked" type="button" >
  78 + <i class="fa fa-close red"></i>
  79 + <translate>LABEL.REMOVER</translate>
  80 + </button>
  81 + </div><!-- .panel-heading -->
  82 +
  83 + <table class="table table-striped table-bordered table-hover">
  84 + <thead>
  85 + <tr>
  86 + <th width="5%" class="text-center"></th>
  87 + <th width="50%"><translate>LABEL.TIPO</translate></th>
  88 + <th width="40%"><translate>ESI.TIPO_BD</translate></th>
  89 + </tr>
  90 + </thead>
  91 + <tbody>
  92 + <tr ng-repeat="databaseDomain in database.types" >
  93 + <td class="text-center vertical-middle">
  94 + <input type="radio" name="domainChecked" ng-value="domain" ng-disabled="!edit"
  95 + ng-model="domainChecked" ng-click="checkDomain($index, databaseDomain)" />
  96 + </td>
  97 + <td class="vertical-middle">
  98 + <label-select ng-id="databaseDomain.dataType" ng-model="databaseDomain.dataType" ng-obrigatorio='true' track-by="track by dataType.id"
  99 + ng-list="dataTypes" ng-custom-options="dataType.originalElement as dataType.description for dataType">
  100 + </label-select>
  101 + </td>
  102 + <td class="vertical-middle">
  103 + <label-input ng-type="text" ng-id="databaseDomain.name" ng-obrigatorio="true"
  104 + ng-disabled="!edit" ng-model="databaseDomain.name" ng-custom-maxlength="100"/>
  105 + </td>
  106 + </tr>
  107 + </table>
  108 + </div><!-- .panel -->
  109 + </div><!-- .col -->
  110 + </div><!-- .row -->
  111 + </fieldset>
79 112  
80 113 </form>
81 114 </div><!-- .page-content -->
... ...