diff --git a/database/init_script.sql b/database/init_script.sql index 1b99ef4..c85d44c 100644 --- a/database/init_script.sql +++ b/database/init_script.sql @@ -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), diff --git a/src/main/java/com/free_open_university/backend/bean/Book.java b/src/main/java/com/free_open_university/backend/bean/Book.java index c224bd1..3cf2668 100644 --- a/src/main/java/com/free_open_university/backend/bean/Book.java +++ b/src/main/java/com/free_open_university/backend/bean/Book.java @@ -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; @@ -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; } diff --git a/src/main/java/com/free_open_university/backend/bean/BookCategory.java b/src/main/java/com/free_open_university/backend/bean/BookCategory.java new file mode 100644 index 0000000..885c5d8 --- /dev/null +++ b/src/main/java/com/free_open_university/backend/bean/BookCategory.java @@ -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 + "]"; +// } +} diff --git a/src/main/java/com/free_open_university/backend/bean/Category.java b/src/main/java/com/free_open_university/backend/bean/Category.java index ec06359..db64454 100644 --- a/src/main/java/com/free_open_university/backend/bean/Category.java +++ b/src/main/java/com/free_open_university/backend/bean/Category.java @@ -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 ( @@ -33,11 +33,11 @@ public class Category { ) private Set books; - public int getId() { + public Long getId() { return id; } - public void setId(int id) { + public void setId(Long id) { this.id = id; } @@ -49,19 +49,19 @@ public void setName(String name) { this.name = name; } - public Set getBooks() { - return books; - } - - public void setBooks(Set books) { - this.books = books; - } +// public Set getBooks() { +// return books; +// } +// +// public void setBooks(Set 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; } } diff --git a/src/main/java/com/free_open_university/backend/bean/ExeuteShellProcessBuilder.java b/src/main/java/com/free_open_university/backend/bean/ExeuteShellProcessBuilder.java new file mode 100644 index 0000000..e3d2b0e --- /dev/null +++ b/src/main/java/com/free_open_university/backend/bean/ExeuteShellProcessBuilder.java @@ -0,0 +1,34 @@ +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 ExeuteShellProcessBuilder { + + 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(); + } + } +} +//"src/main/resources/hello.py", "src/main/resources/log.txt" +//"/home/taniya/Projects/external/openu/openu_back/website-backend/src/main/resources/hello.py" \ No newline at end of file diff --git a/src/main/java/com/free_open_university/backend/controller/BookCategoryController.java b/src/main/java/com/free_open_university/backend/controller/BookCategoryController.java new file mode 100644 index 0000000..e4f5201 --- /dev/null +++ b/src/main/java/com/free_open_university/backend/controller/BookCategoryController.java @@ -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 getAllBookCategories() + { + return bookCategoryRepository.findAll(); + } + +// @GetMapping +// public List 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 findByIds(@PathVariable () List category_id) { +// return bookCategoryRepository.findAllById(category_id); +// } + + +} + + diff --git a/src/main/java/com/free_open_university/backend/controller/BookController.java b/src/main/java/com/free_open_university/backend/controller/BookController.java index 5e93107..c8959d0 100644 --- a/src/main/java/com/free_open_university/backend/controller/BookController.java +++ b/src/main/java/com/free_open_university/backend/controller/BookController.java @@ -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; @@ -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) { @@ -42,21 +45,51 @@ public List 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 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 saveAllBook(@RequestBody List bookList) { + return (List) 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 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 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"); +// } diff --git a/src/main/java/com/free_open_university/backend/controller/CategoryController.java b/src/main/java/com/free_open_university/backend/controller/CategoryController.java index 5fa5d55..48e620c 100644 --- a/src/main/java/com/free_open_university/backend/controller/CategoryController.java +++ b/src/main/java/com/free_open_university/backend/controller/CategoryController.java @@ -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 getAllCategories() { - return categoryService.getAllCategories(); +// @GetMapping +// public List getAllCategories() { +// return categoryService.getAllCategories(); +// } + + @GetMapping("/category") + public List getAllCategories() + { + return categoryRepository.findAll(); + } + + @GetMapping("/category/{id}") + public Optional getCategoryById(@PathVariable(value="id") Long id) + { + return categoryRepository.findById(id); } + +// @GetMapping("/category/{id}/books") +// public List getBooksbyCategory(@PathVariable(value="books") Long books) +// { +// return categoryRepository.findBooksByCategory(books); +// } + +// @GetMapping("/category/{id}/books") +// public List getBooksbyCategory(@PathVariable(value="books") Long book_id) +// { +// return categoryRepository.findBooksByCategory(book_id); +// } } diff --git a/src/main/java/com/free_open_university/backend/dao/BookCategoryRepository.java b/src/main/java/com/free_open_university/backend/dao/BookCategoryRepository.java new file mode 100644 index 0000000..f8e8809 --- /dev/null +++ b/src/main/java/com/free_open_university/backend/dao/BookCategoryRepository.java @@ -0,0 +1,27 @@ +package com.free_open_university.backend.dao; + +import com.free_open_university.backend.bean.Book; +import com.free_open_university.backend.bean.BookCategory; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; +import java.util.Optional; + +public interface BookCategoryRepository extends JpaRepository { + +// List findBooksByBookCategory(Long category_id); +// List findAllById(Long category_id); + + + +// @Query("SELECT new com.roytuts.spring.data.jpa.left.right.inner.cross.join.dto.JoinDto(BookCategory.category_id, BookCategory.book_id, Book.title " +// + "FROM Sale s INNER JOIN s.food f INNER JOIN f.company c") +// List fetchDataInnerJoin(); +// +// SELECT BookCategory.category_id, BookCategory.book_id, Book.title FROM BookCategory INNER JOIN Book ON BookCategory.book_id=Book.book_id; + +// List findbyCategory(Long category_id); + + +} diff --git a/src/main/java/com/free_open_university/backend/repositories/BookRepository.java b/src/main/java/com/free_open_university/backend/repositories/BookRepository.java index 4ddb0eb..2a3ae20 100644 --- a/src/main/java/com/free_open_university/backend/repositories/BookRepository.java +++ b/src/main/java/com/free_open_university/backend/repositories/BookRepository.java @@ -5,11 +5,12 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import java.io.Serializable; import java.util.List; import java.util.Set; import java.util.Optional; -public interface BookRepository extends JpaRepository { +public interface BookRepository extends JpaRepository { Optional findByTitle(String title); diff --git a/src/main/java/com/free_open_university/backend/repositories/CategoryRepository.java b/src/main/java/com/free_open_university/backend/repositories/CategoryRepository.java index 855b3ed..d7a0941 100644 --- a/src/main/java/com/free_open_university/backend/repositories/CategoryRepository.java +++ b/src/main/java/com/free_open_university/backend/repositories/CategoryRepository.java @@ -1,10 +1,17 @@ package com.free_open_university.backend.repositories; +//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 org.springframework.data.jpa.repository.JpaRepository; import java.util.List; +import java.util.Optional; import java.util.Set; -public interface CategoryRepository extends JpaRepository { +public interface CategoryRepository extends JpaRepository { + +// List findBooksByCategory(Long book_id); + } + diff --git a/src/main/java/com/free_open_university/backend/service/BookCategoryService.java b/src/main/java/com/free_open_university/backend/service/BookCategoryService.java new file mode 100644 index 0000000..44261c9 --- /dev/null +++ b/src/main/java/com/free_open_university/backend/service/BookCategoryService.java @@ -0,0 +1,29 @@ +package com.free_open_university.backend.service; + +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 org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class BookCategoryService { + + @Autowired + BookCategoryRepository bookCategoryRepository; + +// public List getAllBookCategories() { +// return bookCategoryRepository.findAll(); +// } + +// public List getBooksByCategories(Long category_id) { +// return bookCategoryRepository.findbyCategory(category_id); +// } + +// public List getBooksbyCategoryId(Long category_id) { return bookCategoryRepository.findAllById(category_id); } + +} diff --git a/src/main/java/com/free_open_university/backend/service/BookService.java b/src/main/java/com/free_open_university/backend/service/BookService.java index 542b9f6..08a5e93 100644 --- a/src/main/java/com/free_open_university/backend/service/BookService.java +++ b/src/main/java/com/free_open_university/backend/service/BookService.java @@ -26,14 +26,26 @@ public Optional getBookByTitle(String title) { return bookRepository.findByTitle(title); } - @Transactional - public Response addBook(Book newBook) { - try{ - bookRepository.save(newBook); - return new Response(true, "book added"); - } catch (Exception e) { - e.printStackTrace(); - return new Response(false, "book not added"); - } + public void saveOrUpdate(Book book) + { + bookRepository.save(book); } + + public List saveAllBook(List bookList) { return bookRepository.saveAll(bookList); } + + public void delete(Long id) { bookRepository.deleteById(id); } + + public void deleteInBatch(List bookList) { bookRepository.deleteInBatch(bookList); + } + +// @Transactional +// public Response addBook(Book newBook) { +// try{ +// bookRepository.save(newBook); +// return new Response(true, "book added"); +// } catch (Exception e) { +// e.printStackTrace(); +// return new Response(false, "book not added"); +// } +// } } diff --git a/src/main/java/com/free_open_university/backend/service/CategoryService.java b/src/main/java/com/free_open_university/backend/service/CategoryService.java index 2152d1a..8314194 100644 --- a/src/main/java/com/free_open_university/backend/service/CategoryService.java +++ b/src/main/java/com/free_open_university/backend/service/CategoryService.java @@ -1,11 +1,14 @@ package com.free_open_university.backend.service; +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.CategoryRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Optional; import java.util.Set; @Service @@ -18,4 +21,7 @@ public List getAllCategories() { return categoryRepository.findAll(); } +// public List getBooksbyCategory(Long books) { return categoryRepository.findBooksByCategory(books); } + +// public List getBooksbyCategory(Long book_id) { return categoryRepository.findBooksByCategory(book_id); } } \ No newline at end of file diff --git a/src/main/resources/hello.py b/src/main/resources/hello.py new file mode 100755 index 0000000..c69cd28 --- /dev/null +++ b/src/main/resources/hello.py @@ -0,0 +1,4 @@ +print("Hello World") + +x = 5 + 2 +print(x) diff --git a/src/main/resources/hello.sh b/src/main/resources/hello.sh new file mode 100755 index 0000000..10fff19 --- /dev/null +++ b/src/main/resources/hello.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +echo "hello.sh has been executed by java" +echo "testing again" +python3 /home/taniya/Projects/external/openu/openu_back/website-backend/src/main/resources/hello.py \ No newline at end of file diff --git a/src/main/resources/log.txt b/src/main/resources/log.txt new file mode 100644 index 0000000..a964f86 --- /dev/null +++ b/src/main/resources/log.txt @@ -0,0 +1,28 @@ +hello.sh has been executed by java +testing again +src/main/resources/hello.sh: line 5: python: command not found +hello.sh has been executed by java +testing again +src/main/resources/hello.sh: line 5: python: command not found +hello.sh has been executed by java +testing again +src/main/resources/hello.sh: line 5: python: command not found +hello.sh has been executed by java +testing again +src/main/resources/hello.sh: line 5: python: command not found +hello.sh has been executed by java +testing again +Hello World +7 +hello.sh has been executed by java +testing again +Hello World +7 +hello.sh has been executed by java +testing again +Hello World +7 +hello.sh has been executed by java +testing again +Hello World +7