194 lines
17 KiB
HTML
194 lines
17 KiB
HTML
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="de"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>UpdateContact.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">backend</a> > <a href="index.source.html" class="el_package">com.workbenchclassic</a> > <span class="el_source">UpdateContact.java</span></div><h1>UpdateContact.java</h1><pre class="source lang-java linenums">package com.workbenchclassic;
|
|
|
|
import org.json.JSONArray;
|
|
import org.json.JSONObject;
|
|
|
|
import java.sql.Connection;
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.SQLException;
|
|
import java.util.Map;
|
|
import java.util.stream.Collectors;
|
|
|
|
import javax.ws.rs.Consumes;
|
|
import javax.ws.rs.POST;
|
|
import javax.ws.rs.Path;
|
|
import javax.ws.rs.Produces;
|
|
import javax.ws.rs.core.MediaType;
|
|
import javax.ws.rs.core.Response;
|
|
|
|
@Path("/updateContacts")
|
|
<span class="nc" id="L20">public class UpdateContact {</span>
|
|
|
|
<span class="nc" id="L22"> private final DBService dbService = new DBService("dsTranNJTA");</span>
|
|
|
|
@POST
|
|
@Consumes(MediaType.APPLICATION_JSON)
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
public Response doUpdate(String jsonBody) {
|
|
try {
|
|
<span class="nc" id="L29"> JSONObject json = new JSONObject(jsonBody);</span>
|
|
<span class="nc" id="L30"> String station = json.getString("station");</span>
|
|
<span class="nc" id="L31"> JSONArray dataArray = json.getJSONArray("data");</span>
|
|
|
|
<span class="nc" id="L33"> String vendor = dbService.getDatabaseProductName();</span>
|
|
<span class="nc" id="L34"> System.out.println("Aktueller DB-Vendor: " + vendor);</span>
|
|
|
|
<span class="nc" id="L36"> Connection conn = dbService.getConnection();</span>
|
|
<span class="nc" id="L37"> GetMetadata metadata = new GetMetadata();</span>
|
|
<span class="nc" id="L38"> String extPlantResponseString = metadata.getExtPlantJson(station);</span>
|
|
<span class="nc" id="L39"> JSONObject extPlantResponse = new JSONObject(extPlantResponseString);</span>
|
|
|
|
<span class="nc" id="L41"> String errorCode = extPlantResponse.optString("errorCode", "0");</span>
|
|
<span class="nc bnc" id="L42" title="All 2 branches missed."> if (!"0".equals(errorCode)) {</span>
|
|
<span class="nc" id="L43"> return Response.status(Response.Status.BAD_REQUEST)</span>
|
|
<span class="nc" id="L44"> .entity(extPlantResponse.toString())</span>
|
|
<span class="nc" id="L45"> .build();</span>
|
|
}
|
|
|
|
<span class="nc" id="L48"> String werkData = extPlantResponse.optString("data", "[]");</span>
|
|
<span class="nc" id="L49"> JSONArray werkArr = new JSONArray(werkData);</span>
|
|
|
|
<span class="nc" id="L51"> String WERK_NR = null;</span>
|
|
<span class="nc" id="L52"> String COMPANY_NO = null;</span>
|
|
<span class="nc" id="L53"> String CLIENT_NO = null;</span>
|
|
<span class="nc bnc" id="L54" title="All 2 branches missed."> if (werkArr.length() > 0) {</span>
|
|
<span class="nc" id="L55"> JSONObject row = werkArr.getJSONObject(0);</span>
|
|
<span class="nc" id="L56"> WERK_NR = row.optString("werk_nr", null);</span>
|
|
<span class="nc" id="L57"> COMPANY_NO = row.optString("ext_company_nr", null);</span>
|
|
<span class="nc" id="L58"> CLIENT_NO = row.optString("client_nr", null);</span>
|
|
}
|
|
|
|
<span class="nc" id="L61"> System.out.println("Ermittelte werknummer: " + COMPANY_NO);</span>
|
|
|
|
<span class="nc" id="L63"> boolean isMSSQL = "Microsoft SQL Server".equals(vendor);</span>
|
|
<span class="nc" id="L64"> boolean isOracle = "Oracle".equals(vendor);</span>
|
|
|
|
<span class="nc" id="L66"> conn.setAutoCommit(false);</span>
|
|
try {
|
|
<span class="nc" id="L68"> insertIdocStatus(conn, isMSSQL, isOracle);</span>
|
|
|
|
<span class="nc bnc" id="L70" title="All 2 branches missed."> for (int i = 0; i < dataArray.length(); i++) {</span>
|
|
<span class="nc" id="L71"> JSONObject obj = dataArray.getJSONObject(i);</span>
|
|
<span class="nc" id="L72"> Map<String, String> keyMap = obj.keySet().stream()</span>
|
|
<span class="nc" id="L73"> .collect(Collectors.toMap(</span>
|
|
String::toLowerCase,
|
|
<span class="nc" id="L75"> key -> key,</span>
|
|
<span class="nc" id="L76"> (existing, replacement) -> existing));</span>
|
|
|
|
<span class="nc" id="L78"> insertContact(conn, obj, COMPANY_NO, WERK_NR, CLIENT_NO, isMSSQL, isOracle, keyMap);</span>
|
|
|
|
<span class="nc bnc" id="L80" title="All 2 branches missed."> if (obj.has("artikel")</span>
|
|
<span class="nc bnc" id="L81" title="All 2 branches missed."> && !obj.isNull("artikel")</span>
|
|
<span class="nc bnc" id="L82" title="All 2 branches missed."> && !String.valueOf(obj.get("artikel")).trim().isEmpty()) {</span>
|
|
<span class="nc" id="L83"> insertMaterialContact(conn, obj, COMPANY_NO, WERK_NR, CLIENT_NO, isMSSQL, isOracle, keyMap);</span>
|
|
}
|
|
}
|
|
|
|
<span class="nc" id="L87"> conn.commit();</span>
|
|
<span class="nc" id="L88"> } catch (SQLException e) {</span>
|
|
<span class="nc" id="L89"> conn.rollback();</span>
|
|
<span class="nc" id="L90"> throw e;</span>
|
|
} finally {
|
|
<span class="nc" id="L92"> conn.setAutoCommit(true);</span>
|
|
<span class="nc" id="L93"> conn.close();</span>
|
|
}
|
|
|
|
<span class="nc" id="L96"> JSONObject response = new JSONObject();</span>
|
|
<span class="nc" id="L97"> response.put("status", "ok");</span>
|
|
<span class="nc" id="L98"> response.put("message", "Daten wurden erfolgreich verarbeitet.");</span>
|
|
<span class="nc" id="L99"> return Response.ok(response.toString()).build();</span>
|
|
|
|
<span class="nc" id="L101"> } catch (Exception e) {</span>
|
|
<span class="nc" id="L102"> e.printStackTrace();</span>
|
|
<span class="nc" id="L103"> JSONObject error = new JSONObject();</span>
|
|
<span class="nc" id="L104"> error.put("status", "error");</span>
|
|
<span class="nc" id="L105"> error.put("message", e.getMessage());</span>
|
|
<span class="nc" id="L106"> return Response.status(Response.Status.INTERNAL_SERVER_ERROR)</span>
|
|
<span class="nc" id="L107"> .entity(error.toString())</span>
|
|
<span class="nc" id="L108"> .build();</span>
|
|
}
|
|
}
|
|
|
|
private void insertContact(Connection conn, JSONObject obj, String COMPANY_NO, String WERK_NR, String CLIENT_NO,
|
|
boolean isMSSQL, boolean isOracle, Map<String, String> keyMap) throws SQLException {
|
|
String sql;
|
|
<span class="nc bnc" id="L115" title="All 2 branches missed."> if (isMSSQL) {</span>
|
|
<span class="nc" id="L116"> sql = "INSERT INTO xtran.tran_contact (TRAN_ID, IDOC_ID, SOURCE, STATUS, CREATED, STAMP, PLANT_NO, CLIENT_NO, COMPANY_NO, CONTACT_CODE, CONTACT_NAME, CONTACT_GROUP, STREET, ZIP_CODE, COUNTRY, CITY, IS_SUPPLIER, IS_CUSTOMER, IS_MANUFACTURER, CONTACT_CODE_ERP, INVENTORY, CONTACT_STATE, LATITUDE, LONGITUDE) "</span>
|
|
+ "VALUES (NEXT VALUE FOR xtran.SEQ_tran_contact, (SELECT MAX(id) FROM xtran.tran_idocstatus), ?, ?, GETDATE(), GETDATE(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
|
<span class="nc bnc" id="L118" title="All 2 branches missed."> } else if (isOracle) {</span>
|
|
<span class="nc" id="L119"> sql = "INSERT INTO tran.tran_contact (TRAN_ID, IDOC_ID, SOURCE, STATUS, CREATED, STAMP, PLANT_NO, CLIENT_NO, COMPANY_NO, CONTACT_CODE, CONTACT_NAME, CONTACT_GROUP, STREET, ZIP_CODE, COUNTRY, CITY, IS_SUPPLIER, IS_CUSTOMER, IS_MANUFACTURER, CONTACT_CODE_ERP, INVENTORY, CONTACT_STATE, LATITUDE, LONGITUDE) "</span>
|
|
+ "VALUES (tran.SEQ_TRAN_contact.nextVal, (SELECT MAX(id) FROM tran.tran_idocstatus), ?, ?, SYSDATE, SYSDATE, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
|
} else {
|
|
<span class="nc" id="L122"> throw new SQLException("DB-Vendor nicht implementiert");</span>
|
|
}
|
|
|
|
<span class="nc" id="L125"> try (PreparedStatement ps = conn.prepareStatement(sql)) {</span>
|
|
<span class="nc" id="L126"> ps.setInt(1, obj.optInt(keyMap.getOrDefault("source", "source"), 0));</span>
|
|
<span class="nc" id="L127"> ps.setInt(2, obj.optInt(keyMap.getOrDefault("status", "status"), 0));</span>
|
|
<span class="nc" id="L128"> ps.setString(3, WERK_NR);</span>
|
|
<span class="nc" id="L129"> ps.setString(4, CLIENT_NO);</span>
|
|
<span class="nc" id="L130"> ps.setString(5, COMPANY_NO);</span>
|
|
<span class="nc" id="L131"> ps.setString(6, obj.optString(keyMap.getOrDefault("contact_code", "contact_code"), ""));</span>
|
|
<span class="nc" id="L132"> ps.setString(7, obj.optString(keyMap.getOrDefault("contact_name", "contact_name"), ""));</span>
|
|
<span class="nc" id="L133"> ps.setString(8, obj.optString(keyMap.getOrDefault("contact_group", "contact_group"), ""));</span>
|
|
<span class="nc" id="L134"> ps.setString(9, obj.optString(keyMap.getOrDefault("street", "street"), ""));</span>
|
|
<span class="nc" id="L135"> ps.setString(10, obj.optString(keyMap.getOrDefault("zip_code", "zip_code"), ""));</span>
|
|
<span class="nc" id="L136"> ps.setString(11, obj.optString(keyMap.getOrDefault("country", "country"), ""));</span>
|
|
<span class="nc" id="L137"> ps.setString(12, obj.optString(keyMap.getOrDefault("city", "city"), ""));</span>
|
|
<span class="nc" id="L138"> ps.setInt(13, obj.optInt(keyMap.getOrDefault("is_supplier", "is_supplier"), 0));</span>
|
|
<span class="nc" id="L139"> ps.setInt(14, obj.optInt(keyMap.getOrDefault("is_customer", "is_customer"), 0));</span>
|
|
<span class="nc" id="L140"> ps.setInt(15, obj.optInt(keyMap.getOrDefault("is_manufacturer", "is_manufacturer"), 0));</span>
|
|
<span class="nc" id="L141"> ps.setString(16, obj.optString(keyMap.getOrDefault("contact_code_erp", "contact_code_erp"), ""));</span>
|
|
<span class="nc" id="L142"> ps.setInt(17, obj.optInt(keyMap.getOrDefault("inventory", "inventory"), 0));</span>
|
|
<span class="nc" id="L143"> ps.setInt(18, obj.optInt(keyMap.getOrDefault("contact_state", "contact_state"), 0));</span>
|
|
<span class="nc" id="L144"> ps.setDouble(19, obj.optDouble(keyMap.getOrDefault("latitude", "latitude"), 0.0));</span>
|
|
<span class="nc" id="L145"> ps.setDouble(20, obj.optDouble(keyMap.getOrDefault("longitude", "longitude"), 0.0));</span>
|
|
<span class="nc" id="L146"> ps.executeUpdate();</span>
|
|
}
|
|
<span class="nc" id="L148"> }</span>
|
|
|
|
private void insertIdocStatus(Connection conn, boolean isMSSQL, boolean isOracle) throws SQLException {
|
|
String sql;
|
|
<span class="nc bnc" id="L152" title="All 2 branches missed."> if (isMSSQL) {</span>
|
|
<span class="nc" id="L153"> sql = "INSERT INTO xtran.tran_idocstatus (ID, DATE_CREATION, ewstatus, errorcode, content_type, source) VALUES (NEXT VALUE FOR xtran.seq_tranidocstatus, GETDATE(), 1, 0, 57, 0)";</span>
|
|
<span class="nc bnc" id="L154" title="All 2 branches missed."> } else if (isOracle) {</span>
|
|
<span class="nc" id="L155"> sql = "INSERT INTO tran.tran_idocstatus (ID, DATE_CREATION, ewstatus, errorcode, content_type, source) VALUES (tran.seq_tranidocstatus.nextval, SYSDATE, 1, 0, 57, 0)";</span>
|
|
} else {
|
|
<span class="nc" id="L157"> throw new SQLException("DB-Vendor nicht implementiert");</span>
|
|
}
|
|
|
|
<span class="nc" id="L160"> try (PreparedStatement ps = conn.prepareStatement(sql)) {</span>
|
|
<span class="nc" id="L161"> ps.executeUpdate();</span>
|
|
}
|
|
<span class="nc" id="L163"> }</span>
|
|
|
|
private void insertMaterialContact(Connection conn, JSONObject obj, String COMPANY_NO, String WERK_NR,
|
|
String CLIENT_NO, boolean isMSSQL, boolean isOracle, Map<String, String> keyMap) throws SQLException {
|
|
String sql;
|
|
<span class="nc bnc" id="L168" title="All 2 branches missed."> if (isMSSQL) {</span>
|
|
<span class="nc" id="L169"> sql = "INSERT INTO xtran.tran_material_contact (TRAN_ID, SOURCE, STATUS, CREATED, STAMP, CONTACT_CODE, MATERIAL_NO, MATERIAL_NO_EXT, MATERIAL_DESC_EXT, CONTACT_TYPE, DELETE_FLAG, PLANT_NO, COMPANY_NO, CLIENT_NO, IDOC_ID) "</span>
|
|
+ "VALUES (NEXT VALUE FOR xtran.SEQ_tran_material_contact, ?, ?, GETDATE(), GETDATE(), ?, ?, ?, ?, ?, ?, ?, ?, ?, (SELECT MAX(id) FROM xtran.tran_idocstatus))";
|
|
<span class="nc bnc" id="L171" title="All 2 branches missed."> } else if (isOracle) {</span>
|
|
<span class="nc" id="L172"> sql = "INSERT INTO tran.tran_material_contact (TRAN_ID, SOURCE, STATUS, CREATED, STAMP, CONTACT_CODE, MATERIAL_NO, MATERIAL_NO_EXT, MATERIAL_DESC_EXT, CONTACT_TYPE, DELETE_FLAG, PLANT_NO, COMPANY_NO, CLIENT_NO, IDOC_ID) "</span>
|
|
+ "VALUES (tran.SEQ_TRAN_material_contact.nextVal, ?, ?, SYSDATE, SYSDATE, ?, ?, ?, ?, ?, ?, ?, ?, ?, (SELECT MAX(id) FROM tran.tran_idocstatus))";
|
|
} else {
|
|
<span class="nc" id="L175"> throw new SQLException("DB-Vendor nicht implementiert");</span>
|
|
}
|
|
|
|
<span class="nc" id="L178"> try (PreparedStatement ps = conn.prepareStatement(sql)) {</span>
|
|
<span class="nc" id="L179"> ps.setInt(1, obj.optInt(keyMap.getOrDefault("source", "source"), 0));</span>
|
|
<span class="nc" id="L180"> ps.setInt(2, obj.optInt(keyMap.getOrDefault("status", "status"), 0));</span>
|
|
<span class="nc" id="L181"> ps.setString(3, obj.optString(keyMap.getOrDefault("contact_code", "contact_code"), ""));</span>
|
|
<span class="nc" id="L182"> ps.setString(4, obj.optString(keyMap.getOrDefault("artikel", "artikel"), ""));</span>
|
|
<span class="nc" id="L183"> ps.setString(5, obj.optString(keyMap.getOrDefault("part_ext", "part_ext"), ""));</span>
|
|
<span class="nc" id="L184"> ps.setString(6, obj.optString(keyMap.getOrDefault("material_desc_ext", "material_desc_ext"), ""));</span>
|
|
<span class="nc" id="L185"> ps.setInt(7, obj.optInt(keyMap.getOrDefault("art_bez_ext", "art_bez_ext"), 0));</span>
|
|
<span class="nc" id="L186"> ps.setInt(8, obj.optInt(keyMap.getOrDefault("delete_flag", "delete_flag"), 0));</span>
|
|
<span class="nc" id="L187"> ps.setString(9, WERK_NR);</span>
|
|
<span class="nc" id="L188"> ps.setString(10, COMPANY_NO);</span>
|
|
<span class="nc" id="L189"> ps.setString(11, CLIENT_NO);</span>
|
|
<span class="nc" id="L190"> ps.executeUpdate();</span>
|
|
}
|
|
<span class="nc" id="L192"> }</span>
|
|
}
|
|
</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.4.201905082037</span></div></body></html> |