From b87a4d3224f1bf1777ef5456eba2f42d503bd688 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcus=20H=C3=B6jvall?= <hojvall@dsv.su.se>
Date: Fri, 17 Jun 2011 13:00:01 +0200
Subject: [PATCH 1/9] Added new page Level settings to Admin->Settings page.
 Used to add/edit project classes

---
 .../pages/AbstractAdminSettingsPage.java      |  2 +
 .../AdminProjectClassSettingsPage.html        | 16 ++++++++
 .../AdminProjectClassSettingsPage.java        | 40 +++++++++++++++++++
 src/main/resources/META-INF/persistence.xml   |  4 +-
 4 files changed, 60 insertions(+), 2 deletions(-)
 create mode 100644 src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
 create mode 100644 src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java

diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AbstractAdminSettingsPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/AbstractAdminSettingsPage.java
index e097dd2c61..734b665053 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/AbstractAdminSettingsPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/AbstractAdminSettingsPage.java
@@ -10,6 +10,7 @@ import se.su.dsv.scipro.admin.pages.settings.AdminFinalSeminarSettingsPage;
 import se.su.dsv.scipro.admin.pages.settings.AdminFinalSeminarSettingsPerProjectClassPage;
 import se.su.dsv.scipro.admin.pages.settings.AdminGeneralSettingsPage;
 import se.su.dsv.scipro.admin.pages.settings.AdminPeerSettingsPage;
+import se.su.dsv.scipro.admin.pages.settings.AdminProjectClassSettingsPage;
 import se.su.dsv.scipro.components.AbstractMenuPanel;
 import se.su.dsv.scipro.icons.ImageIcon;
 import se.su.dsv.scipro.security.auth.Authorization;
@@ -32,6 +33,7 @@ public abstract class AbstractAdminSettingsPage extends AbstractAdminPage {
 				items.add(new MenuItem("Final seminar general settings", AdminFinalSeminarSettingsPage.class));
 				items.add(new MenuItem("Final seminar project level settings", AdminFinalSeminarSettingsPerProjectClassPage.class));
 				items.add(new MenuItem("Peer settings", AdminPeerSettingsPage.class, ImageIcon.ICON_SETTINGS));
+				items.add(new MenuItem("Level settings", AdminProjectClassSettingsPage.class));
 				return items;
 			}
 
diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
new file mode 100644
index 0000000000..2adce100a5
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html
+	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
+<body>
+<wicket:extend>
+<table>
+<tr>
+<th>Code</th><th>Name</th><th>Description</th>
+</tr>
+<tr wicket:id="projectClassList">
+<td wicket:id="code">MASTER</td><td wicket:id="name">Master</td><td wicket:id="desc">Master MasterMasterMasterMasterMaster fdsafsad erewr</td>
+</tr>
+</table>
+</wicket:extend>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
new file mode 100644
index 0000000000..b47d3a0d09
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
@@ -0,0 +1,40 @@
+package se.su.dsv.scipro.admin.pages.settings;
+
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.basic.MultiLineLabel;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import se.su.dsv.scipro.admin.pages.AbstractAdminSettingsPage;
+import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
+import se.su.dsv.scipro.data.dataobjects.ProjectClass;
+
+public class AdminProjectClassSettingsPage extends AbstractAdminSettingsPage {
+
+	@SpringBean
+	ProjectClassDao projectClassDao;
+	
+	public AdminProjectClassSettingsPage(PageParameters pp) {
+		super(pp);
+		
+		ListView<ProjectClass> listView = new ListView<ProjectClass>("projectClassList", projectClassDao.findAll()){
+
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void populateItem(ListItem<ProjectClass> item) {
+				IModel<ProjectClass> model = item.getModel();
+				item.add(new Label("code", model.getObject().getCode()));
+				item.add(new Label("name", model.getObject().getName()));
+				item.add(new MultiLineLabel("desc", model.getObject().getDescription()));
+			}
+			
+		};
+		add(listView);
+		
+	}
+
+}
diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml
index 8eb77b0f92..c38c45219f 100644
--- a/src/main/resources/META-INF/persistence.xml
+++ b/src/main/resources/META-INF/persistence.xml
@@ -89,8 +89,8 @@
 			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
 			<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"></property>			
 			<property name="hibernate.connection.url" value="jdbc:mysql://localhost/scipro"></property>
-			<property name="hibernate.connection.username" value="root"></property>
-			<property name="hibernate.connection.password" value="juju"></property>
+			<property name="hibernate.connection.username" value="scipro"></property>
+			<property name="hibernate.connection.password" value="pighleef"></property>
 			<property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider"></property>
 			<property name="hibernate.c3p0.min_size" value="3"></property>
 			<property name="hibernate.c3p0.max_size" value="6"></property>

From dd8cf8e2621a8e55716f841eda42c0a74d011218 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcus=20H=C3=B6jvall?= <hojvall@dsv.su.se>
Date: Mon, 20 Jun 2011 11:06:02 +0200
Subject: [PATCH 2/9] Added panels in for editing and deleting panels

---
 .../AdminProjectClassSettingsPage.html        | 32 +++++---
 .../AdminProjectClassSettingsPage.java        | 51 ++++++++++++-
 .../admin/panels/AdminProjectClassPanel.html  | 35 +++++++++
 .../admin/panels/AdminProjectClassPanel.java  | 76 +++++++++++++++++++
 4 files changed, 180 insertions(+), 14 deletions(-)
 create mode 100644 src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.html
 create mode 100644 src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.java

diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
index 2adce100a5..0ff6dfae81 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
@@ -2,15 +2,27 @@
 <html
 	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
 <body>
-<wicket:extend>
-<table>
-<tr>
-<th>Code</th><th>Name</th><th>Description</th>
-</tr>
-<tr wicket:id="projectClassList">
-<td wicket:id="code">MASTER</td><td wicket:id="name">Master</td><td wicket:id="desc">Master MasterMasterMasterMasterMaster fdsafsad erewr</td>
-</tr>
-</table>
-</wicket:extend>
+	<wicket:extend>
+
+		<div wicket:id="dialog">
+			<div wicket:id="dialogContent"></div>
+		</div>
+		<a href=# wicket:id="createLink">Create new level</a>
+		<table>
+			<tr>
+				<th>Code</th>
+				<th>Name</th>
+				<th>Description</th>
+				<th>Edit</th>
+			</tr>
+			<tr>  </tr>
+			<tr wicket:id="projectClassList">
+				<td wicket:id="code"></td>
+				<td wicket:id="name"></td>
+				<td wicket:id="desc"></td>
+				<td><a href=# wicket:id="editLink">Edit</a></td>
+			</tr>
+		</table>
+	</wicket:extend>
 </body>
 </html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
index b47d3a0d09..6ac7d19771 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
@@ -1,40 +1,83 @@
 package se.su.dsv.scipro.admin.pages.settings;
 
 import org.apache.wicket.PageParameters;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.basic.MultiLineLabel;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.EmptyPanel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.spring.injection.annot.SpringBean;
+import org.odlabs.wiquery.ui.dialog.Dialog;
 
 import se.su.dsv.scipro.admin.pages.AbstractAdminSettingsPage;
+import se.su.dsv.scipro.admin.panels.AdminProjectClassPanel;
 import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
+
 import se.su.dsv.scipro.data.dataobjects.ProjectClass;
 
 public class AdminProjectClassSettingsPage extends AbstractAdminSettingsPage {
 
 	@SpringBean
 	ProjectClassDao projectClassDao;
-	
+
 	public AdminProjectClassSettingsPage(PageParameters pp) {
 		super(pp);
+
+		final Dialog dialog = new Dialog("dialog");
+		dialog.setModal(true);
+		dialog.setAutoOpen(false);
+		dialog.add(new EmptyPanel("dialogContent"));
+
+		dialog.setWidth(500);
+		dialog.setHeight(500);
+		add(dialog);
 		
-		ListView<ProjectClass> listView = new ListView<ProjectClass>("projectClassList", projectClassDao.findAll()){
+		final ListView<ProjectClass> listView = new ListView<ProjectClass>("projectClassList", projectClassDao.findAll()){
 
 			private static final long serialVersionUID = 1L;
 
 			@Override
 			protected void populateItem(ListItem<ProjectClass> item) {
-				IModel<ProjectClass> model = item.getModel();
+				final IModel<ProjectClass> model = item.getModel();
+
 				item.add(new Label("code", model.getObject().getCode()));
 				item.add(new Label("name", model.getObject().getName()));
 				item.add(new MultiLineLabel("desc", model.getObject().getDescription()));
+				
+				AjaxLink<Void> editLink = new AjaxLink<Void>("editLink"){
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					public void onClick(AjaxRequestTarget target) {
+						dialog.replace(new AdminProjectClassPanel("dialogContent", model));
+						target.addComponent(dialog);
+						dialog.setTitle("Edit");
+						dialog.open(target);
+					}
+				};
+				item.add(editLink);
 			}
-			
+
 		};
+		listView.setOutputMarkupId(true);
 		add(listView);
 		
+		AjaxLink<Void> createLink = new AjaxLink<Void>("createLink"){
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void onClick(AjaxRequestTarget target) {
+				dialog.replace(new AdminProjectClassPanel("dialogContent"));
+				target.addComponent(dialog);
+				dialog.setTitle("Add new...");
+				dialog.open(target);
+			}
+		};
+		add(createLink);
+
 	}
 
 }
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.html b/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.html
new file mode 100644
index 0000000000..c473bdab7b
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html
+	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
+<body>
+	<wicket:panel>
+		<form wicket:id="projectClassForm">
+		<!-- Fix max lengths -->
+			<table>
+				<tr>
+					<td>Code: <input wicket:id="code" type="text" maxlength="32" />
+					</td>
+				</tr>
+				<tr>
+					<td>Name: <input wicket:id="name" type="text" maxlength="32" />
+					</td>
+				</tr>
+				<tr>
+					<td>Description:</td>
+				</tr>
+				<tr>
+					<td><textarea wicket:id="description" cols="60" rows="5"></textarea>
+					</td>
+				</tr>
+				<tr>
+					<td><input wicket:id="createButton" type="submit"
+						value="Create" /></td>
+					<td><input wicket:id="deleteButton" type="submit"
+						value="Delete" /></td>
+				</tr>
+			</table>
+		</form>
+
+	</wicket:panel>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.java
new file mode 100644
index 0000000000..b43d48fb0c
--- /dev/null
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.java
@@ -0,0 +1,76 @@
+package se.su.dsv.scipro.admin.panels;
+
+import org.apache.wicket.markup.html.form.Button;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.spring.injection.annot.SpringBean;
+
+import se.su.dsv.scipro.admin.pages.settings.AdminProjectClassSettingsPage;
+import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
+import se.su.dsv.scipro.data.dataobjects.ProjectClass;
+
+public class AdminProjectClassPanel extends Panel {
+	
+	@SpringBean
+	ProjectClassDao projectClassDao;
+	
+	private static final long serialVersionUID = 1L;
+
+	public AdminProjectClassPanel(String id) {
+		super(id);
+		
+		Model<ProjectClass> model = new Model<ProjectClass>(new ProjectClass());
+		add(new ProjectClassSettingsForm("projectClassForm", model));
+	}
+	
+	public AdminProjectClassPanel(String id, IModel<ProjectClass> model) {
+		super(id);
+		add(new ProjectClassSettingsForm("projectClassForm", model));
+	}
+	
+	private class ProjectClassSettingsForm extends Form<Void>{
+
+		private static final long serialVersionUID = 1L;
+		
+		IModel<ProjectClass> projectClassModel;
+
+		public ProjectClassSettingsForm(String id, final IModel<ProjectClass> model) {
+			super(id);
+			projectClassModel = model;
+			
+			add(new TextField<ProjectClass>("code", new PropertyModel<ProjectClass>(projectClassModel, "code")));
+			add(new TextField<ProjectClass>("name", new PropertyModel<ProjectClass>(projectClassModel, "name")));
+			add(new TextArea<ProjectClass>("description", new PropertyModel<ProjectClass>(projectClassModel, "description")));
+			
+			Button createButton = new Button("createButton"){
+				private static final long serialVersionUID = 1L;
+				@Override
+				public void onSubmit(){
+					ProjectClass pc = projectClassDao.save(projectClassModel.getObject());
+					projectClassModel.setObject(pc);
+					setRedirect(true);
+					setResponsePage(AdminProjectClassSettingsPage.class);
+				}
+			};
+			add(createButton);
+			
+			Button deleteButton = new Button("deleteButton"){
+				private static final long serialVersionUID = 1L;
+				@Override
+				public void onSubmit(){
+					projectClassModel.getObject().setDeleted(true);
+					projectClassDao.save(projectClassModel.getObject());
+					setRedirect(true);
+					setResponsePage(AdminProjectClassSettingsPage.class);
+				}
+			};
+			add(deleteButton);
+		}
+	}
+
+}

From d06c02f438e2153c9b2ccb59c6a5c624ddcb2449 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcus=20H=C3=B6jvall?= <hojvall@dsv.su.se>
Date: Mon, 20 Jun 2011 13:32:39 +0200
Subject: [PATCH 3/9] Added a undelete function in admin projectclass settings

---
 .../AdminProjectClassSettingsPage.html        | 32 +++++++-
 .../AdminProjectClassSettingsPage.java        | 73 ++++++++++++++++++-
 .../data/dao/interfaces/ProjectClassDao.java  |  6 +-
 .../data/dao/jpa/ProjectClassDaoJPAImp.java   | 14 ++++
 4 files changed, 117 insertions(+), 8 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
index 0ff6dfae81..0f9821056d 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
@@ -3,10 +3,11 @@
 	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
 <body>
 	<wicket:extend>
-
+		<!-- Edit/add dialog -->
 		<div wicket:id="dialog">
 			<div wicket:id="dialogContent"></div>
 		</div>
+		<h2>Active</h2>
 		<a href=# wicket:id="createLink">Create new level</a>
 		<table>
 			<tr>
@@ -15,13 +16,38 @@
 				<th>Description</th>
 				<th>Edit</th>
 			</tr>
-			<tr>  </tr>
+			<tr>
+			</tr>
+			<tbody wicket:id="activeProjectClassContainer">
 			<tr wicket:id="projectClassList">
 				<td wicket:id="code"></td>
 				<td wicket:id="name"></td>
 				<td wicket:id="desc"></td>
-				<td><a href=# wicket:id="editLink">Edit</a></td>
+				<td><a href=# wicket:id="editLink">Edit</a>
+				</td>
 			</tr>
+			</tbody>
+		</table>
+		
+		<h2>Deleted</h2>
+		<table>
+			<tr>
+				<th>Code</th>
+				<th>Name</th>
+				<th>Description</th>
+				<th>Edit</th>
+			</tr>
+			<tr>
+			</tr>
+			<tbody wicket:id="deletedProjectClassContainer">
+			<tr wicket:id="projectClassListDel">
+				<td wicket:id="codeDel"></td>
+				<td wicket:id="nameDel"></td>
+				<td wicket:id="descDel"></td>
+				<td><a href=# wicket:id="undeleteLink">Undelete</a>
+				</td>
+			</tr>
+			</tbody>
 		</table>
 	</wicket:extend>
 </body>
diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
index 6ac7d19771..c98a0bc63b 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
@@ -1,14 +1,18 @@
 package se.su.dsv.scipro.admin.pages.settings;
 
+import java.util.List;
+
 import org.apache.wicket.PageParameters;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.basic.MultiLineLabel;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.markup.html.panel.EmptyPanel;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.LoadableDetachableModel;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.odlabs.wiquery.ui.dialog.Dialog;
 
@@ -34,8 +38,22 @@ public class AdminProjectClassSettingsPage extends AbstractAdminSettingsPage {
 		dialog.setWidth(500);
 		dialog.setHeight(500);
 		add(dialog);
+
+		IModel<List<ProjectClass>> activeProjectClass = new LoadableDetachableModel<List<ProjectClass>>() {
+
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected List<ProjectClass> load() {
+				return projectClassDao.findAll();
+			}
+		};
 		
-		final ListView<ProjectClass> listView = new ListView<ProjectClass>("projectClassList", projectClassDao.findAll()){
+		final WebMarkupContainer activeWmc = new WebMarkupContainer("activeProjectClassContainer");
+		activeWmc.setOutputMarkupId(true);
+		add(activeWmc);
+		
+		final ListView<ProjectClass> listView = new ListView<ProjectClass>("projectClassList", activeProjectClass){
 
 			private static final long serialVersionUID = 1L;
 
@@ -46,7 +64,7 @@ public class AdminProjectClassSettingsPage extends AbstractAdminSettingsPage {
 				item.add(new Label("code", model.getObject().getCode()));
 				item.add(new Label("name", model.getObject().getName()));
 				item.add(new MultiLineLabel("desc", model.getObject().getDescription()));
-				
+
 				AjaxLink<Void> editLink = new AjaxLink<Void>("editLink"){
 					private static final long serialVersionUID = 1L;
 
@@ -62,8 +80,55 @@ public class AdminProjectClassSettingsPage extends AbstractAdminSettingsPage {
 			}
 
 		};
-		listView.setOutputMarkupId(true);
-		add(listView);
+		activeWmc.add(listView);
+
+		/*
+		 * Begin - list of deleted project classes
+		 */
+		
+		final IModel<List<ProjectClass>> deletedProjectClass = new LoadableDetachableModel<List<ProjectClass>>() {
+
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected List<ProjectClass> load() {
+				return projectClassDao.findAllDeleted();
+			}
+		};
+		
+		final WebMarkupContainer deletedWmc = new WebMarkupContainer("deletedProjectClassContainer");
+		deletedWmc.setOutputMarkupId(true);
+		add(deletedWmc);
+		
+		final ListView<ProjectClass> listViewDeleted = new ListView<ProjectClass>("projectClassListDel", deletedProjectClass){
+
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void populateItem(ListItem<ProjectClass> item) {
+				final IModel<ProjectClass> model = item.getModel();
+
+				item.add(new Label("codeDel", model.getObject().getCode()));
+				item.add(new Label("nameDel", model.getObject().getName()));
+				item.add(new MultiLineLabel("descDel", model.getObject().getDescription()));
+				
+				AjaxLink<Void> undeleteLink = new AjaxLink<Void>("undeleteLink"){
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					public void onClick(AjaxRequestTarget target) {
+						model.getObject().setDeleted(false);
+						model.setObject(projectClassDao.save(model.getObject()));
+						deletedProjectClass.detach();
+						target.addComponent(activeWmc);
+						target.addComponent(deletedWmc);
+					}
+				};
+				item.add(undeleteLink);
+			}
+
+		};
+		deletedWmc.add(listViewDeleted);
 		
 		AjaxLink<Void> createLink = new AjaxLink<Void>("createLink"){
 			private static final long serialVersionUID = 1L;
diff --git a/src/main/java/se/su/dsv/scipro/data/dao/interfaces/ProjectClassDao.java b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/ProjectClassDao.java
index c8eb98a5a4..f0bcf31b93 100644
--- a/src/main/java/se/su/dsv/scipro/data/dao/interfaces/ProjectClassDao.java
+++ b/src/main/java/se/su/dsv/scipro/data/dao/interfaces/ProjectClassDao.java
@@ -1,9 +1,13 @@
 package se.su.dsv.scipro.data.dao.interfaces;
 
+import java.util.List;
+
 import se.su.dsv.scipro.data.dataobjects.ProjectClass;
 
 public interface ProjectClassDao extends Dao<ProjectClass>{
 	
-	ProjectClass getProjectClass(String projectCode);	
+	ProjectClass getProjectClass(String projectCode);
+	
+	List<ProjectClass> findAllDeleted();
 
 }
diff --git a/src/main/java/se/su/dsv/scipro/data/dao/jpa/ProjectClassDaoJPAImp.java b/src/main/java/se/su/dsv/scipro/data/dao/jpa/ProjectClassDaoJPAImp.java
index 76db26d20d..f0b8bf5c38 100644
--- a/src/main/java/se/su/dsv/scipro/data/dao/jpa/ProjectClassDaoJPAImp.java
+++ b/src/main/java/se/su/dsv/scipro/data/dao/jpa/ProjectClassDaoJPAImp.java
@@ -1,9 +1,13 @@
 package se.su.dsv.scipro.data.dao.jpa;
 
+import java.util.List;
+
 import javax.persistence.EntityManager;
 import javax.persistence.NoResultException;
 import javax.persistence.PersistenceException;
 import javax.persistence.TypedQuery;
+
+import org.hibernate.ejb.QueryHints;
 import org.springframework.orm.jpa.JpaCallback;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
@@ -38,6 +42,16 @@ public class ProjectClassDaoJPAImp extends LazyDeleteAbstractDaoJPAImp<ProjectCl
 		});
 	}
 	
+	@Transactional( readOnly=true )
+	public List<ProjectClass> findAllDeleted() {
+		return getJpaTemplate().execute(new JpaCallback<List<ProjectClass>>() {
+			public List<ProjectClass> doInJpa(EntityManager em) throws PersistenceException {
+				TypedQuery<ProjectClass> query = em.createQuery("SELECT x FROM ProjectClass x WHERE x.deleted = 1", ProjectClass.class);
+				return query.getResultList();
+			}
+		});
+	}
+	
 	@Override
 	@Transactional
 	public ProjectClass save(ProjectClass projectClass){

From 255484fd279916df3afb651ec7ad2079a5317b97 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcus=20H=C3=B6jvall?= <hojvall@dsv.su.se>
Date: Mon, 20 Jun 2011 17:21:36 +0200
Subject: [PATCH 4/9] Added info printing and a duplicate check when creating a
 new project class

---
 .../pages/AbstractAdminSettingsPage.java      |  4 +--
 .../AdminProjectClassSettingsPage.html        |  6 ++--
 .../AdminProjectClassSettingsPage.java        |  9 ++++-
 .../admin/panels/AdminProjectClassPanel.html  | 14 ++++----
 .../admin/panels/AdminProjectClassPanel.java  | 35 +++++++++++++------
 5 files changed, 47 insertions(+), 21 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/AbstractAdminSettingsPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/AbstractAdminSettingsPage.java
index 734b665053..8f8f105c41 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/AbstractAdminSettingsPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/AbstractAdminSettingsPage.java
@@ -32,8 +32,8 @@ public abstract class AbstractAdminSettingsPage extends AbstractAdminPage {
 				items.add(new MenuItem("General settings", AdminGeneralSettingsPage.class));
 				items.add(new MenuItem("Final seminar general settings", AdminFinalSeminarSettingsPage.class));
 				items.add(new MenuItem("Final seminar project level settings", AdminFinalSeminarSettingsPerProjectClassPage.class));
-				items.add(new MenuItem("Peer settings", AdminPeerSettingsPage.class, ImageIcon.ICON_SETTINGS));
-				items.add(new MenuItem("Level settings", AdminProjectClassSettingsPage.class));
+				items.add(new MenuItem("Level settings", AdminPeerSettingsPage.class, ImageIcon.ICON_SETTINGS));
+				items.add(new MenuItem("Edit levels", AdminProjectClassSettingsPage.class));
 				return items;
 			}
 
diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
index 0f9821056d..579b984c13 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
@@ -3,10 +3,12 @@
 	xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
 <body>
 	<wicket:extend>
+
 		<!-- Edit/add dialog -->
 		<div wicket:id="dialog">
 			<div wicket:id="dialogContent"></div>
 		</div>
+			
 		<h2>Active</h2>
 		<a href=# wicket:id="createLink">Create new level</a>
 		<table>
@@ -29,7 +31,7 @@
 			</tbody>
 		</table>
 		
-		<h2>Deleted</h2>
+		<h2>Inactive</h2>
 		<table>
 			<tr>
 				<th>Code</th>
@@ -44,7 +46,7 @@
 				<td wicket:id="codeDel"></td>
 				<td wicket:id="nameDel"></td>
 				<td wicket:id="descDel"></td>
-				<td><a href=# wicket:id="undeleteLink">Undelete</a>
+				<td><a href=# wicket:id="undeleteLink">Activate</a>
 				</td>
 			</tr>
 			</tbody>
diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
index c98a0bc63b..a55e2cd398 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
@@ -29,7 +29,13 @@ public class AdminProjectClassSettingsPage extends AbstractAdminSettingsPage {
 
 	public AdminProjectClassSettingsPage(PageParameters pp) {
 		super(pp);
-
+		
+		String msg = "";
+		if((msg = pp.getString("info")) != null)
+			info(msg);
+		else if((msg = pp.getString("error")) != null)
+			error(msg);
+		
 		final Dialog dialog = new Dialog("dialog");
 		dialog.setModal(true);
 		dialog.setAutoOpen(false);
@@ -122,6 +128,7 @@ public class AdminProjectClassSettingsPage extends AbstractAdminSettingsPage {
 						deletedProjectClass.detach();
 						target.addComponent(activeWmc);
 						target.addComponent(deletedWmc);
+						info("Level activated");
 					}
 				};
 				item.add(undeleteLink);
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.html b/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.html
index c473bdab7b..9f38ffb0e8 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.html
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.html
@@ -4,14 +4,15 @@
 <body>
 	<wicket:panel>
 		<form wicket:id="projectClassForm">
-		<!-- Fix max lengths -->
+				
+			<!-- Fix max lengths -->
 			<table>
 				<tr>
-					<td>Code: <input wicket:id="code" type="text" maxlength="32" />
+					<td>Code: <input wicket:id="code" type="text" maxlength="50" />
 					</td>
 				</tr>
 				<tr>
-					<td>Name: <input wicket:id="name" type="text" maxlength="32" />
+					<td>Name: <input wicket:id="name" type="text" maxlength="50" />
 					</td>
 				</tr>
 				<tr>
@@ -22,10 +23,11 @@
 					</td>
 				</tr>
 				<tr>
-					<td><input wicket:id="createButton" type="submit"
-						value="Create" /></td>
+					<td><input wicket:id="createButton" type="submit" value="Save" />
+					</td>
 					<td><input wicket:id="deleteButton" type="submit"
-						value="Delete" /></td>
+						value="Inactivate" />
+					</td>
 				</tr>
 			</table>
 		</form>
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.java
index b43d48fb0c..630192ef2d 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.java
@@ -1,5 +1,6 @@
 package se.su.dsv.scipro.admin.panels;
 
+import org.apache.wicket.PageParameters;
 import org.apache.wicket.markup.html.form.Button;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextArea;
@@ -21,16 +22,17 @@ public class AdminProjectClassPanel extends Panel {
 	
 	private static final long serialVersionUID = 1L;
 
-	public AdminProjectClassPanel(String id) {
+	public AdminProjectClassPanel(final String id) {
 		super(id);
 		
 		Model<ProjectClass> model = new Model<ProjectClass>(new ProjectClass());
-		add(new ProjectClassSettingsForm("projectClassForm", model));
+		add(new ProjectClassSettingsForm("projectClassForm", model, false));
 	}
 	
 	public AdminProjectClassPanel(String id, IModel<ProjectClass> model) {
 		super(id);
-		add(new ProjectClassSettingsForm("projectClassForm", model));
+
+		add(new ProjectClassSettingsForm("projectClassForm", model, true));
 	}
 	
 	private class ProjectClassSettingsForm extends Form<Void>{
@@ -39,37 +41,50 @@ public class AdminProjectClassPanel extends Panel {
 		
 		IModel<ProjectClass> projectClassModel;
 
-		public ProjectClassSettingsForm(String id, final IModel<ProjectClass> model) {
+		public ProjectClassSettingsForm(String id, final IModel<ProjectClass> model, boolean enabledDeleteButton) {
 			super(id);
+			
+			final PageParameters pp = new PageParameters();
+			setRedirect(true);
+			
 			projectClassModel = model;
 			
 			add(new TextField<ProjectClass>("code", new PropertyModel<ProjectClass>(projectClassModel, "code")));
 			add(new TextField<ProjectClass>("name", new PropertyModel<ProjectClass>(projectClassModel, "name")));
 			add(new TextArea<ProjectClass>("description", new PropertyModel<ProjectClass>(projectClassModel, "description")));
-			
+
 			Button createButton = new Button("createButton"){
 				private static final long serialVersionUID = 1L;
 				@Override
 				public void onSubmit(){
+					ProjectClass duplicateCheck = projectClassDao.getProjectClass(projectClassModel.getObject().getCode());
+					System.out.println("duplicate " + duplicateCheck);
+					if (duplicateCheck != null){
+						String msg = "Level already exists";
+						pp.add("error", msg);
+						setResponsePage(AdminProjectClassSettingsPage.class, pp);
+						return;
+					}
 					ProjectClass pc = projectClassDao.save(projectClassModel.getObject());
 					projectClassModel.setObject(pc);
-					setRedirect(true);
-					setResponsePage(AdminProjectClassSettingsPage.class);
+					pp.add("info", "New level created");
+					setResponsePage(AdminProjectClassSettingsPage.class, pp);
 				}
 			};
 			add(createButton);
-			
+
 			Button deleteButton = new Button("deleteButton"){
 				private static final long serialVersionUID = 1L;
 				@Override
 				public void onSubmit(){
 					projectClassModel.getObject().setDeleted(true);
 					projectClassDao.save(projectClassModel.getObject());
-					setRedirect(true);
-					setResponsePage(AdminProjectClassSettingsPage.class);
+					pp.add("info", "Level inactivated");
+					setResponsePage(AdminProjectClassSettingsPage.class, pp);
 				}
 			};
 			add(deleteButton);
+			deleteButton.setEnabled(enabledDeleteButton);
 		}
 	}
 

From cfe5ff3e7a51332182fd3f928214eb1dcb39504d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcus=20H=C3=B6jvall?= <hojvall@dsv.su.se>
Date: Mon, 4 Jul 2011 12:11:45 +0200
Subject: [PATCH 5/9] Fixed bug where message Already exists was shown when
 editing

---
 .../AdminProjectClassSettingsPage.java        |  1 -
 .../admin/panels/AdminProjectClassPanel.java  | 33 +++++++++++--------
 2 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
index a55e2cd398..368ebfc123 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.java
@@ -19,7 +19,6 @@ import org.odlabs.wiquery.ui.dialog.Dialog;
 import se.su.dsv.scipro.admin.pages.AbstractAdminSettingsPage;
 import se.su.dsv.scipro.admin.panels.AdminProjectClassPanel;
 import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
-
 import se.su.dsv.scipro.data.dataobjects.ProjectClass;
 
 public class AdminProjectClassSettingsPage extends AbstractAdminSettingsPage {
diff --git a/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.java b/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.java
index 630192ef2d..c083732e8b 100644
--- a/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.java
+++ b/src/main/java/se/su/dsv/scipro/admin/panels/AdminProjectClassPanel.java
@@ -41,9 +41,9 @@ public class AdminProjectClassPanel extends Panel {
 		
 		IModel<ProjectClass> projectClassModel;
 
-		public ProjectClassSettingsForm(String id, final IModel<ProjectClass> model, boolean enabledDeleteButton) {
+		public ProjectClassSettingsForm(String id, final IModel<ProjectClass> model, final boolean editMode) {
 			super(id);
-			
+
 			final PageParameters pp = new PageParameters();
 			setRedirect(true);
 			
@@ -57,18 +57,25 @@ public class AdminProjectClassPanel extends Panel {
 				private static final long serialVersionUID = 1L;
 				@Override
 				public void onSubmit(){
-					ProjectClass duplicateCheck = projectClassDao.getProjectClass(projectClassModel.getObject().getCode());
-					System.out.println("duplicate " + duplicateCheck);
-					if (duplicateCheck != null){
-						String msg = "Level already exists";
-						pp.add("error", msg);
+					
+					if (editMode) {
+						pp.add("info", "Level edited");
+						ProjectClass pc = projectClassDao.save(projectClassModel.getObject());
+						projectClassModel.setObject(pc);
+						setResponsePage(AdminProjectClassSettingsPage.class, pp);
+					} else {
+						ProjectClass duplicateCheck = projectClassDao.getProjectClass(projectClassModel.getObject().getCode());
+						if (duplicateCheck != null){
+							String msg = "Level already exists";
+							pp.add("error", msg);
+							setResponsePage(AdminProjectClassSettingsPage.class, pp);
+							return;
+						}
+						ProjectClass pc = projectClassDao.save(projectClassModel.getObject());
+						projectClassModel.setObject(pc);
+						pp.add("info", "New level created");
 						setResponsePage(AdminProjectClassSettingsPage.class, pp);
-						return;
 					}
-					ProjectClass pc = projectClassDao.save(projectClassModel.getObject());
-					projectClassModel.setObject(pc);
-					pp.add("info", "New level created");
-					setResponsePage(AdminProjectClassSettingsPage.class, pp);
 				}
 			};
 			add(createButton);
@@ -84,7 +91,7 @@ public class AdminProjectClassPanel extends Panel {
 				}
 			};
 			add(deleteButton);
-			deleteButton.setEnabled(enabledDeleteButton);
+			deleteButton.setEnabled(editMode);
 		}
 	}
 

From 0ed52dc5d810102330800bb237ff876793986e0c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcus=20H=C3=B6jvall?= <hojvall@dsv.su.se>
Date: Mon, 4 Jul 2011 13:09:52 +0200
Subject: [PATCH 6/9] Removed unused line

---
 .../java/se/su/dsv/scipro/data/dataobjects/ProjectClass.java     | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/main/java/se/su/dsv/scipro/data/dataobjects/ProjectClass.java b/src/main/java/se/su/dsv/scipro/data/dataobjects/ProjectClass.java
index 04863505ec..d8fd980fe4 100644
--- a/src/main/java/se/su/dsv/scipro/data/dataobjects/ProjectClass.java
+++ b/src/main/java/se/su/dsv/scipro/data/dataobjects/ProjectClass.java
@@ -9,7 +9,6 @@ import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.Lob;
 import javax.persistence.OneToOne;
-import javax.persistence.PostLoad;
 import javax.persistence.Table;
 import org.hibernate.annotations.Cache;
 import org.hibernate.annotations.CacheConcurrencyStrategy;

From 5e9d33b9915d94b528e7b1af28baf6e12151abd2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marcus=20H=C3=B6jvall?= <hojvall@dsv.su.se>
Date: Tue, 19 Jul 2011 12:16:24 +0200
Subject: [PATCH 7/9] Worked on some design for edit levels in admin pages

---
 .../AdminProjectClassSettingsPage.html         | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
index 579b984c13..9e85a06391 100644
--- a/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
+++ b/src/main/java/se/su/dsv/scipro/admin/pages/settings/AdminProjectClassSettingsPage.html
@@ -8,10 +8,12 @@
 		<div wicket:id="dialog">
 			<div wicket:id="dialogContent"></div>
 		</div>
-			
-		<h2>Active</h2>
-		<a href=# wicket:id="createLink">Create new level</a>
-		<table>
+		
+		<a href=# wicket:id="createLink"><img src="images/icons/add_16x16.png" alt=""/> Create new level</a>
+		<div class="span-15 last">
+		<h3 class="section">Active</h3>
+		</div>
+		<table class="rounded-table-top">
 			<tr>
 				<th>Code</th>
 				<th>Name</th>
@@ -25,14 +27,16 @@
 				<td wicket:id="code"></td>
 				<td wicket:id="name"></td>
 				<td wicket:id="desc"></td>
-				<td><a href=# wicket:id="editLink">Edit</a>
+				<td><a href=# wicket:id="editLink"><img src="images/icons/edit_16x16.png" " alt="Edit" title="Edit"/></a>
 				</td>
 			</tr>
 			</tbody>
 		</table>
 		
-		<h2>Inactive</h2>
-		<table>
+		<div class="span-15 last">
+		<h3 class="section">Inactive</h3>
+		</div>
+		<table class="rounded-table-top">
 			<tr>
 				<th>Code</th>
 				<th>Name</th>

From c7b8d1a9d18822975b88932049cec8ef2fa6b6bb Mon Sep 17 00:00:00 2001
From: joha-asc <aschan.johan@gmail.com>
Date: Thu, 21 Jul 2011 16:30:10 +0200
Subject: [PATCH 8/9] commentthread

---
 .../dao/jpa/TestCommentThreadDaoJPA.java      | 111 ------------------
 1 file changed, 111 deletions(-)
 delete mode 100644 src/test/java/se/su/dsv/scipro/dao/jpa/TestCommentThreadDaoJPA.java

diff --git a/src/test/java/se/su/dsv/scipro/dao/jpa/TestCommentThreadDaoJPA.java b/src/test/java/se/su/dsv/scipro/dao/jpa/TestCommentThreadDaoJPA.java
deleted file mode 100644
index a7ad4ab9c4..0000000000
--- a/src/test/java/se/su/dsv/scipro/dao/jpa/TestCommentThreadDaoJPA.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * 
- */
-package se.su.dsv.scipro.dao.jpa;
-
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.Rollback;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.transaction.annotation.Transactional;
-
-import se.su.dsv.scipro.data.dao.interfaces.CommentDao;
-import se.su.dsv.scipro.data.dao.interfaces.CommentThreadDao;
-import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
-import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
-import se.su.dsv.scipro.data.dao.interfaces.UserDao;
-import se.su.dsv.scipro.data.dataobjects.Comment;
-import se.su.dsv.scipro.data.dataobjects.CommentThread;
-import se.su.dsv.scipro.data.dataobjects.Project;
-import se.su.dsv.scipro.data.dataobjects.ProjectClass;
-import se.su.dsv.scipro.data.dataobjects.User;
-
-
-/**
- * @author Johan Aschan - aschan@dsv.su.se
- *
- */
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration
-public class TestCommentThreadDaoJPA {
-
-	@Autowired
-	private CommentDao commentDao;
-	
-	@Autowired 
-	private CommentThreadDao commentThreadDao;
-	
-	@Autowired 
-	private ProjectDao projectDao;
-	
-	@Autowired 
-	private ProjectClassDao projectClassDao;
-	@Autowired 
-	private UserDao userDao;
-	
-	private Project project1;
-	private Comment comment1, comment2, comment3;
-	private SortedSet<Comment> comments = new TreeSet<Comment>();
-	private CommentThread commentThread;
-	private User user;
-	
-	@Before
-	public void startTransaction() {
-		ProjectClass projectClass = new ProjectClass(ProjectClass.BACHELOR,"Bachelor","Bachelor degree thesis project");
-		projectClass = projectClassDao.save(projectClass);
-		project1 = new Project();
-		project1.setProjectClass(projectClass);
-		project1.setTitle("Project 1");
-		project1 = projectDao.save(project1);
-		
-		user = new User();
-		user.setFirstName("Pelle");
-		user = userDao.save(user);
-		
-		commentThread = new CommentThread(project1);
-		commentThread = commentThreadDao.save(commentThread);
-		
-		comment1 = new Comment(user,commentThread);
-		comment1 = commentDao.save(comment1);
-		
-		
-		comment2 = new Comment(user,commentThread);
-		comment2 = commentDao.save(comment2);
-		
-		
-		comment3 = new Comment(user,commentThread);
-		comment3 = commentDao.save(comment3);
-		
-		comments.add(comment1);
-		comments.add(comment2);
-		comments.add(comment3);
-		
-		commentThread.setComments(comments);
-		commentThread = commentThreadDao.save(commentThread);
-
-	}
-	
-	@Test
-	@Transactional
-	@Rollback
-	public void testGetCommentThreadByClassAndId() {
-		CommentThread commentThreadNew = commentThreadDao.getCommentThread(project1);
-		Assert.assertEquals(commentThread, commentThreadNew);
-	}
-	
-	@Test
-	@Transactional
-	@Rollback
-	public void testGetCommentThreadSize() {
-		int commentThreadSize = commentThreadDao.getCommentThreadSize(project1);
-		Assert.assertEquals(3, commentThreadSize);
-	}
-}

From ff8d5d09db7ef02e87d7a51748fe7ee780d0d8c1 Mon Sep 17 00:00:00 2001
From: joha-asc <aschan.johan@gmail.com>
Date: Thu, 21 Jul 2011 16:31:14 +0200
Subject: [PATCH 9/9] commentthread

---
 .../dao/jpa/TestCommentThreadDaoJPA.java      | 111 ++++++++++++++++++
 1 file changed, 111 insertions(+)
 create mode 100644 src/test/java/se/su/dsv/scipro/dao/jpa/TestCommentThreadDaoJPA.java

diff --git a/src/test/java/se/su/dsv/scipro/dao/jpa/TestCommentThreadDaoJPA.java b/src/test/java/se/su/dsv/scipro/dao/jpa/TestCommentThreadDaoJPA.java
new file mode 100644
index 0000000000..a7ad4ab9c4
--- /dev/null
+++ b/src/test/java/se/su/dsv/scipro/dao/jpa/TestCommentThreadDaoJPA.java
@@ -0,0 +1,111 @@
+/**
+ * 
+ */
+package se.su.dsv.scipro.dao.jpa;
+
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.annotation.Rollback;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.transaction.annotation.Transactional;
+
+import se.su.dsv.scipro.data.dao.interfaces.CommentDao;
+import se.su.dsv.scipro.data.dao.interfaces.CommentThreadDao;
+import se.su.dsv.scipro.data.dao.interfaces.ProjectClassDao;
+import se.su.dsv.scipro.data.dao.interfaces.ProjectDao;
+import se.su.dsv.scipro.data.dao.interfaces.UserDao;
+import se.su.dsv.scipro.data.dataobjects.Comment;
+import se.su.dsv.scipro.data.dataobjects.CommentThread;
+import se.su.dsv.scipro.data.dataobjects.Project;
+import se.su.dsv.scipro.data.dataobjects.ProjectClass;
+import se.su.dsv.scipro.data.dataobjects.User;
+
+
+/**
+ * @author Johan Aschan - aschan@dsv.su.se
+ *
+ */
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration
+public class TestCommentThreadDaoJPA {
+
+	@Autowired
+	private CommentDao commentDao;
+	
+	@Autowired 
+	private CommentThreadDao commentThreadDao;
+	
+	@Autowired 
+	private ProjectDao projectDao;
+	
+	@Autowired 
+	private ProjectClassDao projectClassDao;
+	@Autowired 
+	private UserDao userDao;
+	
+	private Project project1;
+	private Comment comment1, comment2, comment3;
+	private SortedSet<Comment> comments = new TreeSet<Comment>();
+	private CommentThread commentThread;
+	private User user;
+	
+	@Before
+	public void startTransaction() {
+		ProjectClass projectClass = new ProjectClass(ProjectClass.BACHELOR,"Bachelor","Bachelor degree thesis project");
+		projectClass = projectClassDao.save(projectClass);
+		project1 = new Project();
+		project1.setProjectClass(projectClass);
+		project1.setTitle("Project 1");
+		project1 = projectDao.save(project1);
+		
+		user = new User();
+		user.setFirstName("Pelle");
+		user = userDao.save(user);
+		
+		commentThread = new CommentThread(project1);
+		commentThread = commentThreadDao.save(commentThread);
+		
+		comment1 = new Comment(user,commentThread);
+		comment1 = commentDao.save(comment1);
+		
+		
+		comment2 = new Comment(user,commentThread);
+		comment2 = commentDao.save(comment2);
+		
+		
+		comment3 = new Comment(user,commentThread);
+		comment3 = commentDao.save(comment3);
+		
+		comments.add(comment1);
+		comments.add(comment2);
+		comments.add(comment3);
+		
+		commentThread.setComments(comments);
+		commentThread = commentThreadDao.save(commentThread);
+
+	}
+	
+	@Test
+	@Transactional
+	@Rollback
+	public void testGetCommentThreadByClassAndId() {
+		CommentThread commentThreadNew = commentThreadDao.getCommentThread(project1);
+		Assert.assertEquals(commentThread, commentThreadNew);
+	}
+	
+	@Test
+	@Transactional
+	@Rollback
+	public void testGetCommentThreadSize() {
+		int commentThreadSize = commentThreadDao.getCommentThreadSize(project1);
+		Assert.assertEquals(3, commentThreadSize);
+	}
+}