Konflikte gelöst und synchronisiert

This commit is contained in:
Chris 2026-03-18 22:21:46 +01:00
parent 3c4bf93fd4
commit 77f814bc2b
16 changed files with 145 additions and 326 deletions

BIN
backend/.DS_Store vendored

Binary file not shown.

View File

@ -1,4 +1,3 @@
<<<<<<< Updated upstream
package com.workbenchclassic; package com.workbenchclassic;
import org.json.JSONArray; import org.json.JSONArray;
@ -41,13 +40,10 @@ public class UpdateContact {
String errorCode = extPlantResponse.optString("errorCode", "0"); String errorCode = extPlantResponse.optString("errorCode", "0");
if (!"0".equals(errorCode)) { if (!"0".equals(errorCode)) {
// Return an HTTP 400 or 500 with that JSON return Response.status(Response.Status.BAD_REQUEST)
return Response.status(Response.Status.BAD_REQUEST).entity(extPlantResponse.toString()).build(); .entity(extPlantResponse.toString())
.build();
} }
// 3) werknummer ermitteln
// werkResultJson könnte z.B. so aussehen:
// {"errorCode":"0","errorMessage":"Done","data":"[{\"werknummer\":\"ABC\"}]"}
String werkData = extPlantResponse.optString("data", "[]"); String werkData = extPlantResponse.optString("data", "[]");
JSONArray werkArr = new JSONArray(werkData); JSONArray werkArr = new JSONArray(werkData);
@ -67,22 +63,27 @@ public class UpdateContact {
boolean isMSSQL = "Microsoft SQL Server".equals(vendor); boolean isMSSQL = "Microsoft SQL Server".equals(vendor);
boolean isOracle = "Oracle".equals(vendor); boolean isOracle = "Oracle".equals(vendor);
insertIdocStatus(conn, isMSSQL, isOracle);
conn.setAutoCommit(false); conn.setAutoCommit(false);
try { try {
insertIdocStatus(conn, isMSSQL, isOracle);
for (int i = 0; i < dataArray.length(); i++) { for (int i = 0; i < dataArray.length(); i++) {
JSONObject obj = dataArray.getJSONObject(i); JSONObject obj = dataArray.getJSONObject(i);
Map<String, String> keyMap = obj.keySet().stream() Map<String, String> keyMap = obj.keySet().stream()
.collect(Collectors.toMap(String::toLowerCase, key -> key, .collect(Collectors.toMap(
String::toLowerCase,
key -> key,
(existing, replacement) -> existing)); (existing, replacement) -> existing));
insertContact(conn, obj, COMPANY_NO, WERK_NR, CLIENT_NO, isMSSQL, isOracle, keyMap); insertContact(conn, obj, COMPANY_NO, WERK_NR, CLIENT_NO, isMSSQL, isOracle, keyMap);
if (obj.has("artikel") && !obj.isNull("artikel")
if (obj.has("artikel")
&& !obj.isNull("artikel")
&& !String.valueOf(obj.get("artikel")).trim().isEmpty()) { && !String.valueOf(obj.get("artikel")).trim().isEmpty()) {
insertMaterialContact(conn, obj, COMPANY_NO, WERK_NR, CLIENT_NO, isMSSQL, isOracle, keyMap); insertMaterialContact(conn, obj, COMPANY_NO, WERK_NR, CLIENT_NO, isMSSQL, isOracle, keyMap);
} }
} }
conn.commit(); conn.commit();
} catch (SQLException e) { } catch (SQLException e) {
conn.rollback(); conn.rollback();
@ -102,12 +103,14 @@ public class UpdateContact {
JSONObject error = new JSONObject(); JSONObject error = new JSONObject();
error.put("status", "error"); error.put("status", "error");
error.put("message", e.getMessage()); error.put("message", e.getMessage());
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error.toString()).build(); return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
.entity(error.toString())
.build();
} }
} }
private void insertContact(Connection conn, JSONObject obj, String COMPANY_NO, String WERK_NR, String CLIENT_NO, 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 { boolean isMSSQL, boolean isOracle, Map<String, String> keyMap) throws SQLException {
String sql; String sql;
if (isMSSQL) { if (isMSSQL) {
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) " 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) "
@ -153,13 +156,14 @@ public class UpdateContact {
} else { } else {
throw new SQLException("DB-Vendor nicht implementiert"); throw new SQLException("DB-Vendor nicht implementiert");
} }
try (PreparedStatement ps = conn.prepareStatement(sql)) { try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.executeUpdate(); ps.executeUpdate();
} }
} }
private void insertMaterialContact(Connection conn, JSONObject obj, String COMPANY_NO, String WERK_NR, 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 CLIENT_NO, boolean isMSSQL, boolean isOracle, Map<String, String> keyMap) throws SQLException {
String sql; String sql;
if (isMSSQL) { if (isMSSQL) {
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) " 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) "
@ -177,7 +181,7 @@ public class UpdateContact {
ps.setString(3, obj.optString(keyMap.getOrDefault("contact_code", "contact_code"), "")); ps.setString(3, obj.optString(keyMap.getOrDefault("contact_code", "contact_code"), ""));
ps.setString(4, obj.optString(keyMap.getOrDefault("artikel", "artikel"), "")); ps.setString(4, obj.optString(keyMap.getOrDefault("artikel", "artikel"), ""));
ps.setString(5, obj.optString(keyMap.getOrDefault("part_ext", "part_ext"), "")); ps.setString(5, obj.optString(keyMap.getOrDefault("part_ext", "part_ext"), ""));
ps.setString(6, obj.optString(keyMap.getOrDefault("part_ext", "material_desc_ext"), "")); ps.setString(6, obj.optString(keyMap.getOrDefault("material_desc_ext", "material_desc_ext"), ""));
ps.setInt(7, obj.optInt(keyMap.getOrDefault("art_bez_ext", "art_bez_ext"), 0)); ps.setInt(7, obj.optInt(keyMap.getOrDefault("art_bez_ext", "art_bez_ext"), 0));
ps.setInt(8, obj.optInt(keyMap.getOrDefault("delete_flag", "delete_flag"), 0)); ps.setInt(8, obj.optInt(keyMap.getOrDefault("delete_flag", "delete_flag"), 0));
ps.setString(9, WERK_NR); ps.setString(9, WERK_NR);
@ -187,193 +191,3 @@ public class UpdateContact {
} }
} }
} }
=======
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")
public class UpdateContact {
private final DBService dbService = new DBService("dsTranNJTA");
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response doUpdate(String jsonBody) {
try {
JSONObject json = new JSONObject(jsonBody);
String station = json.getString("station");
JSONArray dataArray = json.getJSONArray("data");
String vendor = dbService.getDatabaseProductName();
System.out.println("Aktueller DB-Vendor: " + vendor);
Connection conn = dbService.getConnection();
GetMetadata metadata = new GetMetadata();
String extPlantResponseString = metadata.getExtPlantJson(station);
JSONObject extPlantResponse = new JSONObject(extPlantResponseString);
String errorCode = extPlantResponse.optString("errorCode", "0");
if (!"0".equals(errorCode)) {
// Return an HTTP 400 or 500 with that JSON
return Response.status(Response.Status.BAD_REQUEST).entity(extPlantResponse.toString()).build();
}
// 3) werknummer ermitteln
// werkResultJson könnte z.B. so aussehen:
// {"errorCode":"0","errorMessage":"Done","data":"[{\"werknummer\":\"ABC\"}]"}
String werkData = extPlantResponse.optString("data", "[]");
JSONArray werkArr = new JSONArray(werkData);
String WERK_NR = null;
String COMPANY_NO = null;
String CLIENT_NO = null;
if (werkArr.length() > 0) {
JSONObject row = werkArr.getJSONObject(0);
WERK_NR = row.optString("werk_nr", null);
COMPANY_NO = row.optString("ext_company_nr", null);
CLIENT_NO = row.optString("client_nr", null);
}
System.out.println("Ermittelte werknummer: " + COMPANY_NO);
boolean isMSSQL = "Microsoft SQL Server".equals(vendor);
boolean isOracle = "Oracle".equals(vendor);
insertIdocStatus(conn, isMSSQL, isOracle);
conn.setAutoCommit(false);
try {
for (int i = 0; i < dataArray.length(); i++) {
JSONObject obj = dataArray.getJSONObject(i);
Map<String, String> keyMap = obj.keySet().stream()
.collect(Collectors.toMap(String::toLowerCase, key -> key,
(existing, replacement) -> existing));
insertContact(conn, obj, COMPANY_NO, WERK_NR, CLIENT_NO, isMSSQL, isOracle, keyMap);
if (obj.has("artikel") && !obj.isNull("artikel")
&& !String.valueOf(obj.get("artikel")).trim().isEmpty()) {
insertMaterialContact(conn, obj, COMPANY_NO, WERK_NR, CLIENT_NO, isMSSQL, isOracle, keyMap);
}
}
conn.commit();
} catch (SQLException e) {
conn.rollback();
throw e;
} finally {
conn.setAutoCommit(true);
conn.close();
}
JSONObject response = new JSONObject();
response.put("status", "ok");
response.put("message", "Daten wurden erfolgreich verarbeitet.");
return Response.ok(response.toString()).build();
} catch (Exception e) {
e.printStackTrace();
JSONObject error = new JSONObject();
error.put("status", "error");
error.put("message", e.getMessage());
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error.toString()).build();
}
}
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;
if (isMSSQL) {
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) "
+ "VALUES (NEXT VALUE FOR xtran.SEQ_tran_contact, (SELECT MAX(id) FROM xtran.tran_idocstatus), ?, ?, GETDATE(), GETDATE(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
} else if (isOracle) {
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) "
+ "VALUES (tran.SEQ_TRAN_contact.nextVal, (SELECT MAX(id) FROM tran.tran_idocstatus), ?, ?, SYSDATE, SYSDATE, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
} else {
throw new SQLException("DB-Vendor nicht implementiert");
}
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setInt(1, obj.optInt(keyMap.getOrDefault("source", "source"), 0));
ps.setInt(2, obj.optInt(keyMap.getOrDefault("status", "status"), 0));
ps.setString(3, WERK_NR);
ps.setString(4, CLIENT_NO);
ps.setString(5, COMPANY_NO);
ps.setString(6, obj.optString(keyMap.getOrDefault("contact_code", "contact_code"), ""));
ps.setString(7, obj.optString(keyMap.getOrDefault("contact_name", "contact_name"), ""));
ps.setString(8, obj.optString(keyMap.getOrDefault("contact_group", "contact_group"), ""));
ps.setString(9, obj.optString(keyMap.getOrDefault("street", "street"), ""));
ps.setString(10, obj.optString(keyMap.getOrDefault("zip_code", "zip_code"), ""));
ps.setString(11, obj.optString(keyMap.getOrDefault("country", "country"), ""));
ps.setString(12, obj.optString(keyMap.getOrDefault("city", "city"), ""));
ps.setInt(13, obj.optInt(keyMap.getOrDefault("is_supplier", "is_supplier"), 0));
ps.setInt(14, obj.optInt(keyMap.getOrDefault("is_customer", "is_customer"), 0));
ps.setInt(15, obj.optInt(keyMap.getOrDefault("is_manufacturer", "is_manufacturer"), 0));
ps.setString(16, obj.optString(keyMap.getOrDefault("contact_code_erp", "contact_code_erp"), ""));
ps.setInt(17, obj.optInt(keyMap.getOrDefault("inventory", "inventory"), 0));
ps.setInt(18, obj.optInt(keyMap.getOrDefault("contact_state", "contact_state"), 0));
ps.setDouble(19, obj.optDouble(keyMap.getOrDefault("latitude", "latitude"), 0.0));
ps.setDouble(20, obj.optDouble(keyMap.getOrDefault("longitude", "longitude"), 0.0));
ps.executeUpdate();
}
}
private void insertIdocStatus(Connection conn, boolean isMSSQL, boolean isOracle) throws SQLException {
String sql;
if (isMSSQL) {
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)";
} else if (isOracle) {
sql = "INSERT INTO tran.tran_idocstatus (ID, DATE_CREATION, ewstatus, errorcode, content_type, source) VALUES (tran.seq_tranidocstatus.nextval, SYSDATE, 1, 0, 57, 0)";
} else {
throw new SQLException("DB-Vendor nicht implementiert");
}
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.executeUpdate();
}
}
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;
if (isMSSQL) {
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) "
+ "VALUES (NEXT VALUE FOR xtran.SEQ_tran_material_contact, ?, ?, GETDATE(), GETDATE(), ?, ?, ?, ?, ?, ?, ?, ?, ?, (SELECT MAX(id) FROM xtran.tran_idocstatus))";
} else if (isOracle) {
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) "
+ "VALUES (tran.SEQ_TRAN_material_contact.nextVal, ?, ?, SYSDATE, SYSDATE, ?, ?, ?, ?, ?, ?, ?, ?, ?, (SELECT MAX(id) FROM tran.tran_idocstatus))";
} else {
throw new SQLException("DB-Vendor nicht implementiert");
}
try (PreparedStatement ps = conn.prepareStatement(sql)) {
ps.setInt(1, obj.optInt(keyMap.getOrDefault("source", "source"), 0));
ps.setInt(2, obj.optInt(keyMap.getOrDefault("status", "status"), 0));
ps.setString(3, obj.optString(keyMap.getOrDefault("contact_code", "contact_code"), ""));
ps.setString(4, obj.optString(keyMap.getOrDefault("artikel", "artikel"), ""));
ps.setString(5, obj.optString(keyMap.getOrDefault("part_ext", "part_ext"), ""));
ps.setString(6, obj.optString(keyMap.getOrDefault("part_ext", "material_desc_ext"), ""));
ps.setInt(7, obj.optInt(keyMap.getOrDefault("art_bez_ext", "art_bez_ext"), 0));
ps.setInt(8, obj.optInt(keyMap.getOrDefault("delete_flag", "delete_flag"), 0));
ps.setString(9, WERK_NR);
ps.setString(10, COMPANY_NO);
ps.setString(11, CLIENT_NO);
ps.executeUpdate();
}
}
}
>>>>>>> Stashed changes

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -40,150 +40,155 @@ import javax.ws.rs.core.Response;
<span class="nc" id="L41"> String errorCode = extPlantResponse.optString(&quot;errorCode&quot;, &quot;0&quot;);</span> <span class="nc" id="L41"> String errorCode = extPlantResponse.optString(&quot;errorCode&quot;, &quot;0&quot;);</span>
<span class="nc bnc" id="L42" title="All 2 branches missed."> if (!&quot;0&quot;.equals(errorCode)) {</span> <span class="nc bnc" id="L42" title="All 2 branches missed."> if (!&quot;0&quot;.equals(errorCode)) {</span>
// Return an HTTP 400 or 500 with that JSON <span class="nc" id="L43"> return Response.status(Response.Status.BAD_REQUEST)</span>
<span class="nc" id="L44"> return Response.status(Response.Status.BAD_REQUEST).entity(extPlantResponse.toString()).build();</span> <span class="nc" id="L44"> .entity(extPlantResponse.toString())</span>
} <span class="nc" id="L45"> .build();</span>
// 3) werknummer ermitteln
// werkResultJson könnte z.B. so aussehen:
// {&quot;errorCode&quot;:&quot;0&quot;,&quot;errorMessage&quot;:&quot;Done&quot;,&quot;data&quot;:&quot;[{\&quot;werknummer\&quot;:\&quot;ABC\&quot;}]&quot;}
<span class="nc" id="L51"> String werkData = extPlantResponse.optString(&quot;data&quot;, &quot;[]&quot;);</span>
<span class="nc" id="L52"> JSONArray werkArr = new JSONArray(werkData);</span>
<span class="nc" id="L54"> String WERK_NR = null;</span>
<span class="nc" id="L55"> String COMPANY_NO = null;</span>
<span class="nc" id="L56"> String CLIENT_NO = null;</span>
<span class="nc bnc" id="L57" title="All 2 branches missed."> if (werkArr.length() &gt; 0) {</span>
<span class="nc" id="L58"> JSONObject row = werkArr.getJSONObject(0);</span>
<span class="nc" id="L59"> WERK_NR = row.optString(&quot;werk_nr&quot;, null);</span>
<span class="nc" id="L60"> COMPANY_NO = row.optString(&quot;ext_company_nr&quot;, null);</span>
<span class="nc" id="L61"> CLIENT_NO = row.optString(&quot;client_nr&quot;, null);</span>
} }
<span class="nc" id="L64"> System.out.println(&quot;Ermittelte werknummer: &quot; + COMPANY_NO);</span> <span class="nc" id="L48"> String werkData = extPlantResponse.optString(&quot;data&quot;, &quot;[]&quot;);</span>
<span class="nc" id="L49"> JSONArray werkArr = new JSONArray(werkData);</span>
<span class="nc" id="L66"> boolean isMSSQL = &quot;Microsoft SQL Server&quot;.equals(vendor);</span> <span class="nc" id="L51"> String WERK_NR = null;</span>
<span class="nc" id="L67"> boolean isOracle = &quot;Oracle&quot;.equals(vendor);</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() &gt; 0) {</span>
<span class="nc" id="L55"> JSONObject row = werkArr.getJSONObject(0);</span>
<span class="nc" id="L56"> WERK_NR = row.optString(&quot;werk_nr&quot;, null);</span>
<span class="nc" id="L57"> COMPANY_NO = row.optString(&quot;ext_company_nr&quot;, null);</span>
<span class="nc" id="L58"> CLIENT_NO = row.optString(&quot;client_nr&quot;, null);</span>
}
<span class="nc" id="L69"> insertIdocStatus(conn, isMSSQL, isOracle);</span> <span class="nc" id="L61"> System.out.println(&quot;Ermittelte werknummer: &quot; + COMPANY_NO);</span>
<span class="nc" id="L71"> conn.setAutoCommit(false);</span> <span class="nc" id="L63"> boolean isMSSQL = &quot;Microsoft SQL Server&quot;.equals(vendor);</span>
<span class="nc" id="L64"> boolean isOracle = &quot;Oracle&quot;.equals(vendor);</span>
<span class="nc" id="L66"> conn.setAutoCommit(false);</span>
try { try {
<span class="nc bnc" id="L73" title="All 2 branches missed."> for (int i = 0; i &lt; dataArray.length(); i++) {</span> <span class="nc" id="L68"> insertIdocStatus(conn, isMSSQL, isOracle);</span>
<span class="nc" id="L74"> JSONObject obj = dataArray.getJSONObject(i);</span>
<span class="nc" id="L75"> Map&lt;String, String&gt; keyMap = obj.keySet().stream()</span>
<span class="nc" id="L76"> .collect(Collectors.toMap(String::toLowerCase, key -&gt; key,</span>
<span class="nc" id="L77"> (existing, replacement) -&gt; 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="L79" title="All 4 branches missed."> if (obj.has(&quot;artikel&quot;) &amp;&amp; !obj.isNull(&quot;artikel&quot;)</span>
<span class="nc bnc" id="L80" title="All 2 branches missed."> &amp;&amp; !String.valueOf(obj.get(&quot;artikel&quot;)).trim().isEmpty()) {</span>
<span class="nc" id="L81"> insertMaterialContact(conn, obj, COMPANY_NO, WERK_NR, CLIENT_NO, isMSSQL, isOracle, keyMap);</span>
}
<span class="nc bnc" id="L70" title="All 2 branches missed."> for (int i = 0; i &lt; dataArray.length(); i++) {</span>
<span class="nc" id="L71"> JSONObject obj = dataArray.getJSONObject(i);</span>
<span class="nc" id="L72"> Map&lt;String, String&gt; keyMap = obj.keySet().stream()</span>
<span class="nc" id="L73"> .collect(Collectors.toMap(</span>
String::toLowerCase,
<span class="nc" id="L75"> key -&gt; key,</span>
<span class="nc" id="L76"> (existing, replacement) -&gt; 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(&quot;artikel&quot;)</span>
<span class="nc bnc" id="L81" title="All 2 branches missed."> &amp;&amp; !obj.isNull(&quot;artikel&quot;)</span>
<span class="nc bnc" id="L82" title="All 2 branches missed."> &amp;&amp; !String.valueOf(obj.get(&quot;artikel&quot;)).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="L85"> conn.commit();</span>
<span class="nc" id="L86"> } catch (SQLException e) {</span> <span class="nc" id="L87"> conn.commit();</span>
<span class="nc" id="L87"> conn.rollback();</span> <span class="nc" id="L88"> } catch (SQLException e) {</span>
<span class="nc" id="L88"> throw e;</span> <span class="nc" id="L89"> conn.rollback();</span>
<span class="nc" id="L90"> throw e;</span>
} finally { } finally {
<span class="nc" id="L90"> conn.setAutoCommit(true);</span> <span class="nc" id="L92"> conn.setAutoCommit(true);</span>
<span class="nc" id="L91"> conn.close();</span> <span class="nc" id="L93"> conn.close();</span>
} }
<span class="nc" id="L94"> JSONObject response = new JSONObject();</span> <span class="nc" id="L96"> JSONObject response = new JSONObject();</span>
<span class="nc" id="L95"> response.put(&quot;status&quot;, &quot;ok&quot;);</span> <span class="nc" id="L97"> response.put(&quot;status&quot;, &quot;ok&quot;);</span>
<span class="nc" id="L96"> response.put(&quot;message&quot;, &quot;Daten wurden erfolgreich verarbeitet.&quot;);</span> <span class="nc" id="L98"> response.put(&quot;message&quot;, &quot;Daten wurden erfolgreich verarbeitet.&quot;);</span>
<span class="nc" id="L97"> return Response.ok(response.toString()).build();</span> <span class="nc" id="L99"> return Response.ok(response.toString()).build();</span>
<span class="nc" id="L99"> } catch (Exception e) {</span> <span class="nc" id="L101"> } catch (Exception e) {</span>
<span class="nc" id="L100"> e.printStackTrace();</span> <span class="nc" id="L102"> e.printStackTrace();</span>
<span class="nc" id="L101"> JSONObject error = new JSONObject();</span> <span class="nc" id="L103"> JSONObject error = new JSONObject();</span>
<span class="nc" id="L102"> error.put(&quot;status&quot;, &quot;error&quot;);</span> <span class="nc" id="L104"> error.put(&quot;status&quot;, &quot;error&quot;);</span>
<span class="nc" id="L103"> error.put(&quot;message&quot;, e.getMessage());</span> <span class="nc" id="L105"> error.put(&quot;message&quot;, e.getMessage());</span>
<span class="nc" id="L104"> return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(error.toString()).build();</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, private void insertContact(Connection conn, JSONObject obj, String COMPANY_NO, String WERK_NR, String CLIENT_NO,
boolean isMSSQL, boolean isOracle, Map&lt;String, String&gt; keyMap) throws SQLException { boolean isMSSQL, boolean isOracle, Map&lt;String, String&gt; keyMap) throws SQLException {
String sql; String sql;
<span class="nc bnc" id="L111" title="All 2 branches missed."> if (isMSSQL) {</span> <span class="nc bnc" id="L115" title="All 2 branches missed."> if (isMSSQL) {</span>
<span class="nc" id="L112"> sql = &quot;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) &quot;</span> <span class="nc" id="L116"> sql = &quot;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) &quot;</span>
+ &quot;VALUES (NEXT VALUE FOR xtran.SEQ_tran_contact, (SELECT MAX(id) FROM xtran.tran_idocstatus), ?, ?, GETDATE(), GETDATE(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)&quot;; + &quot;VALUES (NEXT VALUE FOR xtran.SEQ_tran_contact, (SELECT MAX(id) FROM xtran.tran_idocstatus), ?, ?, GETDATE(), GETDATE(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)&quot;;
<span class="nc bnc" id="L114" title="All 2 branches missed."> } else if (isOracle) {</span> <span class="nc bnc" id="L118" title="All 2 branches missed."> } else if (isOracle) {</span>
<span class="nc" id="L115"> sql = &quot;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) &quot;</span> <span class="nc" id="L119"> sql = &quot;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) &quot;</span>
+ &quot;VALUES (tran.SEQ_TRAN_contact.nextVal, (SELECT MAX(id) FROM tran.tran_idocstatus), ?, ?, SYSDATE, SYSDATE, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)&quot;; + &quot;VALUES (tran.SEQ_TRAN_contact.nextVal, (SELECT MAX(id) FROM tran.tran_idocstatus), ?, ?, SYSDATE, SYSDATE, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)&quot;;
} else { } else {
<span class="nc" id="L118"> throw new SQLException(&quot;DB-Vendor nicht implementiert&quot;);</span> <span class="nc" id="L122"> throw new SQLException(&quot;DB-Vendor nicht implementiert&quot;);</span>
} }
<span class="nc" id="L121"> try (PreparedStatement ps = conn.prepareStatement(sql)) {</span> <span class="nc" id="L125"> try (PreparedStatement ps = conn.prepareStatement(sql)) {</span>
<span class="nc" id="L122"> ps.setInt(1, obj.optInt(keyMap.getOrDefault(&quot;source&quot;, &quot;source&quot;), 0));</span> <span class="nc" id="L126"> ps.setInt(1, obj.optInt(keyMap.getOrDefault(&quot;source&quot;, &quot;source&quot;), 0));</span>
<span class="nc" id="L123"> ps.setInt(2, obj.optInt(keyMap.getOrDefault(&quot;status&quot;, &quot;status&quot;), 0));</span> <span class="nc" id="L127"> ps.setInt(2, obj.optInt(keyMap.getOrDefault(&quot;status&quot;, &quot;status&quot;), 0));</span>
<span class="nc" id="L124"> ps.setString(3, WERK_NR);</span> <span class="nc" id="L128"> ps.setString(3, WERK_NR);</span>
<span class="nc" id="L125"> ps.setString(4, CLIENT_NO);</span> <span class="nc" id="L129"> ps.setString(4, CLIENT_NO);</span>
<span class="nc" id="L126"> ps.setString(5, COMPANY_NO);</span> <span class="nc" id="L130"> ps.setString(5, COMPANY_NO);</span>
<span class="nc" id="L127"> ps.setString(6, obj.optString(keyMap.getOrDefault(&quot;contact_code&quot;, &quot;contact_code&quot;), &quot;&quot;));</span> <span class="nc" id="L131"> ps.setString(6, obj.optString(keyMap.getOrDefault(&quot;contact_code&quot;, &quot;contact_code&quot;), &quot;&quot;));</span>
<span class="nc" id="L128"> ps.setString(7, obj.optString(keyMap.getOrDefault(&quot;contact_name&quot;, &quot;contact_name&quot;), &quot;&quot;));</span> <span class="nc" id="L132"> ps.setString(7, obj.optString(keyMap.getOrDefault(&quot;contact_name&quot;, &quot;contact_name&quot;), &quot;&quot;));</span>
<span class="nc" id="L129"> ps.setString(8, obj.optString(keyMap.getOrDefault(&quot;contact_group&quot;, &quot;contact_group&quot;), &quot;&quot;));</span> <span class="nc" id="L133"> ps.setString(8, obj.optString(keyMap.getOrDefault(&quot;contact_group&quot;, &quot;contact_group&quot;), &quot;&quot;));</span>
<span class="nc" id="L130"> ps.setString(9, obj.optString(keyMap.getOrDefault(&quot;street&quot;, &quot;street&quot;), &quot;&quot;));</span> <span class="nc" id="L134"> ps.setString(9, obj.optString(keyMap.getOrDefault(&quot;street&quot;, &quot;street&quot;), &quot;&quot;));</span>
<span class="nc" id="L131"> ps.setString(10, obj.optString(keyMap.getOrDefault(&quot;zip_code&quot;, &quot;zip_code&quot;), &quot;&quot;));</span> <span class="nc" id="L135"> ps.setString(10, obj.optString(keyMap.getOrDefault(&quot;zip_code&quot;, &quot;zip_code&quot;), &quot;&quot;));</span>
<span class="nc" id="L132"> ps.setString(11, obj.optString(keyMap.getOrDefault(&quot;country&quot;, &quot;country&quot;), &quot;&quot;));</span> <span class="nc" id="L136"> ps.setString(11, obj.optString(keyMap.getOrDefault(&quot;country&quot;, &quot;country&quot;), &quot;&quot;));</span>
<span class="nc" id="L133"> ps.setString(12, obj.optString(keyMap.getOrDefault(&quot;city&quot;, &quot;city&quot;), &quot;&quot;));</span> <span class="nc" id="L137"> ps.setString(12, obj.optString(keyMap.getOrDefault(&quot;city&quot;, &quot;city&quot;), &quot;&quot;));</span>
<span class="nc" id="L134"> ps.setInt(13, obj.optInt(keyMap.getOrDefault(&quot;is_supplier&quot;, &quot;is_supplier&quot;), 0));</span> <span class="nc" id="L138"> ps.setInt(13, obj.optInt(keyMap.getOrDefault(&quot;is_supplier&quot;, &quot;is_supplier&quot;), 0));</span>
<span class="nc" id="L135"> ps.setInt(14, obj.optInt(keyMap.getOrDefault(&quot;is_customer&quot;, &quot;is_customer&quot;), 0));</span> <span class="nc" id="L139"> ps.setInt(14, obj.optInt(keyMap.getOrDefault(&quot;is_customer&quot;, &quot;is_customer&quot;), 0));</span>
<span class="nc" id="L136"> ps.setInt(15, obj.optInt(keyMap.getOrDefault(&quot;is_manufacturer&quot;, &quot;is_manufacturer&quot;), 0));</span> <span class="nc" id="L140"> ps.setInt(15, obj.optInt(keyMap.getOrDefault(&quot;is_manufacturer&quot;, &quot;is_manufacturer&quot;), 0));</span>
<span class="nc" id="L137"> ps.setString(16, obj.optString(keyMap.getOrDefault(&quot;contact_code_erp&quot;, &quot;contact_code_erp&quot;), &quot;&quot;));</span> <span class="nc" id="L141"> ps.setString(16, obj.optString(keyMap.getOrDefault(&quot;contact_code_erp&quot;, &quot;contact_code_erp&quot;), &quot;&quot;));</span>
<span class="nc" id="L138"> ps.setInt(17, obj.optInt(keyMap.getOrDefault(&quot;inventory&quot;, &quot;inventory&quot;), 0));</span> <span class="nc" id="L142"> ps.setInt(17, obj.optInt(keyMap.getOrDefault(&quot;inventory&quot;, &quot;inventory&quot;), 0));</span>
<span class="nc" id="L139"> ps.setInt(18, obj.optInt(keyMap.getOrDefault(&quot;contact_state&quot;, &quot;contact_state&quot;), 0));</span> <span class="nc" id="L143"> ps.setInt(18, obj.optInt(keyMap.getOrDefault(&quot;contact_state&quot;, &quot;contact_state&quot;), 0));</span>
<span class="nc" id="L140"> ps.setDouble(19, obj.optDouble(keyMap.getOrDefault(&quot;latitude&quot;, &quot;latitude&quot;), 0.0));</span> <span class="nc" id="L144"> ps.setDouble(19, obj.optDouble(keyMap.getOrDefault(&quot;latitude&quot;, &quot;latitude&quot;), 0.0));</span>
<span class="nc" id="L141"> ps.setDouble(20, obj.optDouble(keyMap.getOrDefault(&quot;longitude&quot;, &quot;longitude&quot;), 0.0));</span> <span class="nc" id="L145"> ps.setDouble(20, obj.optDouble(keyMap.getOrDefault(&quot;longitude&quot;, &quot;longitude&quot;), 0.0));</span>
<span class="nc" id="L142"> ps.executeUpdate();</span> <span class="nc" id="L146"> ps.executeUpdate();</span>
} }
<span class="nc" id="L144"> }</span> <span class="nc" id="L148"> }</span>
private void insertIdocStatus(Connection conn, boolean isMSSQL, boolean isOracle) throws SQLException { private void insertIdocStatus(Connection conn, boolean isMSSQL, boolean isOracle) throws SQLException {
String sql; String sql;
<span class="nc bnc" id="L148" title="All 2 branches missed."> if (isMSSQL) {</span> <span class="nc bnc" id="L152" title="All 2 branches missed."> if (isMSSQL) {</span>
<span class="nc" id="L149"> sql = &quot;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)&quot;;</span> <span class="nc" id="L153"> sql = &quot;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)&quot;;</span>
<span class="nc bnc" id="L150" title="All 2 branches missed."> } else if (isOracle) {</span> <span class="nc bnc" id="L154" title="All 2 branches missed."> } else if (isOracle) {</span>
<span class="nc" id="L151"> sql = &quot;INSERT INTO tran.tran_idocstatus (ID, DATE_CREATION, ewstatus, errorcode, content_type, source) VALUES (tran.seq_tranidocstatus.nextval, SYSDATE, 1, 0, 57, 0)&quot;;</span> <span class="nc" id="L155"> sql = &quot;INSERT INTO tran.tran_idocstatus (ID, DATE_CREATION, ewstatus, errorcode, content_type, source) VALUES (tran.seq_tranidocstatus.nextval, SYSDATE, 1, 0, 57, 0)&quot;;</span>
} else { } else {
<span class="nc" id="L153"> throw new SQLException(&quot;DB-Vendor nicht implementiert&quot;);</span> <span class="nc" id="L157"> throw new SQLException(&quot;DB-Vendor nicht implementiert&quot;);</span>
} }
<span class="nc" id="L155"> try (PreparedStatement ps = conn.prepareStatement(sql)) {</span>
<span class="nc" id="L156"> ps.executeUpdate();</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="L158"> }</span> <span class="nc" id="L163"> }</span>
private void insertMaterialContact(Connection conn, JSONObject obj, String COMPANY_NO, String WERK_NR, private void insertMaterialContact(Connection conn, JSONObject obj, String COMPANY_NO, String WERK_NR,
String CLIENT_NO, boolean isMSSQL, boolean isOracle, Map&lt;String, String&gt; keyMap) throws SQLException { String CLIENT_NO, boolean isMSSQL, boolean isOracle, Map&lt;String, String&gt; keyMap) throws SQLException {
String sql; String sql;
<span class="nc bnc" id="L163" title="All 2 branches missed."> if (isMSSQL) {</span> <span class="nc bnc" id="L168" title="All 2 branches missed."> if (isMSSQL) {</span>
<span class="nc" id="L164"> sql = &quot;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) &quot;</span> <span class="nc" id="L169"> sql = &quot;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) &quot;</span>
+ &quot;VALUES (NEXT VALUE FOR xtran.SEQ_tran_material_contact, ?, ?, GETDATE(), GETDATE(), ?, ?, ?, ?, ?, ?, ?, ?, ?, (SELECT MAX(id) FROM xtran.tran_idocstatus))&quot;; + &quot;VALUES (NEXT VALUE FOR xtran.SEQ_tran_material_contact, ?, ?, GETDATE(), GETDATE(), ?, ?, ?, ?, ?, ?, ?, ?, ?, (SELECT MAX(id) FROM xtran.tran_idocstatus))&quot;;
<span class="nc bnc" id="L166" title="All 2 branches missed."> } else if (isOracle) {</span> <span class="nc bnc" id="L171" title="All 2 branches missed."> } else if (isOracle) {</span>
<span class="nc" id="L167"> sql = &quot;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) &quot;</span> <span class="nc" id="L172"> sql = &quot;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) &quot;</span>
+ &quot;VALUES (tran.SEQ_TRAN_material_contact.nextVal, ?, ?, SYSDATE, SYSDATE, ?, ?, ?, ?, ?, ?, ?, ?, ?, (SELECT MAX(id) FROM tran.tran_idocstatus))&quot;; + &quot;VALUES (tran.SEQ_TRAN_material_contact.nextVal, ?, ?, SYSDATE, SYSDATE, ?, ?, ?, ?, ?, ?, ?, ?, ?, (SELECT MAX(id) FROM tran.tran_idocstatus))&quot;;
} else { } else {
<span class="nc" id="L170"> throw new SQLException(&quot;DB-Vendor nicht implementiert&quot;);</span> <span class="nc" id="L175"> throw new SQLException(&quot;DB-Vendor nicht implementiert&quot;);</span>
} }
<span class="nc" id="L173"> try (PreparedStatement ps = conn.prepareStatement(sql)) {</span> <span class="nc" id="L178"> try (PreparedStatement ps = conn.prepareStatement(sql)) {</span>
<span class="nc" id="L174"> ps.setInt(1, obj.optInt(keyMap.getOrDefault(&quot;source&quot;, &quot;source&quot;), 0));</span> <span class="nc" id="L179"> ps.setInt(1, obj.optInt(keyMap.getOrDefault(&quot;source&quot;, &quot;source&quot;), 0));</span>
<span class="nc" id="L175"> ps.setInt(2, obj.optInt(keyMap.getOrDefault(&quot;status&quot;, &quot;status&quot;), 0));</span> <span class="nc" id="L180"> ps.setInt(2, obj.optInt(keyMap.getOrDefault(&quot;status&quot;, &quot;status&quot;), 0));</span>
<span class="nc" id="L176"> ps.setString(3, obj.optString(keyMap.getOrDefault(&quot;contact_code&quot;, &quot;contact_code&quot;), &quot;&quot;));</span> <span class="nc" id="L181"> ps.setString(3, obj.optString(keyMap.getOrDefault(&quot;contact_code&quot;, &quot;contact_code&quot;), &quot;&quot;));</span>
<span class="nc" id="L177"> ps.setString(4, obj.optString(keyMap.getOrDefault(&quot;artikel&quot;, &quot;artikel&quot;), &quot;&quot;));</span> <span class="nc" id="L182"> ps.setString(4, obj.optString(keyMap.getOrDefault(&quot;artikel&quot;, &quot;artikel&quot;), &quot;&quot;));</span>
<span class="nc" id="L178"> ps.setString(5, obj.optString(keyMap.getOrDefault(&quot;part_ext&quot;, &quot;part_ext&quot;), &quot;&quot;));</span> <span class="nc" id="L183"> ps.setString(5, obj.optString(keyMap.getOrDefault(&quot;part_ext&quot;, &quot;part_ext&quot;), &quot;&quot;));</span>
<span class="nc" id="L179"> ps.setString(6, obj.optString(keyMap.getOrDefault(&quot;part_ext&quot;, &quot;material_desc_ext&quot;), &quot;&quot;));</span> <span class="nc" id="L184"> ps.setString(6, obj.optString(keyMap.getOrDefault(&quot;material_desc_ext&quot;, &quot;material_desc_ext&quot;), &quot;&quot;));</span>
<span class="nc" id="L180"> ps.setInt(7, obj.optInt(keyMap.getOrDefault(&quot;art_bez_ext&quot;, &quot;art_bez_ext&quot;), 0));</span> <span class="nc" id="L185"> ps.setInt(7, obj.optInt(keyMap.getOrDefault(&quot;art_bez_ext&quot;, &quot;art_bez_ext&quot;), 0));</span>
<span class="nc" id="L181"> ps.setInt(8, obj.optInt(keyMap.getOrDefault(&quot;delete_flag&quot;, &quot;delete_flag&quot;), 0));</span> <span class="nc" id="L186"> ps.setInt(8, obj.optInt(keyMap.getOrDefault(&quot;delete_flag&quot;, &quot;delete_flag&quot;), 0));</span>
<span class="nc" id="L182"> ps.setString(9, WERK_NR);</span> <span class="nc" id="L187"> ps.setString(9, WERK_NR);</span>
<span class="nc" id="L183"> ps.setString(10, COMPANY_NO);</span> <span class="nc" id="L188"> ps.setString(10, COMPANY_NO);</span>
<span class="nc" id="L184"> ps.setString(11, CLIENT_NO);</span> <span class="nc" id="L189"> ps.setString(11, CLIENT_NO);</span>
<span class="nc" id="L185"> ps.executeUpdate();</span> <span class="nc" id="L190"> ps.executeUpdate();</span>
} }
<span class="nc" id="L187"> }</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> </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>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
<?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>backend</title><script type="text/javascript" src="jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="jacoco-sessions.html" class="el_session">Sessions</a></span><span class="el_report">backend</span></div><h1>backend</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">5.208 of 5.208</td><td class="ctr2">0 %</td><td class="bar">280 of 280</td><td class="ctr2">0 %</td><td class="ctr1">246</td><td class="ctr2">246</td><td class="ctr1">1.203</td><td class="ctr2">1.203</td><td class="ctr1">106</td><td class="ctr2">106</td><td class="ctr1">25</td><td class="ctr2">25</td></tr></tfoot><tbody><tr><td id="a0"><a href="com.workbenchclassic/index.html" class="el_package">com.workbenchclassic</a></td><td class="bar" id="b0"><img src="jacoco-resources/redbar.gif" width="120" height="10" title="5.208" alt="5.208"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"><img src="jacoco-resources/redbar.gif" width="120" height="10" title="280" alt="280"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">246</td><td class="ctr2" id="g0">246</td><td class="ctr1" id="h0">1.203</td><td class="ctr2" id="i0">1.203</td><td class="ctr1" id="j0">106</td><td class="ctr2" id="k0">106</td><td class="ctr1" id="l0">25</td><td class="ctr2" id="m0">25</td></tr></tbody></table><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> <?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>backend</title><script type="text/javascript" src="jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="jacoco-sessions.html" class="el_session">Sessions</a></span><span class="el_report">backend</span></div><h1>backend</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">5.208 of 5.208</td><td class="ctr2">0 %</td><td class="bar">280 of 280</td><td class="ctr2">0 %</td><td class="ctr1">246</td><td class="ctr2">246</td><td class="ctr1">1.209</td><td class="ctr2">1.209</td><td class="ctr1">106</td><td class="ctr2">106</td><td class="ctr1">25</td><td class="ctr2">25</td></tr></tfoot><tbody><tr><td id="a0"><a href="com.workbenchclassic/index.html" class="el_package">com.workbenchclassic</a></td><td class="bar" id="b0"><img src="jacoco-resources/redbar.gif" width="120" height="10" title="5.208" alt="5.208"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"><img src="jacoco-resources/redbar.gif" width="120" height="10" title="280" alt="280"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">246</td><td class="ctr2" id="g0">246</td><td class="ctr1" id="h0">1.209</td><td class="ctr2" id="i0">1.209</td><td class="ctr1" id="j0">106</td><td class="ctr2" id="k0">106</td><td class="ctr1" id="l0">25</td><td class="ctr2" id="m0">25</td></tr></tbody></table><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>

File diff suppressed because one or more lines are too long

View File

@ -12,7 +12,7 @@ backend,com.workbenchclassic,GetStationsApi,263,0,8,0,57,0,11,0,7,0
backend,com.workbenchclassic,UpdateBOM,610,0,22,0,144,0,15,0,4,0 backend,com.workbenchclassic,UpdateBOM,610,0,22,0,144,0,15,0,4,0
backend,com.workbenchclassic,EventStreamResource,16,0,4,0,6,0,4,0,2,0 backend,com.workbenchclassic,EventStreamResource,16,0,4,0,6,0,4,0,2,0
backend,com.workbenchclassic,GetStationConfig,146,0,10,0,37,0,9,0,4,0 backend,com.workbenchclassic,GetStationConfig,146,0,10,0,37,0,9,0,4,0
backend,com.workbenchclassic,UpdateContact,606,0,24,0,109,0,19,0,7,0 backend,com.workbenchclassic,UpdateContact,606,0,24,0,115,0,19,0,7,0
backend,com.workbenchclassic,SetStationConfig,393,0,30,0,102,0,18,0,3,0 backend,com.workbenchclassic,SetStationConfig,393,0,30,0,102,0,18,0,3,0
backend,com.workbenchclassic,getContact,77,0,0,0,23,0,3,0,3,0 backend,com.workbenchclassic,getContact,77,0,0,0,23,0,3,0,3,0
backend,com.workbenchclassic,ImportUser,474,0,20,0,103,0,20,0,10,0 backend,com.workbenchclassic,ImportUser,474,0,20,0,103,0,20,0,10,0

1 GROUP PACKAGE CLASS INSTRUCTION_MISSED INSTRUCTION_COVERED BRANCH_MISSED BRANCH_COVERED LINE_MISSED LINE_COVERED COMPLEXITY_MISSED COMPLEXITY_COVERED METHOD_MISSED METHOD_COVERED
12 backend com.workbenchclassic UpdateBOM 610 0 22 0 144 0 15 0 4 0
13 backend com.workbenchclassic EventStreamResource 16 0 4 0 6 0 4 0 2 0
14 backend com.workbenchclassic GetStationConfig 146 0 10 0 37 0 9 0 4 0
15 backend com.workbenchclassic UpdateContact 606 0 24 0 109 115 0 19 0 7 0
16 backend com.workbenchclassic SetStationConfig 393 0 30 0 102 0 18 0 3 0
17 backend com.workbenchclassic getContact 77 0 0 0 23 0 3 0 3 0
18 backend com.workbenchclassic ImportUser 474 0 20 0 103 0 20 0 10 0

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="com.workbenchclassic.AppTest" time="0.02" tests="1" errors="0" skipped="0" failures="0"> <testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="com.workbenchclassic.AppTest" time="0.017" tests="1" errors="0" skipped="0" failures="0">
<properties> <properties>
<property name="gopherProxySet" value="false"/> <property name="gopherProxySet" value="false"/>
<property name="awt.toolkit" value="sun.lwawt.macosx.LWCToolkit"/> <property name="awt.toolkit" value="sun.lwawt.macosx.LWCToolkit"/>
@ -16,7 +16,7 @@
<property name="sun.java.launcher" value="SUN_STANDARD"/> <property name="sun.java.launcher" value="SUN_STANDARD"/>
<property name="user.country" value="DE"/> <property name="user.country" value="DE"/>
<property name="sun.boot.library.path" value="/opt/homebrew/Cellar/openjdk@11/11.0.30/libexec/openjdk.jdk/Contents/Home/lib"/> <property name="sun.boot.library.path" value="/opt/homebrew/Cellar/openjdk@11/11.0.30/libexec/openjdk.jdk/Contents/Home/lib"/>
<property name="sun.java.command" value="/Users/chris/DevJava/workbenchclassic/backend/target/surefire/surefirebooter15208462574652866845.jar /Users/chris/DevJava/workbenchclassic/backend/target/surefire 2026-03-18T21-24-34_838-jvmRun1 surefire4147162894365079047tmp surefire_018160240300202648143tmp"/> <property name="sun.java.command" value="/Users/chris/DevJava/workbenchclassic/backend/target/surefire/surefirebooter16563416724971400598.jar /Users/chris/DevJava/workbenchclassic/backend/target/surefire 2026-03-18T22-21-28_512-jvmRun1 surefire18183175683491504828tmp surefire_06716252282191866266tmp"/>
<property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> <property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
<property name="jdk.debug" value="release"/> <property name="jdk.debug" value="release"/>
<property name="surefire.test.class.path" value="/Users/chris/DevJava/workbenchclassic/backend/target/test-classes:/Users/chris/DevJava/workbenchclassic/backend/target/classes:/Users/chris/.m2/repository/org/glassfish/jersey/core/jersey-common/2.35/jersey-common-2.35.jar:/Users/chris/.m2/repository/jakarta/ws/rs/jakarta.ws.rs-api/2.1.6/jakarta.ws.rs-api-2.1.6.jar:/Users/chris/.m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar:/Users/chris/.m2/repository/org/glassfish/hk2/external/jakarta.inject/2.6.1/jakarta.inject-2.6.1.jar:/Users/chris/.m2/repository/org/glassfish/hk2/osgi-resource-locator/1.0.3/osgi-resource-locator-1.0.3.jar:/Users/chris/.m2/repository/org/glassfish/jersey/containers/jersey-container-servlet/2.35/jersey-container-servlet-2.35.jar:/Users/chris/.m2/repository/org/glassfish/jersey/containers/jersey-container-servlet-core/2.35/jersey-container-servlet-core-2.35.jar:/Users/chris/.m2/repository/org/glassfish/jersey/core/jersey-server/2.35/jersey-server-2.35.jar:/Users/chris/.m2/repository/org/glassfish/jersey/core/jersey-client/2.35/jersey-client-2.35.jar:/Users/chris/.m2/repository/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2.jar:/Users/chris/.m2/repository/org/glassfish/jersey/media/jersey-media-json-jackson/2.35/jersey-media-json-jackson-2.35.jar:/Users/chris/.m2/repository/org/glassfish/jersey/ext/jersey-entity-filtering/2.35/jersey-entity-filtering-2.35.jar:/Users/chris/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.12.2/jackson-annotations-2.12.2.jar:/Users/chris/.m2/repository/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.12.2/jackson-module-jaxb-annotations-2.12.2.jar:/Users/chris/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/2.3.2/jakarta.xml.bind-api-2.3.2.jar:/Users/chris/.m2/repository/jakarta/activation/jakarta.activation-api/1.2.1/jakarta.activation-api-1.2.1.jar:/Users/chris/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.6.0/junit-jupiter-engine-5.6.0.jar:/Users/chris/.m2/repository/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar:/Users/chris/.m2/repository/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.jar:/Users/chris/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/chris/.m2/repository/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.jar:/Users/chris/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.6.0/junit-jupiter-api-5.6.0.jar:/Users/chris/.m2/repository/javax/javaee-api/8.0/javaee-api-8.0.jar:/Users/chris/.m2/repository/com/sun/mail/javax.mail/1.6.0/javax.mail-1.6.0.jar:/Users/chris/.m2/repository/javax/activation/activation/1.1/activation-1.1.jar:/Users/chris/.m2/repository/org/json/json/20250107/json-20250107.jar:/Users/chris/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.15.2/jackson-databind-2.15.2.jar:/Users/chris/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.15.2/jackson-core-2.15.2.jar:"/> <property name="surefire.test.class.path" value="/Users/chris/DevJava/workbenchclassic/backend/target/test-classes:/Users/chris/DevJava/workbenchclassic/backend/target/classes:/Users/chris/.m2/repository/org/glassfish/jersey/core/jersey-common/2.35/jersey-common-2.35.jar:/Users/chris/.m2/repository/jakarta/ws/rs/jakarta.ws.rs-api/2.1.6/jakarta.ws.rs-api-2.1.6.jar:/Users/chris/.m2/repository/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar:/Users/chris/.m2/repository/org/glassfish/hk2/external/jakarta.inject/2.6.1/jakarta.inject-2.6.1.jar:/Users/chris/.m2/repository/org/glassfish/hk2/osgi-resource-locator/1.0.3/osgi-resource-locator-1.0.3.jar:/Users/chris/.m2/repository/org/glassfish/jersey/containers/jersey-container-servlet/2.35/jersey-container-servlet-2.35.jar:/Users/chris/.m2/repository/org/glassfish/jersey/containers/jersey-container-servlet-core/2.35/jersey-container-servlet-core-2.35.jar:/Users/chris/.m2/repository/org/glassfish/jersey/core/jersey-server/2.35/jersey-server-2.35.jar:/Users/chris/.m2/repository/org/glassfish/jersey/core/jersey-client/2.35/jersey-client-2.35.jar:/Users/chris/.m2/repository/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2.jar:/Users/chris/.m2/repository/org/glassfish/jersey/media/jersey-media-json-jackson/2.35/jersey-media-json-jackson-2.35.jar:/Users/chris/.m2/repository/org/glassfish/jersey/ext/jersey-entity-filtering/2.35/jersey-entity-filtering-2.35.jar:/Users/chris/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.12.2/jackson-annotations-2.12.2.jar:/Users/chris/.m2/repository/com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.12.2/jackson-module-jaxb-annotations-2.12.2.jar:/Users/chris/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/2.3.2/jakarta.xml.bind-api-2.3.2.jar:/Users/chris/.m2/repository/jakarta/activation/jakarta.activation-api/1.2.1/jakarta.activation-api-1.2.1.jar:/Users/chris/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.6.0/junit-jupiter-engine-5.6.0.jar:/Users/chris/.m2/repository/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar:/Users/chris/.m2/repository/org/junit/platform/junit-platform-engine/1.6.0/junit-platform-engine-1.6.0.jar:/Users/chris/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/chris/.m2/repository/org/junit/platform/junit-platform-commons/1.6.0/junit-platform-commons-1.6.0.jar:/Users/chris/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.6.0/junit-jupiter-api-5.6.0.jar:/Users/chris/.m2/repository/javax/javaee-api/8.0/javaee-api-8.0.jar:/Users/chris/.m2/repository/com/sun/mail/javax.mail/1.6.0/javax.mail-1.6.0.jar:/Users/chris/.m2/repository/javax/activation/activation/1.1/activation-1.1.jar:/Users/chris/.m2/repository/org/json/json/20250107/json-20250107.jar:/Users/chris/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.15.2/jackson-databind-2.15.2.jar:/Users/chris/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.15.2/jackson-core-2.15.2.jar:"/>
@ -33,7 +33,7 @@
<property name="java.specification.name" value="Java Platform API Specification"/> <property name="java.specification.name" value="Java Platform API Specification"/>
<property name="java.vm.specification.vendor" value="Oracle Corporation"/> <property name="java.vm.specification.vendor" value="Oracle Corporation"/>
<property name="java.awt.graphicsenv" value="sun.awt.CGraphicsEnvironment"/> <property name="java.awt.graphicsenv" value="sun.awt.CGraphicsEnvironment"/>
<property name="surefire.real.class.path" value="/Users/chris/DevJava/workbenchclassic/backend/target/surefire/surefirebooter15208462574652866845.jar"/> <property name="surefire.real.class.path" value="/Users/chris/DevJava/workbenchclassic/backend/target/surefire/surefirebooter16563416724971400598.jar"/>
<property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/> <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
<property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> <property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
<property name="java.runtime.version" value="11.0.30+0"/> <property name="java.runtime.version" value="11.0.30+0"/>
@ -62,5 +62,5 @@
<property name="java.class.version" value="55.0"/> <property name="java.class.version" value="55.0"/>
<property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/> <property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
</properties> </properties>
<testcase name="testApp" classname="com.workbenchclassic.AppTest" time="0.01"/> <testcase name="testApp" classname="com.workbenchclassic.AppTest" time="0.011"/>
</testsuite> </testsuite>

View File

@ -1,4 +1,4 @@
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Test set: com.workbenchclassic.AppTest Test set: com.workbenchclassic.AppTest
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.02 s - in com.workbenchclassic.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.017 s - in com.workbenchclassic.AppTest