diff --git a/gemeinsamforschen/pom.xml b/gemeinsamforschen/pom.xml index 52c20b79f71aee59a5981002bb0cfffe254b46ba..3a31d850554eabd40f1a94690e8bbcc548fe10a6 100644 --- a/gemeinsamforschen/pom.xml +++ b/gemeinsamforschen/pom.xml @@ -171,7 +171,26 @@ <version>0.11.0</version> </dependency> - <!-- state rules --> + + <!-- https://mvnrepository.com/artifact/de.dev-eth0.dummycreator/dummy-creator --> + <!-- <dependency> + <groupId>de.dev-eth0.dummycreator</groupId> + <artifactId>dummy-creator</artifactId> + <version>1.2</version> + </dependency>--> + + <!-- https://mvnrepository.com/artifact/org.mockito/mockito-all --> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <version>2.19.0</version> + </dependency> + + <dependency> + <groupId>uk.co.jemos.podam</groupId> + <artifactId>podam</artifactId> + <version>7.1.1.RELEASE</version> + </dependency> </dependencies> diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java index b1e37de6b0852ebc84668f6eab51cd42799d5b07..e606a19ef178979899203b88edd3f23988ead05d 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java @@ -12,8 +12,15 @@ import unipotsdam.gf.modules.journal.DummyJournalImpl; import unipotsdam.gf.modules.journal.model.Journal; import unipotsdam.gf.modules.journal.service.DummyJournalService; import unipotsdam.gf.modules.peer2peerfeedback.DummyFeedback; +import unipotsdam.gf.modules.researchreport.DummyResearchReportManagement; +import unipotsdam.gf.modules.researchreport.ResearchReport; +import unipotsdam.gf.modules.researchreport.ResearchReportManagement; public class GFApplicationBinder extends AbstractBinder { + + /** + * TODO replace DummyImplementation + */ @Override protected void configure() { bind(CommunicationDummyService.class).to(ICommunication.class); @@ -22,5 +29,7 @@ public class GFApplicationBinder extends AbstractBinder { bind(DummyJournalImpl.class).to(IJournal.class); bind(PeerAssessmentDummy.class).to(IPeerAssessment.class); bind(PhasesImpl.class).to(IPhases.class); + bind(ManagementImpl.class).to(Management.class); + bind(DummyResearchReportManagement.class).to(ResearchReportManagement.class); } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java index 73c0b1e608c2ea6dc3821ad703904162908d9577..3c238f6be74199530d2e17a37d65ce7244858bab 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java @@ -2,6 +2,7 @@ package unipotsdam.gf.core.management; import unipotsdam.gf.core.management.group.Group; import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.core.management.project.ProjectConfiguration; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.core.management.user.UserInterests; import unipotsdam.gf.core.management.user.UserProfile; @@ -120,5 +121,9 @@ public interface Management { void deleteGroupMember(User groupMember, int groupId); List<Group> getGroupsByProjectId(String projectId); + + void create(ProjectConfiguration projectConfiguration, Project project); + + ProjectConfiguration getProjectConfiguration(Project project); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java index 0bb16d84013c6b0e50dcf2c0b747364b497d5d87..b1ea7aaeef0ce3f55377f7d7763c27b425526d42 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java @@ -4,6 +4,7 @@ import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; import unipotsdam.gf.core.management.group.Group; import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.core.management.project.ProjectConfiguration; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.core.management.user.UserInterests; import unipotsdam.gf.core.management.user.UserProfile; @@ -326,4 +327,9 @@ public class ManagementImpl implements Management { return groups; } } + + @Override + public void create(ProjectConfiguration projectConfiguration, Project project) { + // TODO implement + } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..e7732ac5bfaeb9b8ecf988a34dd4662930998118 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java @@ -0,0 +1,65 @@ +package unipotsdam.gf.core.management.project; + +import unipotsdam.gf.core.states.ProjectPhase; +import unipotsdam.gf.modules.assessment.AssessmentMechanism; +import unipotsdam.gf.modules.groupfinding.GroupFormationMechanism; +import unipotsdam.gf.modules.peer2peerfeedback.Category; + +import java.util.HashMap; + +// TODO implement +public class ProjectConfiguration { + + private HashMap<ProjectPhase, Boolean> phasesSelected; + private HashMap<Category, Boolean> criteriaSelected; + private HashMap<AssessmentMechanism, Boolean> assessmentMechanismSelected; + private HashMap<GroupFormationMechanism, Boolean> groupMechanismSelected; + + public ProjectConfiguration( + HashMap<ProjectPhase, Boolean> phasesSelected, HashMap<Category, Boolean> criteriaSelected, + HashMap<AssessmentMechanism, Boolean> assessmentMechanismSelected, + HashMap<GroupFormationMechanism, Boolean> groupMechanismSelected) { + this.phasesSelected = phasesSelected; + this.criteriaSelected = criteriaSelected; + this.assessmentMechanismSelected = assessmentMechanismSelected; + this.groupMechanismSelected = groupMechanismSelected; + } + + public HashMap<ProjectPhase, Boolean> getPhasesSelected() { + return phasesSelected; + } + + public void setPhasesSelected(HashMap<ProjectPhase, Boolean> phasesSelected) { + this.phasesSelected = phasesSelected; + } + + public HashMap<Category, Boolean> getCriteriaSelected() { + return criteriaSelected; + } + + public void setCriteriaSelected( + HashMap<Category, Boolean> criteriaSelected) { + this.criteriaSelected = criteriaSelected; + } + + public HashMap<AssessmentMechanism, Boolean> getAssessmentMechanismSelected() { + return assessmentMechanismSelected; + } + + public void setAssessmentMechanismSelected( + HashMap<AssessmentMechanism, Boolean> assessmentMechanismSelected) { + this.assessmentMechanismSelected = assessmentMechanismSelected; + } + + + public HashMap<GroupFormationMechanism, Boolean> getGroupMechanismSelected() { + return groupMechanismSelected; + } + + public void setGroupMechanismSelected( + HashMap<GroupFormationMechanism, Boolean> groupMechanismSelected) { + this.groupMechanismSelected = groupMechanismSelected; + } + + +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java index 5a882917907b4b844080d64a7136fca88eac382e..5f70b51d18b5b423a9e419294622668040fcee19 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java @@ -2,7 +2,8 @@ package unipotsdam.gf.interfaces; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.modules.peer2peerfeedback.Peer2PeerFeedback; -import java.*; +import unipotsdam.gf.modules.researchreport.ResearchReport; + import java.io.File; import java.util.ArrayList; @@ -27,12 +28,12 @@ public interface Feedback { /** * give Peer2PeerFeedback * - * @param feedback: The Peer2PeerFeedback as an Object - * @param document: The selected document + * @param feedback : The Peer2PeerFeedback as an Object + * @param document : The selected document * @return Send feedback with doc and return true, if the feedback is successfully sended */ - Boolean giveFeedback(Peer2PeerFeedback feedback, File document); + Boolean giveFeedback(Peer2PeerFeedback feedback, ResearchReport document); /** * show Feedbackhistory @@ -59,5 +60,21 @@ public interface Feedback { */ Boolean checkFeedbackConstraints(Project project); + /** + * TODO implement a routine that assigns missing feedback tasks if someone drops out of a course + * @param project + */ void assigningMissingFeedbackTasks(Project project); + + /** + * TODO implement: Assigns each student in a project a feedback target + */ + void assignFeedbackTasks(); + + /** + * TODO implement: Get the research report you have to give feedback to + * @param student + * @return + */ + ResearchReport getFeedbackTask(User student); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICourseCreation.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICourseCreation.java new file mode 100644 index 0000000000000000000000000000000000000000..2d0b0f5a4e34646e177ce3cf5cd044925c2458f9 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICourseCreation.java @@ -0,0 +1,4 @@ +package unipotsdam.gf.interfaces; + +public interface ICourseCreation { +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentMechanism.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentMechanism.java new file mode 100644 index 0000000000000000000000000000000000000000..b3692469832c184c21d3f983fb6cd87202c96e05 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentMechanism.java @@ -0,0 +1,7 @@ +package unipotsdam.gf.modules.assessment; + +public enum AssessmentMechanism { + AXEL_MECHANISM, + CHRISTIAN_MECHANISM, + COMBINATIONXY +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/GroupFormationMechanism.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/GroupFormationMechanism.java new file mode 100644 index 0000000000000000000000000000000000000000..b8addf85f4f9789f9e9d52c705c0308cecbd372f --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/GroupFormationMechanism.java @@ -0,0 +1,7 @@ +package unipotsdam.gf.modules.groupfinding; + +public enum GroupFormationMechanism { + Manual, + LearningGoalStrategy, + UserProfilStrategy +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupCreation/service/GroupCreationService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java similarity index 98% rename from gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupCreation/service/GroupCreationService.java rename to gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java index 23127b12dc29e93f9d76e299c81619229fab16e4..5238e9530cee936020be2d577c172fffaba79e7c 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupCreation/service/GroupCreationService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java @@ -1,4 +1,4 @@ -package unipotsdam.gf.modules.groupCreation.service; +package unipotsdam.gf.modules.groupfinding.service; import unipotsdam.gf.core.management.Management; import unipotsdam.gf.core.management.group.Group; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java index a8a2d0d178ac2f5bd516b2e5a4a4d151c28f9c32..d8894437354dc1e6f4fbbd6d75cebb6d0fde3e8e 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java @@ -3,6 +3,7 @@ package unipotsdam.gf.modules.peer2peerfeedback; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.interfaces.Feedback; +import unipotsdam.gf.modules.researchreport.ResearchReport; import java.io.File; import java.util.ArrayList; @@ -15,7 +16,7 @@ public class DummyFeedback implements Feedback { } @Override - public Boolean giveFeedback(Peer2PeerFeedback feedback, File document) { + public Boolean giveFeedback(Peer2PeerFeedback feedback, ResearchReport document) { return null; } @@ -40,4 +41,9 @@ public class DummyFeedback implements Feedback { public void assigningMissingFeedbackTasks(Project project) { System.out.println("assigning fake tasks"); } + + @Override + public void assignFeedbackTasks() { + + } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/DummyResearchReportManagement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/DummyResearchReportManagement.java new file mode 100644 index 0000000000000000000000000000000000000000..712378eddbc2718b04fe597a1caf86c59e45ef31 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/DummyResearchReportManagement.java @@ -0,0 +1,28 @@ +package unipotsdam.gf.modules.researchreport; + +import sun.reflect.generics.reflectiveObjects.NotImplementedException; +import unipotsdam.gf.core.management.user.User; + +import java.io.File; + +public class DummyResearchReportManagement implements ResearchReportManagement { + @Override + public String createResearchReport(ResearchReport researchReport, User student) { + throw new NotImplementedException(); + } + + @Override + public boolean updateResearchReport(ResearchReport researchReport) { + return false; + } + + @Override + public boolean deleteReport(ResearchReport researchReport) { + return false; + } + + @Override + public File getResearchReport(ResearchReport researchReport) { + return null; + } +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/ResearchReport.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/ResearchReport.java index c90d34735321bcdeb5b81ecc16acf509529d9625..89ab3ef6d5bb34f6dea4adb77aea9566fc729492 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/ResearchReport.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/ResearchReport.java @@ -6,6 +6,7 @@ public class ResearchReport { // TODO add properties private String title; private ResearchQuestion researchQuestion; + private List<String> learningGoals; private String method; private String research; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/ResearchReportManagement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/ResearchReportManagement.java index 5355ab90768c8eadfc0800c2553dd70a483f5324..8283acc4482d7bfe8cba0ba63a1bc7742be28e17 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/ResearchReportManagement.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/ResearchReportManagement.java @@ -1,6 +1,6 @@ package unipotsdam.gf.modules.researchreport; -import unipotsdam.gf.modules.researchreport.ResearchReport; +import unipotsdam.gf.core.management.user.User; import java.io.File; @@ -15,9 +15,10 @@ public interface ResearchReportManagement { * Create a File * * @param researchReport Name of the Report + * @param student * @return Returns the reportId */ - String createResearchReport(ResearchReport researchReport); + String createResearchReport(ResearchReport researchReport, User student); /** diff --git a/gemeinsamforschen/src/main/resources/log4j2.xml b/gemeinsamforschen/src/main/resources/log4j2.xml index 44a5bde6b293c2233cb735339118c356d16db9dc..0282185a4ed09bdaf570f6c40599a7fc187866ed 100644 --- a/gemeinsamforschen/src/main/resources/log4j2.xml +++ b/gemeinsamforschen/src/main/resources/log4j2.xml @@ -6,7 +6,7 @@ </Console> </Appenders> <Loggers> - <Root level="debug"> + <Root level="INFO"> <AppenderRef ref="Console"/> </Root> </Loggers> diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6cd64c4818575deac1faeb9699c524c9317ffb32 --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java @@ -0,0 +1,173 @@ +package unipotsdam.gf.interfaces; + +import org.glassfish.hk2.api.ServiceLocator; +import org.glassfish.hk2.utilities.ServiceLocatorUtilities; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoJUnitRunner; +import org.mockito.junit.MockitoRule; +import uk.co.jemos.podam.api.PodamFactory; +import uk.co.jemos.podam.api.PodamFactoryImpl; +import unipotsdam.gf.config.GFApplicationBinder; +import unipotsdam.gf.core.management.Management; +import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.core.management.project.ProjectConfiguration; +import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.core.states.ProjectPhase; +import unipotsdam.gf.modules.assessment.AssessmentMechanism; +import unipotsdam.gf.modules.groupfinding.GroupFormationMechanism; +import unipotsdam.gf.modules.peer2peerfeedback.Category; +import unipotsdam.gf.modules.peer2peerfeedback.Peer2PeerFeedback; +import unipotsdam.gf.modules.researchreport.ResearchReport; +import unipotsdam.gf.modules.researchreport.ResearchReportManagement; +import javax.inject.Inject; +import java.util.ArrayList; +import java.util.HashMap; + +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + + +@RunWith(MockitoJUnitRunner.class) +public class ActivityFlowTest { + + + /** + * Utility to creaty dummy data for students + */ + PodamFactory factory = new PodamFactoryImpl(); + + @Inject + Management management; + + @Inject + ResearchReportManagement researchReportManagement; + + @Inject + Feedback feedback; + + @Inject + IPhases phases; + + private final Project project = factory.manufacturePojo(Project.class); + private final ArrayList<User> students = new ArrayList<>(); + private final User teacher = factory.manufacturePojo(User.class); + + @Rule + public MockitoRule mockitoRule = MockitoJUnit.rule(); + + @Before + public void setUp() { + final ServiceLocator locator = ServiceLocatorUtilities.bind(new GFApplicationBinder()); + locator.inject(this); + } + + + + @Test + public void activityPlayer() { + // register teacher + loginTeacher(); + + // create course + createCourse(); + + // register students + loginStudents(); + + // end first phase + phases.endPhase(ProjectPhase.CourseCreation, project); + + // upload dossiers + uploadDossiers(); + + // end first phase + phases.endPhase(ProjectPhase.DossierFeedback, project); + + // update reflections + uploadReflections(); + + // end execution phase + phases.endPhase(ProjectPhase.Execution, project); + } + + + public void loginTeacher() { + teacher.setStudent(false); + management.create(teacher, null); + } + + + public void loginStudents() { + for (int i=0;i<100;i++) { + User student = factory.manufacturePojo(User.class); + student.setStudent(true); + students.add(student); + management.create(student, null); + } + } + + public void uploadReflections() { + // update single reflection + + // answer quiz + + // + } + + public void uploadDossiers() { + + for (User student : students) { + // persist dossiers + ResearchReport researchReport = factory.manufacturePojo(ResearchReport.class); + researchReportManagement.createResearchReport(researchReport, student); + } + + // assert that after the last report has been submitted, the feedback tasks were assigned automatically + verify(feedback, times(1)).assignFeedbackTasks(); + + // students give feedback + for (User student : students) { + ResearchReport feedbackTask = feedback.getFeedbackTask(student); + ProjectConfiguration projectConfiguration = management.getProjectConfiguration(project); + HashMap<Category, Boolean> criteriaSelected = projectConfiguration.getCriteriaSelected(); + for (Category category : criteriaSelected.keySet()) { + if (criteriaSelected.get(category)) { + Peer2PeerFeedback peer2PeerFeedback = factory.manufacturePojo(Peer2PeerFeedback.class); + peer2PeerFeedback.setFeedbackcategory(category); + feedback.giveFeedback(peer2PeerFeedback, feedbackTask); + } + } + } + + // students upload updated dossier + + // docent finishes phase + + // student misses feedback -> reassignment + + // feedback restarted + } + + + public void createCourse() { + // add Titel + Project project = new Project(); + project.setId("testprojekt"); + management.create(project); + + // select criteria, topics, phases, assessment criteria + HashMap<ProjectPhase, Boolean> phasesSelected = new HashMap<>(); + HashMap<Category, Boolean> criteriaSelected = new HashMap<>(); + HashMap<AssessmentMechanism, Boolean> assessemtsSelected = new HashMap<>(); + HashMap<GroupFormationMechanism, Boolean> groupFormationSelected = new HashMap<>(); + ProjectConfiguration projectConfiguration = new ProjectConfiguration(phasesSelected, criteriaSelected, + assessemtsSelected, groupFormationSelected); + management.create(projectConfiguration, project); + + // + } +} diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java index a4f54632fa0b338920dd264916ee909e627a0517..9d59d39a89bade2431dee22455ef1bcc457c1f2a 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java @@ -1,26 +1,17 @@ package unipotsdam.gf.interfaces; import org.glassfish.hk2.api.ServiceLocator; -import org.glassfish.hk2.utilities.Binder; import org.glassfish.hk2.utilities.ServiceLocatorUtilities; -import org.glassfish.hk2.utilities.binding.AbstractBinder; -import org.glassfish.jersey.server.ResourceConfig; -import org.glassfish.jersey.test.JerseyTest; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import unipotsdam.gf.config.GFApplicationBinder; -import unipotsdam.gf.config.GFResourceConfig; import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.core.management.user.UserProfile; -import unipotsdam.gf.core.states.PhasesImpl; import unipotsdam.gf.core.states.ProjectPhase; - import javax.inject.Inject; -import javax.ws.rs.core.Application; - public class PhaseTest {