use of com.twinsoft.convertigo.beans.connectors.JavelinConnector in project convertigo by convertigo.
the class TransactionWriteVariableAction method run.
public void run() {
Display display = Display.getDefault();
Cursor waitCursor = new Cursor(display, SWT.CURSOR_WAIT);
Shell shell = getParentShell();
shell.setCursor(waitCursor);
try {
ProjectExplorerView explorerView = getProjectExplorerView();
if (explorerView != null) {
TreeObject treeObject = explorerView.getFirstSelectedTreeObject();
String variable = (String) ((VariableTreeObject) treeObject).getObject();
JavelinTransaction transaction = (JavelinTransaction) treeObject.getParent().getParent().getObject();
JavelinConnector javelinConnector = (JavelinConnector) transaction.getParent();
IEditorPart wpart = getConnectorEditor(javelinConnector);
if ((wpart != null) && (wpart instanceof ConnectorEditor)) {
getActivePage().activate(wpart);
ConnectorEditor connectorEditor = (ConnectorEditor) wpart;
ConnectorEditorPart connectorEditorPart = connectorEditor.getConnectorEditorPart();
AbstractConnectorComposite connectorComposite = connectorEditorPart.getConnectorComposite();
if ((connectorComposite != null) && (connectorComposite instanceof JavelinConnectorComposite)) {
Javelin javelin = ((JavelinConnectorComposite) connectorComposite).getJavelin();
ScreenClass currentScreenClass = ((JavelinConnector) connectorEditorPart.getConnector()).getCurrentScreenClass();
ConvertigoPlugin.logDebug("Analyzing screen class '" + currentScreenClass.getName() + "'...");
String normalizedScreenClassName = StringUtils.normalize(currentScreenClass.getName());
int i;
String handlerName = "on" + normalizedScreenClassName + JavelinTransaction.EVENT_ENTRY_HANDLER;
ConvertigoPlugin.logDebug("Handlers:\n" + transaction.handlers);
ConvertigoPlugin.logDebug("Searching for handler '" + handlerName + "'...");
if ((i = transaction.handlers.indexOf(handlerName)) == -1) {
display.beep();
ConvertigoPlugin.logDebug("No handler found for the current screen class!");
} else {
ConvertigoPlugin.logDebug("Handler found!");
// Delimit the function
int bof, eof;
bof = transaction.handlers.indexOf('{', i) + 1;
eof = transaction.handlers.indexOf("function", bof);
if (eof == -1) {
eof = transaction.handlers.lastIndexOf('}') - 1;
} else {
eof = transaction.handlers.lastIndexOf('}', eof) - 1;
}
String function = transaction.handlers.substring(bof, eof);
int c = javelin.getCurrentColumn();
int l = javelin.getCurrentLine();
String line1 = "\tjavelin.moveCursor(" + c + ", " + l + ");\n";
// We must remove the default value of the variable if any
String variableName = variable.toString();
int ii;
if ((ii = variableName.indexOf(' ')) != -1) {
variableName = variableName.substring(0, ii);
}
String line2 = "\tjavelin.send(" + variableName + ");\n";
// Delimit the marker for generated input variables code
String code = "";
int idxMarker = function.indexOf("\t// begin-of-variables");
if (idxMarker == -1) {
code = "\n\t// begin-of-variables: DO NOT EDIT OR MODIFY\n";
code += line1 + line2;
code += "\t// end-of-variables\n";
function = code + function;
} else {
idxMarker = function.indexOf("\t// end-of-variables");
// Update previous definition if any
int idxPreviousDefinition = function.indexOf(line2);
if (idxPreviousDefinition != -1) {
int i1 = function.lastIndexOf("moveCursor(", idxPreviousDefinition) + 11;
// Search for moveCursor only inside the variables block
if (i1 < idxMarker) {
int i2 = function.indexOf(')', i1);
function = function.substring(0, i1) + c + ", " + l + function.substring(i2);
}
} else // Add definition otherwise
{
code += line1 + line2;
}
function = function.substring(0, idxMarker) + code + function.substring(idxMarker);
}
transaction.handlers = transaction.handlers.substring(0, bof) + function + transaction.handlers.substring(eof);
transaction.hasChanged = true;
ConvertigoPlugin.logDebug("Code added:\n" + code);
explorerView.updateDatabaseObject(transaction);
// Update the opened handlers editor if any
JScriptEditorInput jsinput = ConvertigoPlugin.getDefault().getJScriptEditorInput(transaction);
if (jsinput != null) {
jsinput.reload();
}
}
javelin.requestFocus();
}
}
}
} catch (Throwable e) {
ConvertigoPlugin.logException(e, "Unable to write variable from Javelin!");
} finally {
shell.setCursor(null);
waitCursor.dispose();
}
}
use of com.twinsoft.convertigo.beans.connectors.JavelinConnector in project convertigo by convertigo.
the class ColumnEditor method addPropertyElementFromSelectionZone.
/**
* Add a column to the property according to the current selected zone.
* @param databaseObject
* @param connector
* @param setter
*/
public static void addPropertyElementFromSelectionZone(DatabaseObject databaseObject, Connector connector, Method propertySetter) {
if (connector == null) {
throw new IllegalArgumentException("The connector object is null");
}
JavelinConnector jTmp = null;
try {
jTmp = (JavelinConnector) connector;
} catch (ClassCastException e) {
throw new IllegalArgumentException("The connector object is not a JavelinConnector");
}
XMLRectangle zone = jTmp.getSelectionZone();
if ((zone.width < 1) || (zone.height < 1))
return;
XMLVector<XMLVector<Object>> vTmp = null;
if (Table.class.isAssignableFrom(databaseObject.getClass())) {
vTmp = ((Table) databaseObject).getColumns();
} else // not a table => no columns
{
}
XMLVector<Object> v = new XMLVector<Object>();
v.add(jTmp.javelin.getString(zone.x, zone.y, zone.width).trim());
v.add(Integer.valueOf(zone.x));
v.add(Integer.valueOf(zone.x + zone.width - 1));
v.add(Integer.valueOf(0));
vTmp.add(v);
try {
propertySetter.invoke(databaseObject, new Object[] { vTmp });
} catch (Throwable e) {
String message = "Error : " + e.getMessage();
ConvertigoPlugin.logException(e, message);
}
jTmp.javelin.setSelectionZone(new XMLRectangle(zone.x, 0, zone.width, jTmp.javelin.getScreenHeight()));
}
use of com.twinsoft.convertigo.beans.connectors.JavelinConnector in project convertigo by convertigo.
the class TraceTreeObject method play.
public void play(boolean bReplace) {
ProjectExplorerView explorerView = getProjectExplorerView();
if (explorerView == null)
return;
JavelinConnector javelinConnector = (JavelinConnector) getParent().getParent().getObject();
// Launch TracePlayer
if (explorerView.tracePlayerThread != null) {
if (!bReplace)
return;
explorerView.tracePlayerThread.stopPlayer();
}
File file = (File) getObject();
String traceFile = file.toString();
explorerView.tracePlayerThread = new TracePlayerThread("IbmTracePlayerThread", javelinConnector.getName(), traceFile);
// Connect javelin
IEditorPart wpart = getConnectorEditor(javelinConnector);
if (wpart != null) {
ConnectorEditor connectorEditor = (ConnectorEditor) wpart;
ConnectorEditorPart connectorEditorPart = connectorEditor.getConnectorEditorPart();
AbstractConnectorComposite connectorComposite = connectorEditorPart.getConnectorComposite();
if ((connectorComposite != null) && (connectorComposite instanceof JavelinConnectorComposite)) {
// Asynchronize javelin connection
final JavelinConnectorComposite javelinConnectorComposite = ((JavelinConnectorComposite) connectorComposite);
EventQueue.invokeLater(new Runnable() {
public void run() {
javelinConnectorComposite.renew(true);
javelinConnectorComposite.connect();
}
});
}
}
}
use of com.twinsoft.convertigo.beans.connectors.JavelinConnector in project convertigo by convertigo.
the class Connector method setupConnector.
public static void setupConnector(DatabaseObject connector) throws EngineException {
if (connector instanceof JavelinConnector) {
JavelinConnector javelinConnector = (JavelinConnector) connector;
JavelinScreenClass defaultScreenClass = new JavelinScreenClass();
defaultScreenClass.setName("Default_screen_class");
defaultScreenClass.hasChanged = true;
defaultScreenClass.bNew = true;
javelinConnector.setDefaultScreenClass(defaultScreenClass);
DefaultBlockFactory blockFactory = new DefaultBlockFactory();
blockFactory.setName("Block_factory");
blockFactory.hasChanged = true;
blockFactory.bNew = true;
defaultScreenClass.setBlockFactory(blockFactory);
EmulatorTechnology emulatorTechnology = new EmulatorTechnology();
emulatorTechnology.hasChanged = true;
emulatorTechnology.bNew = true;
emulatorTechnology.setName("Emulator_technology");
defaultScreenClass.add(emulatorTechnology);
JavelinTransaction transaction = new JavelinTransaction();
transaction.hasChanged = true;
transaction.bNew = true;
transaction.setName("XMLize");
javelinConnector.add(transaction);
javelinConnector.setDefaultTransaction(transaction);
} else if (connector instanceof HtmlConnector) {
HtmlConnector htmlConnector = (HtmlConnector) connector;
htmlConnector.setServer("www.convertigo.com");
HtmlScreenClass defaultScreenClass = new HtmlScreenClass();
defaultScreenClass.setName("Default_screen_class");
defaultScreenClass.hasChanged = true;
defaultScreenClass.bNew = true;
htmlConnector.setDefaultScreenClass(defaultScreenClass);
HtmlTransaction transaction = new HtmlTransaction();
transaction.hasChanged = true;
transaction.bNew = true;
transaction.setName("XMLize");
htmlConnector.add(transaction);
htmlConnector.setDefaultTransaction(transaction);
} else if (connector instanceof HttpConnector) {
HttpConnector httpConnector = (HttpConnector) connector;
HttpTransaction transaction = new HttpTransaction();
transaction.hasChanged = true;
transaction.bNew = true;
transaction.setName("Default_transaction");
httpConnector.add(transaction);
httpConnector.setDefaultTransaction(transaction);
} else if (connector instanceof SapJcoConnector) {
SapJcoConnector sapConnector = (SapJcoConnector) connector;
SapJcoLogonTransaction sapLogon = new SapJcoLogonTransaction();
sapLogon.hasChanged = true;
sapLogon.bNew = true;
sapLogon.setName("Logon");
sapLogon.addCredentialsVariables();
sapConnector.add(sapLogon);
sapConnector.setDefaultTransaction(sapLogon);
SapJcoTransaction transaction = new SapJcoTransaction();
transaction.hasChanged = true;
transaction.bNew = true;
transaction.setName("RFC_FUNCTION_SEARCH");
transaction.setBapiName("RFC_FUNCTION_SEARCH");
RequestableVariable variable = new RequestableVariable();
variable.hasChanged = true;
variable.bNew = true;
variable.setName("FUNCNAME");
variable.setValueOrNull("BAPI_*");
transaction.add(variable);
sapConnector.add(transaction);
} else if (connector instanceof SqlConnector) {
SqlConnector sqlConnector = (SqlConnector) connector;
sqlConnector.setJdbcDriverClassName("org.hsqldb.jdbcDriver");
SqlTransaction transaction = new SqlTransaction();
transaction.hasChanged = true;
transaction.bNew = true;
transaction.setName("Default_transaction");
sqlConnector.add(transaction);
sqlConnector.setDefaultTransaction(transaction);
} else if (connector instanceof CicsConnector) {
CicsConnector cicsConnector = (CicsConnector) connector;
CicsTransaction transaction = new CicsTransaction();
transaction.hasChanged = true;
transaction.bNew = true;
transaction.setName("Default_transaction");
cicsConnector.add(transaction);
cicsConnector.setDefaultTransaction(transaction);
} else if (connector instanceof SiteClipperConnector) {
SiteClipperConnector siteClipperConnector = (SiteClipperConnector) connector;
SiteClipperScreenClass defaultScreenClass = new SiteClipperScreenClass();
defaultScreenClass.setName("Default_screen_class");
defaultScreenClass.hasChanged = true;
defaultScreenClass.bNew = true;
siteClipperConnector.setDefaultScreenClass(defaultScreenClass);
SiteClipperTransaction transaction = new SiteClipperTransaction();
transaction.hasChanged = true;
transaction.bNew = true;
transaction.setName("Default_transaction");
siteClipperConnector.add(transaction);
siteClipperConnector.setDefaultTransaction(transaction);
} else if (connector instanceof CouchDbConnector) {
CouchDbConnector couchDbConnector = (CouchDbConnector) connector;
String couchDbXsdPath = AbstractCouchDbTransaction.COUCHDB_XSD_LOCATION;
boolean existReference = false;
for (Reference reference : couchDbConnector.getProject().getReferenceList()) {
if (reference instanceof XsdSchemaReference) {
String urlPath = ((XsdSchemaReference) reference).getUrlpath();
if (urlPath.equals(couchDbXsdPath)) {
existReference = true;
break;
}
}
}
if (!existReference) {
ImportXsdSchemaReference reference = new ImportXsdSchemaReference();
reference.setName("CouchDb_schema");
reference.setUrlpath(couchDbXsdPath);
couchDbConnector.getProject().add(reference);
}
GetServerInfoTransaction transaction = new GetServerInfoTransaction();
couchDbConnector.add(transaction);
couchDbConnector.setDefaultTransaction(transaction);
}
}
use of com.twinsoft.convertigo.beans.connectors.JavelinConnector in project convertigo by convertigo.
the class CreateScreenClassFromSelectionZoneAction method run.
public void run() {
Display display = Display.getDefault();
Cursor waitCursor = new Cursor(display, SWT.CURSOR_WAIT);
Shell shell = getParentShell();
shell.setCursor(waitCursor);
try {
ProjectExplorerView explorerView = getProjectExplorerView();
IWorkbenchPart wpart = getActivePart();
if ((explorerView != null) && (wpart != null) && (wpart instanceof ConnectorEditor)) {
ConnectorEditor connectorEditor = (ConnectorEditor) wpart;
ConnectorEditorPart connectorEditorPart = connectorEditor.getConnectorEditorPart();
AbstractConnectorComposite connectorComposite = connectorEditorPart.getConnectorComposite();
if ((connectorComposite != null) && (connectorComposite instanceof JavelinConnectorComposite)) {
Javelin javelin = ((JavelinConnectorComposite) connectorComposite).getJavelin();
ScreenClass currentScreenClass = ((JavelinConnector) connectorEditorPart.getConnector()).getCurrentScreenClass();
Engine.theApp.fireObjectDetected(new EngineEvent(currentScreenClass));
ScreenClassTreeObject lastDetectedScreenClassTreeObject = explorerView.getLastDetectedScreenClassTreeObject();
if (lastDetectedScreenClassTreeObject != null) {
Rectangle zone = javelin.getSelectionZone();
String strZone = javelin.getString(zone.x, zone.y, zone.width);
ScreenClass lastDetectedScreenClass = (ScreenClass) lastDetectedScreenClassTreeObject.getObject();
JavelinScreenClass screenClass = new JavelinScreenClass();
screenClass.priority = lastDetectedScreenClass.priority + 1;
screenClass.hasChanged = true;
screenClass.bNew = true;
lastDetectedScreenClass.add(screenClass);
FindString fs = new FindString();
fs.setString(strZone);
fs.setX(zone.x);
fs.setY(zone.y);
fs.hasChanged = true;
fs.bNew = true;
// Determine whether there is the same attribute for each character
boolean isSameAttribute = true;
int attribute = javelin.getCharAttribute(zone.x, zone.y);
for (int i = 1; (i < zone.width) && isSameAttribute; i++) {
isSameAttribute = JavelinUtils.isSameAttribute(attribute, javelin.getCharAttribute(zone.x + i, zone.y));
}
fs.setAttribute(isSameAttribute ? attribute : -1);
screenClass.addCriteria(fs);
explorerView.reloadTreeObject(lastDetectedScreenClassTreeObject);
Engine.theApp.fireObjectDetected(new EngineEvent(screenClass));
javelin.setSelectionZone(new Rectangle(0, 0, 0, 0));
}
}
}
} catch (Throwable e) {
ConvertigoPlugin.logException(e, "Unable to create screen class from selection zone!");
} finally {
shell.setCursor(null);
waitCursor.dispose();
}
}
Aggregations