Skip to content
Snippets Groups Projects
Commit a18fe412 authored by Goik Martin's avatar Goik Martin
Browse files

Just one persistence unit

Test parameters programmatically supplied
parent 86010922
No related branches found
No related tags found
No related merge requests found
......@@ -69,7 +69,7 @@ public class MyLogin extends CustomComponent implements View {
// Entering a valid username should enable our login button
usernameField.setImmediate(true);
usernameField.addValidator(new RegexpValidator("[a-zA-Z0-9]+",
usernameField.addValidator(new RegexpValidator("[@a-zA-Z0-9]+",
"Username must contain only letters and digits e.g. 'trustix'"));
usernameField.addValueChangeListener((ValueChangeListener & Serializable) event ->
......
package de.hdm_stuttgart.mi.sda2.forum.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Entity
public class Forum {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Column(unique=true, nullable=false)
@Size(min=1)
String title;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Forum(){}
public Forum(String title){ setTitle(title);}
}
package de.hdm_stuttgart.mi.sda2.forum.domain;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.ManyToOne;
@Entity
@IdClass(UserForumAssocId.class)
public class Subscription {
@Id
private long userId;
@Id
private long forumId;
@ManyToOne
private User user;
@ManyToOne
private Forum forum;
}
package de.hdm_stuttgart.mi.sda2.forum.domain;
import java.io.Serializable;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
......@@ -34,6 +36,9 @@ public class User implements Serializable {
@Size(min=1)
String password;
@OneToMany(mappedBy="user")
List<Subscription> subscriptions;
public User() {}
public User(final String name, final String email, final String pasword) {
......
package de.hdm_stuttgart.mi.sda2.forum.domain;
import java.io.Serializable;
public class UserForumAssocId implements Serializable {
private static final long serialVersionUID = 2524118415599737530L;
private long userId;
private long forumId;
public int hashCode() {
return (int) (userId + forumId);
}
public boolean equals(Object object) {
if (object instanceof UserForumAssocId) {
final UserForumAssocId otherId = (UserForumAssocId) object;
return (otherId.userId == this.userId)
&& (otherId.forumId == this.forumId);
}
return false;
}
}
......@@ -5,39 +5,24 @@
version="2.0">
<persistence-unit name="de.hdm_stuttgart.mi.sda2.forum" >
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.jdbc.platform"
value="org.eclipse.persistence.platform.database.MySQLPlatform" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/hdm" />
<property name="javax.persistence.jdbc.user" value="hdmuser" />
<property name="javax.persistence.jdbc.password" value="XYZ" />
<property name="eclipselink.logging.level" value="FINE" />
<property name="eclipselink.connection-pool.default.initial" value="5" />
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
<property name="eclipselink.ddl-generation.output-mode"
value="database" />
</properties>
</persistence-unit>
<persistence-unit name="de.hdm_stuttgart.mi.sda2.forum.test" transaction-type="RESOURCE_LOCAL">
<!--
transaction-type="RESOURCE_LOCAL"
<property name="eclipselink.canonicalmodel.subpackage" value="one"/>
-->
<persistence-unit name="de.hdm_stuttgart.mi.sda2.forum">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="eclipselink.jdbc.platform"
value="org.eclipse.persistence.platform.database.MySQLPlatform" />
<property name="eclipselink.jdbc.platform" value="org.eclipse.persistence.platform.database.MySQLPlatform" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/hdm" />
<property name="javax.persistence.jdbc.user" value="hdmuser" />
<property name="javax.persistence.jdbc.password" value="XYZ" />
<property name="eclipselink.logging.level" value="FINE" />
<property name="eclipselink.connection-pool.default.initial" value="5" />
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
<property name="eclipselink.ddl-generation.output-mode"
value="database" />
<property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />
</properties>
</persistence-unit>
......
package de.hdm_stuttgart.mi.sda2.forum;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import org.junit.Test;
import de.hdm_stuttgart.mi.sda2.forum.domain.Forum;
import de.hdm_stuttgart.mi.sda2.forum.domain.User;
import de.hdm_stuttgart.mi.sda2.forum.tools.HashProvider;
public class TestDomain {
static final EntityManagerFactory emf;
static final EntityManager em;
static {
final Map<String, Object> overrideAndAddCfg = new HashMap<String, Object>();
overrideAndAddCfg.put("eclipselink.ddl-generation", "drop-and-create-tables");
emf = Persistence.createEntityManagerFactory("de.hdm_stuttgart.mi.sda2.forum", overrideAndAddCfg);
em = emf.createEntityManager(overrideAndAddCfg);
}
@Test
public void test() {
//em.setProperty("eclipselink.ddl-generation", "drop-and-create-tables");
try {
em.getTransaction().begin();
persistUser ("Joe Flix", "joe@due.com", "q");
persistUser("Tim Burns", "burns@somefolks.org", "q");
persistUser("Sarah Beans", "beans@myuni.edu", "q");
persistUser("Peter Sounds", "q@q", "q");
persistUser("Sam Drews", "sdew@bb.cc.org", "q");
persistUser("Kim Banff", "kb@banff.org", "q");
persistForum("Java delepopment problems");
em.getTransaction().commit();
} catch (Exception e) {
if (e instanceof ConstraintViolationException) {
ConstraintViolationException cve = (ConstraintViolationException) e;
for (Iterator<ConstraintViolation<?>> it = cve.getConstraintViolations().iterator(); it.hasNext();) {
ConstraintViolation<? extends Object> v = it.next();
System.err.println(v);
System.err.println("==>>"+v.getMessage());
}
} else {
e.printStackTrace();
}
throw e;
}
}
private static User persistUser(final String name, final String email, final String clearTextPassword) {
System.out.print("Starting transaction (user = '" + name + "') ... ");
final User user = new User(name, email, HashProvider.getSaltedHash(clearTextPassword.toCharArray()));
em.persist(user);
System.out.println("done!");
return user;
}
private static Forum persistForum(final String title) {
System.out.print("Starting transaction (forum = '" + title + "') ... ");
final Forum forum = new Forum(title);
em.persist(forum);
System.out.println("done!");
return forum;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment