Sfoglia il codice sorgente

versão produção

Elemar Deckmann 1 anno fa
parent
commit
249a5b9fb7

+ 75 - 9
src/main/java/com/ademicon/controller/ContratoController.java

@@ -1,6 +1,9 @@
 package com.ademicon.controller;
 
+import java.util.List;
+
 import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
@@ -10,28 +13,81 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
 
-import com.ademicon.model.ContratoModel;
 import com.ademicon.model.ContratoResponse;
 import com.ademicon.service.ContratoService;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fluig.sdk.api.common.SDKException;
 
 @Path("/contrato")
 public class ContratoController {
 
     private static ContratoService contratoService = new ContratoService();
 
+    @GET
+    @Path("/")
+    @Produces(MediaType.APPLICATION_JSON)
+    @Consumes(MediaType.APPLICATION_JSON)
+    public Response doGet() throws SDKException {
+        return Response.ok("{user:ok}").build();
+    }
+
     @POST
-    @Path("/incluir")
+    @Path("/error")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
-    public Response doPost(ContratoModel contrato) throws Exception {
+    public Response doError(String contrato) {
+        try {
+            String resposta = "{\"status\":\"BAD_REQUEST\",\"errors\":[\"cnpjAgenteFinanceiro: size must be between 14 and 14\",\"cpfCnpjDevedorFinanciado: size must be between 11 and 14\",\"veiculos[0].numeroGravame: size must be between 8 and 8\",\"siglaIndiceFinaceiro: valor inválido. Valores válidos: PREFIXADO, POSFIXADO, VALORBEM, IGP, IGPM, IPC, OUTRO\",\"cnpjAgenteFinanceiro: CNPJ inválido ou não credenciado\",\"veiculos[0].identificadorRemarcacao: deve ser 1 ou 2\"],\"message\":\"Validation failed.\",\"code\":400}";
+
+            ObjectMapper mapper = new ObjectMapper();
+            var a = mapper.readTree(resposta);
 
+            return Response.status(Status.BAD_REQUEST).entity(a).build();
+        } catch (Exception e) {
+            System.out.println("ERRO API PLACETI CONTROLLER DOERROR");
+            return Response.status(Status.INTERNAL_SERVER_ERROR).entity(e).build();
+        }
+
+    }
+
+    @POST
+    @Path("/sucess")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response doSucces(String contrato) {
         try {
+            String resposta = "[{\"chassi\":\"98N5X6ttm07f46786\",\"cnpjAgente\":\"84911098000129\",\"codResposta\":\"0\",\"codRespostaDetran\":\"0\",\"hashOperacao\":\"<string>\",\"msgResposta\":\"Ok\",\"msgRespostaDetran\":\"NoOK\",\"numeroRegistroEletronico\":\"20240000143797\",\"operacao\":\"<string>\"}]";
+            ObjectMapper mapper = new ObjectMapper();
 
-            ContratoResponse contratoModel = contratoService.incluir(contrato);
+            List<ContratoResponse> list = mapper.readValue(resposta, new TypeReference<List<ContratoResponse>>() {
+            });
 
-            return Response.status(Status.CREATED).entity(contratoModel).build();
+            return Response.status(Status.CREATED).entity(list).build();
 
         } catch (Exception e) {
+            System.out.println("ERRO API PLACETI CONTROLLER DOSUCESS");
+            return Response.status(Status.INTERNAL_SERVER_ERROR).entity(e).build();
+        }
+    }
+
+    @POST
+    @Path("/incluir")
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response doPost(String contrato) throws Exception {
+
+        try {
+            System.out.println("Chegou na API");
+            System.out.println(contrato);
+            Response contratoModel = contratoService.incluir(contrato);
+            System.out.println("PASSOU SERVIÇO");
+
+            return Response.status(contratoModel.getStatus()).entity(contratoModel.getEntity()).build();
+
+        } catch (Exception e) {
+            System.out.println("ERRO API");
+            System.out.println(e);
             return Response.status(Status.INTERNAL_SERVER_ERROR).build();
         }
     }
@@ -40,14 +96,24 @@ public class ContratoController {
     @Path("/upload/numeroRegistroEletronico/{numeroRegistroEletronico}")
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
-    public Response doUpload(@PathParam(value = "numeroRegistroEletronico") String numeroRegistroEletronico, String arquivo) throws Exception {
+    public Response doUpload(@PathParam(value = "numeroRegistroEletronico") String numeroRegistroEletronico,
+            String arquivo) throws Exception {
         try {
-            ContratoResponse contratoResponse = contratoService.upload(numeroRegistroEletronico, arquivo);
-            return Response.status(Status.OK).entity(contratoResponse).build();
+
+            System.out.println("RECEBIMENTO DE CONTRATO");
+            System.out.println(numeroRegistroEletronico);
+            System.out.println(arquivo);
+
+            Response contratoResponse = contratoService.upload(numeroRegistroEletronico, arquivo);
+            return Response.status(contratoResponse.getStatus()).entity(contratoResponse.getEntity()).build();
+            // return Response.status(Status.OK).entity("{\"status\":\"ok\"}").build();
 
         } catch (Exception e) {
+            System.out.println("FALHA RECEBIMENTO DE CONTRATO");
+            System.out.println(e);
             return Response.status(Status.INTERNAL_SERVER_ERROR).build();
-            
+
         }
     }
+
 }

+ 3 - 1
src/main/java/com/ademicon/model/ContratoModel.java

@@ -1,5 +1,6 @@
 package com.ademicon.model;
 
+import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -12,7 +13,8 @@ import lombok.Setter;
 @Setter
 @AllArgsConstructor
 @NoArgsConstructor
-public class ContratoModel {
+public class ContratoModel implements Serializable {
+    private static final long serialVersionUID = 1L;
     private String bairroDevedor;
     private String cepDevedor;
     private String cnpjAgenteFinanceiro;

+ 79 - 48
src/main/java/com/ademicon/service/ContratoService.java

@@ -1,19 +1,23 @@
 package com.ademicon.service;
 
-import java.net.ConnectException;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.net.HttpURLConnection;
+import java.net.URL;
 
 import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.client.Entity;
-import javax.ws.rs.core.Form;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
-import com.ademicon.model.ContratoModel;
-import com.ademicon.model.ContratoResponse;
 import com.ademicon.model.auth.AccessModel;
-import com.ademicon.repository.ContratoRepository;
 import com.ademicon.service.auth.AccessService;
 import com.ademicon.service.auth.TokenService;
+import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 public class ContratoService {
@@ -22,80 +26,107 @@ public class ContratoService {
 
     private static TokenService tokenService = new TokenService();
 
-    private static ContratoRepository contratoRepository = new ContratoRepository();
-
-    public ContratoResponse incluir(ContratoModel contrato) throws Exception {
+    public Response incluir(String contrato) throws Exception {
 
         AccessModel accessModel = accessService.find();
 
         String token = tokenService.getToken();
+        System.out.println("PLACE CONTRATO");
+        System.out.println(contrato);
 
         Response response = ClientBuilder.newClient()
                 .target(accessModel.getPlaceti_url_base() + "/api/v1/contrato/incluir")
-                .request(MediaType.APPLICATION_JSON).header("Authorization", "Bearer " + token)
+                .request(MediaType.APPLICATION_JSON)
+                .header("Content-Type", "application/json;charset=UTF-8")
+                .header("Accept", "application/json;charset=UTF-8")
+                .header("Authorization", "Bearer " + token)
                 .buildPost(Entity.entity(contrato, MediaType.APPLICATION_JSON)).invoke();
 
-        int status = response.getStatus();
-        if (status == 200) {
-            String json = response.readEntity(String.class);
-            ObjectMapper mapper = new ObjectMapper();
-            return mapper.readValue(json, ContratoResponse.class);
-
-        } else {
-            throw new ConnectException();
-
-        }
+        return response;
 
     }
 
-    public ContratoResponse upload(String numeroRegistroEletronico, String arquivo) throws Exception {
-
+    public Response upload(String numeroRegistroEletronico, String arquivo) throws Exception {
         try {
             AccessModel accessModel = accessService.find();
 
             String token = tokenService.getToken();
 
-            Form form = new Form();
-            form.param("file", arquivo);
+            ObjectMapper mapper = new ObjectMapper();
+
+            JsonNode file = mapper.readTree(arquivo);
+
+            String boundary = "===" + System.currentTimeMillis() + "===";
+            URL url = new URL(
+                    accessModel.getPlaceti_url_base() + "/api/v1/contrato/upload/numeroRegistroEletronico/"
+                            + numeroRegistroEletronico);
+
+            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+            conn.setRequestMethod("PUT");
+            conn.setRequestProperty("Accept-Charset", "UTF-8");
+            conn.setUseCaches(false);
+            conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
+            conn.setRequestProperty("User-Agent", "CodeJava Agent");
+            conn.setDoInput(true);
+            conn.setDoOutput(true);
+            conn.setRequestProperty("Authorization", "Bearer " + token);
+            
 
-            Response response = ClientBuilder.newClient()
-                    .target(accessModel.getPlaceti_url_base()
-                            + "/api/v1/contrato/upload/numeroRegistroEletronico/:numeroRegistroEletronico")
-                    .queryParam("numeroRegistroEletronico", numeroRegistroEletronico)
-                    .request()
-                    .header("Content-Type", "multipart/form-data")
-                    .header("Accept", "application/json")
-                    .header("Authorization", "Bearer " + token)
-                    .buildPost(Entity.form(form)).invoke();
+            /////////////////////////////////////////
+            OutputStream outputStream = conn.getOutputStream();
+            PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream, "UTF-8"), true);
 
-            if (response.getStatus() >= 200 && response.getStatus() < 300) {
-                ContratoResponse contrato = response.readEntity(ContratoResponse.class);
-                if (!contrato.getNumeroRegistroEletronico().isEmpty()) {
-                    int i = contratoRepository.incluir(contrato);
-                    if (i == 1) {
-                        return contrato;
+            writer.append("--" + boundary).append("\r\n");
+            writer.append("Content-Disposition: form-data; name=\"file\"; filename=\"contrato.pdf\"")
+                    .append("\r\n");
+            writer.append("Content-Type: application/octet-stream").append("\r\n");
+            writer.append("Content-Transfer-Encoding: binary").append("\r\n");
+            writer.append("\r\n");
+            writer.flush();
 
-                    } else {
-                        throw new Exception(
-                                "Falha ao gravar o número do contrato: " + contrato.getNumeroRegistroEletronico());
+            byte[] bytes = file.get("file").asText().getBytes("UTF-8");
 
-                    }
+            outputStream.write(bytes);
 
-                } else {
-                    throw new Exception("Falha ao registrar contrato");
+            outputStream.flush();
 
-                }
+            // Fim do campo de arquivo
+            writer.append("\r\n");
+            writer.flush();
+
+            // Fim do corpo da solicitação multipart
+            writer.append("--" + boundary + "--").append("\r\n");
+            writer.close();
+            outputStream.close();
+
+            //////////////////
+
+            conn.connect();
+
+            Reader inputCreateUser = new BufferedReader(
+                    new InputStreamReader(conn.getInputStream(), "UTF-8"));
+            String retCreateUser = "";
+            for (int c = inputCreateUser.read(); c != -1; c = inputCreateUser.read()) {
+                retCreateUser += (char) c;
+            }
+
+            System.out.println(String.format("RESPONSE: %d - %s: data: %s", conn.getResponseCode(),
+                    conn.getResponseMessage(), retCreateUser));
+
+            if (conn.getResponseCode() == 200) {
+                return Response.ok().entity(retCreateUser).build();
 
             } else {
-                throw new Exception("Falha de conexão");
+                return Response.status(conn.getResponseCode()).build();
 
             }
 
         } catch (Exception e) {
+            System.out.println("FALHA FOLDER SERVICE SAVE");
+            System.out.println(e);
+
             throw e;
 
         }
-
     }
-
 }

+ 6 - 1
src/main/webapp/WEB-INF/jboss-web.xml

@@ -3,6 +3,7 @@
     <context-root>/placeti</context-root>
     <disable-cross-context>false</disable-cross-context>
     <security-domain>TOTVSTech</security-domain>
+
     <security-role>
         <role-name>user</role-name>
         <principal-name>totvstech</principal-name>
@@ -18,5 +19,9 @@
     <security-role>
         <role-name>admin</role-name>
         <principal-name>wcmadmin</principal-name>
-    </security-role> 
+    </security-role>
+
+    <valve>
+        <class-name>com.totvs.technology.auth.saml.TOTVSAuthenticatorValve</class-name>
+    </valve>
 </jboss-web>

+ 26 - 21
src/main/webapp/WEB-INF/web.xml

@@ -2,25 +2,30 @@
 	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
-	<security-constraint>
-		<display-name>REST</display-name>
-		<web-resource-collection>
-			<web-resource-name>REST</web-resource-name>
-			<description>REST</description>
-			<url-pattern>/api/*</url-pattern>
-		</web-resource-collection>
-		<auth-constraint>
-			<description>REST</description>
-			<role-name>user</role-name>
-		</auth-constraint>
-	</security-constraint>
-	<security-role>
-		<role-name>totvstech</role-name>
-	</security-role>
-	<security-role>
-		<role-name>user</role-name>
-	</security-role>
-	<security-role>
-		<role-name>sysadmin</role-name>
-	</security-role>
+    <security-constraint>
+        <display-name>REST</display-name>
+        <web-resource-collection>
+            <web-resource-name>REST</web-resource-name>
+            <description>REST</description>
+            <url-pattern>/api/*</url-pattern>
+        </web-resource-collection>
+        <auth-constraint>
+            <description>REST</description>
+            <role-name>user</role-name>
+        </auth-constraint>
+    </security-constraint>
+
+    <login-config>
+        <auth-method>FORM</auth-method>
+        <realm-name>TOTVSTech</realm-name>
+    </login-config>
+    <security-role>
+        <role-name>totvstech</role-name>
+    </security-role>
+    <security-role>
+        <role-name>user</role-name>
+    </security-role>
+    <security-role>
+        <role-name>sysadmin</role-name>
+    </security-role>
 </web-app>