diff --git a/src/main/java/io/khasang/bend/config/security/SecurityConfig.java b/src/main/java/io/khasang/bend/config/security/SecurityConfig.java index 2a49cdc..0ee1f14 100644 --- a/src/main/java/io/khasang/bend/config/security/SecurityConfig.java +++ b/src/main/java/io/khasang/bend/config/security/SecurityConfig.java @@ -27,6 +27,7 @@ public void configure(HttpSecurity http) throws Exception { .and().csrf().disable().cors().disable().formLogin().defaultSuccessUrl("/", false); } + // NON PRODUCTION!!! spring 3-4 // @Override // public void configure(AuthenticationManagerBuilder auth) throws Exception { diff --git a/src/main/java/io/khasang/bend/controller/AppController.java b/src/main/java/io/khasang/bend/controller/AppController.java index 1bcda38..e8d6277 100644 --- a/src/main/java/io/khasang/bend/controller/AppController.java +++ b/src/main/java/io/khasang/bend/controller/AppController.java @@ -41,7 +41,7 @@ public String getHelloPage(Model model) { return "hello"; } - @RequestMapping("/") + @RequestMapping("/menu") public String getBadgerPage() { return "menu"; } diff --git a/src/main/java/io/khasang/bend/controller/FrontendController.java b/src/main/java/io/khasang/bend/controller/FrontendController.java new file mode 100644 index 0000000..5d35fbf --- /dev/null +++ b/src/main/java/io/khasang/bend/controller/FrontendController.java @@ -0,0 +1,54 @@ +package io.khasang.bend.controller; + +import io.khasang.bend.entity.HomePagesUrl; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; +import java.util.List; + +@Controller +@RequestMapping("/") +public class FrontendController { + + protected EntityManager entityManager; + + @RequestMapping(value = "{homepageadress}", method = RequestMethod.GET) + String getDynamicUriValueRegex(@PathVariable("homepageadress") String homepageadress, Model model){ + + Query q = entityManager.createQuery("FROM HomePagesUrl WHERE url = ?1"); + + q.setParameter(1, homepageadress); + System.err.println("location query"+q.toString()); + List resultList = q.getResultList(); + if (!resultList.isEmpty()){ + HomePagesUrl homePagesUrl = resultList.get(0); + int i = homePagesUrl.getEntityId(); + switch (i){ + case 0: + model.addAttribute("urlId", homePagesUrl.getId()); + return "student-template"; + case 1: + model.addAttribute("urlId", homePagesUrl.getId()); + return "manager-template"; + } + + System.out.println("location"+ homepageadress +"catched"); + } + return "student-template"; + } + + @PersistenceContext + public void setEntityManager(EntityManager entityManager) { + this.entityManager = entityManager; + } + + public EntityManager getEntityManager() { + return entityManager; + } +} \ No newline at end of file diff --git a/src/main/java/io/khasang/bend/entity/HomePagesUrl.java b/src/main/java/io/khasang/bend/entity/HomePagesUrl.java new file mode 100644 index 0000000..e14e272 --- /dev/null +++ b/src/main/java/io/khasang/bend/entity/HomePagesUrl.java @@ -0,0 +1,40 @@ +package io.khasang.bend.entity; + +import javax.persistence.*; + +@Entity +@Table(name = "urls") +public class HomePagesUrl { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") + Long id; + @Column(name = "url") + String url; + @Column(name = "entity_type") + Integer entityId; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public Integer getEntityId() { + return entityId; + } + + public void setEntityId(Integer entityId) { + this.entityId = entityId; + } +} \ No newline at end of file diff --git a/src/main/java/io/khasang/bend/entity/School.java b/src/main/java/io/khasang/bend/entity/School.java index abc866d..475dede 100644 --- a/src/main/java/io/khasang/bend/entity/School.java +++ b/src/main/java/io/khasang/bend/entity/School.java @@ -23,6 +23,10 @@ public class School { @Column(columnDefinition = "TEXT", name = "time_table") private String timeTable; + @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) + //@Column(name = "url_id") + private HomePagesUrl url; + // MultipleBagFetchException: cannot simultaneously fetch multiple bags: невозможно получить несколько пакетов @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) private Set disciplinesSet = new HashSet<>(); @@ -109,4 +113,30 @@ public Set getPlacesSet() { public void setPlacesSet(Set placesSet) { this.placesSet = placesSet; } + + public HomePagesUrl getUrl() { + return url; + } + + public void setUrl(HomePagesUrl url) { + this.url = url; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + School school = (School) o; + + if (id != school.id) return false; + return name.equals(school.name); + } + + @Override + public int hashCode() { + int result = (int) (id ^ (id >>> 32)); + result = 31 * result + name.hashCode(); + return result; + } } \ No newline at end of file diff --git a/src/main/java/io/khasang/bend/entity/User.java b/src/main/java/io/khasang/bend/entity/User.java index 60d6e81..151e8cb 100644 --- a/src/main/java/io/khasang/bend/entity/User.java +++ b/src/main/java/io/khasang/bend/entity/User.java @@ -4,16 +4,7 @@ import io.khasang.bend.model.UserStatus; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Enumerated; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.ManyToMany; -import javax.persistence.Table; +import javax.persistence.*; import java.time.LocalDate; import java.util.ArrayList; import java.util.HashSet; @@ -49,6 +40,9 @@ public class User { private String interests; @Column(name = "role_id") private Integer role; + @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) + private HomePagesUrl url; + @ManyToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL) private Set disciplinesSet = new HashSet<>(); @@ -179,4 +173,36 @@ public String getInterests() { public void setInterests(String interests) { this.interests = interests; } + + public HomePagesUrl getUrl() { + return url; + } + + public void setUrl(HomePagesUrl url) { + this.url = url; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + User user = (User) o; + + if (id != null ? !id.equals(user.id) : user.id != null) return false; + if (!name.equals(user.name)) return false; + if (!lastName.equals(user.lastName)) return false; + if (!age.equals(user.age)) return false; + return gender == user.gender; + } + + @Override + public int hashCode() { + int result = id != null ? id.hashCode() : 0; + result = 31 * result + name.hashCode(); + result = 31 * result + lastName.hashCode(); + result = 31 * result + age.hashCode(); + result = 31 * result + (gender != null ? gender.hashCode() : 0); + return result; + } } diff --git a/src/main/resources/hibernate.properties b/src/main/resources/hibernate.properties index 5e878f8..ba58962 100644 --- a/src/main/resources/hibernate.properties +++ b/src/main/resources/hibernate.properties @@ -1,4 +1,4 @@ hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect hibernate.show_sql=true hibernate.format_sql=true -hibernate.hbm2ddl.auto=create \ No newline at end of file +hibernate.hbm2ddl.auto=update \ No newline at end of file diff --git a/src/main/resources/util.properties b/src/main/resources/util.properties index 76a23ba..61400b3 100644 --- a/src/main/resources/util.properties +++ b/src/main/resources/util.properties @@ -1,4 +1,4 @@ jdbc.postgresql.driver=org.postgresql.Driver jdbc.postgresql.url=jdbc:postgresql://localhost:5432/bend -jdbc.postgresql.username=root -jdbc.postgresql.password=root \ No newline at end of file +jdbc.postgresql.username=postgres +jdbc.postgresql.password=postgres \ No newline at end of file diff --git a/src/test/java/io/khasang/bend/controller/SchoolControllerIntegrationTest.java b/src/test/java/io/khasang/bend/controller/SchoolControllerIntegrationTest.java index 6ef2942..323b93c 100644 --- a/src/test/java/io/khasang/bend/controller/SchoolControllerIntegrationTest.java +++ b/src/test/java/io/khasang/bend/controller/SchoolControllerIntegrationTest.java @@ -4,6 +4,7 @@ import io.khasang.bend.entity.Place; import io.khasang.bend.entity.Point; import io.khasang.bend.entity.School; +import io.khasang.bend.entity.HomePagesUrl; import org.junit.Test; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.*; @@ -94,6 +95,13 @@ private School createSchool() { return createdSchool; } + private HomePagesUrl createUrl(){ + HomePagesUrl url = new HomePagesUrl(); + url.setEntityId(1); + url.setUrl(String.valueOf(url.hashCode())); + return url; + } + private School prefillSchool() { School school = new School(); //school.setId(1); @@ -124,6 +132,9 @@ private School prefillSchool() { set.add(place2); school.setPlacesSet(set); + + school.setUrl(createUrl()); + return school; } } \ No newline at end of file diff --git a/src/test/java/io/khasang/bend/controller/UserControllerIntegrationTest.java b/src/test/java/io/khasang/bend/controller/UserControllerIntegrationTest.java index ae08bed..64cc55c 100644 --- a/src/test/java/io/khasang/bend/controller/UserControllerIntegrationTest.java +++ b/src/test/java/io/khasang/bend/controller/UserControllerIntegrationTest.java @@ -1,6 +1,7 @@ package io.khasang.bend.controller; import io.khasang.bend.dto.UserDto; +import io.khasang.bend.entity.HomePagesUrl; import io.khasang.bend.entity.User; import io.khasang.bend.model.Gender; import io.khasang.bend.model.UserStatus; @@ -11,6 +12,7 @@ import java.time.LocalDate; import java.util.List; +import java.util.Random; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -95,6 +97,13 @@ private User createUser() { return createdUser; } + private HomePagesUrl createUrl(){ + HomePagesUrl url = new HomePagesUrl(); + url.setEntityId(0); + url.setUrl(String.valueOf(url.hashCode())); + return url; + } + private User prefillUser() { User user = new User(); user.setName("Ivan"); @@ -110,6 +119,7 @@ private User prefillUser() { user.setHealthLimited(false); user.setUserDescription("NERD"); user.setInterests("Wakeboarding"); + user.setUrl(createUrl()); return user; } }