From 944e5f6b98cc741295ca796a9381157a0961a01e Mon Sep 17 00:00:00 2001
From: Lathifah Nurrahmah <13515046@std.stei.itb.ac.id>
Date: Sat, 18 Nov 2017 10:38:12 +0700
Subject: [PATCH] added soap etc

---
 .gitignore                                    |   3 +-
 .../src/java/validate/Register.java           |  26 +--
 IdentityService/src/java/validate/SignIn.java |   6 +-
 .../src/java/validate/ValidateToken.java      | 147 +++++++++++++--
 .../nbproject/genfiles.properties             |   4 +-
 OjekOnlineWebservice/nbproject/jax-ws.xml     |   6 +
 .../nbproject/jaxws-build.xml                 |  16 ++
 .../nbproject/project.properties              |   1 -
 OjekOnlineWebservice/nbproject/project.xml    |   4 +-
 .../src/java/Location/Location.java           | 141 ++++++++++++++
 .../src/java/Location/LocationObj.java        |  37 ++++
 .../src/java/account/Account.java             | 174 ++++++++++++++++++
 .../src/java/account/AccountObj.java          |  79 ++++++++
 .../src/java/history/History.java             |  88 ++++++++-
 WebApp/catalog.xml                            |   9 +
 WebApp/nbproject/build-impl.xml               |   3 +-
 WebApp/nbproject/genfiles.properties          |   7 +-
 WebApp/nbproject/jax-ws.xml                   |  38 ++++
 WebApp/nbproject/jaxws-build.xml              |  46 +++++
 WebApp/nbproject/project.properties           |   1 -
 WebApp/nbproject/project.xml                  |   9 +-
 .../OjekOnlineWebservice/Account.wsdl         |  55 ++++++
 .../OjekOnlineWebservice/Account.xsd_1.xsd    |  47 +++++
 WebApp/web/WEB-INF/jax-ws-catalog.xml         |   9 +
 .../OjekOnlineWebservice/Account.wsdl         |  55 ++++++
 .../OjekOnlineWebservice/Account.xsd_1.xsd    |  47 +++++
 WebApp/web/index.jsp                          |  11 +-
 WebApp/web/profile.jsp                        |  46 ++++-
 WebApp/web/register.jsp                       |   6 +-
 data/derby.log                                |   1 -
 30 files changed, 1064 insertions(+), 58 deletions(-)
 create mode 100644 OjekOnlineWebservice/src/java/Location/Location.java
 create mode 100644 OjekOnlineWebservice/src/java/Location/LocationObj.java
 create mode 100644 OjekOnlineWebservice/src/java/account/Account.java
 create mode 100644 OjekOnlineWebservice/src/java/account/AccountObj.java
 create mode 100644 WebApp/catalog.xml
 create mode 100644 WebApp/nbproject/jax-ws.xml
 create mode 100644 WebApp/nbproject/jaxws-build.xml
 create mode 100644 WebApp/src/conf/xml-resources/web-service-references/Account/wsdl/localhost_8002/OjekOnlineWebservice/Account.wsdl
 create mode 100644 WebApp/src/conf/xml-resources/web-service-references/Account/wsdl/localhost_8002/OjekOnlineWebservice/Account.xsd_1.xsd
 create mode 100644 WebApp/web/WEB-INF/jax-ws-catalog.xml
 create mode 100644 WebApp/web/WEB-INF/wsdl/localhost_8002/OjekOnlineWebservice/Account.wsdl
 create mode 100644 WebApp/web/WEB-INF/wsdl/localhost_8002/OjekOnlineWebservice/Account.xsd_1.xsd

diff --git a/.gitignore b/.gitignore
index c9b0373..0fe93cc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,4 +5,5 @@
 /WebApp/build/
 /IdentityService/build/
 /OjekOnlineWebservice/build/
-/IdentityService/dist/
\ No newline at end of file
+/IdentityService/dist/
+/OjekOnlineWebservice/dist/
\ No newline at end of file
diff --git a/IdentityService/src/java/validate/Register.java b/IdentityService/src/java/validate/Register.java
index 638cc8c..ab1a29e 100644
--- a/IdentityService/src/java/validate/Register.java
+++ b/IdentityService/src/java/validate/Register.java
@@ -52,7 +52,7 @@ public class Register extends HttpServlet {
             String email    = request.getParameter("email");
             String password = request.getParameter("password");
             String phone    = request.getParameter("phone");
-            response.getWriter().write(request.getParameter("name"));
+            //response.getWriter().write(request.getParameter("name"));
            
             try {
                 Class.forName("com.mysql.jdbc.Driver");
@@ -71,11 +71,17 @@ public class Register extends HttpServlet {
                 dbStatement.setString(1, username);
                 dbStatement.setString(2, email);
                 JSONObject json = new JSONObject();
-                try ( /* Get every data returned by SQL query */ ResultSet rs = dbStatement.executeQuery()) {
-                    if (rs.next()) {
+                /* Get every data returned by SQL query */ 
+                ResultSet rs = dbStatement.executeQuery();
+                    if (rs.next() || username == null || username.isEmpty()) {
                         json.put("res_code", -1);
+                        json.put("id",0);
+                        json.put("fullname", "");
+                        json.put("username", "");
+                        json.put("email", "");
+                        json.put("phone_no", "");
+                        json.put("token", "");
                     } else {
-                        
                         String sqlInsert = "INSERT INTO account(username,email,fullname,password,phone_no,profile_pict) VALUES(?,?,?,?,?,NULL)";
                         PreparedStatement dbStatementInputToken = conn.prepareStatement(sqlInsert);
                         dbStatementInputToken.setString(1, username);
@@ -120,7 +126,7 @@ public class Register extends HttpServlet {
                         String time_expired = timeFormat.format(dNow);
                         String date_expired = dateFormat.format(dNow);
                         String sqlInputToken;
-                        sqlInputToken = "INSERT INTO token(id_account,token,date_expired,time_expired) VALUES(?,?,?,?)";
+                        sqlInputToken = "INSERT INTO token(id_account,token,date_expire,time_expire) VALUES(?,?,?,?)";
                         PreparedStatement dbStatementInputToken1 = conn.prepareStatement(sqlInputToken);
                         dbStatementInputToken1.setInt(1, rs2.getInt("id"));
                         dbStatementInputToken1.setString(2, token);
@@ -136,14 +142,12 @@ public class Register extends HttpServlet {
                         json.put("phone_no", phone);
                         json.put("token", token);
                         
-                    }
-                    
-                    response.setContentType("application/json");
-                    response.getWriter().write(json.toString());
-                }
+                    } 
+                response.setContentType("application/json");
+                response.getWriter().write(json.toString());
                 stmt.close();
                 conn.close();
-            }
+                }
         } catch (SQLException | IOException ex) {
             
         }   
diff --git a/IdentityService/src/java/validate/SignIn.java b/IdentityService/src/java/validate/SignIn.java
index 6336708..c66378e 100644
--- a/IdentityService/src/java/validate/SignIn.java
+++ b/IdentityService/src/java/validate/SignIn.java
@@ -102,6 +102,7 @@ public class SignIn extends HttpServlet {
                     json.put("email",rs.getString("email"));
                     json.put("phone_no",rs.getString("phone_no"));
                     json.put("token",token);
+                    //out.println(json.toString());
                     String sqlInputToken;
                     sqlInputToken = "INSERT INTO token(token,id,date_expire,time_expire) VALUES(?,?,?,?)";
                     PreparedStatement dbStatementInputToken = conn.prepareStatement(sqlInputToken);                    
@@ -110,8 +111,6 @@ public class SignIn extends HttpServlet {
                     dbStatementInputToken.setString(3, date_expired);
                     dbStatementInputToken.setString(4, time_expired);
                     dbStatementInputToken.executeUpdate();
-                    
-
                 } else {
                     boolean h = true;
                     if (!h) {
@@ -129,7 +128,6 @@ public class SignIn extends HttpServlet {
                     }
                 }
                 /* Get every data returned by SQL query */
-                
                 response.setContentType("application/json");
                 response.getWriter().write(json.toString());
                 rs.close();
@@ -138,7 +136,7 @@ public class SignIn extends HttpServlet {
             }
         } catch (SQLException | IOException ex) {
             
-        }   
+        }
     }
 
     // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
diff --git a/IdentityService/src/java/validate/ValidateToken.java b/IdentityService/src/java/validate/ValidateToken.java
index 669ea49..e154ce7 100644
--- a/IdentityService/src/java/validate/ValidateToken.java
+++ b/IdentityService/src/java/validate/ValidateToken.java
@@ -45,30 +45,143 @@ public class ValidateToken extends HttpServlet {
      */
     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
-        response.setContentType("text/html;charset=UTF-8");
+                response.setContentType("text/html;charset=UTF-8");
         try (PrintWriter out = response.getWriter()) {
-            java.lang.String token = request.getParameter("token");
+            String token = request.getParameter("token");
            
-            Class.forName("com.mysql.jdbc.Driver");
+            try {
+                Class.forName("com.mysql.jdbc.Driver");
+            } catch (ClassNotFoundException ex) {
+                Logger.getLogger(SignIn.class.getName()).log(Level.SEVERE, null, ex);
+            }
             try
             (   Connection conn = DriverManager.getConnection(
-                    "jdbc:mysql://localhost:3306/Account?zeroDateTimeBehavior=convertToNull",
+                    "jdbc:mysql://localhost:3306/account?zeroDateTimeBehavior=convertToNull",
                     "root",
                     ""); 
                 Statement stmt = conn.createStatement()) {
                 String sql;
-                sql = "SELECT * FROM account NATURAL JOIN token WHERE id = id_account and token = ?";
+                sql = "SELECT * FROM account NATURAL JOIN token WHERE token = ?";
                 PreparedStatement dbStatement = conn.prepareStatement(sql);
                 dbStatement.setString(1, token);
+                JSONObject json = new JSONObject();
                 /* Get every data returned by SQL query */
                 ResultSet rs = dbStatement.executeQuery();
+                if (rs.next()) {
+                    Date dateNow = new Date();
+                    SimpleDateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
+                    String date = rs.getString("date_expire");
+                    String time = rs.getString("time_expire");
+                    boolean expires;
+                    String datetime = date + " " + time;
+                    Date dateExpireStart = null;
+                    try {
+                        dateExpireStart = dateFormat.parse(datetime);
+                    } catch (ParseException ex) {
+                        Logger.getLogger(ValidateToken.class.getName()).log(Level.SEVERE, null, ex);
+                    }
+                    long msDiff = dateNow.getTime() - dateExpireStart.getTime();
+                    if (msDiff > 900000) {
+                        SecureRandom random = new SecureRandom();
+                        String token1 = new BigInteger(130, random).toString(32);
+
+                        String sqlCek;
+                        boolean ulang = true;
+                        PreparedStatement dbStatementCek;
+
+                        //while (ulang) {
+                            //token1 = new BigInteger(130, random).toString(32);
+                          //  sqlCek = "SELECT * FROM token WHERE token = ?";
+                          //  dbStatementCek = conn.prepareStatement(sqlCek);
+                         //   dbStatementCek.setString(1, token);
+                         //   ResultSet rsCek = dbStatementCek.executeQuery();
+                           // if (rsCek.next()) {
+                           //     ulang = true;
+                          //  } else {
+                            //    ulang = false;
+                          //  }
+                        //}
+
+                        
+                        json.put("id",rs.getInt("id"));
+                        json.put("fullname",rs.getString("fullname"));
+                        json.put("username",rs.getString("username"));
+                        json.put("email",rs.getString("email"));
+                        json.put("phone_no",rs.getString("phone_no"));
+                        json.put("token", token1);
+                        json.put("validate", 2);
+
+                        String sqlDeleteToken;
+                        sqlDeleteToken = "DELETE FROM token WHERE token.token = ?";
+                        PreparedStatement dbStatementDeleteToken = conn.prepareStatement(sqlDeleteToken);                    
+                        dbStatementDeleteToken.setString(1, token);
+                        dbStatementDeleteToken.executeUpdate();
+
+                        //out.println(json.toString());
+                        Date dNow = new Date();
+                        SimpleDateFormat dateFormat1 = new SimpleDateFormat ("yyyy-MM-dd");
+                        SimpleDateFormat timeFormat = new SimpleDateFormat ("HH:mm:ss");
+                        String time_expired = timeFormat.format(dNow);
+                        String date_expired = dateFormat1.format(dNow);
+                        String sqlInputToken;
+                        sqlInputToken = "INSERT INTO token(token,id,date_expire,time_expire) VALUES (?,?,?,?)";
+                        PreparedStatement dbStatementInputToken = conn.prepareStatement(sqlInputToken);                    
+                        dbStatementInputToken.setString(1, token1);
+                        dbStatementInputToken.setInt(2, rs.getInt("id"));
+                        dbStatementInputToken.setString(3, date_expired);
+                        dbStatementInputToken.setString(4, time_expired);
+                        dbStatementInputToken.executeUpdate();
+                    } else {
+                        json.put("id",rs.getInt("id"));
+                        json.put("fullname",rs.getString("fullname"));
+                        json.put("username",rs.getString("username"));
+                        json.put("email",rs.getString("email"));
+                        json.put("phone_no",rs.getString("phone_no"));
+                        json.put("token","");
+                        json.put("validate", 1);
+                    }
+                } else {
+                    json.put("id",0);
+                    json.put("fullname","");
+                    json.put("username","");
+                    json.put("email","");
+                    json.put("phone_no","");
+                    json.put("token", "");
+                    json.put("validate",3);
+                }
                 /* Get every data returned by SQL query */
+                response.setContentType("application/json");
+                response.getWriter().write(json.toString());
+                rs.close();
+                stmt.close();
+                conn.close();
+            }
+        } catch (SQLException | IOException ex) {
+            
+        }
+        /*response.setContentType("text/html;charset=UTF-8");
+        try (PrintWriter out = response.getWriter()) {
+            java.lang.String token = request.getParameter("token");
+           
+            Class.forName("com.mysql.jdbc.Driver");
+            try
+            (   Connection conn = DriverManager.getConnection(
+                    "jdbc:mysql://localhost:3306/account?zeroDateTimeBehavior=convertToNull",
+                    "root",
+                    ""); 
+                Statement stmt = conn.createStatement()) {
+                String sql;
+                sql = "SELECT * FROM account NATURAL JOIN token WHERE account.id = token.id and token = ?";
+                PreparedStatement dbStatement = conn.prepareStatement(sql);
+                dbStatement.setString(1, token);
+                /* Get every data returned by SQL query 
+                ResultSet rs = dbStatement.executeQuery();
+                /* Get every data returned by SQL query 
                 JSONObject json = new JSONObject();
                 boolean expires = false;
-                /* Get every data returned by SQL query */
+                /* Get every data returned by SQL query 
                 Date dateNow = new Date();
                 SimpleDateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
-                
                 if(rs.next()){
                     String date = rs.getString("date_expired");
                     String time = rs.getString("time_expired");
@@ -104,13 +217,21 @@ public class ValidateToken extends HttpServlet {
                             }
                         }
 
+                        String sqlDelete;
+                        sqlDelete = "DELETE FROM token WHERE token = ?";
+                        PreparedStatement dbStatementDelete = conn.prepareStatement(sqlDelete,Statement.RETURN_GENERATED_KEYS);
+                        dbStatementDelete.setString(1, token);
+
+                        /* Get every data returned by SQL query 
+                        int rsDelete = dbStatementDelete.executeUpdate();
+                        
                         Date dNow = new Date();
                         SimpleDateFormat dateFormatExpires = new SimpleDateFormat ("yyyy-MM-dd");
                         SimpleDateFormat timeFormatExpires = new SimpleDateFormat ("HH:mm:ss");
                         String time_expired = timeFormatExpires.format(dNow);
                         String date_expired = dateFormatExpires.format(dNow);
                         String sqlInputToken;
-                        sqlInputToken = "INSERT INTO token(id_account,token,date_expired,time_expired) VALUES(?,?,?,?)";
+                        sqlInputToken = "INSERT INTO token(id_account,token,date_expire,time_expire) VALUES(?,?,?,?)";
                         PreparedStatement dbStatementInputToken = conn.prepareStatement(sqlInputToken);
                         dbStatementInputToken.setInt(1, rs.getInt("id"));
                         dbStatementInputToken.setString(2, tokenExpires);
@@ -118,14 +239,6 @@ public class ValidateToken extends HttpServlet {
                         dbStatementInputToken.setString(4, time_expired);
                         int rsInputToken = dbStatementInputToken.executeUpdate();
                         
-                        String sqlDelete;
-                        sqlDelete = "DELETE FROM token WHERE token = ?";
-                        PreparedStatement dbStatementDelete = conn.prepareStatement(sqlDelete,Statement.RETURN_GENERATED_KEYS);
-                        dbStatementDelete.setString(1, token);
-
-                        /* Get every data returned by SQL query */
-                        int rsDelete = dbStatementDelete.executeUpdate();
-                        
                         json.put("id",rs.getInt("id"));
                         json.put("fullname",rs.getString("fullname"));
                         json.put("username",rs.getString("username"));
@@ -160,7 +273,7 @@ public class ValidateToken extends HttpServlet {
             }
         } catch (ClassNotFoundException | SQLException ex) {
             
-        }   
+        }   */
     }
 
     // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
diff --git a/OjekOnlineWebservice/nbproject/genfiles.properties b/OjekOnlineWebservice/nbproject/genfiles.properties
index 23e3766..0cea5e9 100644
--- a/OjekOnlineWebservice/nbproject/genfiles.properties
+++ b/OjekOnlineWebservice/nbproject/genfiles.properties
@@ -1,9 +1,9 @@
-build.xml.data.CRC32=c15f4ce0
+build.xml.data.CRC32=cb43e7dd
 build.xml.script.CRC32=4d0c4679
 build.xml.stylesheet.CRC32=651128d4@1.77.1.1
 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=c15f4ce0
+nbproject/build-impl.xml.data.CRC32=cb43e7dd
 nbproject/build-impl.xml.script.CRC32=35f43f9c
 nbproject/build-impl.xml.stylesheet.CRC32=99ea4b56@1.77.1.1
 nbproject/jaxws-build.xml.stylesheet.CRC32=6608c2cf
diff --git a/OjekOnlineWebservice/nbproject/jax-ws.xml b/OjekOnlineWebservice/nbproject/jax-ws.xml
index c2918ef..08cec30 100644
--- a/OjekOnlineWebservice/nbproject/jax-ws.xml
+++ b/OjekOnlineWebservice/nbproject/jax-ws.xml
@@ -4,6 +4,12 @@
     <service name="History">
       <implementation-class>history.History</implementation-class>
     </service>
+    <service name="Location">
+      <implementation-class>Location.Location</implementation-class>
+    </service>
+    <service name="Account">
+      <implementation-class>account.Account</implementation-class>
+    </service>
   </services>
   <clients/>
 </jax-ws>
diff --git a/OjekOnlineWebservice/nbproject/jaxws-build.xml b/OjekOnlineWebservice/nbproject/jaxws-build.xml
index 3562bd3..1eed59b 100644
--- a/OjekOnlineWebservice/nbproject/jaxws-build.xml
+++ b/OjekOnlineWebservice/nbproject/jaxws-build.xml
@@ -27,6 +27,22 @@
             <classpath path="${java.home}/../lib/tools.jar:${build.classes.dir}:${j2ee.platform.wsgen.classpath}:${javac.classpath}"/>
         </wsgen>
     </target>
+    <target name="wsgen-Location" depends="wsgen-init">
+        <copy todir="${build.classes.dir}/META-INF">
+            <fileset dir="${webinf.dir}" includes="wsit-Location.Location.xml"/>
+        </copy>
+        <wsgen sourcedestdir="${build.generated.sources.dir}/jax-ws" resourcedestdir="${build.generated.sources.dir}/jax-ws/resources/" destdir="${build.generated.sources.dir}/jax-ws" verbose="true" keep="true" genwsdl="true" sei="Location.Location" xendorsed="true">
+            <classpath path="${java.home}/../lib/tools.jar:${build.classes.dir}:${j2ee.platform.wsgen.classpath}:${javac.classpath}"/>
+        </wsgen>
+    </target>
+    <target name="wsgen-Account" depends="wsgen-init">
+        <copy todir="${build.classes.dir}/META-INF">
+            <fileset dir="${webinf.dir}" includes="wsit-account.Account.xml"/>
+        </copy>
+        <wsgen sourcedestdir="${build.generated.sources.dir}/jax-ws" resourcedestdir="${build.generated.sources.dir}/jax-ws/resources/" destdir="${build.generated.sources.dir}/jax-ws" verbose="true" keep="true" genwsdl="true" sei="account.Account" xendorsed="true">
+            <classpath path="${java.home}/../lib/tools.jar:${build.classes.dir}:${j2ee.platform.wsgen.classpath}:${javac.classpath}"/>
+        </wsgen>
+    </target>
     <!--
                 ===================
                 JAX-WS WSIMPORT SECTION
diff --git a/OjekOnlineWebservice/nbproject/project.properties b/OjekOnlineWebservice/nbproject/project.properties
index cab92b4..40b5aa4 100644
--- a/OjekOnlineWebservice/nbproject/project.properties
+++ b/OjekOnlineWebservice/nbproject/project.properties
@@ -70,7 +70,6 @@ javadoc.use=true
 javadoc.version=false
 javadoc.windowtitle=
 lib.dir=${web.docbase.dir}/WEB-INF/lib
-no.dependencies=false
 persistence.xml.dir=${conf.dir}
 platform.active=default_platform
 resource.dir=setup
diff --git a/OjekOnlineWebservice/nbproject/project.xml b/OjekOnlineWebservice/nbproject/project.xml
index 55c5986..e7408d4 100644
--- a/OjekOnlineWebservice/nbproject/project.xml
+++ b/OjekOnlineWebservice/nbproject/project.xml
@@ -16,10 +16,10 @@
             </web-module-libraries>
             <web-module-additional-libraries/>
             <source-roots>
-                <root id="src.dir" name="Source Packages"/>
+                <root id="src.dir"/>
             </source-roots>
             <test-roots>
-                <root id="test.src.dir" name="Test Packages"/>
+                <root id="test.src.dir"/>
             </test-roots>
         </data>
     </configuration>
diff --git a/OjekOnlineWebservice/src/java/Location/Location.java b/OjekOnlineWebservice/src/java/Location/Location.java
new file mode 100644
index 0000000..ee42b13
--- /dev/null
+++ b/OjekOnlineWebservice/src/java/Location/Location.java
@@ -0,0 +1,141 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package Location;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.ProtocolException;
+import java.net.URL;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.jws.WebService;
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import org.json.JSONException;
+import org.json.JSONObject;
+/**
+ *
+ * @author raudi
+ */
+@WebService(serviceName = "Location")
+public class Location {
+    
+   /**
+    * Web service operation
+     * @param sellerID
+     * @return 
+    */
+    @WebMethod(operationName = "listprefloc")
+    @WebResult(name="Location")
+    public ArrayList<LocationObj> listprefloc (@WebParam(name = "username") String username) {
+        ArrayList<LocationObj> listprefloc = new ArrayList<>();
+        try {
+            Class.forName("com.mysql.jdbc.Driver");
+            Connection conn = DriverManager.getConnection(
+                    "jdbc:mysql://localhost:3306/ojekonline?zeroDateTimeBehavior=convertToNull",
+                    "root",
+                    "");
+        
+            Statement stmt = conn.createStatement();
+            String sql;
+            sql = "SELECT * FROM preferred_location WHERE username = ?";
+            PreparedStatement dbStatement = conn.prepareStatement(sql);
+            dbStatement.setString(1, username);
+            /* Get every data returned by SQL query */
+            ResultSet rs = dbStatement.executeQuery();
+            /* Get every data returned by SQL query */
+            int i = 0;
+            while(rs.next()){
+                listprefloc.add(new LocationObj(rs.getString("username"),
+                rs.getString("location")));
+                ++i;
+            }
+            rs.close();
+            stmt.close();
+            conn.close();
+        } catch (ClassNotFoundException | SQLException ex) {
+            Logger.getLogger(Location.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        return listprefloc;
+    }
+    
+       /**
+    * Web service operation
+     * @param sellerID
+     * @return 
+    */
+    @WebMethod(operationName = "addprefloc")
+    @WebResult(name="LocationObj")
+    public void addprefloc (@WebParam(name = "username") String username,
+                                              @WebParam(name = "location") String location) {
+        try {
+            Class.forName("com.mysql.jdbc.Driver");
+            Connection conn = DriverManager.getConnection(
+                    "jdbc:mysql://localhost:3306/ojekonline?zeroDateTimeBehavior=convertToNull",
+                    "root",
+                    "");
+        
+            Statement stmt = conn.createStatement();
+            String sql;
+            sql = "INSERT INTO preferred_location (username, location) VALUES (?, ?)";
+            PreparedStatement dbStatement = conn.prepareStatement(sql);
+            dbStatement.setString(1, username);
+            dbStatement.setString(2, location);
+            /* Get every data returned by SQL query */
+            ResultSet rs = dbStatement.executeQuery();
+            /* Get every data returned by SQL query */
+            rs.close();
+            stmt.close();
+            conn.close();
+        } catch (ClassNotFoundException | SQLException ex) {
+            Logger.getLogger(Location.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+       /**
+    * Web service operation
+     * @param sellerID
+     * @return 
+    */
+    @WebMethod(operationName = "delprefloc")
+    @WebResult(name="LocationObj")
+    public void delprefloc (@WebParam(name = "username") String username,
+                            @WebParam(name = "location") String location) {
+        try {
+            Class.forName("com.mysql.jdbc.Driver");
+            Connection conn = DriverManager.getConnection(
+                    "jdbc:mysql://localhost:3306/ojekonline?zeroDateTimeBehavior=convertToNull",
+                    "root",
+                    "");
+        
+            Statement stmt = conn.createStatement();
+            String sql;
+            sql = "DELETE FROM preferred_location WHERE username = ? AND location = ?";
+            PreparedStatement dbStatement = conn.prepareStatement(sql);
+            dbStatement.setString(1, username);
+            dbStatement.setString(2, location);
+            /* Get every data returned by SQL query */
+            ResultSet rs = dbStatement.executeQuery();
+            /* Get every data returned by SQL query */
+            rs.close();
+            stmt.close();
+            conn.close();
+        } catch (ClassNotFoundException | SQLException ex) {
+            Logger.getLogger(Location.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+}
\ No newline at end of file
diff --git a/OjekOnlineWebservice/src/java/Location/LocationObj.java b/OjekOnlineWebservice/src/java/Location/LocationObj.java
new file mode 100644
index 0000000..7e652d5
--- /dev/null
+++ b/OjekOnlineWebservice/src/java/Location/LocationObj.java
@@ -0,0 +1,37 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package Location;
+
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ *
+ * @author TIFAH06
+ */
+public class LocationObj {
+    @XmlElement(name="username", required=true) 
+    public String username; 
+    @XmlElement(name="location", required=true) 
+    public String location;
+    
+    
+    public LocationObj() { 
+        username = "";
+        location = "";
+    } 
+    
+    public LocationObj(String username, String location) { 
+        this.username = username;
+        this.location = location;
+    }
+    
+    public String getUsername() {
+        return username;
+    }
+    public String getLocation() {
+        return location;
+    }
+}
diff --git a/OjekOnlineWebservice/src/java/account/Account.java b/OjekOnlineWebservice/src/java/account/Account.java
new file mode 100644
index 0000000..7d22ed0
--- /dev/null
+++ b/OjekOnlineWebservice/src/java/account/Account.java
@@ -0,0 +1,174 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package account;
+
+
+import account.AccountObj;
+import javax.jws.WebService;
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.ProtocolException;
+import java.net.URL;
+import org.json.*;
+
+/**
+ *
+ * @author raudi
+ */
+@WebService(serviceName = "Account")
+public class Account {
+
+    /**
+     * This is a sample web service operation
+     * @param token
+     * @return 
+     */
+    @WebMethod(operationName = "validate")
+    public AccountObj validate(@WebParam(name = "token") String token) throws JSONException {
+        String USER_AGENT = "Mozilla/5.0";
+        
+        String url = "http://localhost:8001/IdentityService/ValidateToken";
+        URL obj = null;
+        try {
+            obj = new URL(url);
+        } catch (MalformedURLException ex) {
+        }
+        HttpURLConnection con = null;
+        try {
+            con = (HttpURLConnection) obj.openConnection();
+        } catch (IOException ex) {
+            
+        }
+
+        try {
+            //add reuqest header
+            con.setRequestMethod("POST");
+        } catch (ProtocolException ex) {
+            
+        }
+        con.setRequestProperty("User-Agent", USER_AGENT);
+        con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
+
+        String urlParameters = "token="+token;
+
+        // Send post request
+        con.setDoOutput(true);
+        DataOutputStream wr = null;
+        
+        try {
+            wr = new DataOutputStream(con.getOutputStream());
+            wr.writeBytes(urlParameters);
+            wr.flush();
+            wr.close();
+        } catch (IOException ex) {
+        }
+        
+        StringBuffer responsebuff = new StringBuffer();
+        try {
+            int responseCode = con.getResponseCode();
+            BufferedReader in = new BufferedReader(
+                new InputStreamReader(con.getInputStream()));
+            String inputLine;
+
+            while ((inputLine = in.readLine()) != null) {
+                    responsebuff.append(inputLine);
+            }
+            in.close();
+        } catch (IOException ex) {
+        }
+        
+        JSONObject JSobjek = new JSONObject(responsebuff.toString());
+        //System.out.println(response.toString());
+        
+        AccountObj account = null;
+        account = new AccountObj((int)JSobjek.get("id"), 
+                        (String)JSobjek.get("username"),
+                        (String)JSobjek.get("email"),
+                        (String)JSobjek.get("fullname"),
+                        (String)JSobjek.get("phone_no"),
+                        (String)JSobjek.get("token"),
+                        (int)JSobjek.get("validate"));
+        return account;
+
+    }
+    
+    /**
+     * This is a sample web service operation
+     * @param id
+     * @return 
+     */
+    @WebMethod(operationName = "getUsername")
+    public String getUsername(@WebParam(name = "id") int id) {
+        String USER_AGENT = "Mozilla/5.0";
+        
+        String url = "http://localhost:8001/IdentityService/GetUsername";
+        URL obj = null;
+        try {
+            obj = new URL(url);
+        } catch (MalformedURLException ex) {
+        }
+        HttpURLConnection con = null;
+        try {
+            con = (HttpURLConnection) obj.openConnection();
+        } catch (IOException ex) {
+            
+        }
+
+        try {
+            //add reuqest header
+            con.setRequestMethod("POST");
+        } catch (ProtocolException ex) {
+            
+        }
+        con.setRequestProperty("User-Agent", USER_AGENT);
+        con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
+
+        String urlParameters = "id="+id;
+
+        // Send post request
+        con.setDoOutput(true);
+        DataOutputStream wr = null;
+        
+        try {
+            wr = new DataOutputStream(con.getOutputStream());
+            wr.writeBytes(urlParameters);
+            wr.flush();
+            wr.close();
+        } catch (IOException ex) {
+        }
+        
+        StringBuffer response = new StringBuffer();
+        try {
+            int responseCode = con.getResponseCode();
+            BufferedReader in = new BufferedReader(
+                new InputStreamReader(con.getInputStream()));
+            String inputLine;
+
+            while ((inputLine = in.readLine()) != null) {
+                    response.append(inputLine);
+            }
+            in.close();
+        } catch (IOException ex) {
+        }
+        System.out.println(response.toString());
+        
+        String uname = null;
+        JSONObject JSobjek = null;  
+        try {
+            JSobjek = new JSONObject(response.toString());
+            uname = (String)JSobjek.get("username");
+        } catch (JSONException ex) {
+        }
+        return uname;
+        
+    }
+}
diff --git a/OjekOnlineWebservice/src/java/account/AccountObj.java b/OjekOnlineWebservice/src/java/account/AccountObj.java
new file mode 100644
index 0000000..334cfd5
--- /dev/null
+++ b/OjekOnlineWebservice/src/java/account/AccountObj.java
@@ -0,0 +1,79 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package account;
+
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ *
+ * @author TIFAH06
+ */
+public class AccountObj {
+    @XmlElement(name="id", required=true) 
+    public int id; 
+    @XmlElement(name="username", required=true) 
+    public String username; 
+    @XmlElement(name="email", required=true) 
+    public String email; 
+    @XmlElement(name="fullname", required=true) 
+    public String fullname;
+    @XmlElement(name="phone_no", required=true) 
+    public String phone_no;
+    @XmlElement(name="token", required=true) 
+    public String token;
+    @XmlElement(name="validate", required=true)
+    public int validate;
+    
+    public AccountObj() { 
+        id = 0; 
+        username = ""; 
+        email = "";
+        fullname = "";
+        phone_no = "";
+        token = "";
+        validate=-1;
+    } 
+    
+    public AccountObj(int id, String username, String email, String fullname, String phone_no,
+            String token, int validate) { 
+        this.id = id; 
+        this.username = username;
+        this.email = email;
+        this.fullname = fullname;
+        this.phone_no = phone_no;
+        this.token = token;
+        this.validate = validate;
+    }
+    
+    public int getID() {
+        return id;
+    }
+    
+    public String getUsername() {
+        return username;
+    }
+    
+    public String getEmail() {
+        return email;
+    }
+    
+    public String getFullname() {
+        return fullname;
+    }
+    
+    public String getPhoneNo() {
+        return phone_no;
+    }
+    
+    public String getToken() {
+        return token;
+    }
+    
+    public int getValidate() {
+        return validate;
+    }
+
+}
diff --git a/OjekOnlineWebservice/src/java/history/History.java b/OjekOnlineWebservice/src/java/history/History.java
index 48817aa..855c580 100644
--- a/OjekOnlineWebservice/src/java/history/History.java
+++ b/OjekOnlineWebservice/src/java/history/History.java
@@ -19,7 +19,9 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.jws.WebService;
@@ -32,7 +34,7 @@ import org.json.JSONObject;
  *
  * @author raudi
  */
-@WebService(serviceName = "Items")
+@WebService(serviceName = "History")
 public class History {
     
    /**
@@ -131,4 +133,88 @@ public class History {
         return driverhistory;
     }
     
+    @WebMethod(operationName = "addTransaction")
+    @WebResult(name="HistoryObj")
+    public void addTransaction (@WebParam(name = "driver_name") String driver_name,
+                                @WebParam(name = "user_name") String user_name,
+                                @WebParam(name = "picking_point") String picking_point,
+                                @WebParam(name = "destination") String destination,
+                                @WebParam(name = "comment") String comment,
+                                @WebParam(name = "rating") int rating) {
+        ArrayList<HistoryObj> driverhistory = new ArrayList<>();
+        try {
+            Class.forName("com.mysql.jdbc.Driver");
+            Connection conn = DriverManager.getConnection(
+                    "jdbc:mysql://localhost:3306/ojekonline?zeroDateTimeBehavior=convertToNull",
+                    "root",
+                    "");
+            Statement stmt = conn.createStatement();
+            String sql;
+            Date dNow = new Date();
+            SimpleDateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd");
+            String pickDate = dateFormat.format(dNow);
+            String rateString = String.valueOf(rating);
+            sql = "INSERT INTO transaksi (driver_name, user_name, picking_point, destination,"
+                    + "tanggal, comment, rating) VALUES (?, ?, ?, ?, ?, ?, ?)";
+            PreparedStatement dbStatement = conn.prepareStatement(sql);
+            dbStatement.setString(1, driver_name);
+            dbStatement.setString(2, user_name);
+            dbStatement.setString(3, picking_point);
+            dbStatement.setString(4, destination);
+            dbStatement.setString(5, pickDate);
+            dbStatement.setString(6, comment);
+            dbStatement.setString(7, rateString);
+            /* Get every data returned by SQL query */
+            ResultSet rs = dbStatement.executeQuery();
+            /* Get every data returned by SQL query */
+            rs.close();
+            stmt.close();
+            conn.close();
+        } catch (ClassNotFoundException | SQLException ex) {
+            Logger.getLogger(History.class.getName()).log(Level.SEVERE, null, ex);
+        }
+    }
+    
+    @WebMethod(operationName = "hideOrderHistory")
+    @WebResult(name="HistoryObj")
+    public void hideOrderHistory (@WebParam(name = "driver_name") String driver_name) {
+        ArrayList<HistoryObj> driverhistory = new ArrayList<>();
+        try {
+            Class.forName("com.mysql.jdbc.Driver");
+            Connection conn = DriverManager.getConnection(
+                    "jdbc:mysql://localhost:3306/ojekonline?zeroDateTimeBehavior=convertToNull",
+                    "root",
+                    "");
+        
+            Statement stmt = conn.createStatement();
+            String sql;
+            sql = "SELECT * FROM transaksi WHERE driver_name = ?";
+            PreparedStatement dbStatement = conn.prepareStatement(sql);
+            dbStatement.setBoolean(1, false);
+            /* Get every data returned by SQL query */
+            ResultSet rs = dbStatement.executeQuery();
+            /* Get every data returned by SQL query */
+            int i = 0;
+            while(rs.next()){
+                driverhistory.add(new HistoryObj(rs.getInt("id"),
+                rs.getString("driver_name"),
+                rs.getString("user_name"),
+                rs.getString("picking_point"),
+                rs.getString("destination"),
+                rs.getString("tanggal"),
+                rs.getString("comment"),
+                rs.getInt("rating"),
+                rs.getBoolean("user_hide"),
+                rs.getBoolean("driver_hide")
+                ));
+                ++i;
+            }
+            rs.close();
+            stmt.close();
+            conn.close();
+        } catch (ClassNotFoundException | SQLException ex) {
+            Logger.getLogger(History.class.getName()).log(Level.SEVERE, null, ex);
+        }
+        //return driverhistory;
+    }
 }
\ No newline at end of file
diff --git a/WebApp/catalog.xml b/WebApp/catalog.xml
new file mode 100644
index 0000000..d30c66d
--- /dev/null
+++ b/WebApp/catalog.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="system">
+    <system systemId="http://localhost:8002/OjekOnlineWebservice/Location?wsdl" uri="src/conf/xml-resources/web-service-references/Location/wsdl/localhost_8002/OjekOnlineWebservice/Location.wsdl"/>
+    <system systemId="http://localhost:8002/OjekOnlineWebservice/Location?xsd=1" uri="src/conf/xml-resources/web-service-references/Location/wsdl/localhost_8002/OjekOnlineWebservice/Location.xsd_1.xsd"/>
+    <system systemId="http://localhost:8002/OjekOnlineWebservice/Accounts?wsdl" uri="src/conf/xml-resources/web-service-references/Accounts/wsdl/localhost_8002/OjekOnlineWebservice/Accounts.wsdl"/>
+    <system systemId="http://localhost:8002/OjekOnlineWebservice/Accounts?xsd=1" uri="src/conf/xml-resources/web-service-references/Accounts/wsdl/localhost_8002/OjekOnlineWebservice/Accounts.xsd_1.xsd"/>
+    <system systemId="http://localhost:8002/OjekOnlineWebservice/Account?wsdl" uri="src/conf/xml-resources/web-service-references/Account/wsdl/localhost_8002/OjekOnlineWebservice/Account.wsdl"/>
+    <system systemId="http://localhost:8002/OjekOnlineWebservice/Account?xsd=1" uri="src/conf/xml-resources/web-service-references/Account/wsdl/localhost_8002/OjekOnlineWebservice/Account.xsd_1.xsd"/>
+</catalog>
\ No newline at end of file
diff --git a/WebApp/nbproject/build-impl.xml b/WebApp/nbproject/build-impl.xml
index 9499320..375c554 100644
--- a/WebApp/nbproject/build-impl.xml
+++ b/WebApp/nbproject/build-impl.xml
@@ -18,6 +18,7 @@
 
         -->
 <project xmlns:webproject1="http://www.netbeans.org/ns/web-project/1" xmlns:webproject2="http://www.netbeans.org/ns/web-project/2" xmlns:webproject3="http://www.netbeans.org/ns/web-project/3" basedir=".." default="default" name="WebApp-impl">
+    <import file="jaxws-build.xml"/>
     <import file="ant-deploy.xml"/>
     <fail message="Please build using Ant 1.7.1 or higher.">
         <condition>
@@ -855,7 +856,7 @@ exists or setup the property manually. For example like this:
     <target depends="init" if="no.dist.ear.dir" name="deps-module-jar" unless="no.deps"/>
     <target depends="init" if="dist.ear.dir" name="deps-ear-jar" unless="no.deps"/>
     <target depends="init, deps-module-jar, deps-ear-jar" name="deps-jar" unless="no.deps"/>
-    <target depends="init,deps-jar" name="-pre-pre-compile">
+    <target depends="init,deps-jar,wsimport-client-generate" name="-pre-pre-compile">
         <mkdir dir="${build.classes.dir}"/>
     </target>
     <target name="-pre-compile">
diff --git a/WebApp/nbproject/genfiles.properties b/WebApp/nbproject/genfiles.properties
index c2be8a6..91f4edd 100644
--- a/WebApp/nbproject/genfiles.properties
+++ b/WebApp/nbproject/genfiles.properties
@@ -1,8 +1,9 @@
-build.xml.data.CRC32=aaf3f8be
+build.xml.data.CRC32=f891d94c
 build.xml.script.CRC32=93337f6c
 build.xml.stylesheet.CRC32=651128d4@1.77.1.1
 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=aaf3f8be
-nbproject/build-impl.xml.script.CRC32=18334a6b
+nbproject/build-impl.xml.data.CRC32=f891d94c
+nbproject/build-impl.xml.script.CRC32=cfa24a41
 nbproject/build-impl.xml.stylesheet.CRC32=99ea4b56@1.77.1.1
+nbproject/jaxws-build.xml.stylesheet.CRC32=6608c2cf
diff --git a/WebApp/nbproject/jax-ws.xml b/WebApp/nbproject/jax-ws.xml
new file mode 100644
index 0000000..67dc088
--- /dev/null
+++ b/WebApp/nbproject/jax-ws.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jax-ws xmlns="http://www.netbeans.org/ns/jax-ws/1">
+  <services/>
+  <clients>
+    <client name="Account">
+      <wsdl-url>http://localhost:8002/OjekOnlineWebservice/Account?wsdl</wsdl-url>
+      <local-wsdl-file>localhost_8002/OjekOnlineWebservice/Account.wsdl</local-wsdl-file>
+      <package-name>account</package-name>
+      <catalog-file>catalog.xml</catalog-file>
+      <wsimport-options>
+        <wsimport-option>
+          <wsimport-option-name>extension</wsimport-option-name>
+          <wsimport-option-value>true</wsimport-option-value>
+        </wsimport-option>
+        <wsimport-option>
+          <wsimport-option-name>verbose</wsimport-option-name>
+          <wsimport-option-value>true</wsimport-option-value>
+        </wsimport-option>
+        <wsimport-option>
+          <wsimport-option-name>fork</wsimport-option-name>
+          <wsimport-option-value>false</wsimport-option-value>
+        </wsimport-option>
+        <wsimport-option>
+          <wsimport-option-name>wsdlLocation</wsimport-option-name>
+          <wsimport-option-value>http://localhost:8002/OjekOnlineWebservice/Account?wsdl</wsimport-option-value>
+        </wsimport-option>
+        <wsimport-option>
+          <wsimport-option-name>xnocompile</wsimport-option-name>
+          <wsimport-option-value>true</wsimport-option-value>
+        </wsimport-option>
+        <wsimport-option>
+          <wsimport-option-name>xendorsed</wsimport-option-name>
+          <wsimport-option-value>true</wsimport-option-value>
+        </wsimport-option>
+      </wsimport-options>
+    </client>
+  </clients>
+</jax-ws>
diff --git a/WebApp/nbproject/jaxws-build.xml b/WebApp/nbproject/jaxws-build.xml
new file mode 100644
index 0000000..78e541f
--- /dev/null
+++ b/WebApp/nbproject/jaxws-build.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?><!--
+        *** GENERATED FROM jax-ws.xml - DO NOT EDIT !                             ***
+        *** TO MODIFY wsimport options USE Web Service node -> Edit WS Attributes ***
+        *** TO CHANGE TARGETS GENERATED TO jaxws-build.xml COPY THOSE             ***
+        *** TARGETS TO ../build.xml AND MODIFY THAT FILE INSTEAD                  ***
+
+        --><project xmlns:xalan="http://xml.apache.org/xslt" xmlns:webproject2="http://www.netbeans.org/ns/web-project/2" xmlns:jaxws="http://www.netbeans.org/ns/jax-ws/1">
+    <!--
+                ===================
+                JAX-WS WSGEN SECTION
+                ===================
+            -->
+    <!--
+                ===================
+                JAX-WS WSIMPORT SECTION
+                ===================
+            -->
+    <target name="wsimport-init" depends="init">
+        <fail if="${wsimport.bad.version}" message="WsImport ant task defined in the classpath ${j2ee.platform.wsimport.classpath} has a serious bug. See http://wiki.netbeans.org/MetroIssue for details."/>
+        <mkdir dir="${build.generated.sources.dir}/jax-ws"/>
+        <property name="j2ee.platform.wsimport.classpath" value="${libs.jaxws21.classpath}"/>
+        <taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport">
+            <classpath path="${java.home}/../lib/tools.jar:${j2ee.platform.wsimport.classpath}:${javac.classpath}"/>
+        </taskdef>
+        <condition property="conf-dir" value="${conf.dir}/" else="">
+            <isset property="conf.dir"/>
+        </condition>
+    </target>
+    <target name="wsimport-client-Account" depends="wsimport-init">
+        <mkdir dir="${build.generated.dir}/jax-wsCache/Account"/>
+        <wsimport sourcedestdir="${build.generated.dir}/jax-wsCache/Account" destdir="${build.generated.dir}/jax-wsCache/Account" wsdl="${basedir}/${conf-dir}xml-resources/web-service-references/Account/wsdl/localhost_8002/OjekOnlineWebservice/Account.wsdl" catalog="catalog.xml" encoding="${source.encoding}" extension="true" verbose="true" fork="false" wsdlLocation="http://localhost:8002/OjekOnlineWebservice/Account?wsdl" xnocompile="true" xendorsed="true">
+            <depends file="${basedir}/${conf-dir}xml-resources/web-service-references/Account/wsdl/localhost_8002/OjekOnlineWebservice/Account.wsdl"/>
+            <produces dir="${build.generated.dir}/jax-wsCache/Account"/>
+        </wsimport>
+        <copy todir="${build.generated.sources.dir}/jax-ws">
+            <fileset dir="${build.generated.dir}/jax-wsCache/Account">
+                <include name="**/*.java"/>
+            </fileset>
+        </copy>
+    </target>
+    <target name="wsimport-client-clean-Account" depends="-init-project">
+        <delete dir="${build.generated.sources.dir}/jax-ws/account"/>
+        <delete dir="${build.generated.dir}/jax-wsCache/Account"/>
+    </target>
+    <target name="wsimport-client-generate" depends="wsimport-client-Account"/>
+</project>
diff --git a/WebApp/nbproject/project.properties b/WebApp/nbproject/project.properties
index d0baeac..5ff9c62 100644
--- a/WebApp/nbproject/project.properties
+++ b/WebApp/nbproject/project.properties
@@ -70,7 +70,6 @@ javadoc.use=true
 javadoc.version=false
 javadoc.windowtitle=
 lib.dir=${web.docbase.dir}/WEB-INF/lib
-no.dependencies=false
 persistence.xml.dir=${conf.dir}
 platform.active=default_platform
 resource.dir=setup
diff --git a/WebApp/nbproject/project.xml b/WebApp/nbproject/project.xml
index 1b8c703..7a8dc0c 100644
--- a/WebApp/nbproject/project.xml
+++ b/WebApp/nbproject/project.xml
@@ -2,6 +2,11 @@
 <project xmlns="http://www.netbeans.org/ns/project/1">
     <type>org.netbeans.modules.web.project</type>
     <configuration>
+        <buildExtensions xmlns="http://www.netbeans.org/ns/ant-build-extender/1">
+            <extension file="jaxws-build.xml" id="jaxws">
+                <dependency dependsOn="wsimport-client-generate" target="-pre-pre-compile"/>
+            </extension>
+        </buildExtensions>
         <data xmlns="http://www.netbeans.org/ns/web-project/3">
             <name>WebApp</name>
             <minimum-ant-version>1.6.5</minimum-ant-version>
@@ -13,10 +18,10 @@
             </web-module-libraries>
             <web-module-additional-libraries/>
             <source-roots>
-                <root id="src.dir" name="Source Packages"/>
+                <root id="src.dir"/>
             </source-roots>
             <test-roots>
-                <root id="test.src.dir" name="Test Packages"/>
+                <root id="test.src.dir"/>
             </test-roots>
         </data>
     </configuration>
diff --git a/WebApp/src/conf/xml-resources/web-service-references/Account/wsdl/localhost_8002/OjekOnlineWebservice/Account.wsdl b/WebApp/src/conf/xml-resources/web-service-references/Account/wsdl/localhost_8002/OjekOnlineWebservice/Account.wsdl
new file mode 100644
index 0000000..4c1115e
--- /dev/null
+++ b/WebApp/src/conf/xml-resources/web-service-references/Account/wsdl/localhost_8002/OjekOnlineWebservice/Account.wsdl
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI (http://jax-ws.java.net). RI's version is Metro/2.3.2-b608 (trunk-7979; 2015-01-21T12:50:19+0000) JAXWS-RI/2.2.11-b150120.1832 JAXWS-API/2.2.12 JAXB-RI/2.2.12-b141219.1637 JAXB-API/2.2.13-b141020.1521 svn-revision#unknown. --><!-- Generated by JAX-WS RI (http://jax-ws.java.net). RI's version is Metro/2.3.2-b608 (trunk-7979; 2015-01-21T12:50:19+0000) JAXWS-RI/2.2.11-b150120.1832 JAXWS-API/2.2.12 JAXB-RI/2.2.12-b141219.1637 JAXB-API/2.2.13-b141020.1521 svn-revision#unknown. --><definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://account/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://account/" name="Account">
+<types>
+<xsd:schema>
+<xsd:import namespace="http://account/" schemaLocation="http://localhost:8002/OjekOnlineWebservice/Account?xsd=1"/>
+</xsd:schema>
+</types>
+<message name="validate">
+<part name="parameters" element="tns:validate"/>
+</message>
+<message name="validateResponse">
+<part name="parameters" element="tns:validateResponse"/>
+</message>
+<message name="getUsername">
+<part name="parameters" element="tns:getUsername"/>
+</message>
+<message name="getUsernameResponse">
+<part name="parameters" element="tns:getUsernameResponse"/>
+</message>
+<portType name="Account">
+<operation name="validate">
+<input wsam:Action="http://account/Account/validateRequest" message="tns:validate"/>
+<output wsam:Action="http://account/Account/validateResponse" message="tns:validateResponse"/>
+</operation>
+<operation name="getUsername">
+<input wsam:Action="http://account/Account/getUsernameRequest" message="tns:getUsername"/>
+<output wsam:Action="http://account/Account/getUsernameResponse" message="tns:getUsernameResponse"/>
+</operation>
+</portType>
+<binding name="AccountPortBinding" type="tns:Account">
+<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+<operation name="validate">
+<soap:operation soapAction=""/>
+<input>
+<soap:body use="literal"/>
+</input>
+<output>
+<soap:body use="literal"/>
+</output>
+</operation>
+<operation name="getUsername">
+<soap:operation soapAction=""/>
+<input>
+<soap:body use="literal"/>
+</input>
+<output>
+<soap:body use="literal"/>
+</output>
+</operation>
+</binding>
+<service name="Account">
+<port name="AccountPort" binding="tns:AccountPortBinding">
+<soap:address location="http://localhost:8002/OjekOnlineWebservice/Account"/>
+</port>
+</service>
+</definitions>
\ No newline at end of file
diff --git a/WebApp/src/conf/xml-resources/web-service-references/Account/wsdl/localhost_8002/OjekOnlineWebservice/Account.xsd_1.xsd b/WebApp/src/conf/xml-resources/web-service-references/Account/wsdl/localhost_8002/OjekOnlineWebservice/Account.xsd_1.xsd
new file mode 100644
index 0000000..0e5e085
--- /dev/null
+++ b/WebApp/src/conf/xml-resources/web-service-references/Account/wsdl/localhost_8002/OjekOnlineWebservice/Account.xsd_1.xsd
@@ -0,0 +1,47 @@
+<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI (http://jax-ws.java.net). RI's version is Metro/2.3.2-b608 (trunk-7979; 2015-01-21T12:50:19+0000) JAXWS-RI/2.2.11-b150120.1832 JAXWS-API/2.2.12 JAXB-RI/2.2.12-b141219.1637 JAXB-API/2.2.13-b141020.1521 svn-revision#unknown. --><xs:schema xmlns:tns="http://account/" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://account/">
+
+<xs:element name="getUsername" type="tns:getUsername"/>
+
+<xs:element name="getUsernameResponse" type="tns:getUsernameResponse"/>
+
+<xs:element name="validate" type="tns:validate"/>
+
+<xs:element name="validateResponse" type="tns:validateResponse"/>
+
+<xs:complexType name="validate">
+<xs:sequence>
+<xs:element name="token" type="xs:string" minOccurs="0"/>
+</xs:sequence>
+</xs:complexType>
+
+<xs:complexType name="validateResponse">
+<xs:sequence>
+<xs:element name="return" type="tns:accountObj" minOccurs="0"/>
+</xs:sequence>
+</xs:complexType>
+
+<xs:complexType name="accountObj">
+<xs:sequence>
+<xs:element name="id" type="xs:int"/>
+<xs:element name="username" type="xs:string"/>
+<xs:element name="email" type="xs:string"/>
+<xs:element name="fullname" type="xs:string"/>
+<xs:element name="password" type="xs:string"/>
+<xs:element name="phone_no" type="xs:string"/>
+<xs:element name="token" type="xs:string"/>
+<xs:element name="validate" type="xs:int"/>
+</xs:sequence>
+</xs:complexType>
+
+<xs:complexType name="getUsername">
+<xs:sequence>
+<xs:element name="id" type="xs:int"/>
+</xs:sequence>
+</xs:complexType>
+
+<xs:complexType name="getUsernameResponse">
+<xs:sequence>
+<xs:element name="return" type="xs:string" minOccurs="0"/>
+</xs:sequence>
+</xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/WebApp/web/WEB-INF/jax-ws-catalog.xml b/WebApp/web/WEB-INF/jax-ws-catalog.xml
new file mode 100644
index 0000000..b2498be
--- /dev/null
+++ b/WebApp/web/WEB-INF/jax-ws-catalog.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="system">
+    <system systemId="http://localhost:8002/OjekOnlineWebservice/Location?wsdl" uri="wsdl/localhost_8002/OjekOnlineWebservice/Location.wsdl"/>
+    <system systemId="http://localhost:8002/OjekOnlineWebservice/Location?xsd=1" uri="wsdl/localhost_8002/OjekOnlineWebservice/Location.xsd_1.xsd"/>
+    <system systemId="http://localhost:8002/OjekOnlineWebservice/Accounts?wsdl" uri="wsdl/localhost_8002/OjekOnlineWebservice/Accounts.wsdl"/>
+    <system systemId="http://localhost:8002/OjekOnlineWebservice/Accounts?xsd=1" uri="wsdl/localhost_8002/OjekOnlineWebservice/Accounts.xsd_1.xsd"/>
+    <system systemId="http://localhost:8002/OjekOnlineWebservice/Account?wsdl" uri="wsdl/localhost_8002/OjekOnlineWebservice/Account.wsdl"/>
+    <system systemId="http://localhost:8002/OjekOnlineWebservice/Account?xsd=1" uri="wsdl/localhost_8002/OjekOnlineWebservice/Account.xsd_1.xsd"/>
+</catalog>
\ No newline at end of file
diff --git a/WebApp/web/WEB-INF/wsdl/localhost_8002/OjekOnlineWebservice/Account.wsdl b/WebApp/web/WEB-INF/wsdl/localhost_8002/OjekOnlineWebservice/Account.wsdl
new file mode 100644
index 0000000..4c1115e
--- /dev/null
+++ b/WebApp/web/WEB-INF/wsdl/localhost_8002/OjekOnlineWebservice/Account.wsdl
@@ -0,0 +1,55 @@
+<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI (http://jax-ws.java.net). RI's version is Metro/2.3.2-b608 (trunk-7979; 2015-01-21T12:50:19+0000) JAXWS-RI/2.2.11-b150120.1832 JAXWS-API/2.2.12 JAXB-RI/2.2.12-b141219.1637 JAXB-API/2.2.13-b141020.1521 svn-revision#unknown. --><!-- Generated by JAX-WS RI (http://jax-ws.java.net). RI's version is Metro/2.3.2-b608 (trunk-7979; 2015-01-21T12:50:19+0000) JAXWS-RI/2.2.11-b150120.1832 JAXWS-API/2.2.12 JAXB-RI/2.2.12-b141219.1637 JAXB-API/2.2.13-b141020.1521 svn-revision#unknown. --><definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://account/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://account/" name="Account">
+<types>
+<xsd:schema>
+<xsd:import namespace="http://account/" schemaLocation="http://localhost:8002/OjekOnlineWebservice/Account?xsd=1"/>
+</xsd:schema>
+</types>
+<message name="validate">
+<part name="parameters" element="tns:validate"/>
+</message>
+<message name="validateResponse">
+<part name="parameters" element="tns:validateResponse"/>
+</message>
+<message name="getUsername">
+<part name="parameters" element="tns:getUsername"/>
+</message>
+<message name="getUsernameResponse">
+<part name="parameters" element="tns:getUsernameResponse"/>
+</message>
+<portType name="Account">
+<operation name="validate">
+<input wsam:Action="http://account/Account/validateRequest" message="tns:validate"/>
+<output wsam:Action="http://account/Account/validateResponse" message="tns:validateResponse"/>
+</operation>
+<operation name="getUsername">
+<input wsam:Action="http://account/Account/getUsernameRequest" message="tns:getUsername"/>
+<output wsam:Action="http://account/Account/getUsernameResponse" message="tns:getUsernameResponse"/>
+</operation>
+</portType>
+<binding name="AccountPortBinding" type="tns:Account">
+<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+<operation name="validate">
+<soap:operation soapAction=""/>
+<input>
+<soap:body use="literal"/>
+</input>
+<output>
+<soap:body use="literal"/>
+</output>
+</operation>
+<operation name="getUsername">
+<soap:operation soapAction=""/>
+<input>
+<soap:body use="literal"/>
+</input>
+<output>
+<soap:body use="literal"/>
+</output>
+</operation>
+</binding>
+<service name="Account">
+<port name="AccountPort" binding="tns:AccountPortBinding">
+<soap:address location="http://localhost:8002/OjekOnlineWebservice/Account"/>
+</port>
+</service>
+</definitions>
\ No newline at end of file
diff --git a/WebApp/web/WEB-INF/wsdl/localhost_8002/OjekOnlineWebservice/Account.xsd_1.xsd b/WebApp/web/WEB-INF/wsdl/localhost_8002/OjekOnlineWebservice/Account.xsd_1.xsd
new file mode 100644
index 0000000..0e5e085
--- /dev/null
+++ b/WebApp/web/WEB-INF/wsdl/localhost_8002/OjekOnlineWebservice/Account.xsd_1.xsd
@@ -0,0 +1,47 @@
+<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI (http://jax-ws.java.net). RI's version is Metro/2.3.2-b608 (trunk-7979; 2015-01-21T12:50:19+0000) JAXWS-RI/2.2.11-b150120.1832 JAXWS-API/2.2.12 JAXB-RI/2.2.12-b141219.1637 JAXB-API/2.2.13-b141020.1521 svn-revision#unknown. --><xs:schema xmlns:tns="http://account/" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://account/">
+
+<xs:element name="getUsername" type="tns:getUsername"/>
+
+<xs:element name="getUsernameResponse" type="tns:getUsernameResponse"/>
+
+<xs:element name="validate" type="tns:validate"/>
+
+<xs:element name="validateResponse" type="tns:validateResponse"/>
+
+<xs:complexType name="validate">
+<xs:sequence>
+<xs:element name="token" type="xs:string" minOccurs="0"/>
+</xs:sequence>
+</xs:complexType>
+
+<xs:complexType name="validateResponse">
+<xs:sequence>
+<xs:element name="return" type="tns:accountObj" minOccurs="0"/>
+</xs:sequence>
+</xs:complexType>
+
+<xs:complexType name="accountObj">
+<xs:sequence>
+<xs:element name="id" type="xs:int"/>
+<xs:element name="username" type="xs:string"/>
+<xs:element name="email" type="xs:string"/>
+<xs:element name="fullname" type="xs:string"/>
+<xs:element name="password" type="xs:string"/>
+<xs:element name="phone_no" type="xs:string"/>
+<xs:element name="token" type="xs:string"/>
+<xs:element name="validate" type="xs:int"/>
+</xs:sequence>
+</xs:complexType>
+
+<xs:complexType name="getUsername">
+<xs:sequence>
+<xs:element name="id" type="xs:int"/>
+</xs:sequence>
+</xs:complexType>
+
+<xs:complexType name="getUsernameResponse">
+<xs:sequence>
+<xs:element name="return" type="xs:string" minOccurs="0"/>
+</xs:sequence>
+</xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/WebApp/web/index.jsp b/WebApp/web/index.jsp
index fe07c47..cb5ef7d 100644
--- a/WebApp/web/index.jsp
+++ b/WebApp/web/index.jsp
@@ -90,8 +90,9 @@
         } catch (IOException ex) {
         }
         
-        JSONObject JSobjek = null;
-        out.println(responsebuff.toString());
+        JSONObject JSobjek = new JSONObject(responsebuff.toString());
+        /*out.println(responsebuff.toString());
+        //out.println(responsebuff.toString());
             try {
                 new JSONObject(responsebuff.toString());
                 } catch (JSONException ex) {
@@ -101,7 +102,9 @@
                     new JSONArray(responsebuff.toString());
                 } catch (JSONException ex1) {
                 }
-            }
+            }*/
+        
+        //JSobjek = new JSONObject(responsebuff.toString());
         if (JSobjek!=null) {
             //str = (String)JSobjek.get("id");
             int respId = (int)JSobjek.getInt("id");
@@ -111,7 +114,7 @@
             if (respId != 0) {
                 Cookie cookie = new Cookie("token",(String)JSobjek.getString("token"));
                 response.addCookie(cookie);
-                response.sendRedirect("http://localhost:8000/WebApp/profile.jsp");
+                response.sendRedirect("http://localhost:8080/WebApp/profile.jsp");
             }
         }
     %>
diff --git a/WebApp/web/profile.jsp b/WebApp/web/profile.jsp
index 593cd21..4705055 100644
--- a/WebApp/web/profile.jsp
+++ b/WebApp/web/profile.jsp
@@ -5,7 +5,45 @@
 --%>
 
 <%@page contentType="text/html" pageEncoding="UTF-8"%>
+<%@page import="java.text.NumberFormat"%>
+<%@page import="java.util.Locale"%>
+
 <!DOCTYPE html>
+    <%-- start web service invocation --%>
+    <%
+	account.Account_Service serviceValid = new account.Account_Service();
+	account.Account portValid = serviceValid.getAccountPort();
+	String token = null;
+        Cookie cookie = null;
+        Cookie[] cookies = null;
+        cookies = request.getCookies();
+        for (int i = 0; i < cookies.length; i++) {
+            cookie = cookies[i];
+            if((cookie.getName()).compareTo("token") == 0 ){
+               token = cookie.getValue();
+               //cookie.setMaxAge(0);
+            }
+        }
+        //out.println(token);
+        //java.lang.String token = "qwertyuiop";
+	// TODO process result here
+        //account.Account portValid = new Account();
+	account.AccountObj resultValid = portValid.validate(token);
+        int valid = resultValid.getValidate();
+	if (valid == 2) {   
+            for (int i = 0; i < cookies.length; i++) {
+                    cookie = cookies[i];
+                    if((cookie.getName()).compareTo("token") == 0 ){
+                   token = cookie.getValue();
+                   cookie.setMaxAge(0);
+                    }
+            }
+            Cookie cookieExpires = new Cookie("token",resultValid.getToken());
+            response.addCookie(cookieExpires);
+	} else if (valid == 3) {
+       response.sendRedirect("http://localhost:8080/WebApp/index.jsp");
+    }
+    %>
 <html>
   <head>
 
@@ -61,12 +99,12 @@
         </div>
         <div class="img-profile">
           <img src="<?php echo getImageProfile($con, $username); ?>">
-          <h3 style="margin-bottom: 5px;">@<!--?php echo $username ?--></h3>
-          <!--?php echo getNameUser($con, $username); ?><br>
+          <h3 style="margin-bottom: 5px;">@<%out.println(resultValid.getUsername()); %><!--?php echo $username ?--></h3>
+          <%out.println(resultValid.getFullname());%><!--?php echo getNameUser($con, $username); ?><br>
           <?php echo checkStatus($con, $username); ?-->
           <br>
-          <i class="fa fa-envelope-o" aria-hidden="true">&nbsp;<!--?php echo getEmailUser($con, $username);?--></i><br>
-          <i class="fa fa-phone" aria-hidden="true">&nbsp;<!--?php echo getPhoneUser($con, $username); ?--></i>
+          <i class="fa fa-envelope-o" aria-hidden="true">&nbsp;<%out.println(resultValid.getEmail());%><!--?php echo getEmailUser($con, $username);?--></i><br>
+          <i class="fa fa-phone" aria-hidden="true">&nbsp;<%out.println(resultValid.getPhoneNo());%><!--?php echo getPhoneUser($con, $username); ?--></i>
         </div>
     </div>
 
diff --git a/WebApp/web/register.jsp b/WebApp/web/register.jsp
index e71dd92..2bda08e 100644
--- a/WebApp/web/register.jsp
+++ b/WebApp/web/register.jsp
@@ -81,7 +81,7 @@
         } catch (IOException ex) {
         }
         
-        JSONObject JSobjek = null;
+        JSONObject JSobjek = new JSONObject(responsebuff.toString());
             try {
                 new JSONObject(responsebuff.toString());
                 } catch (JSONException ex) {
@@ -101,9 +101,9 @@
             if (respC != -1) {
                 Cookie cookie = new Cookie("token",(String)JSobjek.getString("token"));
                 response.addCookie(cookie);
-                response.sendRedirect("http://localhost:8000/WebApp/profile.jsp");
+                response.sendRedirect("http://localhost:8080/WebApp/profile.jsp");
             } else {
-                response.sendRedirect("http://localhost:8000/WebApp/register.jsp");
+                response.sendRedirect("http://localhost:8080/WebApp/register.jsp");
             }
         }
     %>
diff --git a/data/derby.log b/data/derby.log
index 74686b5..e69de29 100644
--- a/data/derby.log
+++ b/data/derby.log
@@ -1 +0,0 @@
-Wed Nov 08 22:42:02 ICT 2017 : Apache Derby Network Server - 10.11.1.2 - (1629631) started and ready to accept connections on port 1527
-- 
GitLab