Skip to content

Commit b910ea9

Browse files
committed
Fix #2683
1 parent 963308a commit b910ea9

File tree

4 files changed

+102
-13
lines changed

4 files changed

+102
-13
lines changed

modules/ProjectAPI/src/main/java/org/gephi/project/impl/ProjectMetaDataImpl.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ Development and Distribution License("CDDL") (collectively, the
4242

4343
package org.gephi.project.impl;
4444

45+
import java.util.Objects;
4546
import org.gephi.project.api.ProjectMetaData;
4647

4748
/**
@@ -100,4 +101,36 @@ public String getTitle() {
100101
public void setTitle(String title) {
101102
this.title = title;
102103
}
104+
105+
@Override
106+
public boolean equals(Object o) {
107+
if (this == o) {
108+
return true;
109+
}
110+
if (o == null || getClass() != o.getClass()) {
111+
return false;
112+
}
113+
114+
ProjectMetaDataImpl that = (ProjectMetaDataImpl) o;
115+
116+
if (!Objects.equals(author, that.author)) {
117+
return false;
118+
}
119+
if (!Objects.equals(title, that.title)) {
120+
return false;
121+
}
122+
if (!Objects.equals(keywords, that.keywords)) {
123+
return false;
124+
}
125+
return Objects.equals(description, that.description);
126+
}
127+
128+
@Override
129+
public int hashCode() {
130+
int result = author != null ? author.hashCode() : 0;
131+
result = 31 * result + (title != null ? title.hashCode() : 0);
132+
result = 31 * result + (keywords != null ? keywords.hashCode() : 0);
133+
result = 31 * result + (description != null ? description.hashCode() : 0);
134+
return result;
135+
}
103136
}

modules/ProjectAPI/src/main/java/org/gephi/project/impl/WorkspaceMetaDataImpl.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.gephi.project.impl;
22

3+
import java.util.Objects;
34
import org.gephi.project.api.WorkspaceMetaData;
45

56
public class WorkspaceMetaDataImpl implements WorkspaceMetaData {
@@ -15,4 +16,23 @@ public String getDescription() {
1516
public void setDescription(String description) {
1617
this.description = description;
1718
}
19+
20+
@Override
21+
public boolean equals(Object o) {
22+
if (this == o) {
23+
return true;
24+
}
25+
if (o == null || getClass() != o.getClass()) {
26+
return false;
27+
}
28+
29+
WorkspaceMetaDataImpl that = (WorkspaceMetaDataImpl) o;
30+
31+
return Objects.equals(description, that.description);
32+
}
33+
34+
@Override
35+
public int hashCode() {
36+
return description != null ? description.hashCode() : 0;
37+
}
1838
}

modules/ProjectAPI/src/main/java/org/gephi/project/io/GephiReader.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ public static ProjectImpl readProject(XMLStreamReader reader, ProjectsImpl proje
9393
int workspaceIds = Integer.parseInt(reader.getAttributeValue(null, "ids"));
9494
project.setWorkspaceIds(workspaceIds);
9595
}
96+
} else if ("metadata".equalsIgnoreCase(name)) {
97+
readProjectMetadata(reader, project);
9698
}
9799
} else if (eventType.equals(XMLStreamReader.END_ELEMENT)) {
98100
if ("project".equalsIgnoreCase(reader.getLocalName())) {
@@ -170,6 +172,37 @@ private static void readWorkspaceMetadata(XMLStreamReader reader, Workspace work
170172
}
171173
}
172174

175+
private static void readProjectMetadata(XMLStreamReader reader, ProjectImpl project) throws Exception {
176+
String property = null;
177+
while (reader.hasNext()) {
178+
Integer eventType = reader.next();
179+
if (eventType.equals(XMLEvent.START_ELEMENT)) {
180+
property = reader.getLocalName();
181+
} else if (eventType.equals(XMLStreamReader.CHARACTERS)) {
182+
if (property != null) {
183+
switch (property) {
184+
case "title":
185+
project.getProjectMetadata().setTitle(reader.getText());
186+
break;
187+
case "author":
188+
project.getProjectMetadata().setAuthor(reader.getText());
189+
break;
190+
case "description":
191+
project.getProjectMetadata().setDescription(reader.getText());
192+
break;
193+
case "keywords":
194+
project.getProjectMetadata().setKeywords(reader.getText());
195+
break;
196+
}
197+
}
198+
} else if (eventType.equals(XMLStreamReader.END_ELEMENT)) {
199+
if ("metadata".equalsIgnoreCase(reader.getLocalName())) {
200+
return;
201+
}
202+
}
203+
}
204+
}
205+
173206
public static void readWorkspaceChildren(Workspace workspace, XMLStreamReader reader,
174207
WorkspaceXMLPersistenceProvider persistenceProvider) throws Exception {
175208
String identifier = persistenceProvider.getIdentifier();

modules/ProjectAPI/src/test/java/org/gephi/project/io/GephiWriterReaderTest.java

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,21 @@ public void testProject() throws Exception {
2727
Assert.assertEquals(project, readProject);
2828
}
2929

30-
// @Test
31-
// public void testProjectMetadata() throws Exception {
32-
// ProjectImpl project = Utils.newProject();
33-
// project.getProjectMetadata().setDescription("foo");
34-
// ProjectImpl readProject = writeAndReadProject(project);
35-
//
36-
// //TODO Implement deepEquals in ProjectImpl
37-
// Assert.assertNotNull(readProject);
38-
// Assert.assertEquals(Utils.PROJECT_NAME, readProject.getName());
39-
// Assert.assertEquals(project, readProject);
40-
// Assert.assertEquals("foo", readProject.getProjectMetadata().getDescription());
41-
// }
30+
@Test
31+
public void testProjectMetadata() throws Exception {
32+
ProjectImpl project = Utils.newProject();
33+
project.getProjectMetadata().setDescription("desc");
34+
project.getProjectMetadata().setTitle("title");
35+
project.getProjectMetadata().setKeywords("keywords");
36+
project.getProjectMetadata().setAuthor("author");
37+
ProjectImpl readProject = writeAndReadProject(project);
38+
39+
//TODO Implement deepEquals in ProjectImpl
40+
Assert.assertNotNull(readProject);
41+
Assert.assertEquals(Utils.PROJECT_NAME, readProject.getName());
42+
Assert.assertEquals(project, readProject);
43+
Assert.assertEquals(project.getProjectMetadata(), readProject.getProjectMetadata());
44+
}
4245

4346
@Test
4447
public void testWorkspace() throws Exception {
@@ -57,7 +60,7 @@ public void testWorkspaceMetadata() throws Exception {
5760
workspace.getWorkspaceMetadata().setDescription("foo");
5861

5962
Workspace read = writeAndReadWorkspace(workspace);
60-
Assert.assertEquals("foo", read.getWorkspaceMetadata().getDescription());
63+
Assert.assertEquals(workspace.getWorkspaceMetadata(), read.getWorkspaceMetadata());
6164
}
6265

6366
@Test

0 commit comments

Comments
 (0)