// Path: src/main/java/com/hantsylabs/restexample/springmvc/domain/User.java
// @Data
// @Builder
// @NoArgsConstructor
// @AllArgsConstructor
// @Entity
// @Table(name = "users")
// public class User implements UserDetails, Serializable {
// 
//     /**
//      *
//      */
//     private static final long serialVersionUID = 1L;
// 
//     @Id()
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "id")
//     private Long id;
// 
//     @Column(name = "username")
//     private String username;
// 
//     @Column(name = "password")
//     private String password;
// 
//     @Column(name = "name")
//     private String name;
// 
//     @Column(name = "email")
//     private String email;
// 
//     @Column(name = "role")
//     private String role;
// 
//     @Column(name = "created_date")
//     @CreatedDate
//     private LocalDateTime createdDate;
// 
//     public String getName() {
//         if (this.name == null || this.name.trim().length() == 0) {
//             return this.username;
//         }
//         return name;
//     }
// 
//     @Override
//     public Collection<? extends GrantedAuthority> getAuthorities() {
//         return Arrays.asList(new SimpleGrantedAuthority("ROLE_" + this.role));
//     }
// 
//     @Override
//     public String getPassword() {
//         return this.password;
//     }
// 
//     @Override
//     public String getUsername() {
//         return this.username;
//     }
// 
//     @Override
//     public boolean isAccountNonExpired() {
//         return true;
//     }
// 
//     @Override
//     public boolean isAccountNonLocked() {
//         return true;
//     }
// 
//     @Override
//     public boolean isCredentialsNonExpired() {
//         return true;
//     }
// 
//     @Override
// 
//     public boolean isEnabled() {
//         return true;
//     }
// 
// 
// }
// 
// Path: src/main/java/com/hantsylabs/restexample/springmvc/repository/UserRepository.java
// public interface UserRepository extends JpaRepository<User, Long>,
//         JpaSpecificationExecutor<User> {
// 
//     public User findByUsername(String username);
// }


import com.hantsylabs.restexample.springmvc.domain.User;
import com.hantsylabs.restexample.springmvc.repository.UserRepository;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.security.crypto.password.PasswordEncoder;
package com.hantsylabs.restexample.springmvc.service;


@Named
public class DataImporter implements ApplicationListener<ContextRefreshedEvent> {

    private static final Logger log = LoggerFactory
            .getLogger(DataImporter.class);

    @Inject
// Path: src/main/java/com/hantsylabs/restexample/springmvc/domain/User.java
// @Data
// @Builder
// @NoArgsConstructor
// @AllArgsConstructor
// @Entity
// @Table(name = "users")
// public class User implements UserDetails, Serializable {
// 
//     /**
//      *
//      */
//     private static final long serialVersionUID = 1L;
// 
//     @Id()
//     @GeneratedValue(strategy = GenerationType.IDENTITY)
//     @Column(name = "id")
//     private Long id;
// 
//     @Column(name = "username")
//     private String username;
// 
//     @Column(name = "password")
//     private String password;
// 
//     @Column(name = "name")
//     private String name;
// 
//     @Column(name = "email")
//     private String email;
// 
//     @Column(name = "role")
//     private String role;
// 
//     @Column(name = "created_date")
//     @CreatedDate
//     private LocalDateTime createdDate;
// 
//     public String getName() {
//         if (this.name == null || this.name.trim().length() == 0) {
//             return this.username;
//         }
//         return name;
//     }
// 
//     @Override
//     public Collection<? extends GrantedAuthority> getAuthorities() {
//         return Arrays.asList(new SimpleGrantedAuthority("ROLE_" + this.role));
//     }
// 
//     @Override
//     public String getPassword() {
//         return this.password;
//     }
// 
//     @Override
//     public String getUsername() {
//         return this.username;
//     }
// 
//     @Override
//     public boolean isAccountNonExpired() {
//         return true;
//     }
// 
//     @Override
//     public boolean isAccountNonLocked() {
//         return true;
//     }
// 
//     @Override
//     public boolean isCredentialsNonExpired() {
//         return true;
//     }
// 
//     @Override
// 
//     public boolean isEnabled() {
//         return true;
//     }
// 
// 
// }
// 
// Path: src/main/java/com/hantsylabs/restexample/springmvc/repository/UserRepository.java
// public interface UserRepository extends JpaRepository<User, Long>,
//         JpaSpecificationExecutor<User> {
// 
//     public User findByUsername(String username);
// }


// Path: src/main/java/com/hantsylabs/restexample/springmvc/service/DataImporter.java
import com.hantsylabs.restexample.springmvc.domain.User;
import com.hantsylabs.restexample.springmvc.repository.UserRepository;
import javax.inject.Inject;
import javax.inject.Named;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.security.crypto.password.PasswordEncoder;

package com.hantsylabs.restexample.springmvc.service;


@Named
public class DataImporter implements ApplicationListener<ContextRefreshedEvent> {

    private static final Logger log = LoggerFactory
            .getLogger(DataImporter.class);

    @Inject
    private UserRepository userRepository;