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
20 changes: 20 additions & 0 deletions .classpath
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,25 @@
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.openjfx:javafx-graphics:mac:14"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.openjfx:javafx-base:14"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.openjfx:javafx-base:mac:14"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.hibernate:hibernate-core:5.4.9.Final"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jboss.logging:jboss-logging:3.3.2.Final"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: javax.persistence:javax.persistence-api:2.2"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.javassist:javassist:3.24.0-GA"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: net.bytebuddy:byte-buddy:1.10.2"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: antlr:antlr:2.7.7"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jboss:jandex:2.1.1.Final"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.fasterxml:classmate:1.5.1"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: javax.activation:javax.activation-api:1.2.0"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.dom4j:dom4j:2.1.1"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.hibernate.common:hibernate-commons-annotations:5.1.0.Final"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: javax.xml.bind:jaxb-api:2.3.1"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.glassfish.jaxb:jaxb-runtime:2.3.1"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.glassfish.jaxb:txw2:2.3.1"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.sun.istack:istack-commons-runtime:3.0.7"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: org.jvnet.staxex:stax-ex:1.8"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.15"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: mysql:mysql-connector-java:8.0.21"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/Maven: com.google.protobuf:protobuf-java:3.11.4"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
165 changes: 67 additions & 98 deletions .idea/workspace.xml

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions Project Team Formation Mileston1.eml
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,25 @@
<level name="Maven: org.openjfx:javafx-graphics:mac:14" value="project"/>
<level name="Maven: org.openjfx:javafx-base:14" value="project"/>
<level name="Maven: org.openjfx:javafx-base:mac:14" value="project"/>
<level name="Maven: org.hibernate:hibernate-core:5.4.9.Final" value="project"/>
<level name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" value="project"/>
<level name="Maven: javax.persistence:javax.persistence-api:2.2" value="project"/>
<level name="Maven: org.javassist:javassist:3.24.0-GA" value="project"/>
<level name="Maven: net.bytebuddy:byte-buddy:1.10.2" value="project"/>
<level name="Maven: antlr:antlr:2.7.7" value="project"/>
<level name="Maven: org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final" value="project"/>
<level name="Maven: org.jboss:jandex:2.1.1.Final" value="project"/>
<level name="Maven: com.fasterxml:classmate:1.5.1" value="project"/>
<level name="Maven: javax.activation:javax.activation-api:1.2.0" value="project"/>
<level name="Maven: org.dom4j:dom4j:2.1.1" value="project"/>
<level name="Maven: org.hibernate.common:hibernate-commons-annotations:5.1.0.Final" value="project"/>
<level name="Maven: javax.xml.bind:jaxb-api:2.3.1" value="project"/>
<level name="Maven: org.glassfish.jaxb:jaxb-runtime:2.3.1" value="project"/>
<level name="Maven: org.glassfish.jaxb:txw2:2.3.1" value="project"/>
<level name="Maven: com.sun.istack:istack-commons-runtime:3.0.7" value="project"/>
<level name="Maven: org.jvnet.staxex:stax-ex:1.8" value="project"/>
<level name="Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.15" value="project"/>
<level name="Maven: mysql:mysql-connector-java:8.0.21" value="project"/>
<level name="Maven: com.google.protobuf:protobuf-java:3.11.4" value="project"/>
</levels>
</component>
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,8 @@ Database - MySQL (8.0.21)
2. OSX - `MySQL is installed but is not starting.`

Use MySQL Preference Pane (`https://dev.mysql.com/doc/mysql-osx-excerpt/5.7/en/osx-installation-prefpane.html`) to Start MySQL server.

3. MySQL commands:
Create Schema: `create schema milestone4;`
Drop Schema: `drop schema milestone4;`
Use Schema: `use milestone4;`
60 changes: 60 additions & 0 deletions rmit.userlibraries
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,66 @@
<library name="Maven: org.opentest4j:opentest4j:1.2.0">
<archive path="/Users/sakshi/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar" />
</library>
<library name="Maven: antlr:antlr:2.7.7">
<archive path="/Users/sakshi/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar" />
</library>
<library name="Maven: com.google.protobuf:protobuf-java:3.11.4">
<archive path="/Users/sakshi/.m2/repository/com/google/protobuf/protobuf-java/3.11.4/protobuf-java-3.11.4.jar" />
</library>
<library name="Maven: mysql:mysql-connector-java:8.0.21">
<archive path="/Users/sakshi/.m2/repository/mysql/mysql-connector-java/8.0.21/mysql-connector-java-8.0.21.jar" />
</library>
<library name="Maven: org.hibernate.common:hibernate-commons-annotations:5.1.0.Final">
<archive path="/Users/sakshi/.m2/repository/org/hibernate/common/hibernate-commons-annotations/5.1.0.Final/hibernate-commons-annotations-5.1.0.Final.jar" />
</library>
<library name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final">
<archive path="/Users/sakshi/.m2/repository/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar" />
</library>
<library name="Maven: org.jboss:jandex:2.1.1.Final">
<archive path="/Users/sakshi/.m2/repository/org/jboss/jandex/2.1.1.Final/jandex-2.1.1.Final.jar" />
</library>
<library name="Maven: org.jvnet.staxex:stax-ex:1.8">
<archive path="/Users/sakshi/.m2/repository/org/jvnet/staxex/stax-ex/1.8/stax-ex-1.8.jar" />
</library>
<library name="Maven: net.bytebuddy:byte-buddy:1.10.2">
<archive path="/Users/sakshi/.m2/repository/net/bytebuddy/byte-buddy/1.10.2/byte-buddy-1.10.2.jar" />
</library>
<library name="Maven: org.glassfish.jaxb:txw2:2.3.1">
<archive path="/Users/sakshi/.m2/repository/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3.1.jar" />
</library>
<library name="Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.15">
<archive path="/Users/sakshi/.m2/repository/com/sun/xml/fastinfoset/FastInfoset/1.2.15/FastInfoset-1.2.15.jar" />
</library>
<library name="Maven: com.sun.istack:istack-commons-runtime:3.0.7">
<archive path="/Users/sakshi/.m2/repository/com/sun/istack/istack-commons-runtime/3.0.7/istack-commons-runtime-3.0.7.jar" />
</library>
<library name="Maven: javax.activation:javax.activation-api:1.2.0">
<archive path="/Users/sakshi/.m2/repository/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar" />
</library>
<library name="Maven: org.javassist:javassist:3.24.0-GA">
<archive path="/Users/sakshi/.m2/repository/org/javassist/javassist/3.24.0-GA/javassist-3.24.0-GA.jar" />
</library>
<library name="Maven: javax.xml.bind:jaxb-api:2.3.1">
<archive path="/Users/sakshi/.m2/repository/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar" />
</library>
<library name="Maven: com.fasterxml:classmate:1.5.1">
<archive path="/Users/sakshi/.m2/repository/com/fasterxml/classmate/1.5.1/classmate-1.5.1.jar" />
</library>
<library name="Maven: org.hibernate:hibernate-core:5.4.9.Final">
<archive path="/Users/sakshi/.m2/repository/org/hibernate/hibernate-core/5.4.9.Final/hibernate-core-5.4.9.Final.jar" />
</library>
<library name="Maven: javax.persistence:javax.persistence-api:2.2">
<archive path="/Users/sakshi/.m2/repository/javax/persistence/javax.persistence-api/2.2/javax.persistence-api-2.2.jar" />
</library>
<library name="Maven: org.glassfish.jaxb:jaxb-runtime:2.3.1">
<archive path="/Users/sakshi/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.1/jaxb-runtime-2.3.1.jar" />
</library>
<library name="Maven: org.dom4j:dom4j:2.1.1">
<archive path="/Users/sakshi/.m2/repository/org/dom4j/dom4j/2.1.1/dom4j-2.1.1.jar" />
</library>
<library name="Maven: org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final">
<archive path="/Users/sakshi/.m2/repository/org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/1.1.1.Final/jboss-transaction-api_1.2_spec-1.1.1.Final.jar" />
</library>
<library name="Python 2.7 interpreter library">
<archive path="/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7" />
<archive path="/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin" />
Expand Down
67 changes: 50 additions & 17 deletions src/main/java/controllers/OrmFxController.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package controllers;

import enums.SuggestionMode;
import hibernate.OrmStudents;
import hibernate.OrmTeams;
import hibernate.dao.StudentsDao;
Expand All @@ -8,16 +9,10 @@
import interfaces.ITeams;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.CheckBox;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFormatter;
import javafx.scene.control.*;
import javafx.scene.layout.HBox;
import models.TeamSelection;
import services.ChartsService;
import services.FxCrudService;
import services.OrmChartsService;
import services.TeamBoxService;
import services.*;
import sources.DatafileIOclass;
import sources.Teams;
import utils.FileNames;
Expand All @@ -41,11 +36,20 @@ public class OrmFxController {
@FXML
public TextField studentInput;
@FXML
public Button addBtn;
@FXML
public Button swapBtn;
@FXML
public Button suggestionBtn;
@FXML
public Button undoSuggestionBtn;
@FXML
Alert alert = new Alert(Alert.AlertType.ERROR);
@FXML
Alert success = new Alert(Alert.AlertType.INFORMATION);
@FXML
public Map<String, TeamSelection> selection = new HashMap<>();

private TeamBoxService teamBoxesService;
private OrmChartsService ormChartsService;
StudentsDao studentsDao = new StudentsDao();
Expand All @@ -71,8 +75,8 @@ public void addMemberToTeam(ActionEvent actionEvent) {
} else {
// actual member addition to teams table in database
OrmTeamsService.addMemberToTeam(this.selection, student, teamsDao);
updateTextFields(FxErrorMessages.STUDENT_ADDED);
drawCharts();
updateTextFields(FxErrorMessages.STUDENT_ADDED, SuggestionMode.DISABLED);
drawCharts(SuggestionMode.DISABLED);
}
}
}
Expand All @@ -88,15 +92,29 @@ public void swapMembers(ActionEvent actionEvent) {
List<OrmTeams> ormTeams = teamsDao.getAllTeamsById(selectedTeamIds);
if (ormStudents != null && ormStudents.size() == 2) {
teamsDao.swapMembersInTeams(this.selection, selectedStudentIds, ormTeams);
drawCharts();
updateTextFields(FxErrorMessages.STUDENTS_SWAPPED);
drawCharts(SuggestionMode.DISABLED);
updateTextFields(FxErrorMessages.STUDENTS_SWAPPED, SuggestionMode.DISABLED);
} else {
alert.setContentText(FxErrorMessages.INVALID_STUDENTS_SELECTED);
alert.show();
}
}
}

public void suggestTeams(ActionEvent actionEvent) {
toggleButtons(SuggestionMode.ENABLED);
SuggestionService.suggestTeams(teamsDao, 5);
updateTextFields(FxErrorMessages.TEAMS_SUGGESTED, SuggestionMode.ENABLED);
drawCharts(SuggestionMode.ENABLED);
}

public void undoSuggestion(ActionEvent actionEvent) {
toggleButtons(SuggestionMode.DISABLED);
SuggestionService.suggestTeams(teamsDao, 5);
updateTextFields(FxErrorMessages.UNDO_SUGGESTION, SuggestionMode.DISABLED);
drawCharts(SuggestionMode.DISABLED);
}

public void updateSelection(ActionEvent actionEvent) {
boolean isSelected = ((CheckBox) actionEvent.getTarget()).isSelected();
String sourceId = ((CheckBox) actionEvent.getSource()).getId();
Expand All @@ -116,7 +134,8 @@ public void initialize() {
return change;
}));
createTeamBoxes();
drawCharts();
toggleButtons(SuggestionMode.DISABLED);
drawCharts(SuggestionMode.DISABLED);
}

private void createTeamBoxes() {
Expand All @@ -126,14 +145,28 @@ private void createTeamBoxes() {
teamBoxesService = teamBoxService;
}

private void drawCharts() {
private void drawCharts(SuggestionMode suggestionMode) {
ormChartsService = new OrmChartsService(teamsDao);
chartsContainer.getChildren().setAll(ormChartsService.drawCharts());
chartsContainer.getChildren().setAll(ormChartsService.drawCharts(suggestionMode));
}

private void updateTextFields(String successMessage) {
teamBoxesService.populateMemberIdsWithOrm(5, false);
private void updateTextFields(String successMessage, SuggestionMode suggestionMode) {
teamBoxesService.populateMemberIdsWithOrm(5, false, suggestionMode);
success.setContentText(successMessage);
success.show();
}

private void toggleButtons(SuggestionMode suggestionMode) {
if (suggestionMode == SuggestionMode.ENABLED) {
this.addBtn.setDisable(true);
this.swapBtn.setDisable(true);
this.suggestionBtn.setDisable(true);
this.undoSuggestionBtn.setDisable(false);
} else {
this.addBtn.setDisable(false);
this.swapBtn.setDisable(false);
this.suggestionBtn.setDisable(false);
this.undoSuggestionBtn.setDisable(true);
}
}
}
6 changes: 6 additions & 0 deletions src/main/java/enums/SuggestionMode.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package enums;

public enum SuggestionMode {
ENABLED,
DISABLED
}
99 changes: 99 additions & 0 deletions src/main/java/hibernate/OrmSuggestedTeams.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
package hibernate;

import interfaces.ITeams;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "suggested_teams")
public class OrmSuggestedTeams implements ITeams {

public static List<OrmSuggestedTeams> fromOrmTeams(List<OrmTeams> ormTeamsList) {
List<OrmSuggestedTeams> suggestedTeams = new ArrayList<>();
for(OrmTeams ormTeam: ormTeamsList) {
OrmSuggestedTeams ormSuggestedTeam = new OrmSuggestedTeams();
ormSuggestedTeam.setId(ormTeam.getId());
ormSuggestedTeam.setProject(ormTeam.getProject());
ormSuggestedTeam.setStudent1(ormTeam.getStudent1());
ormSuggestedTeam.setStudent2(ormTeam.getStudent2());
ormSuggestedTeam.setStudent3(ormTeam.getStudent3());
ormSuggestedTeam.setStudent4(ormTeam.getStudent4());
suggestedTeams.add(ormSuggestedTeam);
}
return suggestedTeams;
}

@Id
@Column(name = "id")
private int id;

@OneToOne(targetEntity = OrmProjects.class)
@JoinColumn(name="project_id", unique = true)
private OrmProjects project;

@OneToOne(targetEntity = OrmStudents.class)
@JoinColumn(name="student_id_1")
private OrmStudents student1;

@OneToOne(targetEntity = OrmStudents.class)
@JoinColumn(name="student_id_2")
private OrmStudents student2;

@OneToOne(targetEntity = OrmStudents.class)
@JoinColumn(name="student_id_3")
private OrmStudents student3;

@OneToOne(targetEntity = OrmStudents.class)
@JoinColumn(name="student_id_4")
private OrmStudents student4;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public OrmProjects getProject() {
return project;
}

public void setProject(OrmProjects project) {
this.project = project;
}

public OrmStudents getStudent1() {
return student1;
}

public void setStudent1(OrmStudents student1) {
this.student1 = student1;
}

public OrmStudents getStudent2() {
return student2;
}

public void setStudent2(OrmStudents student2) {
this.student2 = student2;
}

public OrmStudents getStudent3() {
return student3;
}

public void setStudent3(OrmStudents student3) {
this.student3 = student3;
}

public OrmStudents getStudent4() {
return student4;
}

public void setStudent4(OrmStudents student4) {
this.student4 = student4;
}
}
18 changes: 18 additions & 0 deletions src/main/java/hibernate/OrmTeams.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,28 @@
import utils.Validators;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "teams")
public class OrmTeams implements ITeams {

public static List<OrmTeams> fromSuggestedTeams(List<OrmSuggestedTeams> ormSuggestedTeamsList) {
List<OrmTeams> ormTeams = new ArrayList<>();
for(OrmSuggestedTeams ormSuggestedTeam: ormSuggestedTeamsList) {
OrmTeams ormTeam = new OrmTeams();
ormTeam.setId(ormSuggestedTeam.getId());
ormTeam.setProject(ormSuggestedTeam.getProject());
ormTeam.setStudent1(ormSuggestedTeam.getStudent1());
ormTeam.setStudent2(ormSuggestedTeam.getStudent2());
ormTeam.setStudent3(ormSuggestedTeam.getStudent3());
ormTeam.setStudent4(ormSuggestedTeam.getStudent4());
ormTeams.add(ormTeam);
}
return ormTeams;
}

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
Expand Down
Loading