// Path: rss-2-kindle-common/src/main/java/org/roag/ds/OperationResult.java
// public enum OperationResult {
//     SUCCESS("success"),
//     FAILURE("failure"),
//     NOT_EXIST("not_exist"),
//     DUPLICATED("duplicated");
// 
//     private final String status;
//     private final Map<String, String> map;
// 
//     OperationResult(String status) {
//         this.status = status;
//         map = new LinkedHashMap<>(1);
//         map.put("status", status);
//     }
// 
//     public String toJson() {
//         return new Gson().toJson(map);
//     }
// 
//     @Override
//     public String toString() {
//         return status;
//     }
// }
// 
// Path: rss-2-kindle-common/src/main/java/org/roag/model/Roles.java
// public enum Roles {
//     ROLE_USER("ROLE_USER"),
//     ROLE_ADMIN("ROLE_ADMIN");
// 
//     private final String value;
// 
//     Roles(String value) {
//         this.value = value;
//     }
// 
//     @Override
//     public String toString() {
//         return this.value;
//     }
// }
// 
// Path: rss-2-kindle-common/src/main/java/org/roag/model/User.java
// @SuppressWarnings("unused")
// public class User implements Serializable {
// 
//     @SerializedName("_id")
//     private String id;
//     @SerializedName("username")
//     private String username;
//     @SerializedName("email")
//     private String email;
//     @SerializedName("password")
//     private String password;
//     @SerializedName("dateCreated")
//     private String dateCreated;
//     @SerializedName("dateModified")
//     private String dateModified;
//     @SerializedName("lastLogin")
//     private String lastLogin;
//     @SerializedName("previousLogin")
//     private String previousLogin;
//     @SerializedName("status")
//     private String status;
//     @SerializedName("subscribers")
//     private List<Subscriber> subscribers;
//     @SerializedName("roles")
//     private Set<Roles> roles;
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getUsername() {
//         return username;
//     }
// 
//     public void setUsername(String username) {
//         this.username = username;
//     }
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getDateModified() {
//         return dateModified;
//     }
// 
//     public void setDateModified(String dateModified) {
//         this.dateModified = dateModified;
//     }
// 
//     public String getLastLogin() {
//         return lastLogin;
//     }
// 
//     public void setLastLogin(String lastLogin) {
//         if (this.lastLogin != null) {
//             this.previousLogin = this.lastLogin;
//         }
//         this.lastLogin = lastLogin;
//     }
// 
//     public String getDateCreated() {
//         return dateCreated;
//     }
// 
//     public void setDateCreated(String dateCreated) {
//         this.dateCreated = dateCreated;
//     }
// 
//     public String getStatus() {
//         return status;
//     }
// 
//     public void setStatus(String status) {
//         this.status = status;
//     }
// 
//     public List<Subscriber> getSubscribers() {
//         return subscribers;
//     }
// 
//     public void setSubscribers(List<Subscriber> subscribers) {
//         this.subscribers = subscribers;
//     }
// 
//     public Set<Roles> getRoles() {
//         return roles;
//     }
// 
//     public void setRoles(Set<Roles> roles) {
//         this.roles = roles;
//     }
// 
//     public String getPreviousLogin() {
//         return previousLogin;
//     }
// 
//     public void setPreviousLogin(String previousLogin) {
//         this.previousLogin = previousLogin;
//     }
// }


import org.roag.ds.OperationResult;
import org.roag.model.Roles;
import org.roag.model.User;
import java.util.List;
import java.util.Map;
package org.roag.ds;



/**
 * Created by eurohlam on 26/10/2017.
 */
public interface UserRepository {

    User getUser(String username) throws Exception;

    OperationResult addUser(User user) throws Exception;

    OperationResult updateUser(User user) throws Exception;

    OperationResult removeUser(String username) throws Exception;

    OperationResult lockUser(String username) throws Exception;

// Path: rss-2-kindle-common/src/main/java/org/roag/ds/OperationResult.java
// public enum OperationResult {
//     SUCCESS("success"),
//     FAILURE("failure"),
//     NOT_EXIST("not_exist"),
//     DUPLICATED("duplicated");
// 
//     private final String status;
//     private final Map<String, String> map;
// 
//     OperationResult(String status) {
//         this.status = status;
//         map = new LinkedHashMap<>(1);
//         map.put("status", status);
//     }
// 
//     public String toJson() {
//         return new Gson().toJson(map);
//     }
// 
//     @Override
//     public String toString() {
//         return status;
//     }
// }
// 
// Path: rss-2-kindle-common/src/main/java/org/roag/model/Roles.java
// public enum Roles {
//     ROLE_USER("ROLE_USER"),
//     ROLE_ADMIN("ROLE_ADMIN");
// 
//     private final String value;
// 
//     Roles(String value) {
//         this.value = value;
//     }
// 
//     @Override
//     public String toString() {
//         return this.value;
//     }
// }
// 
// Path: rss-2-kindle-common/src/main/java/org/roag/model/User.java
// @SuppressWarnings("unused")
// public class User implements Serializable {
// 
//     @SerializedName("_id")
//     private String id;
//     @SerializedName("username")
//     private String username;
//     @SerializedName("email")
//     private String email;
//     @SerializedName("password")
//     private String password;
//     @SerializedName("dateCreated")
//     private String dateCreated;
//     @SerializedName("dateModified")
//     private String dateModified;
//     @SerializedName("lastLogin")
//     private String lastLogin;
//     @SerializedName("previousLogin")
//     private String previousLogin;
//     @SerializedName("status")
//     private String status;
//     @SerializedName("subscribers")
//     private List<Subscriber> subscribers;
//     @SerializedName("roles")
//     private Set<Roles> roles;
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public String getUsername() {
//         return username;
//     }
// 
//     public void setUsername(String username) {
//         this.username = username;
//     }
// 
//     public String getPassword() {
//         return password;
//     }
// 
//     public void setPassword(String password) {
//         this.password = password;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     public String getDateModified() {
//         return dateModified;
//     }
// 
//     public void setDateModified(String dateModified) {
//         this.dateModified = dateModified;
//     }
// 
//     public String getLastLogin() {
//         return lastLogin;
//     }
// 
//     public void setLastLogin(String lastLogin) {
//         if (this.lastLogin != null) {
//             this.previousLogin = this.lastLogin;
//         }
//         this.lastLogin = lastLogin;
//     }
// 
//     public String getDateCreated() {
//         return dateCreated;
//     }
// 
//     public void setDateCreated(String dateCreated) {
//         this.dateCreated = dateCreated;
//     }
// 
//     public String getStatus() {
//         return status;
//     }
// 
//     public void setStatus(String status) {
//         this.status = status;
//     }
// 
//     public List<Subscriber> getSubscribers() {
//         return subscribers;
//     }
// 
//     public void setSubscribers(List<Subscriber> subscribers) {
//         this.subscribers = subscribers;
//     }
// 
//     public Set<Roles> getRoles() {
//         return roles;
//     }
// 
//     public void setRoles(Set<Roles> roles) {
//         this.roles = roles;
//     }
// 
//     public String getPreviousLogin() {
//         return previousLogin;
//     }
// 
//     public void setPreviousLogin(String previousLogin) {
//         this.previousLogin = previousLogin;
//     }
// }


// Path: rss-2-kindle-common/src/main/java/org/roag/ds/UserRepository.java
import org.roag.ds.OperationResult;
import org.roag.model.Roles;
import org.roag.model.User;
import java.util.List;
import java.util.Map;

package org.roag.ds;



/**
 * Created by eurohlam on 26/10/2017.
 */
public interface UserRepository {

    User getUser(String username) throws Exception;

    OperationResult addUser(User user) throws Exception;

    OperationResult updateUser(User user) throws Exception;

    OperationResult removeUser(String username) throws Exception;

    OperationResult lockUser(String username) throws Exception;

    OperationResult unlockUser(String username) throws Exception;