Skip to content
Open
3 changes: 2 additions & 1 deletion database/init_script.sql
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,10 @@ CREATE TABLE IF NOT EXISTS Book (
);

CREATE TABLE IF NOT EXISTS BookCategory (
bookcategory_id INT NOT Null AUTO_INCREMENT,
book_id INT NOT NULL,
category_id INT NOT NULL,
PRIMARY KEY (book_id, category_id),
PRIMARY KEY (bookcategory_id, book_id, category_id),
KEY fk_book (book_id),
KEY fk_category (category_id),
CONSTRAINT fk_book FOREIGN KEY (book_id) REFERENCES Book (book_id),
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/free_open_university/backend/bean/Book.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "book_id")
private int id;
private Long id;

@Column(name = "title")
private String title;
Expand All @@ -50,11 +50,11 @@ public class Book {

// private Category categoryList;

public int getId() {
public Long getId() {
return id;
}

public void setId(int id) {
public void setId(Long id) {
this.id = id;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.free_open_university.backend.bean;

import javax.persistence.*;
import java.util.Set;


@Entity
@Table(name = "BookCategory")
public class BookCategory {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "bookcategory_id")
private Long bookcategory_id;

@Column(name = "category_id")
private Long category_id;
@Column(name = "book_id")
private Long book_id;

public Long getBookCategoryId() {
return bookcategory_id;
}

public void setBookCategoryId(Long bookcategory_id) {
this.bookcategory_id = bookcategory_id;
}

public Long getCategoryId() {
return category_id;
}

public void setCategoryId(Long category_id) {
this.category_id = category_id;
}

public Long getBookId() {
return book_id;
}

public void getBookId(Long book_id) {
this.book_id = book_id;
}

// @Override
// public String toString() {
// return "BookCategory [category_id=" + category_id + ", book_id=" + book_id + "]";
// }
}
26 changes: 13 additions & 13 deletions src/main/java/com/free_open_university/backend/bean/Category.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "category_id")
private int id;
private Long id;

@Column(name = "name")
private String name;
@Column(name = "image_id")
private long imageId;
private Long imageId;

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable (
Expand All @@ -33,11 +33,11 @@ public class Category {
)
private Set<Book> books;

public int getId() {
public Long getId() {
return id;
}

public void setId(int id) {
public void setId(Long id) {
this.id = id;
}

Expand All @@ -49,19 +49,19 @@ public void setName(String name) {
this.name = name;
}

public Set<Book> getBooks() {
return books;
}

public void setBooks(Set<Book> books) {
this.books = books;
}
// public Set<Book> getBooks() {
// return books;
// }
//
// public void setBooks(Set<Book> books) {
// this.books = books;
// }

public long getImageId() {
public Long getImageId() {
return imageId;
}

public void setImageId(long imageId) {
public void setImageId(Long imageId) {
this.imageId = imageId;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.free_open_university.backend.bean;

import java.io.File;
import java.io.IOException;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.Map;

public class ExecuteShellProcessBuilder {

public static void main(String[] args) {
String[] cmd = new String[] {"src/main/resources/hello.sh"};
ProcessBuilder pb = new ProcessBuilder(cmd);
try {
File log = new File("src/main/resources/log.txt");
pb.redirectErrorStream(true);
pb.redirectOutput(ProcessBuilder.Redirect.appendTo(log));
Process p = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String s = null;
while ((s = reader.readLine()) != null) {
System.out.println(s);
}
} catch (IOException e) {
// TODO auto-generated catch block
e.printStackTrace();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.free_open_university.backend.controller;

import com.free_open_university.backend.bean.Book;
import com.free_open_university.backend.bean.BookCategory;
import com.free_open_university.backend.bean.Category;
import com.free_open_university.backend.dao.BookCategoryRepository;
import com.free_open_university.backend.service.BookCategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Set;

@RestController
@RequestMapping("/bookcategory")
public class BookCategoryController {

@Autowired
BookCategoryRepository bookCategoryRepository;
BookCategoryService bookCategoryService;


@GetMapping //("/bookcategory")
public List<BookCategory> getAllBookCategories()
{
return bookCategoryRepository.findAll();
}

// @GetMapping
// public List<BookCategory> getAllBookCategories(
// @RequestParam(value = "category_id", required = false) Long category_id) {
// if (category_id != null) {
// return bookCategoryService.getBooksByCategories(category_id);
// } else {
//// return bookCategoryService.getAllBookCategories();
// return bookCategoryRepository.findAll();
// }

//// This won't work because it has to be /bookcategory/{bookcategory_id}
// @GetMapping("/bookcategory/{category_id}")
// public List<BookCategory> findByIds(@PathVariable () List<Long> category_id) {
// return bookCategoryRepository.findAllById(category_id);
// }


}


Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import com.free_open_university.backend.bean.Book;
import com.free_open_university.backend.http.Response;
import com.free_open_university.backend.repositories.BookRepository;
import com.free_open_university.backend.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;

import java.util.List;
Expand All @@ -15,6 +17,7 @@ public class BookController {

@Autowired
BookService bookService;
BookRepository bookRepository;

/* @GetMapping // todo: need another path
public Book getBookByTitle(@RequestParam(value = "title") String title) {
Expand Down Expand Up @@ -42,21 +45,51 @@ public List<Book> getBookId(
// }
}

@PostMapping
public Response addBook(@RequestBody Book newBook) {
return bookService.addBook(newBook);

@PostMapping("/addBook")
// @ResponseStatus(HttpStatus.ACCEPTED)
private Long addBook(@RequestBody Book book)

{
bookService.saveOrUpdate(book);
return book.getId();
}

@PostMapping("/batch_upload")
public Response addBookBatch(@RequestBody Set<Book> books) {
Response response = new Response();
for (Book book : books) {
response = bookService.addBook(book);
if(!response.isSuccess()) {
return response;
}
}
return new Response(true,200,"books added");
@PostMapping("/addBooks")
public List<Book> saveAllBook(@RequestBody List<Book> bookList) {
return (List<Book>) bookService.saveAllBook(bookList);
}

@DeleteMapping("/deleteBook/{book_id}")
private void deleteBook(@PathVariable("book_id") Long id)
{
bookService.delete(id);
}

// @DeleteMapping("/deleteBooks")
// public String deleteInBatch(@RequestBody List<Book> bookList) {
// bookService.deleteInBatch(bookList);
// return "All Students deleted successfully";
// }

@PutMapping("/updateBook")
private Book updateBook(@RequestBody Book book)
{
bookService.saveOrUpdate(book);
return book;
}

}


// @PostMapping("/batch_upload")
// public Response addBookBatch(@RequestBody Set<Book> books) {
// Response response = new Response();
// for (Book book : books) {
// response = bookService.addBook(book);
// if(!response.isSuccess()) {
// return response;
// }
// }
// return new Response(true,200,"books added");
// }
Original file line number Diff line number Diff line change
@@ -1,24 +1,56 @@
package com.free_open_university.backend.controller;

import com.free_open_university.backend.bean.Book;
import com.free_open_university.backend.bean.BookCategory;
import com.free_open_university.backend.bean.Category;
import com.free_open_university.backend.repositories.BookRepository;
import com.free_open_university.backend.repositories.CategoryRepository;
import com.free_open_university.backend.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

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

@RestController
@RequestMapping("/category")
//@RequestMapping("/category")
public class CategoryController {

@Autowired
CategoryService categoryService;
// CategoryService categoryService;
CategoryRepository categoryRepository;
BookRepository bookRepository;

@GetMapping
public List<Category> getAllCategories() {
return categoryService.getAllCategories();
// @GetMapping
// public List<Category> getAllCategories() {
// return categoryService.getAllCategories();
// }

@GetMapping("/category")
public List<Category> getAllCategories()
{
return categoryRepository.findAll();
}

@GetMapping("/category/{id}")
public Optional<Category> getCategoryById(@PathVariable(value="id") Long id)
{
return categoryRepository.findById(id);
}

// @GetMapping("/category/{id}/books")
// public List<Category> getBooksbyCategory(@PathVariable(value="books") Long books)
// {
// return categoryRepository.findBooksByCategory(books);
// }

// @GetMapping("/category/{id}/books")
// public List<BookCategory> getBooksbyCategory(@PathVariable(value="books") Long book_id)
// {
// return categoryRepository.findBooksByCategory(book_id);
// }
}
Loading