Strategiemuster und Kriterien Abfrage
Unit -Test < /p>
Dies ist der Code: < /p>
Strategiemuster: < /strong> < /p>
Main < /strong> < /p>
Code: Select all
public class Main {
public static void main(String[] args) {
ProduktListe produktListe = new ProduktListe();
produktListe.addProdukt(new Produkt("Apfel", 1.0, "Frucht"));
produktListe.addProdukt(new Produkt("Banane", 0.5, "Frucht"));
produktListe.addProdukt(new Produkt("Zitrone", 0.75, "Frucht"));
produktListe.addProdukt(new Produkt("Tomate", 0.6, "Gemüse"));
produktListe.addProdukt(new Produkt("Avocado", 1, "Exotische Frucht"));
System.out.println("Sort by Name:");
produktListe.sortProdukte(new SortByName());
produktListe.getProdukte().forEach(System.out::println);
System.out.println("\nSort by Preis:");
produktListe.sortProdukte(new SortByPreis());
produktListe.getProdukte().forEach(System.out::println);
System.out.println("\nSort by Other:");
produktListe.sortProdukte(new SortByOther());
produktListe.getProdukte().forEach(System.out::println);
}
}
Code: Select all
public class Produkt {
private String name;
private double preis;
private String other;
public Produkt(String name, double preis, String other) {
this.name = name;
this.preis = preis;
this.other = other;
}
public String getName() {
return name;
}
public double getPreis() {
return preis;
}
public String getOther() {
return other;
}
@Override
public String toString() {
return "Produkt{" +
"name='" + name + '\'' +
", preis=" + preis +
", other='" + other + '\'' +
'}';
}
}
Code: Select all
import java.util.List;
public interface SortStrategy {
void sort(List
produkte);
}
Code: Select all
import java.util.ArrayList;
import java.util.List;
public class ProduktListe {
private List
produkte = new ArrayList();
public void addProdukt(Produkt produkt) {
produkte.add(produkt);
}
public List getProdukte() {
return produkte;
}
public void sortProdukte(SortStrategy strategy) {
strategy.sort(produkte);
}
}
[b] sortbyName
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortByName implements SortStrategy {
@Override
public void sort(List produkte) {
Collections.sort(produkte, Comparator.comparing(Produkt::getName));
}
}
sortbypris
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SortByPreis implements SortStrategy {
@Override
public void sort(List produkte) {
Collections.sort(produkte, Comparator.comparingDouble(Produkt::getPreis));
}
}
Kunde
Code: Select all
import jakarta.persistence.*;
import lombok.*;
import java.util.List;
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Kunde {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NonNull
private String vorname;
@NonNull
private String nachname;
@NonNull
private int alter;
@NonNull
private String email;
@OneToMany(mappedBy = "kunde", cascade = CascadeType.ALL)
private List bestellungen;
}
Code: Select all
import jakarta.persistence.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.NonNull;
import java.util.Date;
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Bestellung {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NonNull
private Date bestelldatum;
@NonNull
private double betrag;
@ManyToOne
@JoinColumn(name = "kunde_id")
private Kunde kunde;
}
Code: Select all
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class KundeDTO {
private Long id;
private String vorname;
private String nachname;
private int alter;
private String email;
}
Code: Select all
import htl.steyr.test3uebung.dto.KundeDTO;
import htl.steyr.test3uebung.service.KundeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping("/kunden")
public class KundeController {
@Autowired
private KundeService kundeService;
@GetMapping
public List getAllKunden() {
return kundeService.getAllKunden();
}
@GetMapping("/{id}")
public ResponseEntity getKundeById(@PathVariable Long id) {
Optional kundeDTO = kundeService.getKundeById(id);
return kundeDTO.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build());
}
@PostMapping
public KundeDTO createKunde(@RequestBody KundeDTO kundeDTO) {
return kundeService.createKunde(kundeDTO);
}
@PutMapping("/{id}")
public ResponseEntity updateKunde(@PathVariable Long id, @RequestBody KundeDTO kundeDTO) {
Optional updatedKunde = kundeService.updateKunde(id, kundeDTO);
return updatedKunde.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build());
}
@DeleteMapping("/{id}")
public ResponseEntity deleteKunde(@PathVariable Long id) {
kundeService.deleteKunde(id);
return ResponseEntity.noContent().build();
}
}
Code: Select all
import htl.steyr.test3uebung.dto.KundeDTO;
import htl.steyr.test3uebung.model.Kunde;
import htl.steyr.test3uebung.repository.KundeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Service
public class KundeService {
@Autowired
private KundeRepository kundeRepository;
public List getAllKunden() {
List kunden = kundeRepository.findAll();
return kunden.stream().map(this::convertToDTO).collect(Collectors.toList());
}
private KundeDTO convertToDTO(Kunde kunde) {
return new KundeDTO(
kunde.getId(),
kunde.getVorname(),
kunde.getNachname(),
kunde.getAlter(),
null // Set email to null
);
}
// CRUD operations start here
public Optional getKundeById(Long id) {
return kundeRepository.findById(id).map(this::convertToDTO);
}
public KundeDTO createKunde(KundeDTO kundeDTO) {
Kunde kunde = convertToEntity(kundeDTO);
kunde = kundeRepository.save(kunde);
return convertToDTO(kunde);
}
public Optional updateKunde(Long id, KundeDTO kundeDTO) {
return kundeRepository.findById(id).map(existingKunde -> {
existingKunde.setVorname(kundeDTO.getVorname());
existingKunde.setNachname(kundeDTO.getNachname());
existingKunde.setAlter(kundeDTO.getAlter());
existingKunde.setEmail(kundeDTO.getEmail());
return convertToDTO(kundeRepository.save(existingKunde));
});
}
public void deleteKunde(Long id) {
kundeRepository.deleteById(id);
}
private Kunde convertToEntity(KundeDTO kundeDTO) {
return new Kunde(
kundeDTO.getId(),
kundeDTO.getVorname(),
kundeDTO.getNachname(),
kundeDTO.getAlter(),
kundeDTO.getEmail(),
null // Assuming bestellungen are not handled here
);
}
}
Code: Select all
import htl.steyr.test3uebung.model.Bestellung;
import htl.steyr.test3uebung.model.Kunde;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
public interface KundeRepository extends JpaRepository {
@Query("SELECT b FROM Bestellung b WHERE b.kunde.id = :kundeId")
List findBestellungenByKundeId(Long kundeId);
}
import htl.steyr.test3uebung.model.Kunde;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.util.List;
public class KundeCriteriaRepository {
@PersistenceContext
private EntityManager entityManager;
public List findByVornameNachnameAlter(String vorname, String nachname, int alter) {
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery query = cb.createQuery(Kunde.class);
Root kunde = query.from(Kunde.class);
Predicate vornamePredicate = cb.equal(kunde.get("vorname"), vorname);
Predicate nachnamePredicate = cb.equal(kunde.get("nachname"), nachname);
Predicate alterPredicate = cb.equal(kunde.get("alter"), alter);
query.where(cb.or(vornamePredicate, nachnamePredicate), alterPredicate);
return entityManager.createQuery(query).getResultList();
}
}
< /code>
Ich werde diese Frage in den nächsten 4 Stunden umschreiben. Aber ich brauche Zeit, das ist nur ein Vorwehr. Lassen Sie mich bitte daran arbeiten.