From bcc370216066a6948f5e0cd86204f0d08e2ac9f5 Mon Sep 17 00:00:00 2001 From: Eike Cochu <eike@cochu.com> Date: Thu, 21 Jan 2016 22:43:13 +0100 Subject: [PATCH] fixed importing twice fixed problem when importing into an existing database added generic information to model --- ma-impl.sublime-workspace | 55 ++++++++++++++++--- .../rest/serializer/GenericDeserializer.java | 2 +- .../rest/serializer/GenericSerializer.java | 2 +- .../java/de/vipra/util/model/Article.java | 4 +- .../java/de/vipra/util/model/FileModel.java | 2 +- .../main/java/de/vipra/util/model/Model.java | 8 ++- .../main/java/de/vipra/util/model/Topic.java | 4 +- .../java/de/vipra/util/model/TopicFull.java | 4 +- .../java/de/vipra/util/model/TopicRef.java | 2 +- .../main/java/de/vipra/util/model/Word.java | 4 +- .../vipra/util/service/DatabaseService.java | 4 +- .../java/de/vipra/util/service/Service.java | 2 +- 12 files changed, 73 insertions(+), 20 deletions(-) diff --git a/ma-impl.sublime-workspace b/ma-impl.sublime-workspace index c8f2f55d..4b3b0a70 100644 --- a/ma-impl.sublime-workspace +++ b/ma-impl.sublime-workspace @@ -275,6 +275,14 @@ }, "buffers": [ + { + "file": "vipra-ui/app/routes/words/show.js", + "settings": + { + "buffer_size": 178, + "line_ending": "Unix" + } + } ], "build_system": "", "build_system_choices": @@ -459,29 +467,32 @@ "/home/eike/repos/master/ma-impl/vipra-ui/app/components", "/home/eike/repos/master/ma-impl/vipra-ui/app/models", "/home/eike/repos/master/ma-impl/vipra-ui/app/routes", + "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/articles", "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/topics", + "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/topics/show", "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/components", - "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/topics/show", - "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words", - "/home/eike/repos/master/ma-impl/vm/data" + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/topics", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words" ], "file_history": [ "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words/show.hbs", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words/index.hbs", + "/home/eike/repos/master/ma-impl/vipra-ui/app/models/word.js", + "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words/index.js", + "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/topics/index.hbs", + "/home/eike/.config/sublime-text-3/Packages/User/Preferences.sublime-settings", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles/index.hbs", "/home/eike/repos/master/ma-impl/vipra-ui/app/components/items-list.js", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/components/items-list.hbs", - "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words/index.hbs", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/topics/show/index.hbs", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/words.hbs", "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/index.hbs", "/home/eike/repos/master/ma-impl/vipra-ui/app/router.js", "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words", - "/home/eike/repos/master/ma-impl/vipra-ui/app/routes/words/index.js", - "/home/eike/repos/master/ma-impl/vipra-ui/app/models/word.js", "/home/eike/repos/master/ma-impl/vipra-ui/app/models/topic.js", "/home/eike/repos/master/ma-impl/vipra-ui/app/models/article.js", "/home/eike/repos/master/ma-impl/vm/data/test-10.json", @@ -489,7 +500,6 @@ "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/articles/show.hbs", "/home/eike/.local/share/vipra/jgibb/jgibb.twords", "/home/eike/.local/share/vipra/jgibb/jgibb.tassign", - "/home/eike/repos/master/ma-impl/vipra-ui/app/templates/topics/index.hbs", "/home/eike/Downloads/FRITZ.Box 7490 113.06.30_17.01.16_2147.export", "/home/eike/repos/master/ma-impl/vm/data/test-1.json", "/home/eike/repos/master/ma-impl/vm/data/test-2.json", @@ -525,7 +535,6 @@ "/home/eike/repos/master/ma-impl/vipra-ui/app/helpers/topic-numi.js", "/home/eike/repos/master/ma-impl/vipra-ui/app/helpers/topicname.js", "/home/eike/repos/master/ma-impl/vipra-ui/app/helpers/topic-name.js", - "/home/eike/.config/sublime-text-3/Packages/User/Preferences.sublime-settings", "/home/eike/.config/sublime-text-3/Packages/Default/Preferences.sublime-settings", "/home/eike/repos/master/ma-impl/vipra-ui/app/components/dynamic-high-charts.js", "/home/eike/repos/master/ma-impl/vipra-cmd.sh", @@ -921,8 +930,38 @@ "groups": [ { + "selected": 0, "sheets": [ + { + "buffer": 0, + "file": "vipra-ui/app/routes/words/show.js", + "semi_transient": false, + "settings": + { + "buffer_size": 178, + "regions": + { + }, + "selection": + [ + [ + 178, + 178 + ] + ], + "settings": + { + "open_with_edit": true, + "syntax": "Packages/JavaScriptNext - ES6 Syntax/JavaScriptNext.tmLanguage" + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 0, + "type": "text" + } ] } ], diff --git a/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericDeserializer.java b/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericDeserializer.java index 5945e5cf..9566837f 100644 --- a/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericDeserializer.java +++ b/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericDeserializer.java @@ -20,7 +20,7 @@ import com.fasterxml.jackson.databind.JsonDeserializer; import de.vipra.util.an.JsonWrap; import de.vipra.util.model.Model; -public class GenericDeserializer<T extends Model> extends JsonDeserializer<T> { +public class GenericDeserializer<T extends Model<?>> extends JsonDeserializer<T> { private final Class<T> clazz; private final Set<String> nestingPrefixes = new HashSet<>(); diff --git a/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericSerializer.java b/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericSerializer.java index 7d76f86e..fe7cc73c 100644 --- a/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericSerializer.java +++ b/vipra-rest/src/main/java/de/vipra/rest/serializer/GenericSerializer.java @@ -22,7 +22,7 @@ import de.vipra.util.an.JsonType; import de.vipra.util.an.JsonWrap; import de.vipra.util.model.Model; -public class GenericSerializer<T extends Model> extends JsonSerializer<T> { +public class GenericSerializer<T extends Model<?>> extends JsonSerializer<T> { private final String typeName; private final List<Entry<String, Field>> allFields; diff --git a/vipra-util/src/main/java/de/vipra/util/model/Article.java b/vipra-util/src/main/java/de/vipra/util/model/Article.java index 4122d623..131a99a2 100644 --- a/vipra-util/src/main/java/de/vipra/util/model/Article.java +++ b/vipra-util/src/main/java/de/vipra/util/model/Article.java @@ -28,7 +28,7 @@ import de.vipra.util.an.QueryIgnore; @JsonType("article") @Entity(value = "articles", noClassnameStored = true) @Indexes({ @Index("title"), @Index("date") }) -public class Article extends FileModel implements Serializable { +public class Article extends FileModel<ObjectId> implements Serializable { @Id private ObjectId id; @@ -62,10 +62,12 @@ public class Article extends FileModel implements Serializable { @JsonWrap("attributes") private Date modified; + @Override public ObjectId getId() { return id; } + @Override public void setId(ObjectId id) { this.id = id; } diff --git a/vipra-util/src/main/java/de/vipra/util/model/FileModel.java b/vipra-util/src/main/java/de/vipra/util/model/FileModel.java index 09742a02..de0ade9e 100644 --- a/vipra-util/src/main/java/de/vipra/util/model/FileModel.java +++ b/vipra-util/src/main/java/de/vipra/util/model/FileModel.java @@ -8,7 +8,7 @@ import org.apache.commons.io.FileUtils; import de.vipra.util.Constants; @SuppressWarnings("serial") -public abstract class FileModel implements Model { +public abstract class FileModel<IdType> implements Model<IdType> { public void writeToFile(File file) throws IOException { FileUtils.writeStringToFile(file, toFileString(), Constants.FB_ENCODING, false); diff --git a/vipra-util/src/main/java/de/vipra/util/model/Model.java b/vipra-util/src/main/java/de/vipra/util/model/Model.java index 0d133d54..eba05fd5 100644 --- a/vipra-util/src/main/java/de/vipra/util/model/Model.java +++ b/vipra-util/src/main/java/de/vipra/util/model/Model.java @@ -2,4 +2,10 @@ package de.vipra.util.model; import java.io.Serializable; -public interface Model extends Serializable {} \ No newline at end of file +public interface Model<IdType> extends Serializable { + + IdType getId(); + + void setId(IdType id); + +} \ No newline at end of file diff --git a/vipra-util/src/main/java/de/vipra/util/model/Topic.java b/vipra-util/src/main/java/de/vipra/util/model/Topic.java index 0ac387d9..07568128 100644 --- a/vipra-util/src/main/java/de/vipra/util/model/Topic.java +++ b/vipra-util/src/main/java/de/vipra/util/model/Topic.java @@ -15,16 +15,18 @@ import de.vipra.util.an.JsonType; @JsonType("topic") @Entity(value = "topics", noClassnameStored = true) @Indexes(@Index("name")) -public class Topic implements Model, Serializable { +public class Topic implements Model<ObjectId>, Serializable { @Id private ObjectId id; private String name; + @Override public ObjectId getId() { return id; } + @Override public void setId(ObjectId id) { this.id = id; } diff --git a/vipra-util/src/main/java/de/vipra/util/model/TopicFull.java b/vipra-util/src/main/java/de/vipra/util/model/TopicFull.java index 412232b7..8797b6b6 100644 --- a/vipra-util/src/main/java/de/vipra/util/model/TopicFull.java +++ b/vipra-util/src/main/java/de/vipra/util/model/TopicFull.java @@ -21,7 +21,7 @@ import de.vipra.util.an.QueryIgnore; @SuppressWarnings("serial") @JsonType("topic") @Entity(value = "topics", noClassnameStored = true) -public class TopicFull implements Model, Serializable { +public class TopicFull implements Model<ObjectId>, Serializable { @Id private ObjectId id; @@ -43,10 +43,12 @@ public class TopicFull implements Model, Serializable { @JsonWrap("attributes") private Date modified; + @Override public ObjectId getId() { return id; } + @Override public void setId(ObjectId id) { this.id = id; } diff --git a/vipra-util/src/main/java/de/vipra/util/model/TopicRef.java b/vipra-util/src/main/java/de/vipra/util/model/TopicRef.java index ef00fc43..7d84a4d6 100644 --- a/vipra-util/src/main/java/de/vipra/util/model/TopicRef.java +++ b/vipra-util/src/main/java/de/vipra/util/model/TopicRef.java @@ -12,7 +12,7 @@ public class TopicRef implements Comparable<TopicRef>, Serializable { @Transient private String topicId; - @Reference + @Reference(ignoreMissing = true) private Topic topic; private int count; diff --git a/vipra-util/src/main/java/de/vipra/util/model/Word.java b/vipra-util/src/main/java/de/vipra/util/model/Word.java index 62ee93d0..e32e4e9c 100644 --- a/vipra-util/src/main/java/de/vipra/util/model/Word.java +++ b/vipra-util/src/main/java/de/vipra/util/model/Word.java @@ -15,7 +15,7 @@ import de.vipra.util.an.JsonType; @SuppressWarnings("serial") @JsonType("word") @Entity(value = "words", noClassnameStored = true) -public class Word implements Model, Serializable { +public class Word implements Model<String>, Serializable { /** * This is the id. It is used by the frontend, which expects an 'id' field. @@ -47,10 +47,12 @@ public class Word implements Model, Serializable { this.word = word; } + @Override public String getId() { return id; } + @Override public void setId(String id) { this.id = id; } diff --git a/vipra-util/src/main/java/de/vipra/util/service/DatabaseService.java b/vipra-util/src/main/java/de/vipra/util/service/DatabaseService.java index 9a1d4e05..324e978c 100644 --- a/vipra-util/src/main/java/de/vipra/util/service/DatabaseService.java +++ b/vipra-util/src/main/java/de/vipra/util/service/DatabaseService.java @@ -18,7 +18,7 @@ import de.vipra.util.ex.ConfigException; import de.vipra.util.ex.DatabaseException; import de.vipra.util.model.Model; -public class DatabaseService<T extends Model, U> implements Service<T, U, DatabaseException> { +public class DatabaseService<T extends Model<?>, U> implements Service<T, U, DatabaseException> { private final Datastore datastore; private final Class<T> clazz; @@ -110,7 +110,7 @@ public class DatabaseService<T extends Model, U> implements Service<T, U, Databa return datastore.getCount(clazz); } - public static <T extends Model, U> DatabaseService<T, U> getDatabaseService(Config config, Class<T> clazz) + public static <T extends Model<?>, U> DatabaseService<T, U> getDatabaseService(Config config, Class<T> clazz) throws ConfigException { Mongo mongo = Mongo.getInstance(config); return new DatabaseService<T, U>(mongo, clazz); diff --git a/vipra-util/src/main/java/de/vipra/util/service/Service.java b/vipra-util/src/main/java/de/vipra/util/service/Service.java index 4fb210eb..b38d35af 100644 --- a/vipra-util/src/main/java/de/vipra/util/service/Service.java +++ b/vipra-util/src/main/java/de/vipra/util/service/Service.java @@ -4,7 +4,7 @@ import java.util.List; import de.vipra.util.model.Model; -public interface Service<Type extends Model, IdType, E extends Exception> { +public interface Service<Type extends Model<?>, IdType, E extends Exception> { Type getSingle(IdType id, String... fields) throws E; -- GitLab