Skip to content

Commit a291dcb

Browse files
committed
- Soporte para SAP Cloud Destination
- Separo Documentreceiver y DocumentSender de la connection SessionManager.
1 parent 1e8054f commit a291dcb

5 files changed

Lines changed: 485 additions & 293 deletions

File tree

java/src/main/java/com/genexus/sap/DocumentClient.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.sap.conn.jco.server.JCoServerFunctionHandler;
2222

2323
public class DocumentClient {
24+
2425
private static final int BLOB_LENGTH = 1022;
2526

2627
static class ErrorHandler implements JCoServerErrorListener, JCoServerExceptionListener {
@@ -125,6 +126,4 @@ public void handleRequest(JCoServerContext serverCtx, JCoFunction function) thro
125126
}
126127
}
127128

128-
129-
130129
}
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
package com.genexus.sap;
2+
3+
import com.genexus.ModelContext;
4+
import com.sap.conn.jco.JCoException;
5+
6+
import com.sap.conn.jco.JCoMetaData;
7+
import com.sap.conn.jco.JCoRecordMetaData;
8+
import com.sap.conn.jco.server.JCoServer;
9+
import com.sap.conn.jco.server.DefaultServerHandlerFactory;
10+
11+
import com.sap.conn.jco.server.JCoServerFactory;
12+
import com.sap.conn.jco.JCoCustomRepository;
13+
import com.sap.conn.jco.JCoFunctionTemplate;
14+
import com.sap.conn.jco.JCoListMetaData;
15+
import com.sap.conn.jco.JCo;
16+
import com.genexus.diagnostics.Log;
17+
18+
public class DocumentReceiver
19+
{
20+
private static final int BLOB_LENGTH = 1022;
21+
private String serverName = "";
22+
private String repositoryName = "";
23+
private ModelContext _context = null;
24+
JCoServer receiver = null;
25+
26+
27+
public DocumentReceiver(String server, String repository, ModelContext context)
28+
{
29+
this.serverName = server;
30+
this.repositoryName = repository;
31+
this._context = context;
32+
}
33+
34+
public void start()
35+
{
36+
Log.info("GX SAP - DMS Receiver Start " + serverName + " " + repositoryName);
37+
try {
38+
receiver = setupServerDownload(serverName, repositoryName);
39+
receiver.start();
40+
}
41+
catch (JCoException ex)
42+
{
43+
Log.error("GX SAP - Error Starting " + ex.toString()) ;
44+
}
45+
}
46+
47+
public void stop()
48+
{
49+
50+
String receiverName = "";
51+
if (serverName == null || serverName.equals(""))
52+
{
53+
Object receiverObj = _context.getContextProperty("SAPReceiverServerName");
54+
if (receiverObj != null)
55+
{
56+
receiverName = (String)receiverObj;
57+
}
58+
}
59+
else
60+
{
61+
receiverName = serverName;
62+
}
63+
64+
try {
65+
if (!receiverName.equals(""))
66+
{
67+
receiver = JCoServerFactory.getServer(receiverName);
68+
if (receiver != null) receiver.stop();
69+
Log.info("GX SAP - DMS Receiver stop " + receiverName );
70+
}
71+
else
72+
{
73+
Log.error("GX SAP - Error Stopping receiver." );
74+
}
75+
}
76+
catch (JCoException ex)
77+
{
78+
Log.error("GX SAP - Error Stopping " + ex.toString()) ;
79+
}
80+
81+
}
82+
83+
public JCoServer setupServerDownload(String serverName, String repositoryName) throws JCoException
84+
{
85+
JCoServer server = JCoServerFactory.getServer(serverName);
86+
JCoCustomRepository repo = JCo.createCustomRepository(repositoryName);
87+
JCoListMetaData imports, exports, tables;
88+
JCoFunctionTemplate FTP_R3_TO_CLIENT;
89+
90+
imports = JCo.createListMetaData("IMPORTING");
91+
imports.add("FNAME", JCoMetaData.TYPE_CHAR, 256, 512, JCoListMetaData.IMPORT_PARAMETER);
92+
imports.add("LENGTH", JCoMetaData.TYPE_INT, 4, 4, JCoListMetaData.IMPORT_PARAMETER);
93+
imports.add("MODE", JCoMetaData.TYPE_CHAR, 1, 2, JCoListMetaData.IMPORT_PARAMETER | JCoListMetaData.OPTIONAL_PARAMETER);
94+
imports.lock();
95+
96+
exports = JCo.createListMetaData("EXPORTING");
97+
exports.add("ERROR", JCoMetaData.TYPE_INT, 4, 4, JCoListMetaData.EXPORT_PARAMETER);
98+
exports.add("LENGTH", JCoMetaData.TYPE_INT, 4, 4, JCoListMetaData.EXPORT_PARAMETER);
99+
exports.lock();
100+
101+
JCoRecordMetaData tabLine = JCo.createRecordMetaData("BLOB");
102+
tabLine.add("LINE", JCoMetaData.TYPE_BYTE, BLOB_LENGTH, 0, BLOB_LENGTH, 0);
103+
tabLine.lock();
104+
tables = JCo.createListMetaData("TABLES");
105+
tables.add("BLOB", JCoMetaData.TYPE_TABLE, tabLine, 0);
106+
tables.lock();
107+
108+
FTP_R3_TO_CLIENT = JCo.createFunctionTemplate("FTP_R3_TO_CLIENT", imports, exports, null, tables, null);
109+
repo.addFunctionTemplateToCache(FTP_R3_TO_CLIENT);
110+
server.setRepository(repo);
111+
112+
DefaultServerHandlerFactory.FunctionHandlerFactory handlerFactory = new DefaultServerHandlerFactory.FunctionHandlerFactory();
113+
handlerFactory.registerHandler("FTP_R3_TO_CLIENT", new DocumentClient.FTP_R3_TO_CLIENTHandler());
114+
server.setCallHandlerFactory(handlerFactory);
115+
116+
DocumentClient.ErrorHandler hdl = new DocumentClient.ErrorHandler();
117+
server.addServerErrorListener(hdl);
118+
server.addServerExceptionListener(hdl);
119+
120+
return server;
121+
}
122+
123+
}
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
2+
3+
4+
package com.genexus.sap;
5+
6+
import com.genexus.ModelContext;
7+
import com.sap.conn.jco.JCoException;
8+
import com.sap.conn.jco.JCoMetaData;
9+
import com.sap.conn.jco.JCoRecordMetaData;
10+
import com.sap.conn.jco.server.JCoServer;
11+
import com.sap.conn.jco.server.DefaultServerHandlerFactory;
12+
13+
import com.sap.conn.jco.ext.DestinationDataProvider;
14+
import com.sap.conn.jco.ext.ServerDataProvider;
15+
import com.sap.conn.jco.server.JCoServerFactory;
16+
import com.sap.conn.jco.JCoCustomRepository;
17+
import com.sap.conn.jco.JCoFunctionTemplate;
18+
import com.sap.conn.jco.JCoListMetaData;
19+
import com.sap.conn.jco.JCo;
20+
import com.genexus.diagnostics.Log;
21+
22+
public class DocumentSender
23+
{
24+
private static final int BLOB_LENGTH = 1022;
25+
private String serverName = "";
26+
private String repositoryName = "";
27+
private ModelContext _context = null;
28+
JCoServer sender = null;
29+
30+
31+
public DocumentSender(String server, String repository, ModelContext context)
32+
{
33+
this.serverName = server;
34+
this.repositoryName = repository;
35+
this._context = context;
36+
}
37+
38+
public void start()
39+
{
40+
Log.info("GX SAP - DMS Sender Start " + serverName + " " + repositoryName);
41+
42+
try {
43+
sender = setupServerUpload(serverName, repositoryName);
44+
sender.start();
45+
}
46+
catch (JCoException ex)
47+
{
48+
Log.error("GX SAP - Error Starting " + ex.toString()) ;
49+
}
50+
}
51+
52+
public void stop()
53+
{
54+
String senderName = "";
55+
if (serverName == null || serverName.equals(""))
56+
{
57+
Object senderObj = _context.getContextProperty("SAPSenderServerName");
58+
if (senderObj != null)
59+
{
60+
senderName = (String)senderObj;
61+
}
62+
}
63+
else
64+
{
65+
senderName = serverName;
66+
}
67+
try {
68+
if (!senderName.equals(""))
69+
{
70+
sender = JCoServerFactory.getServer(senderName);
71+
if (sender != null) sender.stop();
72+
Log.info("GX SAP - DMS Sender stop " + senderName );
73+
}
74+
else
75+
{
76+
Log.error("GX SAP - Error Stopping sender" );
77+
}
78+
}
79+
catch (JCoException ex)
80+
{
81+
Log.error("GX SAP - Error Stopping " + ex.toString()) ;
82+
}
83+
}
84+
85+
public JCoServer setupServerUpload(String serverName, String repositoryName) throws JCoException
86+
{
87+
JCoServer server = JCoServerFactory.getServer(serverName);
88+
89+
JCoCustomRepository repo = JCo.createCustomRepository(repositoryName);
90+
JCoListMetaData imports, exports, tables;
91+
JCoFunctionTemplate FTP_CLIENT_TO_R3;
92+
93+
imports = JCo.createListMetaData("IMPORTING");
94+
imports.add("FNAME", JCoMetaData.TYPE_CHAR, 256, 512, JCoListMetaData.IMPORT_PARAMETER);
95+
imports.add("MODE", JCoMetaData.TYPE_CHAR, 1, 2, JCoListMetaData.IMPORT_PARAMETER | JCoListMetaData.OPTIONAL_PARAMETER);
96+
imports.lock();
97+
98+
exports = JCo.createListMetaData("EXPORTING");
99+
exports.add("ERROR", JCoMetaData.TYPE_INT, 4, 4, JCoListMetaData.EXPORT_PARAMETER);
100+
exports.add("LENGTH", JCoMetaData.TYPE_INT, 4, 4, JCoListMetaData.EXPORT_PARAMETER);
101+
exports.lock();
102+
103+
JCoRecordMetaData tabLine = JCo.createRecordMetaData("BLOB");
104+
tabLine.add("LINE", JCoMetaData.TYPE_BYTE, BLOB_LENGTH, 0, BLOB_LENGTH, 0);
105+
tabLine.lock();
106+
107+
tables = JCo.createListMetaData("TABLES");
108+
tables.add("BLOB", JCoMetaData.TYPE_TABLE, tabLine, 0);
109+
tables.lock();
110+
111+
FTP_CLIENT_TO_R3 = JCo.createFunctionTemplate("FTP_CLIENT_TO_R3", imports, exports, null, tables, null);
112+
repo.addFunctionTemplateToCache(FTP_CLIENT_TO_R3);
113+
server.setRepository(repo);
114+
115+
DefaultServerHandlerFactory.FunctionHandlerFactory handlerFactory = new DefaultServerHandlerFactory.FunctionHandlerFactory();
116+
handlerFactory.registerHandler("FTP_CLIENT_TO_R3", new DocumentClient.FTP_CLIENT_TO_R3Handler());
117+
server.setCallHandlerFactory(handlerFactory);
118+
119+
DocumentClient.ErrorHandler hdl = new DocumentClient.ErrorHandler();
120+
server.addServerErrorListener(hdl);
121+
server.addServerExceptionListener(hdl);
122+
123+
return server;
124+
}
125+
126+
}

0 commit comments

Comments
 (0)