Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ public class Embeddable implements ConfigurationNode, XMLSerializable, Serializa
private static final long serialVersionUID = -7163768090567642099L;

protected String className;
protected String nameWithPackage;
protected SortedMap<String, EmbeddableAttribute> attributes;
protected DataMap dataMap;

Expand All @@ -54,7 +55,7 @@ public Embeddable() {
}

public Embeddable(String className) {
this.attributes = new TreeMap<String, EmbeddableAttribute>();
this.attributes = new TreeMap<>();
this.className = className;
}

Expand Down Expand Up @@ -165,6 +166,14 @@ public void setClassName(String className) {
this.className = className;
}

public String getNameWithPackage() {
return nameWithPackage;
}

public void setNameWithPackage(String nameWithPackage) {
this.nameWithPackage = nameWithPackage;
}

/**
* {@link XMLSerializable} implementation that generates XML for embeddable.
*/
Expand All @@ -175,6 +184,12 @@ public void encodeAsXML(XMLEncoder encoder) {
encoder.print(getClassName());
encoder.print("\"");
}

if (getNameWithPackage() != null) {
encoder.print(" embeddableName=\"");
encoder.print(getNameWithPackage());
encoder.print("\"");
}
encoder.println(">");

encoder.indent(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -729,6 +729,8 @@ public void endElement(String namespaceURI, String localName, String qName) thro

private void processStartEmbeddable(Attributes atts) {
embeddable = new Embeddable(atts.getValue("", "className"));
String embeddableName = atts.getValue("", "embeddableName");
embeddable.setNameWithPackage(embeddableName);
dataMap.addEmbeddable(embeddable);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ public void performAction(ActionEvent e) {
Embeddable embeddable = new Embeddable();
String baseName = NameBuilder.builder(embeddable, dataMap).name();
String nameWithPackage = dataMap.getNameWithDefaultPackage(baseName);
embeddable.setClassName(nameWithPackage);
embeddable.setClassName(baseName);
embeddable.setNameWithPackage(nameWithPackage);
createEmbeddable(dataMap, embeddable);

application.getUndoManager().addEdit(new CreateEmbeddableUndoableEdit(dataMap, embeddable));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
public class EmbeddableTab extends JPanel implements EmbeddableDisplayListener {

protected ProjectController mediator;
protected JTextField nameWithPackage;
protected TextAdapter className;

public EmbeddableTab(ProjectController mediator) {
Expand Down Expand Up @@ -82,12 +83,16 @@ protected void updateModel(String text) {
}
};

nameWithPackage = new JTextField();
nameWithPackage.setEditable(false);

FormLayout layout = new FormLayout(
"right:50dlu, 3dlu, fill:150dlu, 3dlu, fill:100",
"right:100dlu, 3dlu, fill:200dlu, 3dlu, fill:100",
"");
DefaultFormBuilder builder = new DefaultFormBuilder(layout);
builder.setDefaultDialogBorder();
builder.append("Class Name:", className.getComponent(), 3);
builder.append("Embeddable Name:", className.getComponent(), 3);
builder.append("Java Class:", nameWithPackage, 3);

add(builder.getPanel(), BorderLayout.CENTER);
}
Expand Down Expand Up @@ -115,8 +120,7 @@ void setClassName(String newClassName) {

if (newClassName == null) {
throw new ValidationException("Embeddable name is required.");
}
else if (embeddable.getDataMap().getEmbeddable(newClassName) == null) {
} else if (embeddable.getDataMap().getEmbeddable(newClassName) == null) {

// if newClassName dupliucates in other DataMaps
DataChannelDescriptor domain = (DataChannelDescriptor) mediator.getProject().getRootNode();
Expand All @@ -139,9 +143,13 @@ else if (embeddable.getDataMap().getEmbeddable(newClassName) == null) {
// completely new name, set new name for embeddable
EmbeddableEvent e = new EmbeddableEvent(this, embeddable, embeddable
.getClassName());
String oldName = embeddable.getClassName();

embeddable.setClassName(newClassName);

String oldName = embeddable.getNameWithPackage();
String newName = mediator.getCurrentDataMap().getDefaultPackage() + "." + embeddable.getClassName();
embeddable.setNameWithPackage(newName);

mediator.fireEmbeddableEvent(e, mediator.getCurrentDataMap());

Iterator it =((DataChannelDescriptor) mediator.getProject().getRootNode()).getDataMaps().iterator();
Expand All @@ -155,10 +163,10 @@ else if (embeddable.getDataMap().getEmbeddable(newClassName) == null) {
Iterator<ObjAttribute> attrIt = attr.iterator();

while (attrIt.hasNext()) {
ObjAttribute atribute = attrIt.next();
if (atribute.getType()==null || atribute.getType().equals(oldName)) {
atribute.setType(newClassName);
AttributeEvent ev = new AttributeEvent(this, atribute, atribute
ObjAttribute attribute = attrIt.next();
if (attribute.getType()==null || attribute.getType().equals(oldName)) {
attribute.setType(newName);
AttributeEvent ev = new AttributeEvent(this, attribute, attribute
.getEntity());
mediator.fireObjAttributeEvent(ev);
}
Expand All @@ -167,8 +175,9 @@ else if (embeddable.getDataMap().getEmbeddable(newClassName) == null) {
}
}

}
else {
initFromModel(embeddable);

} else {
// there is an embeddable with the same name
throw new ValidationException("There is another embeddable with name '"
+ newClassName
Expand All @@ -187,5 +196,6 @@ public void currentEmbeddableChanged(EmbeddableDisplayEvent e) {

private void initFromModel(Embeddable embeddable) {
className.setText(embeddable.getClassName());
nameWithPackage.setText(embeddable.getNameWithPackage());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ public void initComboBoxes() {

for (DataMap dataMap : ((DataChannelDescriptor) mediator.getProject().getRootNode()).getDataMaps()) {
for (Embeddable emb : dataMap.getEmbeddables()) {
embeddableNames.add(emb.getClassName());
embeddableNames.add(emb.getNameWithPackage());
}
}

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,7 @@
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>3.2.2</version>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>opensymphony</groupId>
Expand Down