diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..92322c4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea/ +target/ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..bfd99ad --- /dev/null +++ b/pom.xml @@ -0,0 +1,63 @@ + + + 4.0.0 + + net.mindoverflow.webmarker + WebMarker + 1.0-SNAPSHOT + jar + + + + ro.pippo + pippo + 1.13.1 + pom + + + + ro.pippo + pippo-controller + 1.13.1 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 11 + + + + org.apache.maven.plugins + maven-assembly-plugin + + + create-my-bundle + package + + single + + + + jar-with-dependencies + + + + net.mindoverflow.webmarker.WebMarker + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/net/mindoverflow/webmarker/WebMarker.java b/src/main/java/net/mindoverflow/webmarker/WebMarker.java new file mode 100644 index 0000000..590a597 --- /dev/null +++ b/src/main/java/net/mindoverflow/webmarker/WebMarker.java @@ -0,0 +1,13 @@ +package net.mindoverflow.webmarker; + +import net.mindoverflow.webmarker.server.WebApplication; +import ro.pippo.core.Pippo; + +public class WebMarker { + + public static void main(String[] args) + { + final Pippo pippo = new Pippo(new WebApplication()); + pippo.start(); + } +} diff --git a/src/main/java/net/mindoverflow/webmarker/server/WebApplication.java b/src/main/java/net/mindoverflow/webmarker/server/WebApplication.java new file mode 100644 index 0000000..a3a75c1 --- /dev/null +++ b/src/main/java/net/mindoverflow/webmarker/server/WebApplication.java @@ -0,0 +1,51 @@ +package net.mindoverflow.webmarker.server; + +import net.mindoverflow.webmarker.utils.URLMap; +import ro.pippo.controller.ControllerApplication; +import ro.pippo.core.route.TrailingSlashHandler; + +import java.util.List; + +public class WebApplication extends ControllerApplication { + + @Override + protected void onInit() { + + GET("/save", routeContext -> routeContext.send("Please append an user ID")); + GET("/save/{id}", routeContext -> routeContext.send("Please append an URL")); + GET("/save/{id}/{url}", routeContext -> + { + int userId = routeContext.getParameter("id").toInt(); + String saveUrl = routeContext.getParameter("url").toString(); + + URLMap.saveUrl(userId, saveUrl); + routeContext.send("Saved!"); + }); + + GET("/get", routeContext -> routeContext.send("Please append an user ID")); + GET("/get/{id}", routeContext -> + { + int userId = routeContext.getParameter("id").toInt(); + + List urls = URLMap.getUserUrls(userId); + StringBuilder urlsSB = new StringBuilder(" | "); + for(String url : urls) + { + urlsSB.append(url).append(" | "); + } + routeContext.send(urlsSB.toString()); + + }); + + GET("/drop", routeContext -> routeContext.send("Please append an user ID")); + GET("/drop/{id}", routeContext -> + { + int userId = routeContext.getParameter("id").toInt(); + URLMap.dropUser(userId); + routeContext.send("Dropped!"); + + }); + + ANY("/.*", new TrailingSlashHandler(false)); // remove trailing slash + } +} diff --git a/src/main/java/net/mindoverflow/webmarker/utils/URLMap.java b/src/main/java/net/mindoverflow/webmarker/utils/URLMap.java new file mode 100644 index 0000000..45e5b70 --- /dev/null +++ b/src/main/java/net/mindoverflow/webmarker/utils/URLMap.java @@ -0,0 +1,55 @@ +package net.mindoverflow.webmarker.utils; + +import java.util.ArrayList; +import java.util.List; + +public class URLMap { + + private static List ids = new ArrayList<>(); + private static List urls = new ArrayList<>(); + + public static void saveUrl(int userId, String url) + { + ids.add(userId); + urls.add(url); + System.out.println(); + System.out.println("Saved ID: " + userId + "; URL: " + url); + System.out.println("table is now:"); + for(int pos = 0; pos < ids.size(); pos++) + { + System.out.println("ID = " + ids.get(pos) + "; URL = " + urls.get(pos)); + } + System.out.println(); + } + + public static List getUserUrls(int userId) + { + ListthisUserUrls = new ArrayList<>(); + for(int pos = 0; pos < ids.size(); pos++) + { + if(userId == ids.get(pos)) + { + thisUserUrls.add(urls.get(pos)); + } + } + + return thisUserUrls; + } + + public static void dropUser(int userId) + { + List newIds = new ArrayList<>(); + List newUrls = new ArrayList<>(); + for(int pos = 0; pos < ids.size(); pos++) + { + if(ids.get(pos) != userId) + { + newIds.add(ids.get(pos)); + newUrls.add(urls.get(pos)); + } + } + + ids = newIds; + urls = newUrls; + } +} diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000..e69de29 diff --git a/webMarker.iml b/webMarker.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/webMarker.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file