Initialer commit
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
43
aufgaben-service/src/main/java/de/oaa/xxx/aufgaben/Toy.java
Normal file
43
aufgaben-service/src/main/java/de/oaa/xxx/aufgaben/Toy.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
BIN
aufgaben-service/src/main/resources/femaleCB.png
Normal file
BIN
aufgaben-service/src/main/resources/femaleCB.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
BIN
aufgaben-service/src/main/resources/knebel.png
Normal file
BIN
aufgaben-service/src/main/resources/knebel.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.4 KiB |
17
aufgaben-service/src/main/resources/log4j2.xml
Normal file
17
aufgaben-service/src/main/resources/log4j2.xml
Normal 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>
|
||||
BIN
aufgaben-service/src/main/resources/maleCB.png
Normal file
BIN
aufgaben-service/src/main/resources/maleCB.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
BIN
aufgaben-service/src/main/resources/peitsche.png
Normal file
BIN
aufgaben-service/src/main/resources/peitsche.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
BIN
aufgaben-service/src/main/resources/plugs.png
Normal file
BIN
aufgaben-service/src/main/resources/plugs.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.7 KiB |
BIN
aufgaben-service/src/main/resources/sex.png
Normal file
BIN
aufgaben-service/src/main/resources/sex.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
13
aufgaben-service/src/main/webapp/META-INF/hibernate.cfg.xml
Normal file
13
aufgaben-service/src/main/webapp/META-INF/hibernate.cfg.xml
Normal 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>
|
||||
18
aufgaben-service/src/main/webapp/META-INF/persistence.xml
Normal file
18
aufgaben-service/src/main/webapp/META-INF/persistence.xml
Normal 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>
|
||||
6
aufgaben-service/src/main/webapp/WEB-INF/web.xml
Normal file
6
aufgaben-service/src/main/webapp/WEB-INF/web.xml
Normal 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>
|
||||
1
aufgaben-service/src/main/webapp/index.html
Normal file
1
aufgaben-service/src/main/webapp/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<h1>Was machst du hier?</h1>
|
||||
Reference in New Issue
Block a user