Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
593a4a1
add AppController
SKuznet Jun 7, 2017
81b4052
add message to console
SKuznet Jun 7, 2017
8972dd5
Merge branch 'development' into skuznet
SKuznet Jun 7, 2017
3a5ff8d
delete jack and add two world
SKuznet Jun 7, 2017
4060b87
add hello dog and cat
SKuznet Jun 7, 2017
c8bd2f8
Merge branch 'skuznet' into development
SKuznet Jun 7, 2017
2fb3ebc
add cat dog
SKuznet Jun 7, 2017
cfde5e2
add messages
SKuznet Jun 7, 2017
cfafba8
Merge branch 'skuznet' into development
SKuznet Jun 7, 2017
b7f10f2
add basic proj structure
SKuznet Jun 11, 2017
61194d4
add hometasks 1 and 2
YSavitski Jun 13, 2017
8e054e4
revert to previous project version
YSavitski Jun 13, 2017
29353d5
add spring security inmemory
SKuznet Jun 14, 2017
0673c13
add hibernate entity
SKuznet Jun 20, 2017
dc096e7
add rest services
SKuznet Jun 21, 2017
12bfe04
add front
SKuznet Jun 25, 2017
39a7c3e
Start point.
nilsJavaNoob Jul 2, 2017
4d7a91f
test menu added
nilsJavaNoob Jul 3, 2017
e65a8a6
add new field to Story entity. Create StoryControllerIntegrationTest
YSavitski Jul 3, 2017
d46e6ab
created listing in tne side-bar div by clicking on Quests link
nilsJavaNoob Jul 3, 2017
b535942
add test for story/all method
YSavitski Jul 4, 2017
4f00418
Merge branch 'EugeniOleg' of https://github.com/khasang-incubator/aer…
nilsJavaNoob Jul 4, 2017
ca901cf
removed 4.3.9.version spring-tx
nilsJavaNoob Jul 4, 2017
a955699
added get and create functions
nilsJavaNoob Jul 4, 2017
8c5c662
added id in presentation
nilsJavaNoob Jul 4, 2017
10d9229
tt
nilsJavaNoob Jul 4, 2017
dc82513
removed comments
nilsJavaNoob Jul 4, 2017
1cd0a18
simple changes on menu.jsp
YSavitski Jul 4, 2017
cd39b7b
simple changes on menu.jsp
YSavitski Jul 4, 2017
216f259
Merge remote-tracking branch 'aera/EugeniOleg' into EO_work_Eugeni
YSavitski Jul 4, 2017
332d21e
Merge remote-tracking branch 'origin/EugeniOleg' into EugeniOleg
nilsJavaNoob Jul 4, 2017
44de54c
k
nilsJavaNoob Jul 4, 2017
e893986
added clear menu
nilsJavaNoob Jul 9, 2017
2b7be40
added decsrition output
nilsJavaNoob Jul 9, 2017
cce9cac
add additional logic for Story, add test for Story Contorler, add Cha…
YSavitski Jul 12, 2017
aaba5d3
add new Items
YSavitski Jul 12, 2017
0a2f5a7
change Date format
YSavitski Jul 12, 2017
f74747a
Merge branch 'EO_work_Oleg' into test
nilsJavaNoob Jul 12, 2017
3e278dc
Merge branch 'test' into EO_work_Oleg
nilsJavaNoob Jul 12, 2017
9f05363
test table
nilsJavaNoob Jul 12, 2017
0a23278
testing description
nilsJavaNoob Jul 12, 2017
65a12df
add simple templates for Story and Chapter.
YSavitski Jul 12, 2017
1cef1b1
test for ahref
nilsJavaNoob Jul 12, 2017
12269ff
Merge branch 'EugeniOleg' into EO_work_Oleg
nilsJavaNoob Jul 12, 2017
2621a6e
Merge remote-tracking branch 'origin/EugeniOleg' into EugeniOleg
nilsJavaNoob Jul 12, 2017
f470b89
Merge branch 'EO_work_Oleg' into EugeniOleg
nilsJavaNoob Jul 12, 2017
5129974
Merge branch 'EugeniOleg' into EO_work_Oleg
nilsJavaNoob Jul 12, 2017
e10783c
Merge branch 'EO_work_Oleg' into EugeniOleg
nilsJavaNoob Jul 12, 2017
d46a915
refactor menu.jsp (add redirect to story-page and fixed links naming)
YSavitski Jul 13, 2017
55f4088
fixed variable naming
YSavitski Jul 13, 2017
543136f
Merge branch 'EugeniOleg' of https://github.com/khasang-incubator/aer…
nilsJavaNoob Jul 13, 2017
b605a43
removed table tags
nilsJavaNoob Jul 13, 2017
f7104b3
removed table tags
nilsJavaNoob Jul 13, 2017
7bdacbb
removed table tags
nilsJavaNoob Jul 13, 2017
23b2b71
splited menu.jsp to separate .jsp, .js, .css files
YSavitski Jul 13, 2017
72a36cb
used an $each() methiod instead forEach
nilsJavaNoob Jul 15, 2017
8b17e90
added templates files
nilsJavaNoob Jul 16, 2017
5c88eab
menu old
nilsJavaNoob Jul 16, 2017
bbd62d4
add logic for storing images
YSavitski Aug 3, 2017
29fc03e
remove unused files and fixed bug with update story and deleting image
YSavitski Aug 4, 2017
c0aded2
Merge branch 'EO_work_Eugeni' into EugeniOleg
YSavitski Aug 4, 2017
262767b
delete commented code, changes for pom.xml and add visible for custem…
YSavitski Aug 4, 2017
7991e56
Merge branch 'EugeniOleg' into EO_work_Eugeni
YSavitski Aug 4, 2017
152ee50
add simple logic for Chapter
YSavitski Aug 4, 2017
6d56590
Merge branch 'EO_work_Eugeni' into EugeniOleg
YSavitski Aug 4, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
/.idea/
*.iml
/target/
/out/
189 changes: 188 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,193 @@
<groupId>aera</groupId>
<artifactId>aera</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>

<properties>
<spring.version>4.3.8.RELEASE</spring.version>
<spring.security.version>4.2.0.RELEASE</spring.security.version>
<javax.version>3.0.1</javax.version>
<jstl.version>1.2</jstl.version>
<postgresql.version>9.4.1212.jre7</postgresql.version>
<hibernate.version>5.2.10.Final</hibernate.version>
<hibernate-validator.version>5.4.1.Final</hibernate-validator.version>
<jackson.version>2.7.8</jackson.version>
<junit.version>4.12</junit.version>
<commons-lang.version>2.6</commons-lang.version>
<commons-io.version>1.3.2</commons-io.version>
<commons-dbcp2.version>2.0</commons-dbcp2.version>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<javax.validation-api.version>1.1.0.Final</javax.validation-api.version>
<google-guava.version>22.0</google-guava.version>
</properties>

</project>
<dependencies>
<!-- Spring Framework -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${spring.security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${spring.security.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${spring.security.version}</version>
</dependency>
<!-- Postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate-validator.version}</version>
</dependency>

<!-- Javax -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax.version}</version>
<scope>provided</scope>
</dependency>

<!-- Jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- JSP -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>

<!-- DBCP -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>${commons-dbcp2.version}</version>
</dependency>

<!-- Common FilesUpload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>

<!-- Others -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>${commons-lang.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>${javax.validation-api.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${google-guava.version}</version>
</dependency>
</dependencies>

<build>
<finalName>aera</finalName>
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
<testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>${basedir}/web</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
69 changes: 69 additions & 0 deletions src/main/java/io/aera/config/AppConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package io.aera.config;

import io.aera.dao.ChapterDao;
import io.aera.dao.DocumentDao;
import io.aera.dao.StoryDao;
import io.aera.dao.impl.ChapterDaoImpl;
import io.aera.dao.impl.DocumentDaoImpl;
import io.aera.dao.impl.StoryDaoImpl;
import io.aera.entity.Chapter;
import io.aera.entity.Document;
import io.aera.entity.Story;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl;

@Configuration
@PropertySource(value = {"classpath:util.properties"})
@PropertySource(value = {"classpath:auth.properties"})
public class AppConfig {
@Autowired
private Environment environment;

@Bean
public UserDetailsService userDetailsService(){
JdbcDaoImpl jdbcImpl = new JdbcDaoImpl();
jdbcImpl.setDataSource(dataSource());
jdbcImpl.setUsersByUsernameQuery(environment.getRequiredProperty("usersByQuery"));
jdbcImpl.setAuthoritiesByUsernameQuery(environment.getRequiredProperty("rolesByQuery"));
return jdbcImpl;
}

@Bean
StoryDao storyDao(){
return new StoryDaoImpl(Story.class);
}

@Bean
ChapterDao chapterDao() {
return new ChapterDaoImpl(Chapter.class);
}

@Bean
DocumentDao documentDao(){
return new DocumentDaoImpl();
}

@Bean
DriverManagerDataSource dataSource(){
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(environment.getProperty("jdbc.postgresql.driver"));
dataSource.setUrl(environment.getProperty("jdbc.postgresql.url"));
dataSource.setUsername(environment.getProperty("jdbc.postgresql.name"));
dataSource.setPassword(environment.getProperty("jdbc.postgresql.password"));
return dataSource;
}

@Bean
public JdbcTemplate jdbcTemplate(){
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(dataSource());
return jdbcTemplate;
}
}
77 changes: 77 additions & 0 deletions src/main/java/io/aera/config/HibernateConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package io.aera.config;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import java.util.Properties;

@Configuration
@EnableTransactionManagement
@PropertySource(value = "classpath:hibernate.properties")
public class HibernateConfig {
private final Environment environment;

@Autowired
public HibernateConfig(Environment environment) {
this.environment = environment;
}

@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();
localSessionFactoryBean.setDataSource(dataSource());
localSessionFactoryBean.setPackagesToScan("io.aera.entity");
localSessionFactoryBean.setHibernateProperties(hibernateProperties());
return localSessionFactoryBean;
}

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(){
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan(new String[] {"io.aera.entity"});
em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
em.setJpaProperties(hibernateProperties());
return em;
}

private Properties hibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect"));
properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));
properties.put("hibernate.hbm2ddl.auto", environment.getRequiredProperty("hibernate.hbm2ddl.auto"));
properties.put("show_sql", environment.getRequiredProperty("hibernate.show_sql"));
return properties;
}

@Bean
DriverManagerDataSource dataSource(){
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(environment.getProperty("hibernate.driverClass"));
dataSource.setUrl(environment.getProperty("hibernate.url"));
dataSource.setUsername(environment.getProperty("hibernate.username"));
dataSource.setPassword(environment.getProperty("hibernate.password"));
return dataSource;
}

@Bean
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory s){
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(s);
return txManager;
}
}

39 changes: 39 additions & 0 deletions src/main/java/io/aera/config/SecurityConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package io.aera.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;

@Autowired
public void configAuthentication (AuthenticationManagerBuilder auth) throws Exception{
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}

@Bean
PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}

@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/admin/**").access("hasRole('ADMIN')")
.and().csrf().disable().formLogin().defaultSuccessUrl("/", false);
}


}
6 changes: 6 additions & 0 deletions src/main/java/io/aera/config/SecurityInit.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package io.aera.config;

import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;

public class SecurityInit extends AbstractSecurityWebApplicationInitializer {
}
Loading