Initialer commit

This commit is contained in:
2026-03-18 22:00:54 +01:00
commit 7adb3acc8d
426 changed files with 8484 additions and 0 deletions

View File

@@ -0,0 +1,98 @@
package de.oaa.xxx.aufgaben;
import java.util.List;
import java.util.UUID;
public class Aufgabe {
private UUID aufgabeId;
private String kurzText;
private String text;
private Integer level;
private Integer sekundenVon;
private Integer sekundenBis;
private UUID gruppeId;
private List<Werkzeug> benoetigtAktiv;
private List<Werkzeug> benoetigtPassiv;
private List<Toy> benoetigteToys;
public UUID getAufgabeId() {
return aufgabeId;
}
public void setAufgabeId(UUID aufgabeId) {
this.aufgabeId = aufgabeId;
}
public String getKurzText() {
return kurzText;
}
public void setKurzText(String kurzText) {
this.kurzText = kurzText;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
public Integer getSekundenVon() {
return sekundenVon;
}
public void setSekundenVon(Integer sekundenVon) {
this.sekundenVon = sekundenVon;
}
public Integer getSekundenBis() {
return sekundenBis;
}
public void setSekundenBis(Integer sekundenBis) {
this.sekundenBis = sekundenBis;
}
public List<Werkzeug> getBenoetigtAktiv() {
return benoetigtAktiv;
}
public void setBenoetigtAktiv(List<Werkzeug> benoetigtAktiv) {
this.benoetigtAktiv = benoetigtAktiv;
}
public List<Werkzeug> getBenoetigtPassiv() {
return benoetigtPassiv;
}
public void setBenoetigtPassiv(List<Werkzeug> benoetigtPassiv) {
this.benoetigtPassiv = benoetigtPassiv;
}
public List<Toy> getBenoetigteToys() {
return benoetigteToys;
}
public void setBenoetigteToys(List<Toy> benoetigteToys) {
this.benoetigteToys = benoetigteToys;
}
public UUID getGruppeId() {
return gruppeId;
}
public void setGruppeId(UUID gruppeId) {
this.gruppeId = gruppeId;
}
}

View File

@@ -0,0 +1,11 @@
package de.oaa.xxx.aufgaben;
import de.oaa.xxx.framework.AbstractDAO;
import jakarta.persistence.EntityManager;
public class AufgabeDAO extends AbstractDAO<AufgabeEntity> {
public AufgabeDAO(EntityManager entityManager) {
super(AufgabeEntity.class, entityManager);
}
}

View File

@@ -0,0 +1,161 @@
package de.oaa.xxx.aufgaben;
import java.util.List;
import java.util.UUID;
import de.oaa.xxx.framework.XXXEntity;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.Enumerated;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.JoinTable;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
@Entity
@Table(name = "aufgabe")
public class AufgabeEntity implements XXXEntity {
@Id
@Column
private UUID aufgabeId;
@Column
private String kurzText;
@Column
private String text;
@Column
private Integer level;
@Column
private Integer sekundenVon;
@Column
private Integer sekundenBis;
@ManyToOne
@JoinColumn(name = "gruppeId")
private AufgabenGruppeEntity aufgabenGruppe;
@Column
@Enumerated
@ElementCollection(targetClass = Werkzeug.class)
private List<Werkzeug> benoetigtAktiv;
@Column
@Enumerated
@ElementCollection(targetClass = Werkzeug.class)
private List<Werkzeug> benoetigtPassiv;
@ManyToMany(cascade = CascadeType.DETACH)
@JoinTable(name = "aufgabeToy", joinColumns = { @JoinColumn(name = "aufgabeId") }, inverseJoinColumns = {
@JoinColumn(name = "toyId") })
private List<ToyEntity> benoetigteToys;
public UUID getAufgabeId() {
return aufgabeId;
}
public void setAufgabeId(UUID aufgabeId) {
this.aufgabeId = aufgabeId;
}
public String getKurzText() {
return kurzText;
}
public void setKurzText(String kurzText) {
this.kurzText = kurzText;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
public Integer getSekundenVon() {
return sekundenVon;
}
public void setSekundenVon(Integer sekundenVon) {
this.sekundenVon = sekundenVon;
}
public Integer getSekundenBis() {
return sekundenBis;
}
public void setSekundenBis(Integer sekundenBis) {
this.sekundenBis = sekundenBis;
}
public AufgabenGruppeEntity getAufgabenGruppe() {
return aufgabenGruppe;
}
public void setAufgabenGruppe(AufgabenGruppeEntity aufgabenGruppe) {
this.aufgabenGruppe = aufgabenGruppe;
}
public List<Werkzeug> getBenoetigtAktiv() {
return benoetigtAktiv;
}
public void setBenoetigtAktiv(List<Werkzeug> benoetigtAktiv) {
this.benoetigtAktiv = benoetigtAktiv;
}
public List<Werkzeug> getBenoetigtPassiv() {
return benoetigtPassiv;
}
public void setBenoetigtPassiv(List<Werkzeug> benoetigtPassiv) {
this.benoetigtPassiv = benoetigtPassiv;
}
public List<ToyEntity> getBenoetigteToys() {
return benoetigteToys;
}
public void setBenoetigteToys(List<ToyEntity> benoetigteToys) {
this.benoetigteToys = benoetigteToys;
}
public Aufgabe toAufgabe() {
Aufgabe aufgabe = new Aufgabe();
aufgabe.setAufgabeId(aufgabeId);
aufgabe.setBenoetigtAktiv(benoetigtAktiv.stream().map(obj -> obj).toList());
aufgabe.setBenoetigteToys(benoetigteToys.stream().map(obj -> obj.toToy()).toList());
aufgabe.setBenoetigtPassiv(benoetigtPassiv.stream().map(obj -> obj).toList());
aufgabe.setGruppeId(aufgabenGruppe.getGruppenId());
aufgabe.setKurzText(kurzText);
aufgabe.setLevel(level);
aufgabe.setSekundenBis(sekundenBis);
aufgabe.setSekundenVon(sekundenVon);
aufgabe.setText(text);
return aufgabe;
}
public static AufgabeEntity create(Aufgabe aufgabe, AufgabenGruppeEntity aufgabenGruppeEntity) {
AufgabeEntity entity = new AufgabeEntity();
entity.setAufgabeId(UUID.randomUUID());
entity.setAufgabenGruppe(aufgabenGruppeEntity);
entity.setBenoetigtAktiv(aufgabe.getBenoetigtAktiv());
entity.setBenoetigteToys(aufgabe.getBenoetigteToys().stream().map(toy -> ToyEntity.create(toy, aufgabenGruppeEntity)).toList());
entity.setBenoetigtPassiv(aufgabe.getBenoetigtPassiv());
entity.setKurzText(aufgabe.getKurzText());
entity.setLevel(aufgabe.getLevel());
entity.setSekundenBis(aufgabe.getSekundenBis());
entity.setSekundenVon(aufgabe.getSekundenVon());
entity.setText(aufgabe.getText());
return entity;
}
}

View File

@@ -0,0 +1,108 @@
package de.oaa.xxx.aufgaben;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.oaa.xxx.framework.request.RequestChecker;
import jakarta.annotation.Resource;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.transaction.SystemException;
import jakarta.transaction.Transactional;
import jakarta.transaction.UserTransaction;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.Status;
import jakarta.ws.rs.core.UriInfo;
@Transactional
@ApplicationScoped
@Path("aufgabe")
public class AufgabeResource {
private Logger LOGGER = LoggerFactory.getLogger(getClass());
@PersistenceContext(name = "aufgaben")
private EntityManager entityManager;
@Resource
private UserTransaction transaction;
@Path("{aufgabeId}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response get(@PathParam("aufgabeId") UUID aufgabeId, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
transaction.begin();
AufgabeEntity entity = new AufgabeDAO(entityManager).findById(aufgabeId);
if (entity != null) {
Aufgabe aufgabe = entity.toAufgabe();
transaction.commit();
return Response.ok(aufgabe).build();
} else {
transaction.rollback();
return Response.noContent().build();
}
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response create(Aufgabe aufgabe, @Context UriInfo uriInfo, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
if (aufgabe.getKurzText() == null || aufgabe.getText() == null || aufgabe.getLevel() == null || aufgabe.getGruppeId() == null) {
return Response.status(Status.BAD_REQUEST).build();
}
transaction.begin();
AufgabenGruppeEntity gruppeEntity = new AufgabenGruppeDAO(entityManager).findById(aufgabe.getGruppeId());
if (gruppeEntity == null || gruppeEntity.getAufgaben().size() > 50) {
transaction.rollback();
return Response.status(Status.BAD_REQUEST).build();
}
AufgabeEntity entity = AufgabeEntity.create(aufgabe, gruppeEntity);
new AufgabeDAO(entityManager).persist(entity);
transaction.commit();
return Response.created(uriInfo.getAbsolutePathBuilder().path(entity.getAufgabeId().toString()).build())
.build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@DELETE
@Consumes(MediaType.APPLICATION_JSON)
public Response delete(Aufgabe aufgabe, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
transaction.begin();
AufgabeDAO dao = new AufgabeDAO(entityManager);
AufgabeEntity entity = dao.findById(aufgabe.getAufgabeId());
dao.remove(entity);
transaction.commit();
return Response.accepted().build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
}

View File

@@ -0,0 +1,9 @@
package de.oaa.xxx.aufgaben;
import jakarta.ws.rs.ApplicationPath;
import jakarta.ws.rs.core.Application;
@ApplicationPath("/")
public class AufgabenApplication extends Application {
}

View File

@@ -0,0 +1,86 @@
package de.oaa.xxx.aufgaben;
import java.util.List;
import java.util.UUID;
public class AufgabenGruppe {
private UUID gruppenId;
private String name;
private String beschreibung;
private String von;
private UUID userId;
private boolean privateGruppe;
private List<Toy> toys;
private List<Aufgabe> aufgaben;
private List<Strafe> strafen;
private List<Sperre> sperren;
private String bild;
public UUID getGruppenId() {
return gruppenId;
}
public void setGruppenId(UUID gruppenId) {
this.gruppenId = gruppenId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBeschreibung() {
return beschreibung;
}
public void setBeschreibung(String beschreibung) {
this.beschreibung = beschreibung;
}
public UUID getUserId() {
return userId;
}
public void setUserId(UUID userId) {
this.userId = userId;
}
public boolean isPrivateGruppe() {
return privateGruppe;
}
public void setPrivateGruppe(boolean privateGruppe) {
this.privateGruppe = privateGruppe;
}
public List<Toy> getToys() {
return toys;
}
public void setToys(List<Toy> toys) {
this.toys = toys;
}
public List<Aufgabe> getAufgaben() {
return aufgaben;
}
public void setAufgaben(List<Aufgabe> aufgaben) {
this.aufgaben = aufgaben;
}
public List<Strafe> getStrafen() {
return strafen;
}
public void setStrafen(List<Strafe> strafen) {
this.strafen = strafen;
}
public List<Sperre> getSperren() {
return sperren;
}
public void setSperren(List<Sperre> sperren) {
this.sperren = sperren;
}
public void setBild(String bild) {
this.bild = bild;
}
public String getBild() {
return bild;
}
public String getVon() {
return von;
}
public void setVon(String von) {
this.von = von;
}
}

View File

@@ -0,0 +1,50 @@
package de.oaa.xxx.aufgaben;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.oaa.xxx.framework.AbstractDAO;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
public class AufgabenGruppeDAO extends AbstractDAO<AufgabenGruppeEntity> {
private Logger LOGGER = LoggerFactory.getLogger(getClass());
public AufgabenGruppeDAO(EntityManager manager) {
super(AufgabenGruppeEntity.class, manager);
}
public List<AufgabenGruppeEntity> list(UUID userId, String search) {
try {
TypedQuery<AufgabenGruppeEntity> query = getEntityManager().createQuery(
"select age from AufgabenGruppeEntity age where (age.privateGruppe = false" + (userId == null ? ")" : " or age.userId = :userId)") + (search == null ? "" : " and age.name like :search"), AufgabenGruppeEntity.class);
if (userId != null) {
query.setParameter("userId", userId);
}
if (search != null) {
query.setParameter("search", "%" + search + "%");
}
query.setMaxResults(50);
return query.getResultList();
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
return Collections.emptyList();
}
}
public List<AufgabenGruppeEntity> listOwn(UUID userId) {
try {
TypedQuery<AufgabenGruppeEntity> query = getEntityManager().createQuery("select age from AufgabenGruppeEntity age where age.userId = :userId", AufgabenGruppeEntity.class);
query.setParameter("userId", userId);
return query.getResultList();
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
return Collections.emptyList();
}
}
}

View File

@@ -0,0 +1,69 @@
package de.oaa.xxx.aufgaben;
import java.util.UUID;
public class AufgabenGruppeDisplay {
private UUID gruppenId;
private String name;
private String beschreibung;
private UUID userId;
private boolean privateGruppe;
private String bild;
private String von;
public UUID getGruppenId() {
return gruppenId;
}
public void setGruppenId(UUID gruppenId) {
this.gruppenId = gruppenId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBeschreibung() {
return beschreibung;
}
public void setBeschreibung(String beschreibung) {
this.beschreibung = beschreibung;
}
public UUID getUserId() {
return userId;
}
public void setUserId(UUID userId) {
this.userId = userId;
}
public boolean isPrivateGruppe() {
return privateGruppe;
}
public void setPrivateGruppe(boolean privateGruppe) {
this.privateGruppe = privateGruppe;
}
public void setBild(String bild) {
this.bild = bild;
}
public String getBild() {
return bild;
}
public String getVon() {
return von;
}
public void setVon(String von) {
this.von = von;
}
}

View File

@@ -0,0 +1,173 @@
package de.oaa.xxx.aufgaben;
import java.util.Base64;
import java.util.List;
import java.util.UUID;
import de.oaa.xxx.framework.XXXEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Lob;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
@Entity
@Table(name="aufgabenGruppe")
public class AufgabenGruppeEntity implements XXXEntity {
@Id
@Column
private UUID gruppenId;
@Column
private String name;
@Column
private String beschreibung;
@Column
private UUID userId;
@Column
private boolean privateGruppe;
@Lob
@Column(columnDefinition="BLOB")
private byte[] bild;
@Column
private String von;
@Column
private Integer relevanz;
@OneToMany(mappedBy = "aufgabenGruppe")
private List<ToyEntity> toys;
@OneToMany(mappedBy = "aufgabenGruppe")
private List<AufgabeEntity> aufgaben;
@OneToMany(mappedBy = "aufgabenGruppe")
private List<StrafeEntity> strafen;
@OneToMany(mappedBy = "aufgabenGruppe")
private List<SperreEntity> sperren;
public UUID getGruppenId() {
return gruppenId;
}
public void setGruppenId(UUID gruppenId) {
this.gruppenId = gruppenId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public UUID getUserId() {
return userId;
}
public void setUserId(UUID userId) {
this.userId = userId;
}
public boolean isPrivateGruppe() {
return privateGruppe;
}
public void setPrivateGruppe(boolean privateGruppe) {
this.privateGruppe = privateGruppe;
}
public List<ToyEntity> getToys() {
return toys;
}
public void setToys(List<ToyEntity> toys) {
this.toys = toys;
}
public List<AufgabeEntity> getAufgaben() {
return aufgaben;
}
public void setAufgaben(List<AufgabeEntity> aufgaben) {
this.aufgaben = aufgaben;
}
public List<StrafeEntity> getStrafen() {
return strafen;
}
public void setStrafen(List<StrafeEntity> strafen) {
this.strafen = strafen;
}
public List<SperreEntity> getSperren() {
return sperren;
}
public void setSperren(List<SperreEntity> sperren) {
this.sperren = sperren;
}
public String getBeschreibung() {
return beschreibung;
}
public void setBeschreibung(String beschreibung) {
this.beschreibung = beschreibung;
}
public AufgabenGruppe toAufgabenGruppe() {
AufgabenGruppe gruppe = new AufgabenGruppe();
gruppe.setGruppenId(gruppenId);
gruppe.setUserId(userId);
gruppe.setName(name);
gruppe.setBeschreibung(beschreibung);
gruppe.setPrivateGruppe(privateGruppe);
gruppe.setBild(Base64.getEncoder().encodeToString(bild));
gruppe.setVon(von);
gruppe.setToys(toys.stream().map(toy -> toy.toToy()).toList());
gruppe.setAufgaben(aufgaben.stream().map(aufgabe -> aufgabe.toAufgabe()).toList());
gruppe.setStrafen(strafen.stream().map(strafe -> strafe.toStrafe()).toList());
gruppe.setSperren(sperren.stream().map(sperre -> sperre.toSperre()).toList());
return gruppe;
}
public static AufgabenGruppeEntity create(AufgabenGruppe gruppe) {
AufgabenGruppeEntity entity = new AufgabenGruppeEntity();
entity.setGruppenId(UUID.randomUUID());
entity.setName(gruppe.getName());
entity.setBeschreibung(gruppe.getBeschreibung());
entity.setUserId(gruppe.getUserId());
entity.setPrivateGruppe(gruppe.isPrivateGruppe());
entity.setBild(Base64.getDecoder().decode(gruppe.getBild()));
entity.setVon(gruppe.getVon());
return entity;
}
public AufgabenGruppeDisplay toAufgabenGruppeDisplay() {
AufgabenGruppeDisplay gruppe = new AufgabenGruppeDisplay();
gruppe.setGruppenId(gruppenId);
gruppe.setUserId(userId);
gruppe.setName(name);
gruppe.setBeschreibung(beschreibung);
gruppe.setPrivateGruppe(privateGruppe);
gruppe.setBild(Base64.getEncoder().encodeToString(bild));
gruppe.setVon(von);
return gruppe;
}
public byte[] getBild() {
return bild;
}
public void setBild(byte[] bild) {
this.bild = bild;
}
public String getVon() {
return von;
}
public void setVon(String von) {
this.von = von;
}
}

View File

@@ -0,0 +1,16 @@
package de.oaa.xxx.aufgaben;
import java.util.List;
public class AufgabenGruppeList {
private List<AufgabenGruppeDisplay> gruppen;
public List<AufgabenGruppeDisplay> getGruppen() {
return gruppen;
}
public void setGruppen(List<AufgabenGruppeDisplay> gruppen) {
this.gruppen = gruppen;
}
}

View File

@@ -0,0 +1,145 @@
package de.oaa.xxx.aufgaben;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.oaa.xxx.framework.request.RequestChecker;
import jakarta.annotation.Resource;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.transaction.SystemException;
import jakarta.transaction.UserTransaction;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.Status;
import jakarta.ws.rs.core.UriInfo;
@Path("gruppe")
@ApplicationScoped
public class AufgabenGruppeResource {
private Logger LOGGER = LoggerFactory.getLogger(getClass());
@PersistenceContext(name = "aufgaben")
private EntityManager entityManager;
@Resource
private UserTransaction transaction;
@Path("all")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getAll(@QueryParam("search") String search, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
UUID userId = RequestChecker.checkRequest(req).getUserId();
transaction.begin();
AufgabenGruppeList list = new AufgabenGruppeList();
list.setGruppen(new AufgabenGruppeDAO(entityManager).list(userId, search).stream().map(entity -> entity.toAufgabenGruppeDisplay()).toList());
transaction.commit();
return Response.ok(list).build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@Path("own")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getOwn(@QueryParam("userId") UUID userId, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
if (userId != null) {
transaction.begin();
AufgabenGruppeList list = new AufgabenGruppeList();
list.setGruppen(new AufgabenGruppeDAO(entityManager).listOwn(userId).stream()
.map(entity -> entity.toAufgabenGruppeDisplay()).toList());
transaction.commit();
return Response.ok(list).build();
} else {
return Response.status(Status.BAD_REQUEST).build();
}
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@Path("{gruppeId}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response get(@PathParam("gruppeId") UUID gruppeId, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
transaction.begin();
AufgabenGruppeEntity entity = new AufgabenGruppeDAO(entityManager).findById(gruppeId);
if (entity != null) {
AufgabenGruppe aufgabenGruppe = entity.toAufgabenGruppe();
transaction.commit();
return Response.ok(aufgabenGruppe).build();
} else {
transaction.commit();
return Response.noContent().build();
}
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response post(AufgabenGruppe gruppe, @Context UriInfo uriInfo, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
transaction.begin();
AufgabenGruppeEntity entity = AufgabenGruppeEntity.create(gruppe);
new AufgabenGruppeDAO(entityManager).persist(entity);
transaction.commit();
return Response.created(uriInfo.getAbsolutePathBuilder().path(entity.getGruppenId().toString()).build())
.build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@DELETE
@Consumes(MediaType.APPLICATION_JSON)
public Response delete(AufgabenGruppe gruppe, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
transaction.begin();
AufgabenGruppeDAO dao = new AufgabenGruppeDAO(entityManager);
AufgabenGruppeEntity entity = dao.findById(gruppe.getGruppenId());
dao.remove(entity);
transaction.commit();
return Response.accepted().build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@GET
public Response orderRelevanz() {
return Response.notModified().build();
}
}

View File

@@ -0,0 +1,463 @@
package de.oaa.xxx.aufgaben;
import static de.oaa.xxx.aufgaben.Werkzeug.ANUS;
import static de.oaa.xxx.aufgaben.Werkzeug.MUND;
import static de.oaa.xxx.aufgaben.Werkzeug.PENIS;
import static de.oaa.xxx.aufgaben.Werkzeug.UMSCHNALLDILDO;
import static de.oaa.xxx.aufgaben.Werkzeug.VAGINA;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import jakarta.persistence.EntityManager;
public class DefaultFiller {
private AufgabeDAO aufgabeDAO;
private AufgabenGruppeDAO gruppeDao;
private SperreDAO sperreDao;
private StrafeDAO strafeDao;
private ToyDAO toyDao;
DefaultFiller(EntityManager entityManager) {
this.aufgabeDAO = new AufgabeDAO(entityManager);
this.gruppeDao = new AufgabenGruppeDAO(entityManager);
this.sperreDao = new SperreDAO(entityManager);
this.strafeDao = new StrafeDAO(entityManager);
this.toyDao = new ToyDAO(entityManager);
}
void chastityFemale() {
AufgabenGruppeEntity keuschWiebl = createAufgGruppe("Keuschhaltung weiblich", "Enthält verschiedene Aufgaben für Keuschhaltung von weiblichen Spielpartnern", getClass().getClassLoader().getResourceAsStream("femaleCB.png"));
ToyEntity kg = createToy("KG weiblich", "Ein Voll-Keuschheitsgürtel für die Frau", keuschWiebl);
ToyEntity kgVaginal = createToy("KG weiblich, Vaginaldildo", "Ein Voll-Keuschheitsgürtel für die Frau inkl. eines Vaginaldildos", keuschWiebl);
ToyEntity kgAnal = createToy("KG weiblich, Analdildo", "Ein Voll-Keuschheitsgürtel für die Frau inkl. eines Analdildos", keuschWiebl);
ToyEntity kgDouble = createToy("KG weiblich, Vaginal- u. Analdildo", "Ein Voll-Keuschheitsgürtel für die Frau inkl. eines Vaginal- und Analdildos", keuschWiebl);
createSperre("Voll-KG", "{PASSIV} trägt fortan einen Voll-KG, {AKTIV} ist der Keyholder", "{AKTIV}, es ist ab der Zeit {PASSIV} von ihrem KG zu befreien", 10, 30, Arrays.asList(kg), Arrays.asList(VAGINA), keuschWiebl);
createSperre("Voll-KG + Vaginaldildo", "{PASSIV} trägt fortan einen Voll-KG mit Vaginaldildo, {AKTIV} ist der Keyholder", "{AKTIV}, es ist ab der Zeit {PASSIV} von ihrem KG zu befreien", 10, 30, Arrays.asList(kgVaginal), Arrays.asList(VAGINA), keuschWiebl);
createSperre("Voll-KG + Analdildo", "{PASSIV} trägt fortan einen Voll-KG mit Analdildo, {AKTIV} ist der Keyholder", "{AKTIV}, es ist ab der Zeit {PASSIV} von ihrem KG zu befreien", 10, 30, Arrays.asList(kgAnal), Arrays.asList(VAGINA, ANUS), keuschWiebl);
createSperre("Voll-KG + Doubleplugged", "{PASSIV} trägt fortan einen Voll-KG mit Vaginal- und Analdildo, {AKTIV} ist der Keyholder", "{AKTIV}, es ist ab der Zeit {PASSIV} von ihrem KG zu befreien", 10, 30, Arrays.asList(kgDouble), Arrays.asList(VAGINA, ANUS), keuschWiebl);
}
void chastityMale() {
AufgabenGruppeEntity keuschMaennl = createAufgGruppe("Keuschhaltung männlich", "Enthält verschiedene Aufgaben für Keuschhaltung von männlichen Spielpartnern", getClass().getClassLoader().getResourceAsStream("maleCB.png"));
ToyEntity kaefig = createToy("Peniskäfig", "Ein gewöhnlicher Peniskäfig", keuschMaennl);
ToyEntity kgMaennl = createToy("KG männlich", "Ein Voll-Keuschheitsgürtel für den Mann", keuschMaennl);
ToyEntity knMaennlAnal = createToy("KG männlich, Analdildo", "Ein Voll-Keuschheitsgürtel für den Mann inkl. eines Analdildos oder -plugs", keuschMaennl);
createSperre("Peniskäfig", "{PASSIV} trägt fortan einen Peniskäfig, {AKTIV} ist der Keyholder", "{AKTIV}, es ist ab der Zeit {PASSIV} von seinem Peniskäfig zu befreien", 10, 30, Arrays.asList(kaefig), Arrays.asList(PENIS), keuschMaennl);
createSperre("Voll-KG", "{PASSIV} trägt fortan einen Voll-KG, {AKTIV} ist der Keyholder", "{AKTIV}, es ist ab der Zeit {PASSIV} von seinem KG zu befreien", 10, 30, Arrays.asList(kgMaennl), Arrays.asList(PENIS), keuschMaennl);
createSperre("Voll-KG + Analdildo", "{PASSIV} trägt fortan einen Voll-KG mit Analdildo, {AKTIV} ist der Keyholder", "{AKTIV}, es ist ab der Zeit {PASSIV} von seinem KG zu befreien", 10, 30, Arrays.asList(knMaennlAnal), Arrays.asList(PENIS, ANUS), keuschMaennl);
}
void plugs() {
AufgabenGruppeEntity gruppe = createAufgGruppe("Plugs", "Enthät verschiedene Aufgaben für das Tragen von Buttplugs über einen gewissen Zeitraum.", getClass().getClassLoader().getResourceAsStream("plugs.png"));
ToyEntity plugKlein = createToy("Plug klein", "Ein kleiner Buttplug", gruppe);
ToyEntity plugMittel = createToy("Plug mittel", "Ein mittelgroßer Buttplug", gruppe);
ToyEntity plugGross = createToy("Plug groß", "Ein großer Buttplug", gruppe);
ToyEntity plugElektro = createToy("Elektro-Plug", "Ein Elektropplug, der Stromstöße verpasst", gruppe);
createSperre("Plug klein", "{AKTIV} führt {PASSIV} einen kleinen Buttplug in anal ein, dieser ist bis auf weiteres zu tragen.", "{AKTIV}, es ist Zeit {PASSIV} von seinem Plug zu befreien", 10, 30, Arrays.asList(plugKlein), Arrays.asList(ANUS), gruppe);
createSperre("Plug mittel", "{AKTIV} führt {PASSIV} einen mittelgroßen Buttplug anal ein, dieser ist bis auf weiteres zu tragen.", "{AKTIV}, es ist Zeit {PASSIV} von seinem Plug zu befreien", 10, 30, Arrays.asList(plugMittel), Arrays.asList(ANUS), gruppe);
createSperre("Plug groß", "{AKTIV} führt {PASSIV} einen gr0ßen Buttplug anal ein, dieser ist bis auf weiteres zu tragen.", "{AKTIV}, es ist Zeit {PASSIV} von seinem Plug zu befreien", 10, 30, Arrays.asList(plugGross), Arrays.asList(ANUS), gruppe);
createSperre("Elektro-Plug", "{AKTIV} führt {PASSIV} einen Elekto-Plug anal ein, dieser ist bis auf weiteres zu tragen. {AKTIV} darf {PASSIV} !leichte Stromstöße verpassen", "{AKTIV}, es ist Zeit {PASSIV} von seinem Plug zu befreien", 10, 30, Arrays.asList(plugElektro), Arrays.asList(ANUS), gruppe);
createSperre("Elektro-Plug", "{AKTIV} führt {PASSIV} einen Elekto-Plug vaginal ein, dieser ist bis auf weiteres zu tragen. {AKTIV} darf {PASSIV} !leichte Stromstöße verpassen", "{AKTIV}, es ist Zeit {PASSIV} von seinem Plug zu befreien", 10, 30, Arrays.asList(plugElektro), Arrays.asList(VAGINA), gruppe);
}
void knebel() {
AufgabenGruppeEntity gruppe = createAufgGruppe("Knebel", "Enthält verschiedene Aufgaben für das Tragen von Knebeln über einen gewissen Zeitraum.", getClass().getClassLoader().getResourceAsStream("knebel.png"));
ToyEntity ballKnebel = createToy("Ballknebel", "Ein Ballknebel", gruppe);
ToyEntity penisKnebel = createToy("Penisknebel", "Ein Penisknebel", gruppe);
ToyEntity aufblKnebel = createToy("Aufblasbarer Knebel", "Ein aufblasbarer Knebel", gruppe);
ToyEntity isolationsmaske = createToy("Isolationsmaske", "Eine Isolationsmaske", gruppe);
createSperre("Ballknebel", "{AKTIV}, lege {PASSIV} einen Ballknebel an, dieser ist bis auf weiteres zu tragen.", "{AKTIV}, es ist Zeit {PASSIV} von seinem Knebel zu befreien.", 10, 30, Arrays.asList(ballKnebel), Arrays.asList(MUND), gruppe);
createSperre("Penisknebel", "{AKTIV}, lege {PASSIV} einen Dildoknebel an, dieser ist bis auf weiteres zu tragen.", "{AKTIV}, es ist Zeit {PASSIV} von seinem Knebel zu befreien.", 10, 30, Arrays.asList(penisKnebel), Arrays.asList(MUND), gruppe);
createSperre("Aufblasbarer Knebel", "{AKTIV}, lege {PASSIV} einen aufblasbaren Knebel an und pumpe diesen soweit auf, dass {PASSIV} noch halbwegs gut atmen kann, dieser ist bis auf weiteres zu tragen.", "{AKTIV}, es ist Zeit {PASSIV} von seinem Knebel zu befreien.", 5, 15, Arrays.asList(aufblKnebel), Arrays.asList(MUND), gruppe);
createSperre("Isolationsmaske", "{AKTIV}, lege {PASSIV} eine Isolationsmaske an, diese ist bis auf weiteres zu tragen.", "{AKTIV}, es ist Zeit {PASSIV} von seinem Knebel zu befreien.", 5, 15, Arrays.asList(isolationsmaske), Arrays.asList(MUND), gruppe);
}
void stafen() {
AufgabenGruppeEntity strafen = createAufgGruppe("Strafen", "Enthält verschiedene Bestrafungen", getClass().getClassLoader().getResourceAsStream("peitsche.png"));
ToyEntity gerte = createToy("Gerte", "Eine gewöhnliche Gerte", strafen);
ToyEntity paddel = createToy("Paddel", "Eine gewöhnliches Paddel", strafen);
ToyEntity peitsche = createToy("Peitsche", "Eine gewöhnliche Peitsche", strafen);
ToyEntity penisKnebel = createToy("Doppel-Penisknebel", "Ein Doppel-Penisknebel", strafen);
ToyEntity handfesseln = createToy("Handfesseln", "Fesseln zum Binden der Hände, z.B. Handschellen", strafen);
ToyEntity plugGross = createToy("Plug groß", "Ein großer Buttplug", strafen);
ToyEntity plugElektro = createToy("Elektro-Plug", "Ein Elektropplug, der Stromstöße verpasst", strafen);
ToyEntity plugPump = createToy("Pump-Plug", "Ein aufblasbarer Plug", strafen);
ToyEntity nippelklemmen = createToy("Nippelklemmen", "Nippelklemmen", strafen);
ToyEntity augenbinde = createToy("Augenbinde", "Eine Augenbinde", strafen);
ToyEntity ballKnebel = createToy("Ballknebel", "Ein Ballknebel", strafen);
ToyEntity strapon = createToy("Strapon", "Ein Umschnalldildo", strafen);
ToyEntity kgMann = createToy("KG Mann", "Ein Voll-KG oder Peniskäfig für den Mann", strafen);
ToyEntity kgFrau = createToy("KG Frau", "Ein Voll-KG die Frau", strafen);
ToyEntity dildoKlein = createToy("Dildo klein", "Ein kleiner Dildo", strafen);
ToyEntity dildoGross = createToy("Dildo groß", "Ein großer Dildo", strafen);
createStrafe("5 Schläge mit flachen Hand", "{PASSIV} stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, {AKTIV} verpasst {PASSIV} 5 Schläge mit der flachen Hand auf das Gesäß.",
1, null, null, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), strafen);
createStrafe("15 Schläge mit flachen Hand", "{PASSIV} stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, {AKTIV} verpasst {PASSIV} 15 beherzte Schläge mit der flachen Hand auf das Gesäß, {PASSIV} zählt laut mit",
3, null, null,Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), strafen);
createStrafe("5 Schläge mit Gerte", "{PASSIV} stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, {AKTIV} verpasst {PASSIV} 5 Schläge mit der Gerte auf das Gesäß.",
2, null, null, Collections.emptyList(), Collections.emptyList(), Arrays.asList(gerte), strafen);
createStrafe("15 Schläge mit Gerte", "{PASSIV} stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, {AKTIV} verpasst {PASSIV} 15 beherzte Schläge mit der Gerte auf das Gesäß, {PASSIV} zählt laut mit",
4, null, null,Collections.emptyList(), Collections.emptyList(), Arrays.asList(gerte), strafen);
createStrafe("5 Schläge mit Paddel", "{PASSIV} stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, {AKTIV} verpasst {PASSIV} 5 Schläge mit dem Paddel auf das Gesäß.",
2, null, null, Collections.emptyList(), Collections.emptyList(), Arrays.asList(paddel), strafen);
createStrafe("15 Schläge mit Paddel", "{PASSIV} stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, {AKTIV} verpasst {PASSIV} 15 beherzte Schläge mit dem Paddel auf das Gesäß, {PASSIV} zählt laut mit",
4, null, null,Collections.emptyList(), Collections.emptyList(), Arrays.asList(paddel), strafen);
createStrafe("5 Schläge mit Peitsche", "{PASSIV} stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, {AKTIV} verpasst {PASSIV} 5 Schläge mit der Peitsche auf das Gesäß.",
3, null, null, Collections.emptyList(), Collections.emptyList(), Arrays.asList(peitsche), strafen);
createStrafe("15 Schläge mit Peitsche", "{PASSIV} stellt sich mit dem Gesicht zur Wand, Hände hinterm Kopf, Beine schulterbreit, {AKTIV} verpasst {PASSIV} 15 beherzte Schläge mit der Peitsche auf das Gesäß, {PASSIV} zählt laut mit",
5, null, null,Collections.emptyList(), Collections.emptyList(), Arrays.asList(peitsche), strafen);
createStrafe("Schläge auf Klitoris mit Hand", "{PASSIV} liegt auf dem Rücken mit breiten Beinen, {AKTIV} verpasst {PASSIV} 5 Schläge mit der Hand auf die Klitoris, {PASSIV} zählt laut mit",
4, null, null, Collections.emptyList(), Arrays.asList(VAGINA), Collections.emptyList(), strafen);
createStrafe("Schläge auf Klitoris mit Petische", "{PASSIV} liegt auf dem Rücken mit breiten Beinen, {AKTIV} verpasst {PASSIV} 5 Schläge mit der Peitsche auf die Klitoris, {PASSIV} zählt laut mit",
5, null, null, Collections.emptyList(), Arrays.asList(VAGINA), Arrays.asList(peitsche), strafen);
createStrafe("Schläge auf Klitoris mit Paddel", "{PASSIV} liegt auf dem Rücken mit breiten Beinen, {AKTIV} verpasst {PASSIV} 5 Schläge mit dem Paddel auf die Klitoris, {PASSIV} zählt laut mit",
5, null, null, Collections.emptyList(), Arrays.asList(VAGINA), Arrays.asList(paddel), strafen);
createStrafe("Schläge auf Klitoris mit Gerte", "{PASSIV} liegt auf dem Rücken mit breiten Beinen, {AKTIV} verpasst {PASSIV} 5 Schläge mit der Gerte auf die Klitoris, {PASSIV} zählt laut mit",
5, null, null, Collections.emptyList(), Arrays.asList(VAGINA), Arrays.asList(gerte), strafen);
createStrafe("5 Ohrfeigen", "{PASSIV} stellt sich mit dem Rücken zur Wand, Hände hinterm Kopf, Beine schulterbreit, {AKTIV} verpasst {PASSIV} 5 Ohrfeigen, {PASSIV} zählt laut mit",
5, null, null, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), strafen);
createStrafe("Elektroplug anal", "{AKTIV} führt {PASSIV} anal einen Elektro-Plug ein. {AKTIV} erhöht ganz langsam die Intensität bis {PASSIV} 'STOP' sagt, dann fängt {AKTIV} wieder bei null an",
5, 30, 90, Collections.emptyList(), Arrays.asList(ANUS), Arrays.asList(plugElektro), strafen);
createStrafe("Elektroplug vaginal", "{AKTIV} führt {PASSIV} vaginal einen Elektro-Plug ein. {AKTIV} erhöht ganz langsam die Intensität bis {PASSIV} 'STOP' sagt, dann fängt {AKTIV} wieder bei null an",
5, 30, 90, Collections.emptyList(), Arrays.asList(VAGINA), Arrays.asList(plugElektro), strafen);
createStrafe("Pumpplug anal", "{AKTIV} führt {PASSIV} anal einen Pump-Plug ein. {AKTIV} pumpt ganz langsam auf bis {PASSIV} 'STOP' sagt, dann fängt {AKTIV} wieder bei null an",
5, 30, 90, Collections.emptyList(), Arrays.asList(ANUS), Arrays.asList(plugPump), strafen);
createStrafe("Pumpplug vaginal", "{AKTIV} führt {PASSIV} anal einen Pump-Plug ein. {AKTIV} pumpt ganz langsam auf bis {PASSIV} 'STOP' sagt, dann fängt {AKTIV} wieder bei null an",
5, 30, 90, Collections.emptyList(), Arrays.asList(VAGINA), Arrays.asList(plugPump), strafen);
createStrafe("Facesitting (Vagina)", "{PASSIV} liegt auf dem Rücken, {AKTIV} setzt sich auf das Gesicht von {PASSIV} und lässt sich den Vaginal und/oder Analbereich verwöhnen",
2 , 90, 180, Arrays.asList(VAGINA, ANUS), Arrays.asList(MUND), Collections.emptyList(), strafen);
createStrafe("Facesitting gefesselt (Vagina)", "{PASSIV} liegt mit auf den Rücken gefesselten Händen auf dem Rücken, {AKTIV} setzt sich auf das Gesicht von {PASSIV} und lässt sich den Vaginal und/oder Analbereich verwöhnen",
4, 90, 180, Arrays.asList(VAGINA, ANUS), Arrays.asList(MUND), Arrays.asList(handfesseln), strafen);
createStrafe("Facesitting (Penis)", "{PASSIV} liegt auf dem Rücken, {AKTIV} setzt sich auf das Gesicht von {PASSIV} und lässt sich den Penis und/oder Analbereich verwöhnen",
2, 90, 180, Arrays.asList(PENIS, ANUS), Arrays.asList(MUND), Collections.emptyList(), strafen);
createStrafe("Facesitting gefesselt (Penis)", "{PASSIV} liegt mit auf den Rücken gefesselten Händen auf dem Rücken, {AKTIV} setzt sich auf das Gesicht von {PASSIV} und lässt sich den Penis und/oder Analbereich verwöhnen",
4, 90, 180, Arrays.asList(VAGINA, PENIS), Arrays.asList(MUND), Arrays.asList(handfesseln), strafen);
createStrafe("Facesitting Doppelpenisknebel", "{PASSIV} liegt auf dem Rücken, {AKTIV} legt {PASSIV} einen Doppel-Penisknebel an und reitet diesen vaginal oder anal",
3, 60, 120, Arrays.asList(VAGINA), Arrays.asList(MUND), Arrays.asList(penisKnebel), strafen);
createStrafe("Facesitting Doppelpenisknebel gefesslt", "{PASSIV} liegt mit auf den Rücken gefesselten Händen auf dem Rücken, {AKTIV} legt {PASSIV} einen Doppel-Penisknebel an und reitet diesen vaginal oder anal",
3, 60, 120, Arrays.asList(VAGINA), Arrays.asList(MUND), Arrays.asList(penisKnebel, handfesseln), strafen);
createStrafe("Nippelklemmen", "{AKTIV} legt {PASSIV} Nippelklemmen an, {AKTIV} zieht an der Kette und erhöht ganz langsam die Intensität bis {PASSIV} 'STOP' sagt, dann fängt {AKTIV} wieder bei null an",
3, 30, 90, Collections.emptyList(), Collections.emptyList(), Arrays.asList(nippelklemmen), strafen);
createStrafe("Nippelbehandlung", "{AKTIV} nimmt die Nippel von {PASSIV} zwischen die Finger und erhöht langsam den Druck bis {PASSIV} 'STOP' sagt",
2, null, null, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), strafen);
createStrafe("Hilflos liegen lassen", "{AKTIV} fesselt, knebelt und verbindet die Augen von {PASSIV}. {AKTIV} lässt {PASSIV} wehrlos liegen, bei Ablauf der Zeit erlöst {AKTIV} {PASSIV} mit einem beherzten Plapps auf den Po",
4, 300, 600, Collections.emptyList(), Collections.emptyList(), Arrays.asList(handfesseln, ballKnebel, augenbinde), strafen);
createStrafe("Strapon reiten", "{PASSIV} liegt auf dem Rücken und trägt dabei einen Umschnalldildo. {AKTIV} reitet den Umschnalldildo von {PASSIV}",
3, 60, 180, Arrays.asList(VAGINA, ANUS), Collections.emptyList(), Arrays.asList(strapon), strafen);
createStrafe("Strapon reiten gefesselt", "{AKTIV} fesselt und knebelt {PASSIV}. {PASSIV} trägt dabei einen Umschnalldildo. {AKTIV} reitet den Umschnalldildo von {PASSIV}",
4, 60, 180, Arrays.asList(VAGINA, ANUS), Collections.emptyList(), Arrays.asList(strapon, handfesseln), strafen);
createStrafe("Teaseblowjob mit dem Strapon", "{AKTIV} fesselt und knebelt {PASSIV}. {PASSIV} trägt dabei einen Umschnalldildo, KG und einen großen Buttplug. {AKTIV} gibt dem Umschnalldildo einen Blowjow in 69er Positition und präsentiert {PASSIV} dabei den Intimbereich",
5, 180, 300, Arrays.asList(VAGINA), Collections.emptyList(), Arrays.asList(kgMann, plugGross, handfesseln, strapon), strafen);
createStrafe("Teasereiten mit Strapon", "{AKTIV} fesselt und knebelt {PASSIV}. {PASSIV} trägt dabei einen Umschnalldildo, KG und einen großen Buttplug. {AKTIV} reitet den Umschnalldildo von {PASSIV}.",
5, 180, 300, Arrays.asList(VAGINA), Collections.emptyList(), Arrays.asList(kgMann, plugGross, handfesseln, strapon), strafen);
createStrafe("Tease mit Selbstbefriedigung", "{AKTIV} knebelt {PASSIV} knebelt und fesselt {PASSIV} an einen Stuhl. {PASSIV} trägt dabei einen KG und einen großen Buttplug. {AKTIV} befriedigt sich dann vor den Augen von {PASSIV} selber",
4, 240, 360, Arrays.asList(VAGINA), Collections.emptyList(), Arrays.asList(kgMann, plugGross, ballKnebel, handfesseln), strafen);
createStrafe("Tease mit Selbstbefriedigung", "{AKTIV} knebelt {PASSIV} knebelt und fesselt {PASSIV} an einen Stuhl. {PASSIV} trägt dabei einen KG und einen großen Buttplug. {AKTIV} befriedigt sich dann vor den Augen von {PASSIV} selber",
4, 240, 360, Arrays.asList(PENIS), Collections.emptyList(), Arrays.asList(kgFrau, plugGross, ballKnebel, handfesseln), strafen);
createStrafe("Blowjob auf allen vieren", "{AKTIV}, zwinge {PASSIV} vor dir auf die Knie, führe dein Glied (oder Strap on) in den Mund von {PASSIV} ein und zeig mit einem Deepthroat, wer das sagen hat",
5, 30, 90, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(MUND), Collections.emptyList(), strafen);
createStrafe("Oralsex mit kleinem Dildo in der Vagina", "{PASSIV}, geh auf die Knie und reite vaginal einen kleinen Dildo, befriedige dabei {AKTIV} oral.",
2, 60, 120,Arrays.asList(VAGINA, PENIS), Arrays.asList(VAGINA), Arrays.asList(dildoKlein), strafen);
createStrafe("Oralsex mit großen Dildo in der Vagina", "{PASSIV}, geh auf die Knie und reite vaginal einen großen Dildo, befriedige dabei {AKTIV} oral.",
4, 60, 120,Arrays.asList(VAGINA, PENIS), Arrays.asList(VAGINA), Arrays.asList(dildoGross), strafen);
createStrafe("Oralsex mit kleinem Dildo im Anus", "{PASSIV}, geh auf die Knie und reite anal einen kleinen Dildo, befriedige dabei {AKTIV} oral.",
3, 60, 120,Arrays.asList(VAGINA, PENIS), Arrays.asList(ANUS), Arrays.asList(dildoKlein), strafen);
createStrafe("Oralsex mit großen Dildo im Anus", "{PASSIV}, geh auf die Knie und reite anal einen großen Dildo, befriedige dabei {AKTIV} oral.",
4, 60, 120,Arrays.asList(VAGINA, PENIS), Arrays.asList(ANUS), Arrays.asList(dildoGross), strafen);
createStrafe("Vagina dehnen", "{PASSIV} geht auf alle viere und streckt den hintern schön in die Luft, {AKTIV} führe langsam nach und nach mehr Finger in die Vagina von {PASSIV} ein, bis {PASSIV} 'STOP' sagt",
2, null, null, Arrays.asList(), Arrays.asList(VAGINA), Arrays.asList(), strafen);
createStrafe("Anus dehnen", "{PASSIV} geht auf alle viere und streckt den hintern schön in die Luft, {AKTIV} führe langsam nach und nach mehr Finger in die Anus von {PASSIV} ein, bis {PASSIV} 'STOP' sagt",
2, null, null, Arrays.asList(), Arrays.asList(ANUS), Arrays.asList(), strafen);
createStrafe("Vaginalsex in Missionarstellung und Breathplay", "{AKTIV} dringt in Missionarsstellung in {PASSIV} und gibt vollgas, dabei packt {AKTIV} {PASSIV} am Hals und drückt beherzt zu",
4, 30, 60, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Arrays.asList(), strafen);
createStrafe("Analsex in Missionarstellung und Breathplay", "{AKTIV} dringt in Missionarsstellung anal in {PASSIV} und gibt vollgas, dabei packt {AKTIV} {PASSIV} am Hals und drückt beherzt zu",
4, 30, 60, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Arrays.asList(), strafen);
}
void aufgabenAnal() {
AufgabenGruppeEntity aufgaben = createAufgGruppe("Aufgaben Anal", "Enthält verschiedene Sex-Aufgaben die sich rund um das Hintertürchen drehen.", getClass().getClassLoader().getResourceAsStream("sex.png"));
ToyEntity vibrator = createToy("Virbrator", "Ein herkömmlicher Vibrator.", aufgaben);
ToyEntity analVibrator = createToy("Analvirbrator", "Ein Vibrator speziell für die anale Anwendung.", aufgaben);
ToyEntity dildoKlein = createToy("Dildo klein", "Ein kleiner Dildo", aufgaben);
ToyEntity dildoGross = createToy("Dildo groß", "Ein großer Dildo", aufgaben);
ToyEntity doppelDildo = createToy("Doppeldildo", "Ein Doppeldildo", aufgaben);
createAufgabe("Analingus", "{AKTIV}, verpasse {PASSIV} eine Anusmassage mit der Zunge", 60, 120,
3, Arrays.asList(MUND), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Klitoris mit Vibrator verwöhnen und Finger in Po", "{AKTIV}, verwöhne die Klitoris von {PASSIV} mit einem Vibrator, führe dabei einen Finger in den Anus von {PASSIV} ein",
4, 30, 180, Collections.emptyList(), Arrays.asList(VAGINA, ANUS), Arrays.asList(vibrator), aufgaben);
createAufgabe("Cunnilingus und Finger in Po", "{AKTIV}, verwöhne die Klitoris von {PASSIV} mit dem Mund, führe dabei einen Finger in den Anus von {PASSIV} ein" ,
3, 30, 180, Arrays.asList(MUND), Arrays.asList(VAGINA, ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Klitoris mit Fingern verwöhnen und Finger in Anus", "{AKTIV}, verwöhne die Klitoris von {PASSIV} mit der Hand, führe dabei einen Finger in den Anus von {PASSIV} ein" ,
3, 30, 180, Collections.emptyList(), Arrays.asList(VAGINA, ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Eichel mit Vibrator verwöhnen und Finger in Po", "{AKTIV}, verwöhne die Eichel von {PASSIV} mit einem Vibrator, führe dabei einen Finger in den Anus von {PASSIV} ein" ,
4, 30, 180, Collections.emptyList(), Arrays.asList(PENIS, ANUS), Arrays.asList(vibrator), aufgaben);
createAufgabe("Felatio und Finger in Po", "{AKTIV}, verwöhne die Eichel von {PASSIV} mit dem Mund, führe dabei einen Finger in den Anus von {PASSIV} ein" ,
4, 30, 180, Arrays.asList(MUND), Arrays.asList(PENIS, ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Handjob und Finger in Po", "{AKTIV}, verwöhne die Eichel von {PASSIV} mit der Hand, führe dabei einen Finger in den Anus von {PASSIV} ein",
4, 30, 180, Collections.emptyList(), Arrays.asList(PENIS, ANUS),Collections.emptyList(), aufgaben);
createAufgabe("Anus mit Vibrator verwöhnen", "{AKTIV}, verwöhne den Anus von {PASSIV} mit einem Vibrator" ,
3, 30, 180, Collections.emptyList(), Arrays.asList(ANUS), Arrays.asList(vibrator), aufgaben);
createAufgabe("Anilingus", "{AKTIV}, verwöhne den Anus von {PASSIV} mit dem Mund" ,
3, 30, 180, Arrays.asList(MUND), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Facesitting und Anilingus", "{AKTIV} liegt auf dem Rücken, {PASSIV} sitzt auf seinem Gesicht. {AKTIV}, verwöhne den Anus von {PASSIV} mit dem Mund" ,
4, 60, 180, Arrays.asList(MUND), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Analvibrator einführen", "{AKTIV}, führe {PASSIV} einen Analvibrator ein und verwöhne {PASSIV} durch langsame Bewegungen mit selbigem" ,
4, 30, 180, Collections.emptyList(), Arrays.asList(ANUS), Arrays.asList(analVibrator), aufgaben);
createAufgabe("Kleiner Dildo anal", "{AKTIV}, führe {PASSIV} einen kleinen Dildo anal ein und verwöhne {PASSIV} durch langsame Bewegungen mit selbigem" ,
3, 30, 180, Collections.emptyList(), Arrays.asList(ANUS), Arrays.asList(dildoKlein), aufgaben);
createAufgabe("Großer Dildo anal", "{AKTIV}, führe {PASSIV} einen großen Dildo anal ein und verwöhne {PASSIV} durch langsame Bewegungen mit selbigem" ,
4, 30, 180, Collections.emptyList(), Arrays.asList(ANUS), Arrays.asList(dildoGross), aufgaben);
createAufgabe("Großer Dildo anal schnell", "{AKTIV}, führe {PASSIV} einen großen Dildo anal ein und verwöhne {PASSIV} durch schnelle Bewegungen mit selbigem" ,
5, 30, 180, Collections.emptyList(), Arrays.asList(ANUS), Arrays.asList(dildoGross), aufgaben);
createAufgabe("Doppeldildo schnell", "{AKTIV}, führe {PASSIV} einen Doppeldildo anal und vaginal ein und bewege selbigen möglichst schnell rein und raus" ,
5, 30, 60, Collections.emptyList(), Arrays.asList(VAGINA, ANUS), Arrays.asList(doppelDildo), aufgaben);
createAufgabe("Doppeldildo langsam", "{AKTIV}, führe {PASSIV} einen Doppeldildo anal und vaginal und verwöhne {PASSIV} durch langsame Bewegungen mit selbigem" ,
4, 30, 180, Collections.emptyList(), Arrays.asList(VAGINA, ANUS), Arrays.asList(doppelDildo), aufgaben);
createAufgabe("Missionarstellung anal langsam", "{AKTIV} dringt in Missionarstellung den Anus von {PASSIV} ein und verwöhnt {PASSIV} mit langsamen Bewegungen",
4, 60, 180, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Missionarstellung anal schnell", "{AKTIV} dringt in Missionarstellung den Anus von {PASSIV} ein und verwöhnt {PASSIV} mit schnellen Bewegungen",
5, 30, 90, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Missionarstellung anal vollgas", "{AKTIV} dringt in Missionarstellung den Anus von {PASSIV} und gibt vollgas",
5, 30, 60, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Reiterstellung anal langsam", "{PASSIV} setzt sich in Reiterstellung mit dem Anus auf {AKTIV}. {PASSIV} bestimmt das Tempo",
3, 60, 180, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Reiterstellung anal schnell", "{PASSIV} setzt sich in Reiterstellung mit dem Anus auf {AKTIV}. {PASSIV} versucht das Tempo hoch zu halten",
4, 60, 120, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Reiterstellung anal vollgas", "{PASSIV} setzt sich in Reiterstellung mit dem Anus auf {AKTIV} und gibt vollgas",
5, 30, 60, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Doggystyle langsam Finger in Po", "{AKTIV} dringt in Hundestellung in {PASSIV} ein und verwöhnt {PASSIV} mit langsamen Bewegungen. Dabei dringt {AKTIV} mit einem oder zwei Fingern in den Po von {PASSIV} ein",
4, 60, 180, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA, ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Doggystyle schnell Finger in Po", "{AKTIV} dringt in Hundestellung in {PASSIV} ein und verwöhnt {PASSIV} mit schnellen Bewegungen. Dabei dringt {AKTIV} mit einem oder zwei Fingern in den Po von {PASSIV} ein",
5, 60, 120, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA, ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Doggystyle vollgas Finger in Po", "{AKTIV} dringt in Hundestellung in {PASSIV} ein und gibt vollgas. Dabei dringt {AKTIV} mit einem oder zwei Fingern in den Po von {PASSIV} ein",
5 ,30, 60, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA, ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Doggystyle anal langsam", "{AKTIV} dringt in Hundestellung den Anus von {PASSIV} ein und verwöhnt {PASSIV} mit langsamen Bewegungen",
3, 60, 180, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Doggystyle anal schnell", "{AKTIV} dringt in Hundestellung den Anus von {PASSIV} ein und verwöhnt {PASSIV} mit schnellen Bewegungen",
4, 60, 120, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Doggystyle anal vollgas", "{AKTIV} dringt in Hundestellung den Anus von {PASSIV} ein und gibt vollgas",
5, 30, 60, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Doggystyle anal vollgas keinen Mucks", "{AKTIV} dringt in Hundestellung anal in {PASSIV} ein und gibt vollgas. {PASSIV} darf dabei keinen laut von sich geben.",
5, 30, 60, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Doggystyle anal Tempo bestimmt die 'gefickte' Person", "{AKTIV} dringt in Hundestellung den Anus von {PASSIV} ein. {AKTIV} hält still und {PASSIV} gibt das Tempo vor",
3, 30, 180, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Löffelchen anal langsam", "{AKTIV} dringt in Löffelchenstellung den Anus von {PASSIV} ein und verwöhnt {PASSIV} mit langsamen Bewegungen",
3, 60, 180, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Löffelchen anal schnell", "{AKTIV} dringt in Löffelchenstellung den Anus von {PASSIV} ein und verwöhnt {PASSIV} mit schnellen Bewegungen",
4, 60, 120, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
createAufgabe("Löffelchen anal vollgas", "{AKTIV} dringt in Löffelchenstellung den Anus von {PASSIV} ein und gibt vollgas",
5, 30, 60, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(ANUS), Collections.emptyList(), aufgaben);
}
void aufgaben() {
AufgabenGruppeEntity aufgaben = createAufgGruppe("Aufgaben", "Enthält verschiedene Sex-Aufgaben.", getClass().getClassLoader().getResourceAsStream("sex.png"));
ToyEntity vibrator = createToy("Virbrator", "Ein herkömmlicher Vibrator.", aufgaben);
ToyEntity dildoKlein = createToy("Dildo klein", "Ein kleiner Dildo", aufgaben);
ToyEntity dildoGross = createToy("Dildo groß", "Ein großer Dildo", aufgaben);
createAufgabe("Hintern präsentieren", "{AKTIV}, zeig {PASSIV} deinen Hintern, gib dir selber dabei ein oder zwei Klasppse auf den Po",
1, null, null, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Hals küssen", "{AKTIV}, küsse den Hals von {PASSIV} leidenschaftlich",
1, 30, 60, Arrays.asList(MUND) ,Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Bauchnabel küssen", "{AKTIV}, zeichne mit Küssen den Bauchnabel von {PASSIV} nach",
1, 30, 60, Arrays.asList(MUND), Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Ohren knabbern", "{AKTIV}, knabber leidenschaftlich an den Ohrläppchen von {PASSIV}",
1, 30, 60, Arrays.asList(MUND), Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Berühren ohne anfassen", "{AKTIV}, berühre den gesamten Körper von {PASSIV} ohne die Hände zu verwenden",
2, 60, 120, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Nacken küssen", "{PASSIV} sitzt vor {AKTIV}, {AKTIV} küsste leidenschaftlich den Nacken von {PASSIV}",
1, 60, 120, Arrays.asList(MUND), Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Brust küssen", "{AKTIV}, Küsse die Brust von {PASSIV} ohne die Nippel zu berühren",
1, 60, 120, Arrays.asList(MUND), Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Nippel verwöhnen", "{AKTIV}, verwöhne die Nippel von {PASSIV} mit Küssen",
2, 60, 120, Arrays.asList(MUND), Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Hintern küssen", "{AKTIV}, küsse den Hintern von {PASSIV} ohne den Anus zu berühren",
1, 60, 120, Arrays.asList(MUND), Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Intimkuss durch Unterwäsche", "{AKTIV}, küsse den Intimbereich von {PASSIV} durch die Unterwäsche",
2, 60, 120, Arrays.asList(MUND), Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Brustmassage", "{AKTIV}, massiere die Brust von {PASSIV} leidenschaftlich",
1, 60, 120, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Hinternmassage", "{AKTIV}, massiere den Hintern von {PASSIV} leidenschaftlich",
1, 60, 120, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Rückenmassage", "{AKTIV}, massiere den Rücken von {PASSIV} leidenschaftlich",
1, 60, 120, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Oberschänkelmassage", "{AKTIV}, massiere die Oberschenkel von {PASSIV} leidenschaftlich",
1, 60, 120, Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), aufgaben);
createAufgabe("Klitoris mit Vibrator verwöhnen", "{AKTIV}, verwöhne die Klitoris von {PASSIV} mit einem Vibrator",
3, 30, 180, Collections.emptyList(), Arrays.asList(VAGINA), Arrays.asList(vibrator), aufgaben);
createAufgabe("Cunnilingus und Finger in Vagina", "{AKTIV}, verwöhne die Klitoris von {PASSIV} mit dem Mund, führe dabei einen bis zwei Finger in die Vagina von {PASSIV} ein" ,
3, 30, 180, Arrays.asList(MUND), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Klitoris mit Fingern verwöhnen und Finger in Vagina", "{AKTIV}, verwöhne die Klitoris von {PASSIV} mit der Hand, führe dabei einen bis zwei Finger in die Vagina von {PASSIV} ein",
4, 30, 180, Collections.emptyList(), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Eichel mit Vibrator verwöhnen", "{AKTIV}, verwöhne die Eichel von {PASSIV} mit einem Vibrator" ,
3, 30, 180, Collections.emptyList(), Arrays.asList(PENIS), Arrays.asList(vibrator), aufgaben);
createAufgabe("Felatio", "{AKTIV}, verwöhne die Eichel von {PASSIV} mit dem Mund" ,
3, 30, 180, Arrays.asList(MUND), Arrays.asList(PENIS), Collections.emptyList(), aufgaben);
createAufgabe("Handjob", "{AKTIV}, verwöhne die Eichel von {PASSIV} mit der Hand" ,
3, 30, 180, Collections.emptyList(), Arrays.asList(PENIS), Collections.emptyList(), aufgaben);
createAufgabe("Facesitting", "{AKTIV} liegt auf dem Rücken, {PASSIV} sitzt auf seinem Gesicht. {AKTIV}, verwöhne die Vagina von {PASSIV} mit dem Mund" ,
4, 60, 180, Arrays.asList(MUND), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("69er-Position", "69er-Zeit: {AKTIV} liegt oben. {PASSIV}, falls du verschlossen bist, zeihe einen Strap on an, damit {AKTIV} auch was zu tun hat.",
4, 60, 180, Arrays.asList(VAGINA, MUND), Arrays.asList(MUND), Collections.emptyList(), aufgaben);
createAufgabe("Kleiner Dildo vaginal", "{AKTIV}, führe {PASSIV} einen kleinen Dildo vaginal ein und verwöhne {PASSIV} durch langsame Bewegungen mit selbigem" ,
3, 30, 180, Collections.emptyList(), Arrays.asList(VAGINA), Arrays.asList(dildoKlein), aufgaben);
createAufgabe("Großer Dildo vaginal", "{AKTIV}, führe {PASSIV} einen großen Dildo vaginal ein und verwöhne {PASSIV} durch langsame Bewegungen mit selbigem" ,
4, 30, 180, Collections.emptyList(), Arrays.asList(VAGINA), Arrays.asList(dildoGross), aufgaben);
createAufgabe("Großer Dildo vaginal schnell", "{AKTIV}, führe {PASSIV} einen großen Dildo vaginal ein und bewege selbigen möglichst schnell rein und raus" ,
5, 30, 60, Collections.emptyList(), Arrays.asList(VAGINA), Arrays.asList(dildoGross), aufgaben);
createAufgabe("Missionarstellung langsam", "{AKTIV} dringt in Missionarstellung in {PASSIV} ein und verwöhnt {PASSIV} mit langsamen Bewegungen",
3, 60, 180, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Missionarstellung schnell", "{AKTIV} dringt in Missionarstellung in {PASSIV} ein und verwöhnt {PASSIV} mit schnellen Bewegungen",
4, 30, 90, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Missionarstellung Vollgas", "{AKTIV} dringt in Missionarstellung in {PASSIV} ein und gibt vollgas",
5, 30, 60, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Reiterstellung langsam", "{PASSIV} setzt sich in Reiterstellung auf {AKTIV}. {PASSIV} bestimmt das Tempo",
3 ,60, 180, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Reiterstellung schnell", "{PASSIV} setzt sich in Reiterstellung auf {AKTIV}. {PASSIV} versucht das Tempo hoch zu halten",
4, 60, 120, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Reiterstellung vollgas", "{PASSIV} setzt sich in Reiterstellung auf {AKTIV} und gibt vollgas",
5, 30, 60, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Doggystyle langsam", "{AKTIV} dringt in Hundestellung in {PASSIV} ein und verwöhnt {PASSIV} mit langsamen Bewegungen",
3, 60, 180, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Doggystyle schnell", "{AKTIV} dringt in Hundestellung in {PASSIV} ein und verwöhnt {PASSIV} mit schnellen Bewegungen",
4, 60, 120, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Doggystyle vollgas", "{AKTIV} dringt in Hundestellung in {PASSIV} ein und gibt vollgas",
5, 30, 60, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Doggystyle vollgas keinen Mucks", "{AKTIV} dringt in Hundestellung in {PASSIV} ein und gibt vollgas. {PASSIV} darf dabei keinen laut von sich geben.",
5, 30, 60, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Doggystyle Tempo bestimmt die 'gefickte' Person", "{AKTIV} dringt in Hundestellung in {PASSIV} ein. {AKTIV} hält still und {PASSIV} gibt das Tempo vor",
3, 60, 180, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Löffelchen langsam", "{AKTIV} dringt in Löffelchenstellung in {PASSIV} ein und verwöhnt {PASSIV} mit langsamen Bewegungen",
3, 60, 180, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Löffelchen scnell", "{AKTIV} dringt in Löffelchenstellung in {PASSIV} ein und verwöhnt {PASSIV} mit schnellen Bewegungen",
4, 60, 120, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
createAufgabe("Löffelchen vollgas", "{AKTIV} dringt in Löffelchenstellung in {PASSIV} ein und gibt vollgas",
5, 30, 60, Arrays.asList(PENIS, UMSCHNALLDILDO), Arrays.asList(VAGINA), Collections.emptyList(), aufgaben);
}
private AufgabeEntity createAufgabe(String kurzText, String text, Integer level, Integer sekundenVon, Integer sekundenBis, List<Werkzeug> benoetigtAktiv, List<Werkzeug> benoetigtPassiv, List<ToyEntity> benoetigteToys, AufgabenGruppeEntity gruppe) {
AufgabeEntity entity = new AufgabeEntity();
entity.setAufgabeId(UUID.randomUUID());
entity.setKurzText(kurzText);
entity.setText(text);
entity.setLevel(level);
entity.setSekundenVon(sekundenVon);
entity.setSekundenBis(sekundenBis);
entity.setBenoetigtAktiv(benoetigtAktiv);
entity.setBenoetigtPassiv(benoetigtPassiv);
entity.setBenoetigteToys(benoetigteToys);
entity.setAufgabenGruppe(gruppe);
aufgabeDAO.persist(entity);
return entity;
}
private StrafeEntity createStrafe(String kurzText, String text, Integer level, Integer sekundenVon, Integer sekundenBis, List<Werkzeug> benoetigtAktiv, List<Werkzeug> benoetigtPassiv, List<ToyEntity> benoetigteToys, AufgabenGruppeEntity gruppe) {
StrafeEntity entity = new StrafeEntity();
entity.setStrafeId(UUID.randomUUID());
entity.setKurzText(kurzText);
entity.setText(text);
entity.setLevel(level);
entity.setSekundenVon(sekundenVon);
entity.setSekundenBis(sekundenBis);
entity.setBenoetigtAktiv(benoetigtAktiv);
entity.setBenoetigtPassiv(benoetigtPassiv);
entity.setBenoetigteToys(benoetigteToys);
entity.setAufgabenGruppe(gruppe);
strafeDao.persist(entity);
return entity;
}
private SperreEntity createSperre(String kurzText, String text, String releaseText, Integer von, Integer bis, List<ToyEntity> toys, List<Werkzeug> sperreFue, AufgabenGruppeEntity gruppe) {
SperreEntity entity = new SperreEntity();
entity.setSperreId(UUID.randomUUID());
entity.setKurzText(kurzText);
entity.setText(text);
entity.setReleaseText(releaseText);
entity.setMinutenVon(von);
entity.setMinutenBis(bis);
entity.setBenoetigteToys(toys);
entity.setSperreFuer(sperreFue);
entity.setAufgabenGruppe(gruppe);
sperreDao.persist(entity);
return entity;
}
private AufgabenGruppeEntity createAufgGruppe(String name, String beschreibung, InputStream stream) {
AufgabenGruppeEntity entity = new AufgabenGruppeEntity();
entity.setGruppenId(UUID.randomUUID());
entity.setUserId(null);
entity.setName(name);
entity.setBeschreibung(beschreibung);
entity.setPrivateGruppe(false);
try {
entity.setBild(stream.readAllBytes());
} catch (IOException e) {
e.printStackTrace();
}
gruppeDao.persist(entity);
return entity;
}
private ToyEntity createToy(String name, String beschreibung, AufgabenGruppeEntity gruppe) {
ToyEntity toy = new ToyEntity();
toy.setToyId(UUID.randomUUID());
toy.setName(name);
toy.setBeschreibung(beschreibung);
toy.setAufgabenGruppe(gruppe);
toyDao.persist(toy);
return toy;
}
}

View File

@@ -0,0 +1,35 @@
package de.oaa.xxx.aufgaben;
import java.util.UUID;
public class Favorit {
private UUID favoritId;
private UUID userId;
private UUID aufgabenGruppeId;
public UUID getFavoritId() {
return favoritId;
}
public void setFavoritId(UUID favoritId) {
this.favoritId = favoritId;
}
public UUID getUserId() {
return userId;
}
public void setUserId(UUID userId) {
this.userId = userId;
}
public UUID getAufgabenGruppeId() {
return aufgabenGruppeId;
}
public void setAufgabenGruppeId(UUID aufgabenGruppeId) {
this.aufgabenGruppeId = aufgabenGruppeId;
}
}

View File

@@ -0,0 +1,58 @@
package de.oaa.xxx.aufgaben;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.oaa.xxx.framework.AbstractDAO;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
public class FavoritDAO extends AbstractDAO<FavoritEntity> {
private Logger LOGGER = LoggerFactory.getLogger(getClass());
public FavoritDAO(EntityManager entityManager) {
super(FavoritEntity.class, entityManager);
}
public List<FavoritEntity> getUserFavoriten(UUID userId) {
try {
TypedQuery<FavoritEntity> query = getEntityManager()
.createQuery("select f from FavoritEntity f where f.userId = :userId", FavoritEntity.class);
query.setParameter("userId", userId);
return query.getResultList();
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
return Collections.emptyList();
}
}
public FavoritEntity findByUserAndGruppe(UUID userId, UUID gruppeId) {
TypedQuery<FavoritEntity> query = getEntityManager().createQuery("""
select f from FavoritEntity f
where f.userId = :userId
and f.aufgabenGruppeId = :aufgabenGruppeId
""",FavoritEntity.class);
query.setParameter("userId", userId);
query.setParameter("aufgabenGruppeId", gruppeId);
if (query.getResultList().size() == 1) {
return query.getSingleResult();
}
return null;
}
public List<FavoritEntity> findAllByUserAndGruppe(UUID userId, UUID gruppeId) {
TypedQuery<FavoritEntity> query = getEntityManager().createQuery("""
select f from FavoritEntity f
where f.userId = :userId
and f.aufgabenGruppeId = :aufgabenGruppeId
""",FavoritEntity.class);
query.setParameter("userId", userId);
query.setParameter("aufgabenGruppeId", gruppeId);
return query.getResultList();
}
}

View File

@@ -0,0 +1,56 @@
package de.oaa.xxx.aufgaben;
import java.util.UUID;
import de.oaa.xxx.framework.XXXEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
@Entity
@Table(name = "favorit")
public class FavoritEntity implements XXXEntity {
@Id
@Column
private UUID favoritId;
@Column
private UUID userId;
@Column
private UUID aufgabenGruppeId;
public UUID getFavoritId() {
return favoritId;
}
public void setFavoritId(UUID favoritId) {
this.favoritId = favoritId;
}
public UUID getUserId() {
return userId;
}
public void setUserId(UUID userId) {
this.userId = userId;
}
public UUID getAufgabenGruppeId() {
return aufgabenGruppeId;
}
public void setAufgabenGruppeId(UUID aufgabenGruppeId) {
this.aufgabenGruppeId = aufgabenGruppeId;
}
public Favorit toFavorit() {
Favorit favorit = new Favorit();
favorit.setAufgabenGruppeId(aufgabenGruppeId);
favorit.setFavoritId(favoritId);
favorit.setUserId(userId);
return favorit;
}
public static FavoritEntity fromFavorit(Favorit favorit, UUID userId) {
FavoritEntity entity = new FavoritEntity();
entity.setFavoritId(UUID.randomUUID());
entity.setAufgabenGruppeId(favorit.getAufgabenGruppeId());
entity.setUserId(userId);
return entity;
}
}

View File

@@ -0,0 +1,16 @@
package de.oaa.xxx.aufgaben;
import java.util.List;
public class FavoritList {
private List<Favorit> favoriten;
public List<Favorit> getFavoriten() {
return favoriten;
}
public void setFavoriten(List<Favorit> favoriten) {
this.favoriten = favoriten;
}
}

View File

@@ -0,0 +1,128 @@
package de.oaa.xxx.aufgaben;
import java.util.List;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.oaa.xxx.framework.request.RequestChecker;
import jakarta.annotation.Resource;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.transaction.SystemException;
import jakarta.transaction.UserTransaction;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.Status;
import jakarta.ws.rs.core.UriInfo;
@ApplicationScoped
@Path("favorit")
public class FavoritResource {
private Logger LOGGER = LoggerFactory.getLogger(getClass());
@PersistenceContext(name = "aufgaben")
private EntityManager entityManager;
@Resource
private UserTransaction transaction;
@Path("{favoritId}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response get(@PathParam("favoritId") UUID favoritId, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
transaction.begin();
FavoritEntity entity = new FavoritDAO(entityManager).findById(favoritId);
if (entity != null) {
Favorit favorit = entity.toFavorit();
transaction.commit();
return Response.ok(favorit).build();
} else {
transaction.rollback();
return Response.noContent().build();
}
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response all(@Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
UUID userId = RequestChecker.checkRequest(req).getUserId();
transaction.begin();
List<FavoritEntity> list = new FavoritDAO(entityManager).getUserFavoriten(userId);
if (list != null) {
FavoritList result = new FavoritList();
result.setFavoriten(list.stream().map(fav -> fav.toFavorit()).toList());
transaction.commit();
return Response.ok(result).build();
} else {
transaction.rollback();
return Response.noContent().build();
}
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response create(Favorit favorit, @Context UriInfo uriInfo, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
UUID userId = RequestChecker.checkRequest(req).getUserId();
if (favorit.getAufgabenGruppeId() == null) {
return Response.status(Status.BAD_REQUEST).build();
}
transaction.begin();
FavoritDAO dao = new FavoritDAO(entityManager);
FavoritEntity entity = dao.findByUserAndGruppe(userId, favorit.getAufgabenGruppeId());
if (entity == null) {
entity = FavoritEntity.fromFavorit(favorit, userId);
dao.persist(entity);
}
transaction.commit();
return Response.created(uriInfo.getAbsolutePathBuilder().path(entity.getFavoritId().toString()).build())
.build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@DELETE
@Consumes(MediaType.APPLICATION_JSON)
public Response delete(Favorit favorit, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
UUID userId = RequestChecker.checkRequest(req).getUserId();
transaction.begin();
FavoritDAO dao = new FavoritDAO(entityManager);
dao.findAllByUserAndGruppe(userId, favorit.getAufgabenGruppeId()).forEach(dao::remove);
transaction.commit();
return Response.accepted().build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
}

View File

@@ -0,0 +1,69 @@
package de.oaa.xxx.aufgaben;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jakarta.annotation.Resource;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.transaction.HeuristicMixedException;
import jakarta.transaction.HeuristicRollbackException;
import jakarta.transaction.NotSupportedException;
import jakarta.transaction.RollbackException;
import jakarta.transaction.SystemException;
import jakarta.transaction.UserTransaction;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.client.ClientBuilder;
import jakarta.ws.rs.core.Response;
@ApplicationScoped
@Path("fill")
public class FillerResource {
private Logger LOGGER = LoggerFactory.getLogger(getClass());
@PersistenceContext(name = "aufgaben")
private EntityManager entityManager;
@Resource
private UserTransaction transaction;
@GET
public Response fill() {
try {
transaction.begin();
DefaultFiller filler = new DefaultFiller(entityManager);
filler.chastityFemale();
filler.chastityMale();
filler.plugs();
filler.knebel();
filler.stafen();
filler.aufgaben();
transaction.commit();
return Response.ok().build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
return Response.serverError().build();
}
}
@GET
@Path("read")
public Response read() throws IOException, NotSupportedException, SystemException, SecurityException, IllegalStateException, RollbackException, HeuristicMixedException, HeuristicRollbackException {
AufgabenGruppeList result = ClientBuilder.newClient().target("http://localhost:8080/aufgaben-service/gruppe/all").request().get(AufgabenGruppeList.class);
new File("C:/test/").mkdirs();
for (AufgabenGruppeDisplay entity : result.getGruppen()) {
Files.write(new File("C:/test/" + entity.getName() + ".png").toPath(), Base64.getDecoder().decode(entity.getBild()));
}
return Response.ok().build();
}
}

View File

@@ -0,0 +1,30 @@
package de.oaa.xxx.aufgaben;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.slf4j.LoggerFactory;
public class ImageScaler {
public byte[] scale(byte[] origByte) {
try (ByteArrayInputStream bais = new ByteArrayInputStream(origByte)) {
BufferedImage orig = ImageIO.read(bais);
BufferedImage scaled = (BufferedImage) orig.getScaledInstance(128, 128, Image.SCALE_DEFAULT);
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
ImageIO.write(scaled, "png", baos);
return baos.toByteArray();
} catch (IOException exception) {
LoggerFactory.getLogger(getClass()).error("Fehler beim Skalieren des Bildes", exception);
}
} catch (IOException exception) {
LoggerFactory.getLogger(getClass()).error("Fehler beim Skalieren des Bildes", exception);
}
return new byte[0];
}
}

View File

@@ -0,0 +1,89 @@
package de.oaa.xxx.aufgaben;
import java.util.List;
import java.util.UUID;
public class Sperre {
private UUID sperreId;
private String kurzText;
private String text;
private String releaseText;
private UUID gruppeId;
private List<Werkzeug> sperreFuer;
private Integer minutenVon;
private Integer minutenBis;
private List<Toy> benoetigteToys;
public UUID getSperreId() {
return sperreId;
}
public void setSperreId(UUID sperreId) {
this.sperreId = sperreId;
}
public String getKurzText() {
return kurzText;
}
public void setKurzText(String kurzText) {
this.kurzText = kurzText;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getReleaseText() {
return releaseText;
}
public void setReleaseText(String releaseText) {
this.releaseText = releaseText;
}
public List<Werkzeug> getSperreFuer() {
return sperreFuer;
}
public void setSperreFuer(List<Werkzeug> sperreFuer) {
this.sperreFuer = sperreFuer;
}
public Integer getMinutenVon() {
return minutenVon;
}
public void setMinutenVon(Integer minutenVon) {
this.minutenVon = minutenVon;
}
public Integer getMinutenBis() {
return minutenBis;
}
public void setMinutenBis(Integer minutenBis) {
this.minutenBis = minutenBis;
}
public List<Toy> getBenoetigteToys() {
return benoetigteToys;
}
public void setBenoetigteToys(List<Toy> benoetigteToys) {
this.benoetigteToys = benoetigteToys;
}
public UUID getGruppeId() {
return gruppeId;
}
public void setGruppeId(UUID gruppeId) {
this.gruppeId = gruppeId;
}
}

View File

@@ -0,0 +1,11 @@
package de.oaa.xxx.aufgaben;
import de.oaa.xxx.framework.AbstractDAO;
import jakarta.persistence.EntityManager;
public class SperreDAO extends AbstractDAO<SperreEntity> {
public SperreDAO(EntityManager entityManager) {
super(SperreEntity.class, entityManager);
}
}

View File

@@ -0,0 +1,129 @@
package de.oaa.xxx.aufgaben;
import java.util.List;
import java.util.UUID;
import de.oaa.xxx.framework.XXXEntity;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.Enumerated;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.JoinTable;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
@Entity
@Table(name = "sperre")
public class SperreEntity implements XXXEntity {
@Id
@Column
private UUID sperreId;
@Column
private String kurzText;
@Column
private String text;
@Column
private String releaseText;
@ManyToOne
@JoinColumn(name="gruppeId")
private AufgabenGruppeEntity aufgabenGruppe;
@Column
@Enumerated
@ElementCollection(targetClass = Werkzeug.class)
private List<Werkzeug> sperreFuer;
@Column
private Integer minutenVon;
@Column
private Integer minutenBis;
@ManyToMany(cascade = CascadeType.DETACH)
@JoinTable(
name = "sperreToy",
joinColumns = {@JoinColumn( name = "sperreId")},
inverseJoinColumns = { @JoinColumn(name = "toyId")})
private List<ToyEntity> benoetigteToys;
public UUID getSperreId() {
return sperreId;
}
public void setSperreId(UUID sperreId) {
this.sperreId = sperreId;
}
public String getKurzText() {
return kurzText;
}
public void setKurzText(String kurzText) {
this.kurzText = kurzText;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getReleaseText() {
return releaseText;
}
public void setReleaseText(String releaseText) {
this.releaseText = releaseText;
}
public List<Werkzeug> getSperreFuer() {
return sperreFuer;
}
public void setSperreFuer(List<Werkzeug> sperreFuer) {
this.sperreFuer = sperreFuer;
}
public Integer getMinutenVon() {
return minutenVon;
}
public void setMinutenVon(Integer minutenVon) {
this.minutenVon = minutenVon;
}
public Integer getMinutenBis() {
return minutenBis;
}
public void setMinutenBis(Integer minutenBis) {
this.minutenBis = minutenBis;
}
public List<ToyEntity> getBenoetigteToys() {
return benoetigteToys;
}
public void setBenoetigteToys(List<ToyEntity> benoetigteToys) {
this.benoetigteToys = benoetigteToys;
}
public AufgabenGruppeEntity getAufgabenGruppe() {
return aufgabenGruppe;
}
public void setAufgabenGruppe(AufgabenGruppeEntity aufgabenGruppe) {
this.aufgabenGruppe = aufgabenGruppe;
}
public Sperre toSperre() {
Sperre sperre = new Sperre();
sperre.setSperreId(sperreId);
sperre.setGruppeId(aufgabenGruppe.getGruppenId());
sperre.setKurzText(kurzText);
sperre.setMinutenBis(minutenBis);
sperre.setMinutenVon(minutenVon);
sperre.setReleaseText(releaseText);
sperre.setSperreFuer(sperreFuer.stream().map(fuer -> fuer).toList());
sperre.setText(text);
return sperre;
}
public static SperreEntity create(Sperre sperre, AufgabenGruppeEntity aufgabenGruppeEntity) {
SperreEntity entity = new SperreEntity();
entity.setSperreId(UUID.randomUUID());
entity.setAufgabenGruppe(aufgabenGruppeEntity);
entity.setBenoetigteToys(sperre.getBenoetigteToys().stream().map(toy -> ToyEntity.create(toy, aufgabenGruppeEntity)).toList());
entity.setKurzText(sperre.getKurzText());
entity.setMinutenBis(sperre.getMinutenBis());
entity.setMinutenVon(sperre.getMinutenVon());
entity.setReleaseText(sperre.getReleaseText());
entity.setSperreFuer(sperre.getSperreFuer());
entity.setText(sperre.getText());
return entity;
}
}

View File

@@ -0,0 +1,106 @@
package de.oaa.xxx.aufgaben;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.oaa.xxx.framework.request.RequestChecker;
import jakarta.annotation.Resource;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.transaction.SystemException;
import jakarta.transaction.UserTransaction;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.Status;
import jakarta.ws.rs.core.UriInfo;
@ApplicationScoped
@Path("sperre")
public class SprerreResource {
private Logger LOGGER = LoggerFactory.getLogger(getClass());
@PersistenceContext(name = "aufgaben")
private EntityManager entityManager;
@Resource
private UserTransaction transaction;
@Path("{sperreId}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response get(@PathParam("sperreId") UUID sperreId, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
transaction.begin();
SperreEntity entity = new SperreDAO(entityManager).findById(sperreId);
if (entity != null) {
Sperre sperre = entity.toSperre();
transaction.commit();
return Response.ok(sperre).build();
} else {
transaction.rollback();
return Response.noContent().build();
}
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response create(Sperre sperre, @Context UriInfo uriInfo, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
if (sperre.getKurzText() == null || sperre.getText() == null || sperre.getMinutenVon() == null || sperre.getGruppeId() == null || sperre.getSperreFuer() == null || sperre.getSperreFuer().isEmpty()) {
return Response.status(Status.BAD_REQUEST).build();
}
transaction.begin();
AufgabenGruppeEntity gruppeEntity = new AufgabenGruppeDAO(entityManager).findById(sperre.getGruppeId());
if (gruppeEntity == null || gruppeEntity.getAufgaben().size() > 50) {
transaction.rollback();
return Response.status(Status.BAD_REQUEST).build();
}
SperreEntity entity = SperreEntity.create(sperre, gruppeEntity);
new SperreDAO(entityManager).persist(entity);
transaction.commit();
return Response.created(uriInfo.getAbsolutePathBuilder().path(entity.getSperreId().toString()).build()).build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@DELETE
@Consumes(MediaType.APPLICATION_JSON)
public Response delete(Sperre sperre, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
transaction.begin();
SperreDAO dao = new SperreDAO(entityManager);
SperreEntity entity = dao.findById(sperre.getSperreId());
dao.remove(entity);
transaction.commit();
return Response.accepted().build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
}

View File

@@ -0,0 +1,98 @@
package de.oaa.xxx.aufgaben;
import java.util.List;
import java.util.UUID;
public class Strafe {
private UUID strafeId;
private Integer level;
private String text;
private String kurzText;
private Integer sekundenVon;
private Integer sekundenBis;
private UUID gruppeId;
private List<Werkzeug> benoetigtAktiv;
private List<Werkzeug> benoetigtPassiv;
private List<Toy> benoetigteToys;
public UUID getStrafeId() {
return strafeId;
}
public void setStrafeId(UUID strafeId) {
this.strafeId = strafeId;
}
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Integer getSekundenVon() {
return sekundenVon;
}
public void setSekundenVon(Integer sekundenVon) {
this.sekundenVon = sekundenVon;
}
public Integer getSekundenBis() {
return sekundenBis;
}
public void setSekundenBis(Integer sekundenBis) {
this.sekundenBis = sekundenBis;
}
public List<Werkzeug> getBenoetigtAktiv() {
return benoetigtAktiv;
}
public void setBenoetigtAktiv(List<Werkzeug> benoetigtAktiv) {
this.benoetigtAktiv = benoetigtAktiv;
}
public List<Werkzeug> getBenoetigtPassiv() {
return benoetigtPassiv;
}
public void setBenoetigtPassiv(List<Werkzeug> benoetigtPassiv) {
this.benoetigtPassiv = benoetigtPassiv;
}
public List<Toy> getBenoetigteToys() {
return benoetigteToys;
}
public void setBenoetigteToys(List<Toy> benoetigteToys) {
this.benoetigteToys = benoetigteToys;
}
public UUID getGruppeId() {
return gruppeId;
}
public void setGruppeId(UUID gruppeId) {
this.gruppeId = gruppeId;
}
public String getKurzText() {
return kurzText;
}
public void setKurzText(String kurzText) {
this.kurzText = kurzText;
}
}

View File

@@ -0,0 +1,14 @@
package de.oaa.xxx.aufgaben;
import de.oaa.xxx.framework.AbstractDAO;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.persistence.EntityManager;
@ApplicationScoped
public class StrafeDAO extends AbstractDAO<StrafeEntity> {
public StrafeDAO(EntityManager entityManager) {
super(StrafeEntity.class, entityManager);
}
}

View File

@@ -0,0 +1,161 @@
package de.oaa.xxx.aufgaben;
import java.util.List;
import java.util.UUID;
import de.oaa.xxx.framework.XXXEntity;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.Enumerated;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.JoinTable;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
@Entity
@Table(name = "strafe")
public class StrafeEntity implements XXXEntity {
@Id
@Column
private UUID strafeId;
@Column
private String kurzText;
@Column
private Integer level;
@Column
private String text;
@Column
private Integer sekundenVon;
@Column
private Integer sekundenBis;
@ManyToOne
@JoinColumn(name = "gruppeId")
private AufgabenGruppeEntity aufgabenGruppe;
@Column
@Enumerated
@ElementCollection(targetClass = Werkzeug.class)
private List<Werkzeug> benoetigtAktiv;
@Column
@Enumerated
@ElementCollection(targetClass = Werkzeug.class)
private List<Werkzeug> benoetigtPassiv;
@ManyToMany(cascade = CascadeType.DETACH)
@JoinTable(name = "strafeToy", joinColumns = { @JoinColumn(name = "strafeId") }, inverseJoinColumns = {
@JoinColumn(name = "toyId") })
private List<ToyEntity> benoetigteToys;
public UUID getStrafeId() {
return strafeId;
}
public void setStrafeId(UUID strafeId) {
this.strafeId = strafeId;
}
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Integer getSekundenVon() {
return sekundenVon;
}
public void setSekundenVon(Integer sekundenVon) {
this.sekundenVon = sekundenVon;
}
public Integer getSekundenBis() {
return sekundenBis;
}
public void setSekundenBis(Integer sekundenBis) {
this.sekundenBis = sekundenBis;
}
public AufgabenGruppeEntity getAufgabenGruppe() {
return aufgabenGruppe;
}
public void setAufgabenGruppe(AufgabenGruppeEntity aufgabenGruppe) {
this.aufgabenGruppe = aufgabenGruppe;
}
public List<Werkzeug> getBenoetigtAktiv() {
return benoetigtAktiv;
}
public void setBenoetigtAktiv(List<Werkzeug> benoetigtAktiv) {
this.benoetigtAktiv = benoetigtAktiv;
}
public List<Werkzeug> getBenoetigtPassiv() {
return benoetigtPassiv;
}
public void setBenoetigtPassiv(List<Werkzeug> benoetigtPassiv) {
this.benoetigtPassiv = benoetigtPassiv;
}
public List<ToyEntity> getBenoetigteToys() {
return benoetigteToys;
}
public void setBenoetigteToys(List<ToyEntity> benoetigteToys) {
this.benoetigteToys = benoetigteToys;
}
public Strafe toStrafe() {
Strafe strafe = new Strafe();
strafe.setStrafeId(strafeId);
strafe.setBenoetigtAktiv(benoetigtAktiv.stream().map(obj -> obj).toList());
strafe.setBenoetigteToys(benoetigteToys.stream().map(obj -> obj.toToy()).toList());
strafe.setBenoetigtPassiv(benoetigtPassiv.stream().map(obj -> obj).toList());
strafe.setGruppeId(aufgabenGruppe.getGruppenId());
strafe.setKurzText(getKurzText());
strafe.setLevel(level);
strafe.setSekundenBis(sekundenBis);
strafe.setSekundenVon(sekundenVon);
strafe.setText(text);
return strafe;
}
public static StrafeEntity create(Strafe strafe, AufgabenGruppeEntity aufgabenGruppeEntity) {
StrafeEntity entity = new StrafeEntity();
entity.setStrafeId(UUID.randomUUID());
entity.setAufgabenGruppe(aufgabenGruppeEntity);
entity.setBenoetigtAktiv(strafe.getBenoetigtAktiv());
entity.setBenoetigteToys(strafe.getBenoetigteToys().stream().map(toy -> ToyEntity.create(toy, aufgabenGruppeEntity)).toList());
entity.setBenoetigtPassiv(strafe.getBenoetigtPassiv());
entity.setKurzText(strafe.getKurzText());
entity.setLevel(strafe.getLevel());
entity.setSekundenBis(strafe.getSekundenBis());
entity.setSekundenVon(strafe.getSekundenVon());
entity.setText(strafe.getText());
return entity;
}
public String getKurzText() {
return kurzText;
}
public void setKurzText(String kurzText) {
this.kurzText = kurzText;
}
}

View File

@@ -0,0 +1,106 @@
package de.oaa.xxx.aufgaben;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.oaa.xxx.framework.request.RequestChecker;
import jakarta.annotation.Resource;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.transaction.SystemException;
import jakarta.transaction.UserTransaction;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.Status;
import jakarta.ws.rs.core.UriInfo;
@ApplicationScoped
@Path("strafe")
public class StrafeResource {
private Logger LOGGER = LoggerFactory.getLogger(getClass());
@PersistenceContext(name = "aufgaben")
private EntityManager entityManager;
@Resource
private UserTransaction transaction;
@Path("{strafeId}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response get(@PathParam("strafeId") UUID strafeId, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
transaction.begin();
StrafeEntity entity = new StrafeDAO(entityManager).findById(strafeId);
if (entity != null) {
Strafe strafe = entity.toStrafe();
transaction.commit();
return Response.ok(strafe).build();
} else {
transaction.rollback();
return Response.noContent().build();
}
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response create(Strafe strafe, @Context UriInfo uriInfo, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
if (strafe.getKurzText() == null || strafe.getText() == null || strafe.getLevel() == null || strafe.getGruppeId() == null) {
return Response.status(Status.BAD_REQUEST).build();
}
transaction.begin();
AufgabenGruppeEntity gruppeEntity = new AufgabenGruppeDAO(entityManager).findById(strafe.getGruppeId());
if (gruppeEntity == null || gruppeEntity.getAufgaben().size() > 50) {
transaction.rollback();
return Response.status(Status.BAD_REQUEST).build();
}
StrafeEntity entity = StrafeEntity.create(strafe, gruppeEntity);
new StrafeDAO(entityManager).persist(entity);
transaction.commit();
return Response.created(uriInfo.getAbsolutePathBuilder().path(entity.getStrafeId().toString()).build()).build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@DELETE
@Consumes(MediaType.APPLICATION_JSON)
public Response delete(Strafe strafe, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
transaction.begin();
StrafeDAO dao = new StrafeDAO(entityManager);
StrafeEntity entity = dao.findById(strafe.getStrafeId());
dao.remove(entity);
transaction.commit();
return Response.accepted().build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
}

View File

@@ -0,0 +1,43 @@
package de.oaa.xxx.aufgaben;
import java.util.UUID;
public class Toy {
private UUID toyId;
private String name;
private String beschreibung;
private UUID gruppeId;
public UUID getToyId() {
return toyId;
}
public void setToyId(UUID toyId) {
this.toyId = toyId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBeschreibung() {
return beschreibung;
}
public void setBeschreibung(String beschreibung) {
this.beschreibung = beschreibung;
}
public UUID getGruppeId() {
return gruppeId;
}
public void setGruppeId(UUID gruppeId) {
this.gruppeId = gruppeId;
}
}

View File

@@ -0,0 +1,11 @@
package de.oaa.xxx.aufgaben;
import de.oaa.xxx.framework.AbstractDAO;
import jakarta.persistence.EntityManager;
public class ToyDAO extends AbstractDAO<ToyEntity> {
public ToyDAO(EntityManager entityManager) {
super(ToyEntity.class, entityManager);
}
}

View File

@@ -0,0 +1,78 @@
package de.oaa.xxx.aufgaben;
import java.util.UUID;
import de.oaa.xxx.framework.XXXEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
@Entity
@Table(name = "toy")
public class ToyEntity implements XXXEntity {
@Id
@Column
private UUID toyId;
@Column
private String name;
@Column
private String beschreibung;
@ManyToOne
@JoinColumn(name = "gruppeId")
private AufgabenGruppeEntity aufgabenGruppe;
public UUID getToyId() {
return toyId;
}
public void setToyId(UUID toyId) {
this.toyId = toyId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBeschreibung() {
return beschreibung;
}
public void setBeschreibung(String beschreibung) {
this.beschreibung = beschreibung;
}
public AufgabenGruppeEntity getAufgabenGruppe() {
return aufgabenGruppe;
}
public void setAufgabenGruppe(AufgabenGruppeEntity aufgabenGruppe) {
this.aufgabenGruppe = aufgabenGruppe;
}
public Toy toToy() {
Toy toy = new Toy();
toy.setBeschreibung(beschreibung);
toy.setName(name);
toy.setGruppeId(aufgabenGruppe.getGruppenId());
toy.setToyId(toyId);
return toy;
}
public static ToyEntity create(Toy toy, AufgabenGruppeEntity aufgabenGruppeEntity) {
ToyEntity entity = new ToyEntity();
entity.setAufgabenGruppe(aufgabenGruppeEntity);
entity.setBeschreibung(toy.getBeschreibung());
entity.setName(toy.getName());
entity.setToyId(UUID.randomUUID());
return entity;
}
}

View File

@@ -0,0 +1,106 @@
package de.oaa.xxx.aufgaben;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.oaa.xxx.framework.request.RequestChecker;
import jakarta.annotation.Resource;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.transaction.SystemException;
import jakarta.transaction.UserTransaction;
import jakarta.ws.rs.Consumes;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.Status;
import jakarta.ws.rs.core.UriInfo;
@ApplicationScoped
@Path("toy")
public class ToyResource {
private Logger LOGGER = LoggerFactory.getLogger(getClass());
@PersistenceContext(name = "aufgaben")
private EntityManager entityManager;
@Resource
private UserTransaction transaction;
@Path("{toyId}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response get(@PathParam("toyId") UUID toyId, @Context HttpServletRequest req)
throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
transaction.begin();
ToyEntity entity = new ToyDAO(entityManager).findById(toyId);
if (entity != null) {
Toy toy = entity.toToy();
transaction.commit();
return Response.ok(toy).build();
} else {
transaction.rollback();
return Response.noContent().build();
}
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response create(Toy toy, @Context UriInfo uriInfo, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
if (toy.getName() == null || toy.getGruppeId() == null) {
return Response.status(Status.BAD_REQUEST).build();
}
transaction.begin();
AufgabenGruppeEntity gruppeEntity = new AufgabenGruppeDAO(entityManager).findById(toy.getGruppeId());
if (gruppeEntity == null || gruppeEntity.getAufgaben().size() > 50) {
transaction.rollback();
return Response.status(Status.BAD_REQUEST).build();
}
ToyEntity entity = ToyEntity.create(toy, gruppeEntity);
new ToyDAO(entityManager).persist(entity);
transaction.commit();
return Response.created(uriInfo.getAbsolutePathBuilder().path(entity.getToyId().toString()).build()).build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
@DELETE
@Consumes(MediaType.APPLICATION_JSON)
public Response delete(Toy toy, @Context HttpServletRequest req) throws IllegalStateException, SecurityException, SystemException {
try {
RequestChecker.checkRequest(req);
transaction.begin();
ToyDAO dao = new ToyDAO(entityManager);
ToyEntity entity = dao.findById(toy.getToyId());
dao.remove(entity);
transaction.rollback();
return Response.accepted().build();
} catch (Exception exception) {
LOGGER.error(exception.getMessage(), exception);
transaction.rollback();
return Response.serverError().build();
}
}
}

View File

@@ -0,0 +1,26 @@
package de.oaa.xxx.aufgaben;
public enum Werkzeug {
MUND("Mund", "Ob die Person gewillt ist den Mund einzusetzen."),
VAGINA("Vagina", "Ob die Person über eine Vagina verfügt und gewillt ist diese einzusetzen."),
PENIS("Penis", "Ob die Person über einen Penis verfügt und gewillt ist diesen einzusetzen."),
ANUS("Anus", "Ob die Person gewillt ist den Anus einzusetzen."),
UMSCHNALLDILDO("Umschnall-Dildo", "Ob die Person über einen Umschnall-Dildo verfügt und gewillt ist diesen einzusetzen.");
private String anzeige;
private String beschreibung;
Werkzeug(String anzeige, String beschreibung) {
this.anzeige = anzeige;
this.beschreibung = beschreibung;
}
public String beschreibungsText() {
return beschreibung;
}
public String anzeigeText() {
return anzeige;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<File name="MyFile" fileName="all.log" immediateFlush="false" append="false">
<PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console" />
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Validate the database schema on startup -->
<property name="hbm2ddl.auto">validate</property>
</session-factory>
</hibernate-configuration>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0" >
<persistence-unit name="registration"
transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/Aufgaben</jta-data-source>
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?><web-app version="5.0"
xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd">
</web-app>

View File

@@ -0,0 +1 @@
<h1>Was machst du hier?</h1>