You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2022/11/30 15:30:22 UTC
[cayenne] branch master updated: CAY-2732 Exception when creating ObjEntity from a DbEntity
This is an automated email from the ASF dual-hosted git repository.
ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push:
new 9ce69b8cd CAY-2732 Exception when creating ObjEntity from a DbEntity
9ce69b8cd is described below
commit 9ce69b8cd9d3cfd325c28258f2003005bd4975ca
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Wed Nov 30 18:14:48 2022 +0300
CAY-2732 Exception when creating ObjEntity from a DbEntity
---
RELEASE-NOTES.txt | 1 +
.../cayenne/modeler/graph/BaseGraphBuilder.java | 4 +--
.../modeler/graph/DbEntityCellMetadata.java | 9 ++---
.../cayenne/modeler/graph/DbGraphBuilder.java | 9 ++---
.../cayenne/modeler/graph/EntityCellMetadata.java | 40 ++++++++--------------
.../modeler/graph/ObjEntityCellMetadata.java | 9 ++---
.../cayenne/modeler/graph/ObjGraphBuilder.java | 19 ++++------
7 files changed, 36 insertions(+), 55 deletions(-)
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 1109caf28..f01d7de0c 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -37,6 +37,7 @@ CAY-2781 Enable 'Create PK properties' by default in the cgen configuration
Bug Fixes:
+CAY-2732 Exception when creating ObjEntity from a DbEntity
CAY-2755 Modeler: Entities are not sorted by name in the class generation view
CAY-2762 Modeler: Difference in toolbars colors on OSX
CAY-2763 Split expressions do not work with flattened relationships
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/BaseGraphBuilder.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/BaseGraphBuilder.java
index 2d80de535..529045569 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/BaseGraphBuilder.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/BaseGraphBuilder.java
@@ -304,8 +304,8 @@ abstract class BaseGraphBuilder<E extends Entity<E, A, R>, A extends Attribute<E
}
/**
- * Returns whether an entity is not connected to any other TODO: not fine
- * algorithm, it iterates through all entities and all rels
+ * Returns whether an entity is not connected to any other
+ * TODO: not fine algorithm, it iterates through all entities and all rels
*/
protected boolean isIsolated(DataChannelDescriptor domain, E entity) {
if (entity.getRelationships().size() == 0) {
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DbEntityCellMetadata.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DbEntityCellMetadata.java
index 025bcf338..3d87bdf99 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DbEntityCellMetadata.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DbEntityCellMetadata.java
@@ -27,15 +27,16 @@ import org.apache.cayenne.map.DbRelationship;
* Descriptor of DbEntity Cell
*/
class DbEntityCellMetadata extends EntityCellMetadata<DbEntity, DbAttribute, DbRelationship> {
- DbEntityCellMetadata(GraphBuilder builder, String entityName) {
- super(builder, entityName);
+ DbEntityCellMetadata(DbGraphBuilder builder, DbEntity entity) {
+ super(builder, entity);
}
@Override
public DbEntity fetchEntity() {
for (DataMap dm : builder.getDataDomain().getDataMaps()) {
- if (dm.getDbEntity(entityName) != null) {
- return dm.getDbEntity(entityName);
+ DbEntity dbEntity =dm.getDbEntity(entityName) ;
+ if (dbEntity!= null) {
+ return dbEntity;
}
}
return null;
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DbGraphBuilder.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DbGraphBuilder.java
index 9c9530807..3bb5d49e5 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DbGraphBuilder.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DbGraphBuilder.java
@@ -40,8 +40,7 @@ import org.jgraph.graph.GraphConstants;
/**
* Class for building ER-graph, based on DbEntity information
*/
-class DbGraphBuilder extends BaseGraphBuilder<DbEntity, DbAttribute, DbRelationship> implements DbEntityListener,
- DbAttributeListener, DbRelationshipListener {
+class DbGraphBuilder extends BaseGraphBuilder<DbEntity, DbAttribute, DbRelationship> implements DbEntityListener, DbAttributeListener, DbRelationshipListener {
static final Color ENTITY_COLOR = new Color(197, 253, 252);
@@ -60,16 +59,14 @@ class DbGraphBuilder extends BaseGraphBuilder<DbEntity, DbAttribute, DbRelations
@Override
protected DbEntityCellMetadata getCellMetadata(DbEntity e) {
- return new DbEntityCellMetadata(this, e.getName());
+ return new DbEntityCellMetadata(this, e);
}
@Override
protected DefaultEdge createRelationshipCell(DbRelationship rel) {
DefaultEdge edge = super.createRelationshipCell(rel);
if (edge != null) {
- GraphConstants.setDashPattern(edge.getAttributes(), new float[] {
- 10, 3
- });
+ GraphConstants.setDashPattern(edge.getAttributes(), new float[] {10, 3});
}
return edge;
}
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/EntityCellMetadata.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/EntityCellMetadata.java
index c834f15c0..8d6060517 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/EntityCellMetadata.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/EntityCellMetadata.java
@@ -19,6 +19,7 @@
package org.apache.cayenne.modeler.graph;
import java.io.Serializable;
+import java.util.Objects;
import org.apache.cayenne.map.Attribute;
import org.apache.cayenne.map.Entity;
@@ -29,45 +30,32 @@ import org.apache.cayenne.map.Relationship;
*/
abstract class EntityCellMetadata<E extends Entity<E, A, R>, A extends Attribute<E, A, R>, R extends Relationship<E, A, R>>
implements Serializable {
- GraphBuilder<E,A,R> builder;
+ final GraphBuilder<E,A,R> builder;
+ final String entityName;
+ final String label;
- String entityName;
- String label;
-
- EntityCellMetadata() {
- }
-
- EntityCellMetadata(GraphBuilder<E,A,R> builder, String entityName) {
- this.builder = builder;
- this.entityName = entityName;
-
- rebuildLabel();
+ EntityCellMetadata(GraphBuilder<E,A,R> builder, Entity<E,A,R> entity) {
+ this.builder = Objects.requireNonNull(builder);
+ this.entityName = Objects.requireNonNull(entity).getName();
+ this.label = createLabel(entity);
}
/**
* Resolves entity
*/
public abstract Entity<E, A, R> fetchEntity();
-
- final void rebuildLabel() {
- label = createLabel();
- }
-
+
public String toString() {
- if (label == null) {
- rebuildLabel();
- }
-
return label;
}
/**
* Creates label for this cell
*/
- String createLabel() {
- Entity<E, A, R> entity = fetchEntity();
- StringBuilder label = new StringBuilder("<html><center><u><b>").
- append(entity.getName()).append("</b></u></center>");
+ String createLabel(Entity<E, A, R> entity) {
+ StringBuilder label = new StringBuilder("<html><center><u><b>")
+ .append(entity.getName())
+ .append("</b></u></center>");
for (A attr : entity.getAttributes()) {
if (isPrimary(attr)) {
label.append("<br><i>").append(attr.getName()).append("</i>");
@@ -78,7 +66,7 @@ abstract class EntityCellMetadata<E extends Entity<E, A, R>, A extends Attribute
label.append("<br>").append(attr.getName());
}
}
- return label.toString();
+ return label.append("</html>").toString();
}
/**
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/ObjEntityCellMetadata.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/ObjEntityCellMetadata.java
index 9926ab7d0..a6b724c8f 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/ObjEntityCellMetadata.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/ObjEntityCellMetadata.java
@@ -27,15 +27,16 @@ import org.apache.cayenne.map.ObjRelationship;
* Descriptor of ObjEntity Cell
*/
class ObjEntityCellMetadata extends EntityCellMetadata<ObjEntity, ObjAttribute, ObjRelationship> {
- ObjEntityCellMetadata(GraphBuilder<ObjEntity, ObjAttribute, ObjRelationship> builder, String entityName) {
- super(builder, entityName);
+ ObjEntityCellMetadata(ObjGraphBuilder builder, ObjEntity entity) {
+ super(builder, entity);
}
@Override
public ObjEntity fetchEntity() {
for (DataMap dm : builder.getDataDomain().getDataMaps()) {
- if (dm.getObjEntity(entityName) != null) {
- return dm.getObjEntity(entityName);
+ ObjEntity objEntity =dm.getObjEntity(entityName) ;
+ if (objEntity!= null) {
+ return objEntity;
}
}
return null;
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/ObjGraphBuilder.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/ObjGraphBuilder.java
index 10ef31174..b43bbfbab 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/ObjGraphBuilder.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/ObjGraphBuilder.java
@@ -37,7 +37,7 @@ import org.jgraph.graph.DefaultEdge;
import org.jgraph.graph.DefaultGraphCell;
import org.jgraph.graph.GraphConstants;
-import java.awt.*;
+import java.awt.Color;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@@ -102,12 +102,8 @@ class ObjGraphBuilder extends BaseGraphBuilder<ObjEntity, ObjAttribute, ObjRelat
edge.setSource(sourceCell.getChildAt(0));
edge.setTarget(targetCell.getChildAt(0));
- GraphConstants.setDashPattern(edge.getAttributes(), new float[] {
- 5, 5
- });
- GraphConstants.setLineEnd(
- edge.getAttributes(),
- GraphConstants.ARROW_TECHNICAL);
+ GraphConstants.setDashPattern(edge.getAttributes(), new float[] {5, 5});
+ GraphConstants.setLineEnd(edge.getAttributes(), GraphConstants.ARROW_TECHNICAL);
GraphConstants.setSelectable(edge.getAttributes(), false);
inheritanceEdges.put(entity, edge);
@@ -120,7 +116,7 @@ class ObjGraphBuilder extends BaseGraphBuilder<ObjEntity, ObjAttribute, ObjRelat
@Override
protected ObjEntityCellMetadata getCellMetadata(ObjEntity e) {
- return new ObjEntityCellMetadata(this, e.getName());
+ return new ObjEntityCellMetadata(this, e);
}
@Override
@@ -154,14 +150,11 @@ class ObjGraphBuilder extends BaseGraphBuilder<ObjEntity, ObjAttribute, ObjRelat
DefaultEdge inheritanceEdge = inheritanceEdges.get(entity);
if (inheritanceEdge != null) {
if (entity.getSuperEntity() == null) {
- graph.getGraphLayoutCache().remove(new Object[] {
- inheritanceEdge
- });
+ graph.getGraphLayoutCache().remove(new Object[] {inheritanceEdge});
inheritanceEdges.remove(entity);
}
else {
- inheritanceEdge.setTarget(entityCells.get(
- entity.getSuperEntity().getName()).getChildAt(0));
+ inheritanceEdge.setTarget(entityCells.get(entity.getSuperEntity().getName()).getChildAt(0));
Map<DefaultEdge, AttributeMap> nested = new HashMap<>();
nested.put(inheritanceEdge, inheritanceEdge.getAttributes());