diff --git a/pom.xml b/pom.xml
index 1bcc7ac..6ced133 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,11 +4,11 @@
4.0.0
io.rtdi.bigdata.connector
s4hanaconnector
- 0.9.35
+ 0.9.36
war
UTF-8
- 0.10.16
+ 0.10.18
${project.artifactId}
@@ -51,7 +51,7 @@
com.sap.cloud.db.jdbc
ngdbc
- 2.11.14
+ 2.13.9
junit
diff --git a/src/main/java/io/rtdi/bigdata/s4hanaconnector/S4HanaBrowse.java b/src/main/java/io/rtdi/bigdata/s4hanaconnector/S4HanaBrowse.java
index 736f760..a086e4d 100644
--- a/src/main/java/io/rtdi/bigdata/s4hanaconnector/S4HanaBrowse.java
+++ b/src/main/java/io/rtdi/bigdata/s4hanaconnector/S4HanaBrowse.java
@@ -109,6 +109,7 @@ public static class TableImport {
private String tablename;
private String schemaname;
private boolean imported;
+ private String initialloadwhere;
public TableImport() {
super();
@@ -140,6 +141,14 @@ public String getSchemaname() {
public void setSchemaname(String schemaname) {
this.schemaname = schemaname;
}
+
+ public String getInitialloadwhere() {
+ return initialloadwhere;
+ }
+
+ public void setInitialloadwhere(String initialloadwhere) {
+ this.initialloadwhere = initialloadwhere;
+ }
}
@Override
diff --git a/src/main/java/io/rtdi/bigdata/s4hanaconnector/S4HanaTableMapping.java b/src/main/java/io/rtdi/bigdata/s4hanaconnector/S4HanaTableMapping.java
index 8be8ac2..253ab44 100644
--- a/src/main/java/io/rtdi/bigdata/s4hanaconnector/S4HanaTableMapping.java
+++ b/src/main/java/io/rtdi/bigdata/s4hanaconnector/S4HanaTableMapping.java
@@ -44,12 +44,13 @@ public class S4HanaTableMapping {
private String name;
private String deltaselect;
private StringBuffer initialselectprojection;
+ private String initialloadwhere;
public S4HanaTableMapping() {
super();
}
- public S4HanaTableMapping(String name, String username, String sourcedbschema, String mastertable, String alias, Connection conn) throws ConnectorRuntimeException {
+ public S4HanaTableMapping(String name, String username, String sourcedbschema, String mastertable, String alias, String initialloadwhere, Connection conn) throws ConnectorRuntimeException {
super();
this.mastertable = mastertable;
this.alias = alias;
@@ -57,6 +58,7 @@ public S4HanaTableMapping(String name, String username, String sourcedbschema, S
this.username = username;
this.conn = conn;
this.name = name;
+ this.initialloadwhere = initialloadwhere;
addColumns();
}
@@ -248,6 +250,7 @@ protected void parseValues(S4HanaTableMapping data) throws ConnectorRuntimeExcep
this.columnmappings = data.getColumnmappings();
this.pkcolumns = data.getPKColumns();
this.alias = data.getAlias();
+ this.initialloadwhere = data.getInitialloadwhere();
}
public void setMastertable(String mastertable) {
@@ -751,6 +754,9 @@ public String getInitialSelect(Integer partition) {
select.append(") ");
}
select.append(" as ").append(getAliasIdentifier());
+ if (initialloadwhere != null) {
+ select.append(" where ").append(initialloadwhere);
+ }
return select.toString();
}
@@ -759,5 +765,13 @@ public String toString() {
return mastertable;
}
+ public String getInitialloadwhere() {
+ return initialloadwhere;
+ }
+
+ public void setInitialloadwhere(String initialloadwhere) {
+ this.initialloadwhere = initialloadwhere;
+ }
+
}
diff --git a/src/main/java/io/rtdi/bigdata/s4hanaconnector/rest/SourceTableService.java b/src/main/java/io/rtdi/bigdata/s4hanaconnector/rest/SourceTableService.java
index 6bc0dd5..9e60b86 100644
--- a/src/main/java/io/rtdi/bigdata/s4hanaconnector/rest/SourceTableService.java
+++ b/src/main/java/io/rtdi/bigdata/s4hanaconnector/rest/SourceTableService.java
@@ -1,76 +1,76 @@
-package io.rtdi.bigdata.s4hanaconnector.rest;
-
-import java.util.List;
-
-import jakarta.annotation.security.RolesAllowed;
-import jakarta.servlet.ServletContext;
-import jakarta.ws.rs.GET;
-import jakarta.ws.rs.POST;
-import jakarta.ws.rs.Path;
-import jakarta.ws.rs.PathParam;
-import jakarta.ws.rs.Produces;
-import jakarta.ws.rs.core.Configuration;
-import jakarta.ws.rs.core.Context;
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response;
-
-import io.rtdi.bigdata.connector.connectorframework.WebAppController;
-import io.rtdi.bigdata.connector.connectorframework.controller.ConnectionController;
-import io.rtdi.bigdata.connector.connectorframework.controller.ConnectorController;
-import io.rtdi.bigdata.connector.connectorframework.rest.JAXBErrorResponseBuilder;
-import io.rtdi.bigdata.connector.connectorframework.rest.JAXBSuccessResponseBuilder;
-import io.rtdi.bigdata.connector.connectorframework.servlet.ServletSecurityConstants;
-import io.rtdi.bigdata.s4hanaconnector.S4HanaTableMapping;
-import io.rtdi.bigdata.s4hanaconnector.S4HanaBrowse;
-import io.rtdi.bigdata.s4hanaconnector.S4HanaBrowse.TableImport;
-import io.rtdi.bigdata.s4hanaconnector.S4HanaConnectionProperties;
-
-@Path("/")
-public class SourceTableService {
- @Context
- private Configuration configuration;
-
- @Context
- private ServletContext servletContext;
-
- public SourceTableService() {
- }
-
- @GET
- @Path("/connections/{connectionname}/sourcetables")
- @Produces(MediaType.APPLICATION_JSON)
- @RolesAllowed({ServletSecurityConstants.ROLE_VIEW})
- public Response getFiles(@PathParam("connectionname") String connectionname, @PathParam("name") String name) {
- try {
- ConnectorController connector = WebAppController.getConnectorOrFail(servletContext);
- ConnectionController connection = connector.getConnectionOrFail(connectionname);
- S4HanaBrowse browser = (S4HanaBrowse) connection.getBrowser();
- return Response.ok(browser.getHanaTables()).build();
- } catch (Exception e) {
- return JAXBErrorResponseBuilder.getJAXBResponse(e);
- }
- }
-
- @POST
- @Path("/connections/{connectionname}/sourcetables")
- @Produces(MediaType.APPLICATION_JSON)
- @RolesAllowed({ServletSecurityConstants.ROLE_VIEW})
- public Response getFiles(@PathParam("connectionname") String connectionname, List data) {
- try {
- ConnectorController connector = WebAppController.getConnectorOrFail(servletContext);
- ConnectionController connection = connector.getConnectionOrFail(connectionname);
- S4HanaConnectionProperties props = (S4HanaConnectionProperties) connection.getConnectionProperties();
- String dbuser = props.getUsername();
- String dbschema = props.getSourceSchema();
- S4HanaBrowse browser = (S4HanaBrowse) connection.getBrowser();
- for (TableImport t : data) {
- S4HanaTableMapping entity = new S4HanaTableMapping(t.getSchemaname(), dbuser, dbschema, t.getTablename(), "L1", browser.getConnection());
- entity.write(browser.getBusinessObjectDirectory());
- }
- return JAXBSuccessResponseBuilder.getJAXBResponse("Saved " + data.size() + " table schemas");
- } catch (Exception e) {
- return JAXBErrorResponseBuilder.getJAXBResponse(e);
- }
- }
-
+package io.rtdi.bigdata.s4hanaconnector.rest;
+
+import java.util.List;
+
+import jakarta.annotation.security.RolesAllowed;
+import jakarta.servlet.ServletContext;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.Configuration;
+import jakarta.ws.rs.core.Context;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+
+import io.rtdi.bigdata.connector.connectorframework.WebAppController;
+import io.rtdi.bigdata.connector.connectorframework.controller.ConnectionController;
+import io.rtdi.bigdata.connector.connectorframework.controller.ConnectorController;
+import io.rtdi.bigdata.connector.connectorframework.rest.JAXBErrorResponseBuilder;
+import io.rtdi.bigdata.connector.connectorframework.rest.JAXBSuccessResponseBuilder;
+import io.rtdi.bigdata.connector.connectorframework.servlet.ServletSecurityConstants;
+import io.rtdi.bigdata.s4hanaconnector.S4HanaTableMapping;
+import io.rtdi.bigdata.s4hanaconnector.S4HanaBrowse;
+import io.rtdi.bigdata.s4hanaconnector.S4HanaBrowse.TableImport;
+import io.rtdi.bigdata.s4hanaconnector.S4HanaConnectionProperties;
+
+@Path("/")
+public class SourceTableService {
+ @Context
+ private Configuration configuration;
+
+ @Context
+ private ServletContext servletContext;
+
+ public SourceTableService() {
+ }
+
+ @GET
+ @Path("/connections/{connectionname}/sourcetables")
+ @Produces(MediaType.APPLICATION_JSON)
+ @RolesAllowed({ServletSecurityConstants.ROLE_VIEW})
+ public Response getFiles(@PathParam("connectionname") String connectionname, @PathParam("name") String name) {
+ try {
+ ConnectorController connector = WebAppController.getConnectorOrFail(servletContext);
+ ConnectionController connection = connector.getConnectionOrFail(connectionname);
+ S4HanaBrowse browser = (S4HanaBrowse) connection.getBrowser();
+ return Response.ok(browser.getHanaTables()).build();
+ } catch (Exception e) {
+ return JAXBErrorResponseBuilder.getJAXBResponse(e);
+ }
+ }
+
+ @POST
+ @Path("/connections/{connectionname}/sourcetables")
+ @Produces(MediaType.APPLICATION_JSON)
+ @RolesAllowed({ServletSecurityConstants.ROLE_VIEW})
+ public Response getFiles(@PathParam("connectionname") String connectionname, List data) {
+ try {
+ ConnectorController connector = WebAppController.getConnectorOrFail(servletContext);
+ ConnectionController connection = connector.getConnectionOrFail(connectionname);
+ S4HanaConnectionProperties props = (S4HanaConnectionProperties) connection.getConnectionProperties();
+ String dbuser = props.getUsername();
+ String dbschema = props.getSourceSchema();
+ S4HanaBrowse browser = (S4HanaBrowse) connection.getBrowser();
+ for (TableImport t : data) {
+ S4HanaTableMapping entity = new S4HanaTableMapping(t.getSchemaname(), dbuser, dbschema, t.getTablename(), "L1", t.getInitialloadwhere(), browser.getConnection());
+ entity.write(browser.getBusinessObjectDirectory());
+ }
+ return JAXBSuccessResponseBuilder.getJAXBResponse("Saved " + data.size() + " table schemas");
+ } catch (Exception e) {
+ return JAXBErrorResponseBuilder.getJAXBResponse(e);
+ }
+ }
+
}
\ No newline at end of file
diff --git a/src/main/resources/ui5/view/AddTables.view b/src/main/resources/ui5/view/AddTables.view
index 38aa95d..4f10d32 100644
--- a/src/main/resources/ui5/view/AddTables.view
+++ b/src/main/resources/ui5/view/AddTables.view
@@ -1,29 +1,35 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/test/java/io/rtdi/bigdata/s4hanaconnector/PerformanceIT.java b/src/test/java/io/rtdi/bigdata/s4hanaconnector/PerformanceIT.java
index 33e3daf..09cf772 100644
--- a/src/test/java/io/rtdi/bigdata/s4hanaconnector/PerformanceIT.java
+++ b/src/test/java/io/rtdi/bigdata/s4hanaconnector/PerformanceIT.java
@@ -69,6 +69,7 @@ public void setUp() throws Exception {
connprops.getSourceSchema(),
TABLENAME,
"L1",
+ connprops.getSourceSchema(),
browser.getConnection());
entity.write(browser.getBusinessObjectDirectory());
logger.info("setup of environment is completed");