Strategiemuster und Spring -Boot -Kriterien Reaktion Husky Pic [geschlossen]Java

Java-Forum
Anonymous
 Strategiemuster und Spring -Boot -Kriterien Reaktion Husky Pic [geschlossen]

Post by Anonymous »

Ich möchte nur, dass einige Leute meinen Code schauen und ihn vielleicht korrigieren oder vereinfachen. wobei:
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);
}
}
Produkt[/b]

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 + '\'' +
'}';
}
}
sortstrategy

Code: Select all

import java.util.List;

public interface SortStrategy {
void sort(List
 produkte);
}
ProduktListe

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));
}
}
Kriterien Abfrage Teil: [/b]
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;
}

Bestellung

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;
}

KundedTo

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;
}
KundeController

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();
}
}
KundeService

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
);
}
}
KunderePository

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);
}
KundeCriteriarePository
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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post