aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/juick/www/rss/extension
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/juick/www/rss/extension')
-rw-r--r--src/main/java/com/juick/www/rss/extension/JuickModule.java33
-rw-r--r--src/main/java/com/juick/www/rss/extension/JuickModuleGenerator.java66
-rw-r--r--src/main/java/com/juick/www/rss/extension/JuickModuleImpl.java54
-rw-r--r--src/main/java/com/juick/www/rss/extension/JuickModuleParser.java42
4 files changed, 195 insertions, 0 deletions
diff --git a/src/main/java/com/juick/www/rss/extension/JuickModule.java b/src/main/java/com/juick/www/rss/extension/JuickModule.java
new file mode 100644
index 00000000..6b24390a
--- /dev/null
+++ b/src/main/java/com/juick/www/rss/extension/JuickModule.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008-2019, Juick
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.juick.www.rss.extension;
+
+import com.rometools.rome.feed.module.Module;
+
+/**
+ * Created by vitalyster on 13.12.2016.
+ */
+public interface JuickModule extends Module {
+
+ String URI = "http://juick.com/";
+
+ Integer getUid();
+
+ void setUid(Integer uid);
+
+}
diff --git a/src/main/java/com/juick/www/rss/extension/JuickModuleGenerator.java b/src/main/java/com/juick/www/rss/extension/JuickModuleGenerator.java
new file mode 100644
index 00000000..61368785
--- /dev/null
+++ b/src/main/java/com/juick/www/rss/extension/JuickModuleGenerator.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2008-2019, Juick
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.juick.www.rss.extension;
+
+import com.rometools.rome.feed.module.Module;
+import com.rometools.rome.io.ModuleGenerator;
+import org.jdom2.Element;
+import org.jdom2.Namespace;
+
+import java.util.Set;
+
+/**
+ * Created by vt on 13/12/2016.
+ */
+public class JuickModuleGenerator implements ModuleGenerator {
+
+ private static final Namespace JUICK_NS = Namespace.getNamespace("juick", JuickModule.URI);
+
+ @Override
+ public String getNamespaceUri() {
+ return JuickModule.URI;
+ }
+
+ private static final Set<Namespace> NAMESPACES;
+
+ static {
+ NAMESPACES = Set.of(JUICK_NS);
+ }
+
+ @Override
+ public Set<Namespace> getNamespaces() {
+ return NAMESPACES;
+ }
+
+ @Override
+ public void generate(Module module, Element element) {
+ // this is not necessary, it is done to avoid the namespace definition in every item.
+ Element root = element;
+ while (root.getParent()!=null && root.getParent() instanceof Element) {
+ root = element.getParentElement();
+ }
+ root.addNamespaceDeclaration(JUICK_NS);
+
+ JuickModule juickModule = (JuickModule) module;
+ if (juickModule.getUid() > 0) {
+ Element user = new Element("user", JUICK_NS);
+ user.setAttribute("uid", String.valueOf(juickModule.getUid()), JUICK_NS);
+ element.addContent(user);
+ }
+ }
+}
diff --git a/src/main/java/com/juick/www/rss/extension/JuickModuleImpl.java b/src/main/java/com/juick/www/rss/extension/JuickModuleImpl.java
new file mode 100644
index 00000000..ea6c4a66
--- /dev/null
+++ b/src/main/java/com/juick/www/rss/extension/JuickModuleImpl.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2008-2019, Juick
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.juick.www.rss.extension;
+
+import com.rometools.rome.feed.CopyFrom;
+import com.rometools.rome.feed.module.ModuleImpl;
+
+/**
+ * Created by vitalyster on 13.12.2016.
+ */
+public class JuickModuleImpl extends ModuleImpl implements JuickModule {
+
+ private Integer uid;
+
+ public JuickModuleImpl() {
+ super(JuickModule.class, JuickModule.URI);
+ }
+
+ @Override
+ public Integer getUid() {
+ return uid;
+ }
+
+ @Override
+ public void setUid(Integer uid) {
+ this.uid = uid;
+ }
+
+ @Override
+ public Class<? extends CopyFrom> getInterface() {
+ return JuickModule.class;
+ }
+
+ @Override
+ public void copyFrom(CopyFrom obj) {
+ JuickModule juickModule = (JuickModule) obj;
+ setUid(juickModule.getUid());
+ }
+}
diff --git a/src/main/java/com/juick/www/rss/extension/JuickModuleParser.java b/src/main/java/com/juick/www/rss/extension/JuickModuleParser.java
new file mode 100644
index 00000000..fbf8c8bb
--- /dev/null
+++ b/src/main/java/com/juick/www/rss/extension/JuickModuleParser.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2008-2019, Juick
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.juick.www.rss.extension;
+
+import com.rometools.rome.feed.module.Module;
+import com.rometools.rome.io.ModuleParser;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.jdom2.Element;
+
+import java.util.Locale;
+
+/**
+ * Created by vitalyster on 13.12.2016.
+ */
+public class JuickModuleParser implements ModuleParser {
+ @Override
+ public String getNamespaceUri() {
+ return JuickModule.URI;
+ }
+
+ @Override
+ public Module parse(Element element, Locale locale) {
+ JuickModuleImpl juickModule = new JuickModuleImpl();
+ juickModule.setUid(NumberUtils.toInt(element.getAttributeValue("uid", JuickModule.URI), 0));
+ return juickModule;
+ }
+}