implemented adding of new options
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -109,7 +109,10 @@ public class PollModule extends BaseHandler implements PollService {
|
||||
if (val instanceof JSONObject j && j.has(Field.SOURCE)) val = j.get(Field.SOURCE);
|
||||
if (val instanceof String d) description = d;
|
||||
}
|
||||
var option = new Poll.Option(0, name, description, 0);
|
||||
var options = poll.options();
|
||||
int newId = options.stream().map(Poll.Option::id).max(Integer::compareTo).orElse(0) + 1;
|
||||
|
||||
var option = new Poll.Option(0, name, description, 0).id(newId);
|
||||
poll.options().add(option);
|
||||
return sendContent(ex,pollDb.save(poll));
|
||||
}
|
||||
|
||||
@@ -3,10 +3,8 @@ package de.srsoftware.umbrella.poll;
|
||||
|
||||
import static de.srsoftware.tools.Optionals.is0;
|
||||
import static de.srsoftware.tools.jdbc.Condition.equal;
|
||||
import static de.srsoftware.tools.jdbc.Condition.isNull;
|
||||
import static de.srsoftware.tools.jdbc.Query.*;
|
||||
import static de.srsoftware.tools.jdbc.Query.SelectQuery.ALL;
|
||||
import static de.srsoftware.tools.jdbc.Query.insertInto;
|
||||
import static de.srsoftware.tools.jdbc.Query.select;
|
||||
import static de.srsoftware.umbrella.core.ModuleRegistry.userService;
|
||||
import static de.srsoftware.umbrella.core.constants.Field.*;
|
||||
import static de.srsoftware.umbrella.core.constants.Field.DESCRIPTION;
|
||||
@@ -18,6 +16,7 @@ import static java.text.MessageFormat.format;
|
||||
import de.srsoftware.umbrella.core.BaseDb;
|
||||
import de.srsoftware.umbrella.core.constants.Field;
|
||||
import de.srsoftware.umbrella.core.constants.Text;
|
||||
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
|
||||
import de.srsoftware.umbrella.core.model.Poll;
|
||||
import de.srsoftware.umbrella.core.model.UmbrellaUser;
|
||||
|
||||
@@ -26,7 +25,6 @@ import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class SqliteDb extends BaseDb implements PollDb {
|
||||
|
||||
@@ -162,27 +160,38 @@ public class SqliteDb extends BaseDb implements PollDb {
|
||||
return is0(poll.id()) ? saveNew(poll) : update(poll);
|
||||
}
|
||||
|
||||
public Poll.Option saveOption(Long pollId, Poll.Option option){
|
||||
return is0(option.id()) ? saveNew(pollId, option) : update(pollId, option);
|
||||
public Poll.Option saveOption(String pollId, Poll.Option option) {
|
||||
try {
|
||||
if (option.isNew()) return saveNew(pollId,option);
|
||||
if (option.isDirty()) return update(pollId, option);
|
||||
return option;
|
||||
} catch (SQLException e){
|
||||
throw failedToStoreObject(Text.OPTION);
|
||||
}
|
||||
}
|
||||
|
||||
private Poll saveNew(Poll poll) {
|
||||
throw new RuntimeException("Not implemented");
|
||||
}
|
||||
|
||||
private Poll saveNew(long pollId, Poll.Option option) {
|
||||
throw new RuntimeException("Not implemented");
|
||||
private Poll.Option saveNew(String pollId, Poll.Option option) throws SQLException {
|
||||
insertInto(TABLE_OPTIONS, ID, POLL_ID, NAME, DESCRIPTION, STATUS)
|
||||
.values(option.id(), pollId, option.name(), option.description(), option.status())
|
||||
.execute(db);
|
||||
return option;
|
||||
}
|
||||
|
||||
private Poll update(Poll poll) {
|
||||
LOG.log(WARNING,"Updating poll not fully implemented");
|
||||
for (var option : poll.options()) saveOption(poll.id(),option);
|
||||
throw new RuntimeException("Not implemented");
|
||||
return poll;
|
||||
}
|
||||
|
||||
private Poll update(long pollId, Poll.Option option) {
|
||||
insertInto(TABLE_OPTIONS) // TODO
|
||||
throw new RuntimeException("Not implemented");
|
||||
private Poll.Option update(String pollId, Poll.Option option) throws SQLException {
|
||||
updateIgnore(TABLE_OPTIONS)
|
||||
.set(NAME, DESCRIPTION, STATUS).where(ID, equal(pollId)).prepare(db)
|
||||
.apply(option.name(), option.description(), option.status()).execute();
|
||||
return option;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user