From 04ed7383c51a5e23f0ca17bfd9ee9445137ac126 Mon Sep 17 00:00:00 2001
From: Matej Lukes <456316@mail.muni.cz>
Date: Mon, 21 Oct 2019 18:17:14 +0200
Subject: [PATCH] JavaDoc added to classes, hashCode() override added

---
 MeshModel/MeshModel.iml                         |  2 +-
 .../analyst/mesh/core/MeshComponent.java        |  5 +++++
 .../analyst/mesh/core/MeshComposite.java        |  5 +++++
 .../cz/fidentis/analyst/mesh/core/MeshEdge.java | 17 +++++++++++++++--
 .../cz/fidentis/analyst/mesh/core/MeshFace.java |  5 +++++
 .../fidentis/analyst/mesh/core/MeshFacet.java   |  6 +++++-
 .../cz/fidentis/analyst/mesh/core/MeshLeaf.java |  6 +++++-
 .../fidentis/analyst/mesh/core/MeshModel.java   |  3 +++
 .../fidentis/analyst/mesh/core/MeshPoint.java   | 11 ++++++++++-
 9 files changed, 54 insertions(+), 6 deletions(-)
 rename MeshModel/src/main/{ => java}/cz/fidentis/analyst/mesh/core/MeshComponent.java (86%)
 rename MeshModel/src/main/{ => java}/cz/fidentis/analyst/mesh/core/MeshComposite.java (82%)
 rename MeshModel/src/main/{ => java}/cz/fidentis/analyst/mesh/core/MeshEdge.java (75%)
 rename MeshModel/src/main/{ => java}/cz/fidentis/analyst/mesh/core/MeshFace.java (79%)
 rename MeshModel/src/main/{ => java}/cz/fidentis/analyst/mesh/core/MeshFacet.java (92%)
 rename MeshModel/src/main/{ => java}/cz/fidentis/analyst/mesh/core/MeshLeaf.java (82%)
 rename MeshModel/src/main/{ => java}/cz/fidentis/analyst/mesh/core/MeshModel.java (90%)
 rename MeshModel/src/main/{ => java}/cz/fidentis/analyst/mesh/core/MeshPoint.java (81%)

diff --git a/MeshModel/MeshModel.iml b/MeshModel/MeshModel.iml
index e29c6dca..6476cacf 100644
--- a/MeshModel/MeshModel.iml
+++ b/MeshModel/MeshModel.iml
@@ -5,7 +5,7 @@
     <output-test url="file://$MODULE_DIR$/target/test-classes" />
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
       <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
     <orderEntry type="inheritedJdk" />
diff --git a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshComponent.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshComponent.java
similarity index 86%
rename from MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshComponent.java
rename to MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshComponent.java
index acbea11f..475bb816 100644
--- a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshComponent.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshComponent.java
@@ -2,6 +2,11 @@ package cz.fidentis.analyst.mesh.core;
 
 import java.util.List;
 
+/**
+ * Abstract universal node, implements management of parent elements
+ *
+ * @author Matej Lukes
+ */
 public abstract class MeshComponent {
     private List<MeshComponent> parents;
 
diff --git a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshComposite.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshComposite.java
similarity index 82%
rename from MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshComposite.java
rename to MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshComposite.java
index e4d1c57e..0c36e473 100644
--- a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshComposite.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshComposite.java
@@ -2,6 +2,11 @@ package cz.fidentis.analyst.mesh.core;
 
 import java.util.List;
 
+/**
+ * Inner node of the Hierarchy, implements management of child elements
+ *
+ * @author Matej Lukes
+ */
 public class MeshComposite extends MeshComponent {
     private List<MeshComponent> children;
 
diff --git a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshEdge.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshEdge.java
similarity index 75%
rename from MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshEdge.java
rename to MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshEdge.java
index f9a4fd2b..d44572b9 100644
--- a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshEdge.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshEdge.java
@@ -1,7 +1,10 @@
 package cz.fidentis.analyst.mesh.core;
 
-import java.util.List;
-
+/**
+ * MeshEdge is an edge shared between two MeshFaces.
+ *
+ * @author Matej Lukes
+ */
 public class MeshEdge extends MeshComposite {
 
     public MeshEdge(MeshPoint point1, MeshPoint point2){
@@ -40,4 +43,14 @@ public class MeshEdge extends MeshComposite {
 
         return true;
     }
+
+    @Override
+    public int hashCode() {
+        int hash = 0;
+        for (MeshComponent point :
+                getChildren()) {
+            hash += point.hashCode();
+        }
+        return hash;
+    }
 }
diff --git a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshFace.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFace.java
similarity index 79%
rename from MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshFace.java
rename to MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFace.java
index 56353420..dc7a6dff 100644
--- a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshFace.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFace.java
@@ -1,5 +1,10 @@
 package cz.fidentis.analyst.mesh.core;
 
+/**
+ * MeshFace is a surface triangle or planar polygon
+ *
+ * @author Matej Lukes
+ */
 public class MeshFace extends MeshComposite {
     /**
      * @param newChild new child element must be MeshEdge
diff --git a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshFacet.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java
similarity index 92%
rename from MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshFacet.java
rename to MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java
index 5afa5c8c..0578c722 100644
--- a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshFacet.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshFacet.java
@@ -1,9 +1,13 @@
 package cz.fidentis.analyst.mesh.core;
 
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
+/**
+ * MashFacet is a group of MeshFaces
+ *
+ * @author Matej Lukes
+ */
 public class MeshFacet extends MeshComposite {
 
     private Map<MeshPoint, MeshPoint> pointPool = new HashMap<>();
diff --git a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshLeaf.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshLeaf.java
similarity index 82%
rename from MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshLeaf.java
rename to MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshLeaf.java
index 10f5eb42..19c6e0a4 100644
--- a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshLeaf.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshLeaf.java
@@ -1,8 +1,12 @@
 package cz.fidentis.analyst.mesh.core;
 
-import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * MeshLeaf is a  leaf node of the hierarchy
+ *
+ * @author Matej Lukes
+ */
 public class MeshLeaf extends MeshComponent {
     /**
      * MeshLeaf does not have child elements
diff --git a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshModel.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java
similarity index 90%
rename from MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshModel.java
rename to MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java
index f1c7ff0f..dee66dec 100644
--- a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshModel.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshModel.java
@@ -2,6 +2,9 @@ package cz.fidentis.analyst.mesh.core;
 
 import java.util.List;
 
+/**
+ * MeshModel is a root node of the hierarchy
+ */
 public class MeshModel extends MeshComposite {
     /**
      * MeshModel is root element, it does not have parent elements
diff --git a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshPoint.java b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java
similarity index 81%
rename from MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshPoint.java
rename to MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java
index e066417b..dc87a21b 100644
--- a/MeshModel/src/main/cz/fidentis/analyst/mesh/core/MeshPoint.java
+++ b/MeshModel/src/main/java/cz/fidentis/analyst/mesh/core/MeshPoint.java
@@ -1,8 +1,12 @@
 package cz.fidentis.analyst.mesh.core;
 
 import javax.vecmath.Vector3d;
-import java.util.List;
 
+/**
+ * MeshPoint represents a point with position, normal, and texture coordinates
+ *
+ * @author Matej Lukes
+ */
 public class MeshPoint extends MeshLeaf {
     private final Vector3d position, normal, texCoord;
 
@@ -50,4 +54,9 @@ public class MeshPoint extends MeshLeaf {
                 && this.normal.equals(meshPointObj.normal)
                 && this.texCoord.equals(meshPointObj.texCoord);
     }
+
+    @Override
+    public int hashCode() {
+        return position.hashCode() + normal.hashCode() + texCoord.hashCode();
+    }
 }
-- 
GitLab