mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
save settings on read mode change
This commit is contained in:
@@ -4,6 +4,7 @@ import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EnumType;
|
||||
import javax.persistence.Enumerated;
|
||||
import javax.persistence.OneToOne;
|
||||
import javax.persistence.Table;
|
||||
|
||||
@Entity
|
||||
@@ -12,10 +13,11 @@ import javax.persistence.Table;
|
||||
public class UserSettings extends AbstractModel {
|
||||
|
||||
public enum ReadingMode {
|
||||
ALL, UNREAD
|
||||
all, unread
|
||||
}
|
||||
|
||||
@Column(name = "user_id")
|
||||
@OneToOne
|
||||
private User user;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="span10">
|
||||
<toolbar></toolbar>
|
||||
<ng:view></ng:view>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.commafeed.frontend.rest;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Type;
|
||||
@@ -8,11 +9,13 @@ import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.WebApplicationException;
|
||||
import javax.ws.rs.core.HttpHeaders;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.MultivaluedMap;
|
||||
import javax.ws.rs.ext.MessageBodyReader;
|
||||
import javax.ws.rs.ext.MessageBodyWriter;
|
||||
import javax.ws.rs.ext.Provider;
|
||||
|
||||
@@ -28,7 +31,9 @@ import com.google.gson.JsonSerializer;
|
||||
|
||||
@Provider
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public class JSONMessageBodyWriter implements MessageBodyWriter<Object> {
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
public class JSONMessageBodyReaderWriter implements MessageBodyWriter<Object>,
|
||||
MessageBodyReader<Object> {
|
||||
|
||||
@Override
|
||||
public boolean isWriteable(Class<?> type, Type genericType,
|
||||
@@ -36,6 +41,12 @@ public class JSONMessageBodyWriter implements MessageBodyWriter<Object> {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReadable(Class<?> type, Type genericType,
|
||||
Annotation[] annotations, MediaType mediaType) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getSize(Object t, Class<?> type, Type genericType,
|
||||
Annotation[] annotations, MediaType mediaType) {
|
||||
@@ -50,11 +61,23 @@ public class JSONMessageBodyWriter implements MessageBodyWriter<Object> {
|
||||
WebApplicationException {
|
||||
httpHeaders.putSingle(HttpHeaders.CONTENT_TYPE, mediaType.toString()
|
||||
+ ";charset=UTF-8");
|
||||
IOUtils.write(getGson().toJson(t), entityStream, "UTF-8");
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object readFrom(Class<Object> type, Type genericType,
|
||||
Annotation[] annotations, MediaType mediaType,
|
||||
MultivaluedMap<String, String> httpHeaders, InputStream entityStream)
|
||||
throws IOException, WebApplicationException {
|
||||
String json = IOUtils.toString(entityStream, "UTF-8");
|
||||
return getGson().fromJson(json, type);
|
||||
}
|
||||
|
||||
private Gson getGson() {
|
||||
Gson gson = new GsonBuilder().registerTypeAdapter(Date.class,
|
||||
new DateSerializer()).create();
|
||||
IOUtils.write(gson.toJson(t), entityStream, "UTF-8");
|
||||
|
||||
return gson;
|
||||
}
|
||||
|
||||
private static class DateSerializer implements JsonSerializer<Date> {
|
||||
@@ -16,7 +16,7 @@ public class RESTApplication extends Application {
|
||||
@Override
|
||||
public Set<Class<?>> getClasses() {
|
||||
Set<Class<?>> set = Sets.newHashSet();
|
||||
set.add(JSONMessageBodyWriter.class);
|
||||
set.add(JSONMessageBodyReaderWriter.class);
|
||||
|
||||
set.add(SubscriptionsREST.class);
|
||||
set.add(EntriesREST.class);
|
||||
|
||||
@@ -4,6 +4,7 @@ import javax.annotation.PostConstruct;
|
||||
import javax.inject.Inject;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.WebApplicationException;
|
||||
import javax.ws.rs.core.Context;
|
||||
@@ -27,6 +28,7 @@ import com.commafeed.frontend.CommaFeedApplication;
|
||||
import com.commafeed.frontend.CommaFeedSession;
|
||||
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
public abstract class AbstractREST {
|
||||
|
||||
@Context
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.commafeed.frontend.rest.resources;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.core.Response;
|
||||
import javax.ws.rs.core.Response.Status;
|
||||
|
||||
import com.commafeed.backend.model.UserSettings;
|
||||
import com.commafeed.backend.model.UserSettings.ReadingMode;
|
||||
@@ -14,15 +16,19 @@ public class SettingsREST extends AbstractREST {
|
||||
@Path("get")
|
||||
@GET
|
||||
public Settings get() {
|
||||
UserSettings settings = userSettingsService.findByUser(getUser());
|
||||
Settings s = new Settings();
|
||||
s.setReadingMode(settings.getReadingMode().name().toLowerCase());
|
||||
UserSettings settings = userSettingsService.findByUser(getUser());
|
||||
if (settings != null) {
|
||||
s.setReadingMode(settings.getReadingMode().name());
|
||||
} else {
|
||||
s.setReadingMode(ReadingMode.unread.name());
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
@Path("save")
|
||||
@POST
|
||||
public void save(Settings settings) {
|
||||
public Response save(Settings settings) {
|
||||
UserSettings s = userSettingsService.findByUser(getUser());
|
||||
if (s == null) {
|
||||
s = new UserSettings();
|
||||
@@ -30,6 +36,7 @@ public class SettingsREST extends AbstractREST {
|
||||
}
|
||||
s.setReadingMode(ReadingMode.valueOf(settings.getReadingMode()));
|
||||
userSettingsService.saveOrUpdate(s);
|
||||
return Response.ok(Status.OK).build();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user