diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..decf36541199d23f84be403d354f2829983d84e7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Intellij IDEA ### +.idea/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 3090d107a5878ed24086fa14f8b17c323d22b568..38d1bbd8d4d6f0e2a95908e1b2cc32cc2dbfd519 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,8 @@ -FROM maven:latest +FROM maven:amazoncorretto WORKDIR /app/nutricraft-soap COPY . . -RUN mvn clean -RUN mvn compile -RUN mvn package +RUN mvn clean package -DskipTests ENTRYPOINT ["java", "-jar", "target/nutricraft-soap.jar"] \ No newline at end of file diff --git a/db/db.sql b/db/db.sql new file mode 100644 index 0000000000000000000000000000000000000000..2e7701ba87f6374f77efff9c8ac6dac2e26601b3 --- /dev/null +++ b/db/db.sql @@ -0,0 +1,92 @@ + +DROP TABLE IF EXISTS `coins`; +CREATE TABLE `coins` ( + `id` varchar(255) NOT NULL, + `coin` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci; + + +INSERT INTO `coins` (`id`, `coin`) VALUES + ('4169868951', 10), + ('6621876564', 45), + ('0068131062', 54), + ('2534892940', 5345), + ('2542003092', 645), + ('2076048790', 6564), + ('7833528552', 8), + ('5858179630', 4), + ('7807240504', 23), + ('7589780480', 1); + +DROP TABLE IF EXISTS `creatorlevels`; +CREATE TABLE `creatorlevels` ( + `id` varchar(255) NOT NULL, + `exp` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci; + +INSERT INTO `creatorlevels`(`id`, `exp`) VALUES + ('4169868951', 103), + ('6621876564', 3459), + ('0068131062', 325), + ('2534892940', 645), + ('2542003092', 745), + ('2076048790', 8567), + ('7833528552', 7456), + ('5858179630', 25456), + ('7807240504', 6734), + ('7589780480', 1); + + + +DROP TABLE IF EXISTS `subscribers`; +CREATE TABLE `subscribers` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `id_user` int(11) NOT NULL, + `id_creator` varchar(255) NOT NULL, + PRIMARY KEY (`id`,`id_user`,`id_creator`) +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci; + +INSERT INTO `subscribers` VALUES + (1,3,'4169868951'), + (2,1,'6621876564'), + (3,3,'0068131062'), + (4,3,'2534892940'), + (5,4,'2542003092'), + (6,2,'2076048790'), + (7,4,'7833528552'), + (8,2,'5858179630'), + (9,2,'7807240504'), + (10,2,'7589780480'); + + +DROP TABLE IF EXISTS `userlevels`; +CREATE TABLE `userlevels` ( + `id` int(11) NOT NULL, + `exp` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci; + +INSERT INTO `userlevels` (`id`, `exp`) VALUES + (2,100), + (3,7594), + (4,32894), + (1,72); + + + + +DROP TABLE IF EXISTS `logging`; +CREATE TABLE `logging` +( + id INT NOT NULL AUTO_INCREMENT, + description VARCHAR(255) NOT NULL, + IP VARCHAR(16) NOT NULL, + endpoint VARCHAR(255) NOT NULL, + requested_at TIMESTAMP NOT NULL, + PRIMARY KEY (id) +); + +INSERT INTO `logging` (`id`, `description`, `ip`, `endpoint`, `requested_at`) VALUES + (1, 'coba log', '127.0.0.1', 'localhost.com', '2008-01-01 00:00:01'); diff --git a/pom.xml b/pom.xml index e5fdad6161e1cbcddb5884fd5223b532ce81aac1..f90055480d06c524a8de5d345bfb2fc0281f5a42 100644 --- a/pom.xml +++ b/pom.xml @@ -1,138 +1,114 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>org.example</groupId> - <artifactId>nutricraft-soap</artifactId> - <version>1.0-SNAPSHOT</version> - <name>nutricraft-soap Maven Webapp</name> - <url>http://maven.apache.org</url> - <properties> - <maven.compiler.source>19</maven.compiler.source> - <maven.compiler.target>19</maven.compiler.target> - </properties> - <dependencies> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.13.2</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>jakarta.xml.ws</groupId> - <artifactId>jakarta.xml.ws-api</artifactId> - <version>4.0.0</version> - </dependency> - <!-- https://mvnrepository.com/artifact/com.sun.xml.ws/jaxws-rt --> - <dependency> - <groupId>com.sun.xml.ws</groupId> - <artifactId>jaxws-rt</artifactId> - <version>4.0.1</version> - </dependency> - <!-- https://mvnrepository.com/artifact/com.sun.xml.ws/jaxws-ri --> - <dependency> - <groupId>com.sun.xml.ws</groupId> - <artifactId>jaxws-ri</artifactId> - <version>4.0.1</version> - <type>pom</type> - </dependency> - <!-- https://mvnrepository.com/artifact/jakarta.annotation/jakarta.annotation-api --> - <dependency> - <groupId>jakarta.annotation</groupId> - <artifactId>jakarta.annotation-api</artifactId> - <version>2.1.1</version> - </dependency> - <!-- https://mvnrepository.com/artifact/javax.xml.ws/jaxws-api --> - <dependency> - <groupId>javax.xml.ws</groupId> - <artifactId>jaxws-api</artifactId> - <version>2.3.1</version> - </dependency> - <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> - <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> - <version>8.0.33</version> - </dependency> - <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-shade-plugin --> - <dependency> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <version>3.3.0</version> - </dependency> - <dependency> - <groupId>io.github.cdimascio</groupId> - <artifactId>dotenv-java</artifactId> - <version>2.3.1</version> - </dependency> - <!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api --> - <dependency> - <groupId>jakarta.servlet</groupId> - <artifactId>jakarta.servlet-api</artifactId> - <version>6.0.0</version> - </dependency> - </dependencies> - <build> - <plugins> - <plugin> - <artifactId>maven-clean-plugin</artifactId> - <version>3.1.0</version> - </plugin> - <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> - <plugin> - <artifactId>maven-resources-plugin</artifactId> - <version>3.0.2</version> - </plugin> - <plugin> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.8.0</version> - </plugin> - <plugin> - <artifactId>maven-surefire-plugin</artifactId> - <version>2.22.1</version> - </plugin> - <plugin> - <artifactId>maven-jar-plugin</artifactId> - <version>3.0.2</version> - <configuration> - <archive> - <manifest> - <addClasspath>true</addClasspath> - <mainClass>com.nutricraft.App</mainClass> - </manifest> - </archive> - </configuration> - </plugin> - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <configuration> - <archive> - <manifest> - <mainClass>com.nutricraft.App</mainClass> - </manifest> - </archive> - <descriptorRefs> - <descriptorRef>jar-with-dependencies</descriptorRef> - </descriptorRefs> - </configuration> - </plugin> - <plugin> - <artifactId>maven-install-plugin</artifactId> - <version>2.5.2</version> - </plugin> - <plugin> - <artifactId>maven-deploy-plugin</artifactId> - <version>2.8.2</version> - </plugin> - <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --> - <plugin> - <artifactId>maven-site-plugin</artifactId> - <version>3.7.1</version> - </plugin> - <plugin> - <artifactId>maven-project-info-reports-plugin</artifactId> - <version>3.0.0</version> - </plugin> - </plugins> - <finalName>nutricraft-soap</finalName> - </build> +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.nutricraft</groupId> + <artifactId>nutricraft-soap</artifactId> + <version>1.0-SNAPSHOT</version> + + <properties> + <maven.compiler.source>8</maven.compiler.source> + <maven.compiler.target>8</maven.compiler.target> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + <dependencies> + <dependency> + <groupId>mysql</groupId> + <artifactId>mysql-connector-java</artifactId> + <version>8.0.33</version> + </dependency> + <dependency> + <groupId>com.sun.xml.ws</groupId> + <artifactId>jaxws-rt</artifactId> + <version>2.3.2</version> + </dependency> + <dependency> + <groupId>com.sun.xml.messaging.saaj</groupId> + <artifactId>saaj-impl</artifactId> + <version>1.5.1</version> + </dependency> + + <dependency> + <groupId>javax.xml.soap</groupId> + <artifactId>javax.xml.soap-api</artifactId> + <version>1.4.0</version> + </dependency> + <dependency> + <groupId>com.sun.xml.ws</groupId> + <artifactId>jaxws-ri</artifactId> + <version>2.3.3</version> + <type>pom</type> + </dependency> + <dependency> + <groupId>javax.xml.ws</groupId> + <artifactId>jaxws-api</artifactId> + <version>2.3.1</version> + </dependency> + + + </dependencies> + + <build> + + <plugins> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <configuration> + <transformers> + <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> + <mainClass>org.nutricraft.Main</mainClass> + </transformer> + </transformers> + </configuration> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>shade</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <artifactId>maven-clean-plugin</artifactId> + <version>3.1.0</version> + </plugin> + <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> + <plugin> + <artifactId>maven-resources-plugin</artifactId> + <version>3.0.2</version> + </plugin> + <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.8.0</version> + </plugin> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.22.1</version> + </plugin> + <plugin> + <artifactId>maven-install-plugin</artifactId> + <version>2.5.2</version> + </plugin> + <plugin> + <artifactId>maven-deploy-plugin</artifactId> + <version>2.8.2</version> + </plugin> + <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --> + <plugin> + <artifactId>maven-site-plugin</artifactId> + <version>3.7.1</version> + </plugin> + <plugin> + <artifactId>maven-project-info-reports-plugin</artifactId> + <version>3.0.0</version> + </plugin> + </plugins> + <finalName>nutricraft-soap</finalName> + </build> + </project> \ No newline at end of file diff --git a/src/main/java/com/nutricraft/App.java b/src/main/java/com/nutricraft/App.java deleted file mode 100644 index 55da91b582315742f0c079d2094558cf488bddfd..0000000000000000000000000000000000000000 --- a/src/main/java/com/nutricraft/App.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.nutricraft; - -public class App { - public static void main( String[] args ) - { - System.out.println(" tesssssss sddgjmbsg"); - } -} diff --git a/src/main/java/org/nutricraft/Database/Database.java b/src/main/java/org/nutricraft/Database/Database.java new file mode 100644 index 0000000000000000000000000000000000000000..30ba5825d2ab385d34653cf83e1757773589a79d --- /dev/null +++ b/src/main/java/org/nutricraft/Database/Database.java @@ -0,0 +1,42 @@ +package org.nutricraft.Database; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.Statement; + +public class Database { + + protected Connection connection; + + public Database(){ + try{ + String url = System.getenv("DATABASE_URL"); + String username = System.getenv("DB_USER"); + String password = System.getenv("DB_PASSWORD"); + System.out.println("url: " + url); + this.connection = DriverManager.getConnection(url, username, password); + + System.out.println("Connected to database"); + }catch (Exception e){ + e.printStackTrace(); + System.out.println("Something went wrong when connecting to database"); + } + } + + public Connection getConn(){ + return connection; + } + + public void InsertLog(String desc, String endpoint, String ip, String requested_at) { + try { + Statement statement = this.connection.createStatement(); + String query = "INSERT INTO logging (description, endpoint, IP, requested_at) VALUES ('" + desc + "', '" + endpoint + "', '" + ip + "','" + requested_at +"')"; + statement.executeUpdate(query); + } catch (Exception e) { + e.printStackTrace(); + System.out.println("Failed to insert log"); + } + System.out.println("Successfully inserted log"); + } + +} diff --git a/src/main/java/org/nutricraft/Main.java b/src/main/java/org/nutricraft/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..7cc1116d7ff9e586e261a1acb5c21bffb015932c --- /dev/null +++ b/src/main/java/org/nutricraft/Main.java @@ -0,0 +1,24 @@ +package org.nutricraft; + + +import org.nutricraft.Services.CoinServicesImpl; +import org.nutricraft.Services.LevelCreatorServicesImpl; +import org.nutricraft.Services.LevelUserServicesImpl; +import org.nutricraft.Services.SubscriptionServicesImpl; +import javax.xml.ws.Endpoint; + + +public class Main { + public static void main(String[] args) { + try { + + Endpoint.publish("http://nutricraft-soap:8081/ws/subscription", new SubscriptionServicesImpl()); + Endpoint.publish("http://nutricraft-soap:8081/ws/userLevels", new LevelUserServicesImpl()); + Endpoint.publish("http://nutricraft-soap:8081/ws/creatorLevels", new LevelCreatorServicesImpl()); + Endpoint.publish("http://nutricraft-soap:8081/ws/coins", new CoinServicesImpl()); + } catch (Exception e) { + e.printStackTrace(); + System.out.println("Something went wrong...."); + } + } +} diff --git a/src/main/java/org/nutricraft/Model/Coins.java b/src/main/java/org/nutricraft/Model/Coins.java new file mode 100644 index 0000000000000000000000000000000000000000..e85621634a456862888be8062818bd92419390c7 --- /dev/null +++ b/src/main/java/org/nutricraft/Model/Coins.java @@ -0,0 +1,29 @@ +package org.nutricraft.Model; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class Coins { + private String id; + private int coins; + + public Coins() { + this.id = ""; + this.coins = 0; + } + + public Coins(String id, int coins) { + this.id = id; + this.coins = coins; + } + + @XmlElement + public String getId() { + return this.id; + } + @XmlElement + public int getCoins() { + return this.coins; + } +} diff --git a/src/main/java/org/nutricraft/Model/CreatorLevels.java b/src/main/java/org/nutricraft/Model/CreatorLevels.java new file mode 100644 index 0000000000000000000000000000000000000000..8d79cb3ac51524683f98ae53b67d1925f4b927a2 --- /dev/null +++ b/src/main/java/org/nutricraft/Model/CreatorLevels.java @@ -0,0 +1,28 @@ +package org.nutricraft.Model; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class CreatorLevels { + + private String id_creator; + private int exp; + + public CreatorLevels(){ + this.id_creator=""; + this.exp=0; + } + public CreatorLevels(String id_creator, int exp){ + this.id_creator = id_creator; + this.exp = exp; + } + @XmlElement + public int getExp(){ + return this.exp; + } + @XmlElement + public String getId(){ + return this.id_creator; + } +} diff --git a/src/main/java/org/nutricraft/Model/Subscibers.java b/src/main/java/org/nutricraft/Model/Subscibers.java new file mode 100644 index 0000000000000000000000000000000000000000..2ca08ffec58022b769ccd5e74cea861cc74904fd --- /dev/null +++ b/src/main/java/org/nutricraft/Model/Subscibers.java @@ -0,0 +1,37 @@ +package org.nutricraft.Model; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class Subscibers { + private int id; + private String id_creator; + private int id_user; + + public Subscibers() { + this.id = 0; + this.id_creator = ""; + this.id_user = 0; + } + public Subscibers(int id, String id_creator, int id_user){ + this.id = id; + this.id_creator = id_creator; + this.id_user = id_user; + } + + @XmlElement + public int getId(){ + return this.id; + } + @XmlElement + public String getId_creator(){ + return this.id_creator; + } + @XmlElement + public int getId_user(){ + return this.id_user; + } + + +} diff --git a/src/main/java/org/nutricraft/Model/UserLevels.java b/src/main/java/org/nutricraft/Model/UserLevels.java new file mode 100644 index 0000000000000000000000000000000000000000..9a3b118832141610f79420ce9d9458452a895802 --- /dev/null +++ b/src/main/java/org/nutricraft/Model/UserLevels.java @@ -0,0 +1,27 @@ +package org.nutricraft.Model; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class UserLevels { + private int exp; + private int id_user; + + public UserLevels(){ + this.exp=0; + this.id_user=0; + } + public UserLevels(int id_user, int exp){ + this.id_user = id_user; + this.exp = exp; + } + @XmlElement + public int getExp(){ + return this.exp; + } + @XmlElement + public int getId(){ + return this.id_user; + } +} diff --git a/src/main/java/org/nutricraft/Services/CoinServices.java b/src/main/java/org/nutricraft/Services/CoinServices.java new file mode 100644 index 0000000000000000000000000000000000000000..923bdd80ca39d5b25411dc12a463b749b27dc7df --- /dev/null +++ b/src/main/java/org/nutricraft/Services/CoinServices.java @@ -0,0 +1,32 @@ +package org.nutricraft.Services; + + +import org.nutricraft.Model.Coins; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import java.util.List; + +@WebService +public interface CoinServices { + + @WebMethod + public String newCoins(String id); + + @WebMethod + public List<Coins> getAllCoins(); + + @WebMethod + public Integer getCoins(String id); + + @WebMethod + public String addCoins(String id, int coins); + + @WebMethod + public String substractCoins(String id, int coins); + + @WebMethod + public String deleteCoins(String id); + + +} diff --git a/src/main/java/org/nutricraft/Services/CoinServicesImpl.java b/src/main/java/org/nutricraft/Services/CoinServicesImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..dab2df5415a23683b51693a1e66d0ddbfac2abf6 --- /dev/null +++ b/src/main/java/org/nutricraft/Services/CoinServicesImpl.java @@ -0,0 +1,148 @@ +package org.nutricraft.Services; + +import org.nutricraft.Database.Database; +import org.nutricraft.Model.Coins; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +@WebService(endpointInterface = "org.nutricraft.Services.CoinServices") +public class CoinServicesImpl extends Services implements CoinServices{ + + @WebMethod + public String newCoins(String id){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "INSERT INTO coins (id, coin) VALUES ('" + id + "', 0)"; + statement.executeUpdate(query); + log("New Coins"); + return "Successfully created new coins"; + }catch (Exception e){ + e.printStackTrace(); + } + return "Failed to create new coins"; + } + + @WebMethod + public List<Coins> getAllCoins() { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + List<Coins> coins = new ArrayList<Coins>(); + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "SELECT * FROM coins"; + ResultSet result = statement.executeQuery(query); + while (result.next()) { + coins.add(new Coins(result.getString("id"), result.getInt("coin"))); + } + log("Get All Coins"); + }catch (Exception e){ + e.printStackTrace(); + } + for (Coins coin : coins) { + System.out.print(coin.getId()+" "); + System.out.println(coin.getCoins()); + } + + return coins; + } + + @WebMethod + public Integer getCoins(String id) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + int coin=0; + try { + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "SELECT coin FROM coins JOIN subscribers ON coins.id = subscribers.id_creator WHERE coins.id = '" + id + "'"; + ResultSet result = statement.executeQuery(query); + if(result.next()){ + coin = result.getInt("coin"); + } + log("Get Coins"); + }catch (Exception e){ + e.printStackTrace(); + } + return coin; + } + + @WebMethod + public String addCoins(String id, int coins) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "UPDATE coins SET coin = coin + " + coins + " WHERE id = '" + id + "'"; + statement.executeUpdate(query); + log("Add Coins"); + return "Successfully added coins"; + }catch (Exception e){ + e.printStackTrace(); + } + return "Failed to add coins"; + } + + @WebMethod + public String substractCoins(String id, int coins) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "UPDATE coins SET coin = coin - " + coins + " WHERE id = '" + id + "'"; + statement.executeUpdate(query); + log("Substract Coins"); + return "Successfully removed coins"; + }catch (Exception e){ + e.printStackTrace(); + } + return "Failed to remove coins"; + } + + @WebMethod + public String deleteCoins(String id) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "DELETE FROM coins WHERE id = '" + id + "'"; + statement.executeUpdate(query); + log("Delete Coins"); + return "Successfully deleted coins"; + }catch (Exception e){ + e.printStackTrace(); + } + return "Failed to delete coins"; + } + +} diff --git a/src/main/java/org/nutricraft/Services/LevelCreatorServices.java b/src/main/java/org/nutricraft/Services/LevelCreatorServices.java new file mode 100644 index 0000000000000000000000000000000000000000..c5c87c88a1d7c3532fa8da01b1e49415589000e7 --- /dev/null +++ b/src/main/java/org/nutricraft/Services/LevelCreatorServices.java @@ -0,0 +1,29 @@ +package org.nutricraft.Services; + + +import org.nutricraft.Model.CreatorLevels; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import java.util.List; +@WebService +public interface LevelCreatorServices { + + @WebMethod + public String newCreator(String id); + + @WebMethod + public List<CreatorLevels> getAllLevelCreator(); + + @WebMethod + public Integer getExpCreator(String id); + + @WebMethod + public String addExpCreator(String id, int exp); + + @WebMethod + public String substractExpCreator(String id, int exp); + + @WebMethod + public String deleteExpCreator(String id); +} diff --git a/src/main/java/org/nutricraft/Services/LevelCreatorServicesImpl.java b/src/main/java/org/nutricraft/Services/LevelCreatorServicesImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..9944d3a5b713a9270ea4ce0b8a889b308fd744e2 --- /dev/null +++ b/src/main/java/org/nutricraft/Services/LevelCreatorServicesImpl.java @@ -0,0 +1,144 @@ +package org.nutricraft.Services; + + +import org.nutricraft.Database.Database; +import org.nutricraft.Model.CreatorLevels; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +@WebService(endpointInterface = "org.nutricraft.Services.LevelCreatorServices") +public class LevelCreatorServicesImpl extends Services implements LevelCreatorServices{ + + @WebMethod + public String newCreator(String id){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "INSERT INTO creatorlevels (id, exp) VALUES ('" + id + "', 0)"; + statement.executeUpdate(query); + log("New Creator"); + return "Successfully created new creator"; + }catch (Exception e){ + e.printStackTrace(); + } + return "Failed to create new creator"; + } + + @WebMethod + public List<CreatorLevels> getAllLevelCreator(){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + List<CreatorLevels> creator = new ArrayList<CreatorLevels>(); + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "SELECT * FROM creatorlevels"; + ResultSet result = statement.executeQuery(query); + while (result.next()){ + creator.add(new CreatorLevels(result.getString("id"),result.getInt("exp"))); + } + log("Get All Levels Creators"); + }catch (Exception e){ + e.printStackTrace(); + } + return creator; + } + + @WebMethod + public Integer getExpCreator(String id){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + int exp=0; + try { + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "SELECT exp FROM creatorlevels WHERE id = '" + id + "'"; + ResultSet result = statement.executeQuery(query); + if(result.next()){ + exp = result.getInt("exp"); + } + log("Get Exp"); + }catch (Exception e){ + e.printStackTrace(); + } + return exp; + } + + @WebMethod + public String addExpCreator(String id, int exp){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "UPDATE creatorlevels SET exp = exp + " + exp + " WHERE id = '" + id + "'"; + statement.executeUpdate(query); + log("Add Exp"); + return "Successfully add exp creator"; + }catch (Exception e){ + e.printStackTrace(); + } + return "Failed to add exp creator"; + } + + @WebMethod + public String substractExpCreator(String id, int exp){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "UPDATE creatorlevels SET exp = exp - " + exp + " WHERE id = '" + id + "'"; + statement.executeUpdate(query); + log("Substract Exp"); + return "Successfully substract exp creator"; + }catch (Exception e){ + e.printStackTrace(); + } + return "Failed to substract exp creator"; + } + + @WebMethod + public String deleteExpCreator(String id){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "DELETE FROM creatorlevels WHERE id = '" + id + "'"; + statement.executeUpdate(query); + log("Delete Exp"); + return "Successfully delete exp creator"; + }catch (Exception e){ + e.printStackTrace(); + } + return "Failed to delete exp creator"; + } + +} diff --git a/src/main/java/org/nutricraft/Services/LevelUserServices.java b/src/main/java/org/nutricraft/Services/LevelUserServices.java new file mode 100644 index 0000000000000000000000000000000000000000..6c7c2af62a69e6b4d53abdffed52d8881fb941fa --- /dev/null +++ b/src/main/java/org/nutricraft/Services/LevelUserServices.java @@ -0,0 +1,30 @@ +package org.nutricraft.Services; + + +import org.nutricraft.Model.UserLevels; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import java.util.List; + +@WebService +public interface LevelUserServices { + + @WebMethod + public String newUser(int id); + + @WebMethod + public List<UserLevels> getAllLevelUser(); + + @WebMethod + public Integer getExpUser(int id); + + @WebMethod + public String addExpUser(int id, int exp); + + @WebMethod + public String substractExpUser(int id, int exp); + + @WebMethod + public String deleteExpUser(int id); +} diff --git a/src/main/java/org/nutricraft/Services/LevelUserServicesImpl.java b/src/main/java/org/nutricraft/Services/LevelUserServicesImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..243538063a52628a296a9834a0227036464b1be7 --- /dev/null +++ b/src/main/java/org/nutricraft/Services/LevelUserServicesImpl.java @@ -0,0 +1,146 @@ +package org.nutricraft.Services; + +import org.nutricraft.Database.Database; +import org.nutricraft.Model.UserLevels; + + +import javax.jws.WebMethod; +import javax.jws.WebService; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + + +@WebService(endpointInterface = "org.nutricraft.Services.LevelUserServices") +public class LevelUserServicesImpl extends Services implements LevelUserServices { + + @WebMethod + public String newUser(int id){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "INSERT INTO userlevels (id, exp) VALUES ('" + id + "', 0)"; + statement.executeUpdate(query); + log("New User"); + return "Successfully created new user"; + }catch (Exception e){ + e.printStackTrace(); + } + return "Failed to create new user"; + } + + @WebMethod + public List<UserLevels> getAllLevelUser() { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + List<UserLevels> user = new ArrayList<UserLevels>(); + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "SELECT * FROM userlevels"; + ResultSet result = statement.executeQuery(query); + while (result.next()){ + user.add(new UserLevels(result.getInt("id"),result.getInt("exp"))); + } + log("Get All Levels User"); + }catch (Exception e){ + e.printStackTrace(); + } + return user; + } + + @WebMethod + public Integer getExpUser(int id) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + int exp=0; + try { + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "SELECT exp FROM userlevels WHERE id = '" + id + "'"; + ResultSet result = statement.executeQuery(query); + if(result.next()){ + exp = result.getInt("exp"); + } + log("Get Exp User"); + }catch (Exception e){ + e.printStackTrace(); + } + return exp; + } + + @WebMethod + public String addExpUser(int id, int exp) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "UPDATE userlevels SET exp = exp + " + exp + " WHERE id = '" + id + "'"; + statement.executeUpdate(query); + log("Add Exp User"); + return "Successfully added exp"; + }catch (Exception e){ + e.printStackTrace(); + } + return "Failed to add exp"; + } + + @WebMethod + public String substractExpUser(int id, int exp) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "UPDATE userlevels SET exp = exp - " + exp + " WHERE id = '" + id + "'"; + statement.executeUpdate(query); + log("Substract Exp User"); + return "Successfully substract exo"; + }catch (Exception e){ + e.printStackTrace(); + } + return "Failed to subsctract exp"; + } + + @WebMethod + public String deleteExpUser(int id) { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + try{ + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "DELETE FROM userlevels WHERE id = '" + id + "'"; + statement.executeUpdate(query); + log("Delete Exp User"); + return "Successfully deleted userlevels"; + }catch (Exception e){ + e.printStackTrace(); + } + return "Failed to delete userlevels"; + } + + +} diff --git a/src/main/java/org/nutricraft/Services/Services.java b/src/main/java/org/nutricraft/Services/Services.java new file mode 100644 index 0000000000000000000000000000000000000000..22dfbe0e24028055a5a1bdb12dcb7b7e23531d0a --- /dev/null +++ b/src/main/java/org/nutricraft/Services/Services.java @@ -0,0 +1,44 @@ +package org.nutricraft.Services; + +import org.nutricraft.Database.Database; + +import javax.annotation.Resource; +import javax.xml.ws.WebServiceContext; +import javax.xml.ws.handler.MessageContext; +import java.sql.Timestamp; +import java.util.Date; + +public class Services { + @Resource + private WebServiceContext wsContext; + protected Boolean validateApiKey() { + MessageContext messageContext = wsContext.getMessageContext(); + String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring"); + System.out.println("messageContext: " + queryString); + String[] keyValue = queryString.split("="); + if(keyValue.length==0 || !keyValue[0].equals("APIkey")){ + return false; + } + String apiKey = keyValue[1]; + System.out.println("API KEY: " + apiKey); + if(apiKey.equals("lalala")||apiKey.equals("hahaha")){ + return true; + }else{ + return false; + } + } + // + protected void log(String description) { + MessageContext messageContext = wsContext.getMessageContext(); + String queryString = (String) messageContext.get("javax.xml.ws.http.request.querystring"); + System.out.println("messageContext: " + queryString); + String[] keyValue = queryString.split("="); + String apiKey = keyValue[1]; + System.out.println("API KEY: " + apiKey); + String ip = "123"; + String endpoint = (String) messageContext.get("javax.xml.ws.service.endpoint.address"); + Timestamp timestamp = new Timestamp(new Date().getTime()); + Database db = new Database(); + db.InsertLog(description, endpoint, ip, timestamp.toString()); + } +} diff --git a/src/main/java/org/nutricraft/Services/SubscriptionServices.java b/src/main/java/org/nutricraft/Services/SubscriptionServices.java new file mode 100644 index 0000000000000000000000000000000000000000..9260763dfffe13483d1f5781e3b5a501a7b3fc2f --- /dev/null +++ b/src/main/java/org/nutricraft/Services/SubscriptionServices.java @@ -0,0 +1,26 @@ +package org.nutricraft.Services; + + +import org.nutricraft.Model.Subscibers; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import java.util.List; + +@WebService +public interface SubscriptionServices { + @WebMethod + public String newSubscription(String idCreator, int idSubscriber); + + @WebMethod + public Boolean checkSubscription(String idCreator, int idSubscriber); + + @WebMethod + public List<Integer> getSubscribers(String idCreator); + + @WebMethod + public List<String> getCreators (int idSubscriber); + + @WebMethod + public List<Subscibers> getAllSubscription(); +} diff --git a/src/main/java/org/nutricraft/Services/SubscriptionServicesImpl.java b/src/main/java/org/nutricraft/Services/SubscriptionServicesImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..f058e7c4258736ee6ee86ef135e3924539996ecb --- /dev/null +++ b/src/main/java/org/nutricraft/Services/SubscriptionServicesImpl.java @@ -0,0 +1,141 @@ +package org.nutricraft.Services; + +import org.nutricraft.Database.Database; +import org.nutricraft.Model.Subscibers; + + +import javax.jws.WebMethod; +import javax.jws.WebService; +import java.sql.*; +import java.util.ArrayList; +import java.util.List; + +@WebService (endpointInterface = "org.nutricraft.Services.SubscriptionServices") +public class SubscriptionServicesImpl extends Services implements SubscriptionServices{ + + @WebMethod + public String newSubscription(String idCreator, int idSubscriber){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return "API KEY INVALID"; + } + try { + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "INSERT INTO subscribers (id_creator, id_user) VALUES ('" + idCreator + "', '" + idSubscriber + "')"; + statement.executeUpdate(query); + log("New Subscription"); + return "Successfully inserted new subscription"; + } catch (Exception e) { + e.printStackTrace(); + } + return "Failed to insert new subscription"; + } + @WebMethod + public Boolean checkSubscription(String idCreator, int idSubscriber){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + try { + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "SELECT * FROM subscribers WHERE id_creator = '" + idCreator + "' AND id_user = '" + idSubscriber + "'"; + ResultSet result = statement.executeQuery(query); + if (result.next()) { + log("Check Subscription"); + return true; + } + }catch (Exception e){ + e.printStackTrace(); + } + return false; + } + + @WebMethod + public List<Integer> getSubscribers(String idCreator){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + List<Integer> listSubscribers = new ArrayList<Integer>(); + try { + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "SELECT id_user FROM subscribers WHERE id_creator = '" + idCreator + "'"; + ResultSet result = statement.executeQuery(query); + while (result.next()) { + int id = result.getInt("id_user"); + System.out.println("id: " + id); + listSubscribers.add(id); + } + log("Get Subscribers"); + }catch (Exception e){ + e.printStackTrace(); + } + return listSubscribers; + } + + @WebMethod + public List<String> getCreators(int idSubscriber){ + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + List<String> listCreators = new ArrayList<String>(); + try { + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "SELECT id_creator FROM subscribers WHERE id_user = '" + idSubscriber + "'"; + ResultSet result = statement.executeQuery(query); + while (result.next()) { + String id = result.getString("id_creator"); + System.out.println("id: " + id); + listCreators.add(id); + } + log("Get Creators"); + }catch (Exception e){ + e.printStackTrace(); + } + return listCreators; + } + + @WebMethod + public List<Subscibers> getAllSubscription() { + if(!validateApiKey()){ + System.out.println("API KEY INVALID"); + return null; + } + List<Subscibers> listSubscribers = new ArrayList<Subscibers>(); + + try { + Database db = new Database(); + Connection connection = db.getConn(); + Statement statement = connection.createStatement(); + String query = "SELECT * FROM subscribers"; + ResultSet result = statement.executeQuery(query); + + while (result.next()) { + int id = result.getInt("id"); + String idCreator = result.getString("id_creator"); + int idSubscriber = result.getInt("id_user"); + listSubscribers.add(new Subscibers(id,idCreator,idSubscriber)); + } + log("Get All Subscription"); + + } catch (Exception e) { + e.printStackTrace(); + } + System.out.println("=================="); + for(Subscibers sub : listSubscribers){ + System.out.println("id: " + sub.getId() + " id_creator: " + sub.getId_creator() + " id_user: " + sub.getId_user()); + } + return listSubscribers; + } + +} +