From f6773c29fae1ffb1ba010a844cdd3971077e7260 Mon Sep 17 00:00:00 2001
From: digrazia2038 <digrazia@2038.it>
Date: Thu, 28 Jul 2022 17:42:56 +0200
Subject: [PATCH] Implemented PUBLIC visibility

---
 .../it/eng/urbanite/dashboard/Runner.java     | 100 ++++++++++++++++++
 .../dashboard/model/enumeration/MenuType.java |   1 +
 .../repository/MenuBlockRepository.java       |   2 +-
 .../dashboard/web/MenuBlockResource.java      |   8 ++
 4 files changed, 110 insertions(+), 1 deletion(-)
 create mode 100644 src/main/java/it/eng/urbanite/dashboard/Runner.java

diff --git a/src/main/java/it/eng/urbanite/dashboard/Runner.java b/src/main/java/it/eng/urbanite/dashboard/Runner.java
new file mode 100644
index 0000000..0b1d25e
--- /dev/null
+++ b/src/main/java/it/eng/urbanite/dashboard/Runner.java
@@ -0,0 +1,100 @@
+package it.eng.urbanite.dashboard;
+
+import java.time.Instant;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+import it.eng.urbanite.dashboard.model.enumeration.MenuType;
+import it.eng.urbanite.dashboard.service.MenuBlockService;
+import it.eng.urbanite.dashboard.service.dto.MenuBlockDTO;
+import lombok.extern.slf4j.Slf4j;
+
+@Component
+@Slf4j
+public class Runner implements ApplicationRunner {
+	private final Logger log = LoggerFactory.getLogger(Runner.class);
+
+	@Autowired
+	private MenuBlockService menuBlockService;
+
+	@Override
+	public void run(ApplicationArguments args) throws Exception {
+		// TODO Auto-generated method stub
+		if (hasRows()) {
+			log.info("------------------ Start creating menu blocks ------------------");
+			try {
+				initPersonalMenuBlock();
+				initSharedMenuBlock();
+				initPublicMenuBlock();
+			} catch (Throwable e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+		log.info("------------------ Menu blocks created ------------------");
+	}
+
+	void initPersonalMenuBlock() {
+//		logger.info("\n");
+//		logger.info("------------------ Start inserting pilots ------------------");
+		MenuBlockDTO menuBlockDTO = new MenuBlockDTO();
+		menuBlockDTO.setId((long) 2000);
+		menuBlockDTO.setCode("PERSONAL_DASHBOARDS");
+		menuBlockDTO.setCreatedBy("waste manager");
+		// GET THE USERNAME FOR EACH USER AND CHECK FOR EMPTY FOR THE
+		// USER!!!!!!!!!!!!!!!!!!!
+		menuBlockDTO.setCreatedDate(Instant.now());
+		menuBlockDTO.setIcon(null);
+		menuBlockDTO.setLabel("PERSONAL DASHBOARDS");
+		menuBlockDTO.setType(MenuType.PERSONAL);
+		menuBlockService.save(menuBlockDTO);
+//		logger.info("------------------ End inserting pilots ------------------");
+//		logger.info("\n");
+	}
+
+	void initSharedMenuBlock() {
+//			logger.info("\n");
+//			logger.info("------------------ Start inserting pilots ------------------");
+		MenuBlockDTO menuBlockDTO = new MenuBlockDTO();
+		menuBlockDTO.setId((long) 2000);
+		menuBlockDTO.setCode("SHARED_DASHBOARDS");
+		menuBlockDTO.setCreatedBy("waste manager");
+		// GET THE USERNAME FOR EACH USER AND CHECK FOR EMPTY FOR THE
+		// USER!!!!!!!!!!!!!!!!!!!
+		menuBlockDTO.setCreatedDate(Instant.now());
+		menuBlockDTO.setIcon(null);
+		menuBlockDTO.setLabel("SHARED DASHBOARDS");
+		menuBlockDTO.setType(MenuType.SHARED);
+		menuBlockService.save(menuBlockDTO);
+//			logger.info("------------------ End inserting pilots ------------------");
+//			logger.info("\n");
+	}
+
+	void initPublicMenuBlock() {
+//			logger.info("\n");
+//			logger.info("------------------ Start inserting pilots ------------------");
+		MenuBlockDTO menuBlockDTO = new MenuBlockDTO();
+		menuBlockDTO.setId((long) 2000);
+		menuBlockDTO.setCode("PUBLIC_DASHBOARDS");
+		menuBlockDTO.setCreatedBy("waste manager");
+		// GET THE USERNAME FOR EACH USER AND CHECK FOR EMPTY FOR THE
+		// USER!!!!!!!!!!!!!!!!!!!
+		menuBlockDTO.setCreatedDate(Instant.now());
+		menuBlockDTO.setIcon(null);
+		menuBlockDTO.setLabel("PUBLIC DASHBOARDS");
+		menuBlockDTO.setType(MenuType.PUBLIC);
+		menuBlockService.save(menuBlockDTO);
+//			logger.info("------------------ End inserting pilots ------------------");
+//			logger.info("\n");
+	}
+
+	boolean hasRows() {
+		log.info("------------------ Checking if there are menu blocks ------------------");
+		return menuBlockService.findAll().isEmpty() ? true : false;
+	}
+}
\ No newline at end of file
diff --git a/src/main/java/it/eng/urbanite/dashboard/model/enumeration/MenuType.java b/src/main/java/it/eng/urbanite/dashboard/model/enumeration/MenuType.java
index c576128..0a1e6fa 100644
--- a/src/main/java/it/eng/urbanite/dashboard/model/enumeration/MenuType.java
+++ b/src/main/java/it/eng/urbanite/dashboard/model/enumeration/MenuType.java
@@ -6,4 +6,5 @@ package it.eng.urbanite.dashboard.model.enumeration;
 public enum MenuType {
     SHARED,
     PERSONAL,
+    PUBLIC
 }
diff --git a/src/main/java/it/eng/urbanite/dashboard/repository/MenuBlockRepository.java b/src/main/java/it/eng/urbanite/dashboard/repository/MenuBlockRepository.java
index 066fd12..4fb867d 100644
--- a/src/main/java/it/eng/urbanite/dashboard/repository/MenuBlockRepository.java
+++ b/src/main/java/it/eng/urbanite/dashboard/repository/MenuBlockRepository.java
@@ -82,7 +82,7 @@ public interface MenuBlockRepository extends JpaRepository<MenuBlock, Long>, Jpa
 	 * @param createdBy
 	 * @return List of MenuBlock
 	 */
-    @Query(nativeQuery=true, value= "SELECT * from menu_block m where 1=1 and ( (m.created_by = :createdBy and m.type='PERSONAL') or m.type='SHARED' ) " )
+    @Query(nativeQuery=true, value= "SELECT * from menu_block m where 1=1 and ( (m.created_by = :createdBy and m.type='PERSONAL') or m.type='SHARED' or m.type='PUBLIC' ) " )
     List<MenuBlock> findEditable( @Param("createdBy") String createdBy );
     
 	   
diff --git a/src/main/java/it/eng/urbanite/dashboard/web/MenuBlockResource.java b/src/main/java/it/eng/urbanite/dashboard/web/MenuBlockResource.java
index 13eefc2..de9c328 100644
--- a/src/main/java/it/eng/urbanite/dashboard/web/MenuBlockResource.java
+++ b/src/main/java/it/eng/urbanite/dashboard/web/MenuBlockResource.java
@@ -128,10 +128,18 @@ public class MenuBlockResource {
 		List<MenuBlockDTO> list = menuBlockService.findLinkedItems(MenuType.SHARED, createdBy);
 		return ResponseEntity.ok().body(list);
 	}
+	@GetMapping("/public-menu-blocks")
+	public ResponseEntity<List<MenuBlockDTO>> getAllPublicMenuBlocks() {
+		log.debug("REST request to get Shared Linked MenuBlocks");
+		String createdBy = SecurityUtils.getCurrentUserLogin().orElse(Constants.SYSTEM);
+		List<MenuBlockDTO> list = menuBlockService.findLinkedItems(MenuType.SHARED, createdBy);
+		return ResponseEntity.ok().body(list);
+	}
 	
 	@GetMapping("/editable-menu-blocks")
 	public ResponseEntity<List<MenuBlockDTO>> getAllEditableMenuBlocks() {
 		log.info("REST request to get Editable (SHARED or PERSONAL created-by user) Linked MenuBlocks");
+		log.info("Update: REST request to get SHARED, PERSONAL and PUBLIC FIXED menu blocks created by default by the system");
 		List<MenuBlockDTO> list = menuBlockService.findEditableBlocks();
 		return ResponseEntity.ok().body(list);
 	}
-- 
GitLab