Skip to content
Roland Schuller edited this page Apr 4, 2019 · 1 revision

CRUD

Create, Read, Update, Delete

This is mostly done on Objects. Here is a Helper that makes it easier:

// Get User data (POJO Getter)
public class GetUser {

    private final String name;
    private final String login;
    private final boolean active;
    private final int level;

    public GetUser(User user) {
        this.name=user.getName();
        this.login=user.getLogin();
        this.active=user.isActive();
        this.level=user.getLevel();
        
    }

    public String getName() {
        return name;
    }

    public String getLogin() {
        return login;
    }

    public boolean isActive() {
        return active;
    }

    public int getLevel() {
        return level;
    }
}

// Update or Create a User
public class PutUser {
    
    private String name;
    private String login;
    private String password;
    private Boolean active;
    private Integer level;

    public void setName(String name) {
        this.name = name;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setActive(Boolean active) {
        this.active = active;
    }

    public void setLevel(Integer level) {
        this.level = level;
    }
    
    public void toUser(User user)
    {
        if (name!=null) user.setName(name);
        if (login!=null) user.setLogin(login);
        if (password!=null) user.setPasswd(password);
        if (active!=null) user.setActive(active);
        if (level!=null) user.setLevel(level);
    }
    
}



// The Helper (Simplified)
public class CRUDUser extends JsonCRUDHelper<PutUser> {

    public CRUDUser(String entry, RestPath path) {
        super(entry, path, PutUser.class);
        Documentation(GetUser.class, PutUser.class, PutUser.class, "User");
    }

    @Override
    public void addNewItem(Conversion conversion, Map<String, String> UrlParameter, PutUser data) {
            User user = new User();
            data.toUser(user);
            Database.getDATABASE().getUserDao().createOrUpdate(user);
            conversion.getResponse().setData(new GetUser(user));
            conversion.getResponse().setStatus(HttpStatus.Created);
    }

    @Override
    public void getSingeItem(Conversion conversion, Map<String, String> UrlParameter, String id) {
        User user = null;
        user = getUser(UrlParameter);
        if (user == null) {
            conversion.getResponse().setStatus(HttpStatus.NotFound);
        } else {
            conversion.getResponse().setData(new GetUser(user));
        }
    }

    @Override
    public void getAllItem(Conversion conversion, Map<String, String> UrlParameter) {
            List<GetUser> gf = new ArrayList<>();
            User user1=new User();
            for (User user : Database.getDATABASE().getUserDao().queryForMatching(user1)) {
               gf.add(new GetUser(user));
            }
            conversion.getResponse().setData(gf);
    }

    @Override
    public void updateItem(Conversion conversion, Map<String, String> UrlParameter, PutUser data, String id) {
            User user = getUser(UrlParameter);
            data.toUser(user);
            if (user != null) {
               Database.getDATABASE().getUserDao().createOrUpdate(user);
               conversion.getResponse().setData(new GetUser(user));
            } else {
               conversion.getResponse().setStatus(HttpStatus.NotFound);
            }
    }

    @Override
    public void deleteItem(Conversion conversion, Map<String, String> UrlParameter, String id) {
            User user = getUser(UrlParameter);
            if (user != null) {
               Database.getDATABASE().getUserDao().delete(user);
               conversion.getResponse().setData("OK");
            } else {
               conversion.getResponse().setStatus(HttpStatus.NotFound);
            }
    }

    public static User getUser(Map<String, String> UrlParameter) throws SQLException {
        User user = Database.getDATABASE().getUserDao().queryForId(Integer.parseInt(UrlParameter.get("id")));
        return user;
    }
    
}

// User the User CRUD helper
CRUDUser userHelper=new CRUDUser("user", server.getPath("/user"));

GET /user -> Get All

GET /user/1 -> Get User (id=1)

PUT or POST /user -> New

PUT or POST /user/1 -> Update User (id=1)

DELETE /user/1 -> Delete User (id=1)

Clone this wiki locally