Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions src/main/java/se/iths/meritwos/company/Company.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package se.iths.meritwos.company;


import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import se.iths.meritwos.ad.Ad;

import java.util.List;
import java.util.Objects;

@Entity
@Getter
@Setter
public class Company {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String name;
private String website;
private String email;
@OneToMany
private List<Ad> ads;


@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

Company company = (Company) o;

if (!id.equals(company.id)) return false;
if (!Objects.equals(name, company.name)) return false;
if (!Objects.equals(website, company.website)) return false;
return Objects.equals(email, company.email);
}

@Override
public int hashCode() {
int result = id.hashCode();
result = 31 * result + (name != null ? name.hashCode() : 0);
result = 31 * result + (website != null ? website.hashCode() : 0);
result = 31 * result + (email != null ? email.hashCode() : 0);
return result;
}
}
61 changes: 61 additions & 0 deletions src/main/java/se/iths/meritwos/company/CompanyController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package se.iths.meritwos.company;


import jakarta.validation.Valid;
import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
import se.iths.meritwos.mapper.Mapper;

import java.util.List;
import java.util.Optional;

@RestController
@RequestMapping("/companies")
public class CompanyController {

private final CompanyRepository repo;

private final Mapper mapper;

public CompanyController(CompanyRepository companyRepository, Mapper mapper) {
this.repo = companyRepository;
this.mapper = mapper;
}

@GetMapping("/{id}")
Optional<CompanyDTO> getCompany(@PathVariable long id) {
Company company = repo.findById(id)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
return mapper.mapCompanyToDTO(company);
}

@GetMapping("")
List<CompanyDTO> getAllCompanies() {
return mapper.mapCompanyToDTO(repo.findAll());
}

@PostMapping
void addCompany(@Valid @RequestBody Company company) {
repo.save(company);
}


@PutMapping("/{id}")
void updateCompanyById(@PathVariable long id, @Valid @RequestBody Company company) {
var companyToUpdate = repo.findById(id).orElseThrow(() -> {
throw new ResponseStatusException(HttpStatusCode
.valueOf(404), "Company doesn't exist");
});
companyToUpdate.setName(company.getName());
companyToUpdate.setWebsite(company.getWebsite());
companyToUpdate.setEmail(company.getEmail());
repo.save(companyToUpdate);
}

@DeleteMapping("/{id}")
void deleteCompany(@PathVariable long id) {
repo.deleteById(id);
}
}
46 changes: 46 additions & 0 deletions src/main/java/se/iths/meritwos/company/CompanyDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package se.iths.meritwos.company;


import lombok.Getter;
import lombok.Setter;

import java.util.Objects;

@Setter
@Getter
public class CompanyDTO {

private Long id;
private String name;
private String website;
private String email;

public CompanyDTO(Company company) {
this.id = company.getId();
this.name = company.getName();
this.website = company.getWebsite();
this.email = company.getEmail();
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

CompanyDTO that = (CompanyDTO) o;

if (!id.equals(that.id)) return false;
if (!Objects.equals(name, that.name)) return false;
if (!Objects.equals(website, that.website)) return false;
return Objects.equals(email, that.email);
}

@Override
public int hashCode() {
int result = id.hashCode();
result = 31 * result + (name != null ? name.hashCode() : 0);
result = 31 * result + (website != null ? website.hashCode() : 0);
result = 31 * result + (email != null ? email.hashCode() : 0);
return result;
}
}
6 changes: 6 additions & 0 deletions src/main/java/se/iths/meritwos/company/CompanyRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package se.iths.meritwos.company;

import org.springframework.data.repository.ListCrudRepository;

public interface CompanyRepository extends ListCrudRepository <Company, Long>{
}
10 changes: 10 additions & 0 deletions src/main/java/se/iths/meritwos/mapper/Mapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import org.springframework.stereotype.Component;

import se.iths.meritwos.company.Company;
import se.iths.meritwos.company.CompanyDTO;
import se.iths.meritwos.student.Student;
import se.iths.meritwos.student.StudentDTO;
import se.iths.meritwos.ad.Ad;
Expand Down Expand Up @@ -34,4 +36,12 @@ public Optional<UserDTO> mapUserToDTO(User user) {
public List<AdDTO> mapAdToDTO(List<Ad> ads) {return ads.stream().map(AdDTO::new).toList();}

public Optional<AdDTO> mapAdToDTO(Ad ad) {return Optional.of((new AdDTO(ad)));}

public Optional <CompanyDTO> mapCompanyToDTO (Company company) {
return Optional.of(new CompanyDTO(company));
}

public List<CompanyDTO> mapCompanyToDTO (List<Company> companies) {
return companies.stream().map(CompanyDTO::new).toList();
}
}