diff --git a/.gitignore b/.gitignore index 9df941f..c64eefb 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,10 @@ out/ /.nb-gradle/ ### VS Code ### .vscode/ +### NODE ### +!**/node_modules/ +/mdc-theme/node_modules/ +/mdc-theme/dist/ +/elex-theme/node_modules/ +/elex-theme/dist/ +/persona/ diff --git a/address-finder/build.gradle.kts b/address-finder/build.gradle.kts new file mode 100644 index 0000000..94507db --- /dev/null +++ b/address-finder/build.gradle.kts @@ -0,0 +1,32 @@ +/* + * Project Asgard + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +plugins { + id("elex-springboot") + + id("org.springframework.boot") version "2.5.3" + id("io.spring.dependency-management") version "1.0.11.RELEASE" +} + +version = "1.0.0" +description = "Address Finder" + +tasks.bootJar{ + enabled = false +} +tasks.jar { + enabled = true +} + +dependencies { + implementation("org.springframework.boot:spring-boot-starter-web") + + compileOnly("org.projectlombok:lombok") + annotationProcessor("org.projectlombok:lombok") + + testImplementation("org.springframework.boot:spring-boot-starter-test") +} diff --git a/address-finder/src/main/java/com/elex_project/asgard/address_finder/AppController.java b/address-finder/src/main/java/com/elex_project/asgard/address_finder/AppController.java new file mode 100644 index 0000000..3ab388d --- /dev/null +++ b/address-finder/src/main/java/com/elex_project/asgard/address_finder/AppController.java @@ -0,0 +1,21 @@ +/* + * Project Asgard + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package com.elex_project.asgard.address_finder; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +@RequestMapping("/address-finder") +public class AppController { + @GetMapping("/**") + public String index(){ + return "address-finder"; + } +} diff --git a/address-finder/src/main/java/com/elex_project/asgard/address_finder/package-info.java b/address-finder/src/main/java/com/elex_project/asgard/address_finder/package-info.java new file mode 100644 index 0000000..ec803dc --- /dev/null +++ b/address-finder/src/main/java/com/elex_project/asgard/address_finder/package-info.java @@ -0,0 +1,8 @@ +/* + * Project Asgard + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package com.elex_project.asgard.address_finder; diff --git a/address-finder/src/main/resources/templates/address-finder.html b/address-finder/src/main/resources/templates/address-finder.html new file mode 100644 index 0000000..64c86c8 --- /dev/null +++ b/address-finder/src/main/resources/templates/address-finder.html @@ -0,0 +1,3 @@ +
+Hahaha
+ diff --git a/app/build.gradle.kts b/app/build.gradle.kts index eb655f6..6de1836 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,14 @@ +/* + * Project Asgard + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + plugins { id("elex-springboot") - id("org.springframework.boot") version "2.4.2" + + id("org.springframework.boot") version "2.5.3" id("io.spring.dependency-management") version "1.0.11.RELEASE" id("org.asciidoctor.convert") version "1.5.8" } @@ -9,6 +17,12 @@ group = "com.elex-project" version = "0.0.1-SNAPSHOT" description = "" +repositories { + maven { + url = uri("https://repository.elex-project.com/repository/maven") + } +} + ext { set("snippetsDir", file("build/generated-snippets")) } @@ -25,9 +39,17 @@ tasks.asciidoctor { } dependencies { - //implementation("org.springframework.boot:spring-boot-starter-data-jpa") - implementation("org.springframework.boot:spring-boot-starter-mustache") + implementation(project(":sitemap")) + implementation(project(":linkback")) + + implementation(project(":address-finder")) + implementation("com.vladsch.flexmark:flexmark-all:0.62.2") + + implementation("org.springframework.boot:spring-boot-starter-data-jpa") + implementation("org.springframework.boot:spring-boot-starter-thymeleaf") + //implementation("org.springframework.boot:spring-boot-starter-security") + implementation("org.springframework.boot:spring-boot-starter-cache") implementation("org.springframework.boot:spring-boot-starter-web") //implementation ("com.fasterxml.jackson.dataformat:jackson-dataformat-xml") @@ -36,6 +58,7 @@ dependencies { compileOnly("org.projectlombok:lombok") developmentOnly("org.springframework.boot:spring-boot-devtools") //runtimeOnly("org.mariadb.jdbc:mariadb-java-client") + runtimeOnly("com.h2database:h2") annotationProcessor("org.springframework.boot:spring-boot-configuration-processor") annotationProcessor("org.projectlombok:lombok") diff --git a/app/src/main/java/com/elex_project/asgard/Application.java b/app/src/main/java/com/elex_project/asgard/Application.java new file mode 100644 index 0000000..92a6f8d --- /dev/null +++ b/app/src/main/java/com/elex_project/asgard/Application.java @@ -0,0 +1,34 @@ +/* + * Project Asgard + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package com.elex_project.asgard; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.stereotype.Component; + +@Slf4j +@EnableCaching +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + + @Component + static class Runner implements CommandLineRunner { + + @Override + public void run(String... args) throws Exception { + + } + } +} diff --git a/app/src/main/java/com/elex_project/asgard/config/Config.java b/app/src/main/java/com/elex_project/asgard/config/Config.java new file mode 100644 index 0000000..fc77425 --- /dev/null +++ b/app/src/main/java/com/elex_project/asgard/config/Config.java @@ -0,0 +1,54 @@ +/* + * Project Asgard + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package com.elex_project.asgard.config; + +import com.elex_project.asgard.supplements.Markdown; +import com.elex_project.asgard.view.AsgardLocaleResolver; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.LocaleResolver; + +@Configuration +public class Config { + + /*@Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } +*/ + /*@Bean + public HttpTraceRepository httpTraceRepository() { + return new InMemoryHttpTraceRepository(); + }*/ + + + /** + * Locale resolver, 디폴트 로캐일을 지정한다. + */ + @Bean + public LocaleResolver localeResolver() { + /*SessionLocaleResolver localeResolver = new SessionLocaleResolver(); + localeResolver.setDefaultLocale(Locale.ENGLISH); + localeResolver.setLocaleAttributeName("lc"); + localeResolver.setTimeZoneAttributeName("tz"); + return localeResolver;*/ + + return new AsgardLocaleResolver(); + } + + + /** + * Markdown parser + * + * @return + */ + @Bean + public Markdown markdown() { + return new Markdown(); + } +} diff --git a/app/src/main/java/com/elex_project/asgard/config/ViewConfig.java b/app/src/main/java/com/elex_project/asgard/config/ViewConfig.java new file mode 100644 index 0000000..a7fc9b3 --- /dev/null +++ b/app/src/main/java/com/elex_project/asgard/config/ViewConfig.java @@ -0,0 +1,32 @@ +/* + * Project Asgard + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package com.elex_project.asgard.config; + +import com.elex_project.asgard.view.AsgardLocaleChangeInterceptor; +import com.elex_project.asgard.view.ViewModelInterceptor; +import org.jetbrains.annotations.NotNull; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class ViewConfig implements WebMvcConfigurer { + + @Override + public void addInterceptors(@NotNull InterceptorRegistry registry) { + registry.addInterceptor(new AsgardLocaleChangeInterceptor()) + .addPathPatterns("/**"); + + registry.addInterceptor(new ViewModelInterceptor()) + .addPathPatterns("/**"); + + /*registry.addInterceptor(new RequestLogInterceptor()) + .addPathPatterns("/**");*/ + } + +} diff --git a/app/src/main/java/com/elex_project/asgard/config/package-info.java b/app/src/main/java/com/elex_project/asgard/config/package-info.java new file mode 100644 index 0000000..06b46b4 --- /dev/null +++ b/app/src/main/java/com/elex_project/asgard/config/package-info.java @@ -0,0 +1,8 @@ +/* + * Project Asgard + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package com.elex_project.asgard.config; diff --git a/app/src/main/java/com/elex_project/asgard/controller/BaseController.java b/app/src/main/java/com/elex_project/asgard/controller/BaseController.java new file mode 100644 index 0000000..350240f --- /dev/null +++ b/app/src/main/java/com/elex_project/asgard/controller/BaseController.java @@ -0,0 +1,105 @@ +/* + * Project Asgard + * + * Copyright (c) 2021. Elex. All Rights Reserved. + * https://www.elex-project.com/ + */ + +package com.elex_project.asgard.controller; + +import org.jetbrains.annotations.NotNull; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.net.URI; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +abstract class BaseController { + + /*@NotNull + protected Map