use of com.twinsoft.convertigo.beans.common.XMLVector in project convertigo by convertigo.
the class TreeDropAdapter method performDrop.
private void performDrop(Object data, final ProjectExplorerView explorerView, TreeObject targetTreeObject) throws EngineException, IOException {
boolean needReload = false;
final DatabaseObject dbo;
if (data instanceof String) {
String source = data.toString();
if (targetTreeObject instanceof ObjectsFolderTreeObject) {
ObjectsFolderTreeObject folderTreeObject = (ObjectsFolderTreeObject) targetTreeObject;
dbo = (DatabaseObject) folderTreeObject.getParent().getObject();
switch(folderTreeObject.folderType) {
case ObjectsFolderTreeObject.FOLDER_TYPE_CRITERIAS:
if (dbo instanceof HtmlScreenClass) {
// Creates a XPath criteria for this screen class
if (!dbo.equals(((HtmlConnector) dbo.getConnector()).getDefaultScreenClass())) {
((HtmlScreenClass) dbo).addCriteria(createXPath(source));
needReload = true;
}
}
break;
case ObjectsFolderTreeObject.FOLDER_TYPE_INHERITED_SCREEN_CLASSES:
if (dbo instanceof HtmlScreenClass) {
// Creates an inherited screen class with an XPath criteria for this screen class
HtmlScreenClass newSc = createHtmlScreenClass(dbo.priority + 1);
((HtmlScreenClass) dbo).addInheritedScreenClass(newSc);
newSc.addCriteria(createXPath(source));
needReload = true;
}
break;
case ObjectsFolderTreeObject.FOLDER_TYPE_EXTRACTION_RULES:
if (dbo instanceof HtmlScreenClass) {
NewObjectWizard newObjectWizard = new NewObjectWizard(dbo, "com.twinsoft.convertigo.beans.core.ExtractionRule", source, null);
WizardDialog wzdlg = new WizardDialog(Display.getDefault().getActiveShell(), newObjectWizard);
wzdlg.setPageSize(850, 650);
wzdlg.open();
needReload = true;
}
break;
default:
break;
}
if (needReload)
reloadTreeObject(explorerView, folderTreeObject.getParent());
} else if (targetTreeObject instanceof DatabaseObjectTreeObject) {
DatabaseObjectTreeObject databaseObjectTreeObject = (DatabaseObjectTreeObject) targetTreeObject;
dbo = (DatabaseObject) targetTreeObject.getObject();
if (databaseObjectTreeObject instanceof ScreenClassTreeObject) {
if (dbo instanceof HtmlScreenClass) {
// Creates an inherited screen class with an XPath criteria for this screen class
HtmlScreenClass newSc = createHtmlScreenClass(dbo.priority + 1);
((HtmlScreenClass) dbo).addInheritedScreenClass(newSc);
newSc.addCriteria(createXPath(source));
needReload = true;
}
} else if (dbo instanceof IXPathable) {
// Set XPath property
if (dbo instanceof XpathableStatement)
((XpathableStatement) dbo).setPureXpath(source);
else
((IXPathable) dbo).setXpath(source);
((DatabaseObject) dbo).hasChanged = true;
needReload = true;
}
if (needReload)
reloadTreeObject(explorerView, databaseObjectTreeObject);
} else if (targetTreeObject instanceof IPropertyTreeObject) {
IPropertyTreeObject pto = null;
if (detail == DND.DROP_MOVE) {
// Set XPath property
if (targetTreeObject instanceof IXPathable) {
((IXPathable) targetTreeObject).setXpath("." + source);
needReload = true;
} else // Add new row with xpath
if (targetTreeObject instanceof PropertyTableTreeObject) {
// // See Ticket #679 : Drag and drop without Control
// PropertyTableTreeObject description = (PropertyTableTreeObject)targetTreeObject;
// pto = description.addNewRow();
// needReload = true;
// if ((pto != null) && (pto instanceof IXPathable)) {
// ((IXPathable)pto).setXpath("."+source);
// }
String label = ((PropertyTableTreeObject) targetTreeObject).getRowDefaultLabel().toLowerCase();
throw new EngineException("Please hold on the 'Ctrl' key while dragging to create a new " + label);
}
} else if (detail == DND.DROP_COPY) {
// Add new row with xpath
if (targetTreeObject instanceof PropertyTableTreeObject) {
PropertyTableTreeObject description = (PropertyTableTreeObject) targetTreeObject;
pto = description.addNewRow();
needReload = true;
if ((pto != null) && (pto instanceof IXPathable)) {
((IXPathable) pto).setXpath("." + source);
}
} else // Add new column with xpath
if (targetTreeObject instanceof PropertyTableRowTreeObject) {
PropertyTableRowTreeObject row = (PropertyTableRowTreeObject) targetTreeObject;
pto = row.addNewColumn();
needReload = true;
if ((pto != null) && (pto instanceof IXPathable)) {
((IXPathable) pto).setXpath("." + source);
}
}
}
if (needReload) {
pto = (pto == null) ? (IPropertyTreeObject) targetTreeObject : pto;
targetTreeObject = ((IPropertyTreeObject) targetTreeObject).getTreeObjectOwner();
if (targetTreeObject instanceof DatabaseObjectTreeObject) {
// reloadTreeObject(explorerView, targetTreeObject);
TreeParent treeParent = targetTreeObject.getParent();
if (treeParent instanceof FolderTreeObject)
treeParent = treeParent.getParent();
explorerView.objectChanged(new CompositeEvent(treeParent.getObject(), pto.getPath()));
}
}
}
} else if (data instanceof StepSource) {
if (targetTreeObject instanceof DatabaseObjectTreeObject) {
final DatabaseObjectTreeObject databaseObjectTreeObject = (DatabaseObjectTreeObject) targetTreeObject;
dbo = (DatabaseObject) targetTreeObject.getObject();
final Set<PropertyDescriptor> propertyDescriptors = new TreeSet<PropertyDescriptor>(new Comparator<PropertyDescriptor>() {
@Override
public int compare(PropertyDescriptor o1, PropertyDescriptor o2) {
return o1.getDisplayName().compareTo(o2.getDisplayName());
}
});
propertyDescriptors.addAll(CachedIntrospector.getPropertyDescriptors(dbo, Property.smartType));
propertyDescriptors.addAll(CachedIntrospector.getPropertyDescriptors(dbo, Property.sourceDefinition));
propertyDescriptors.addAll(CachedIntrospector.getPropertyDescriptors(dbo, Property.sourcesDefinition));
if (!propertyDescriptors.isEmpty()) {
// Retrieve Source definition
final XMLVector<String> sourceDefinition = new XMLVector<String>(2);
sourceDefinition.add(((StepSource) data).getPriority());
sourceDefinition.add(((StepSource) data).getXpath());
SelectionListener selectionListener = new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
PropertyDescriptor propertyDescriptor = (e == null) ? propertyDescriptors.iterator().next() : (PropertyDescriptor) e.widget.getData();
String propertyName = propertyDescriptor.getName();
if (propertyDescriptor.getPropertyType().isAssignableFrom(SmartType.class)) {
SmartType smartType = new SmartType();
smartType.setMode(Mode.SOURCE);
smartType.setSourceDefinition(sourceDefinition);
databaseObjectTreeObject.setPropertyValue(propertyDescriptor.getName(), smartType);
} else if (propertyName.equals("sourceDefinition")) {
// Use setPropertyValue in order to set object's value and fire necessary events
databaseObjectTreeObject.setPropertyValue(propertyDescriptor.getName(), sourceDefinition);
} else if (propertyName.equals("sourcesDefinition")) {
try {
XMLVector<XMLVector<Object>> sourcesDefinition = GenericUtils.cast(propertyDescriptor.getReadMethod().invoke(dbo));
// make a copy to make a property change
sourcesDefinition = new XMLVector<XMLVector<Object>>(sourcesDefinition);
XMLVector<Object> row = new XMLVector<Object>();
row.add("");
row.add(sourceDefinition);
row.add("");
sourcesDefinition.add(row);
databaseObjectTreeObject.setPropertyValue(propertyName, sourcesDefinition);
} catch (Exception ex) {
ConvertigoPlugin.logError("failed to add to sourcesDefinition of " + dbo.getName());
}
}
// Properties view needs to be refreshed
refreshPropertiesView(explorerView, databaseObjectTreeObject);
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
}
};
if (propertyDescriptors.size() == 1) {
selectionListener.widgetSelected(null);
} else {
Shell shell = ConvertigoPlugin.getMainShell();
Menu dropMenu = new Menu(shell, SWT.POP_UP);
shell.setMenu(dropMenu);
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
MenuItem itemCheck = new MenuItem(dropMenu, SWT.NONE);
itemCheck.setText(propertyDescriptor.getDisplayName());
itemCheck.setData(propertyDescriptor);
itemCheck.addSelectionListener(selectionListener);
}
dropMenu.setVisible(true);
}
}
}
} else if (data instanceof PaletteSource) {
try {
if (targetTreeObject instanceof ObjectsFolderTreeObject) {
ObjectsFolderTreeObject folderTreeObject = (ObjectsFolderTreeObject) targetTreeObject;
targetTreeObject = folderTreeObject.getParent();
}
if (targetTreeObject instanceof DatabaseObjectTreeObject) {
DatabaseObject parent = (DatabaseObject) targetTreeObject.getObject();
String xmlData = ((PaletteSource) data).getXmlData();
Document document = XMLUtils.getDefaultDocumentBuilder().parse(new InputSource(new StringReader(xmlData)));
Element rootElement = document.getDocumentElement();
NodeList nodeList = rootElement.getChildNodes();
int len = nodeList.getLength();
Node node;
// Special objects move from palette
if (detail == DND.DROP_MOVE) {
for (int i = 0; i < len; i++) {
node = (Node) nodeList.item(i);
if (node.getNodeType() != Node.TEXT_NODE) {
if (paste(node, parent, true) == null) {
throw new Exception();
}
}
}
reloadTreeObject(explorerView, targetTreeObject);
}
} else {
throw new Exception();
}
} catch (Exception ex) {
ConvertigoPlugin.logError("failed to add from palette");
}
} else if (data instanceof MobileSource) {
try {
String jsonString = ((MobileSource) data).getJsonString();
if (targetTreeObject instanceof MobileUIComponentTreeObject) {
Shell shell = ConvertigoPlugin.getMainShell();
Menu dropMenu = new Menu(shell, SWT.POP_UP);
shell.setMenu(dropMenu);
MobileUIComponentTreeObject mcto = GenericUtils.cast(targetTreeObject);
for (IPropertyDescriptor descriptor : mcto.getPropertyDescriptors()) {
if (descriptor instanceof MobileSmartSourcePropertyDescriptor) {
MobileSmartSourcePropertyDescriptor cspd = GenericUtils.cast(descriptor);
if (!cspd.isReadOnly()) {
String propertyName = (String) cspd.getId();
String propertyLabel = (String) cspd.getDisplayName();
MenuItem itemCheck = new MenuItem(dropMenu, SWT.NONE);
itemCheck.setText(propertyLabel);
itemCheck.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
com.twinsoft.convertigo.beans.mobile.components.MobileSmartSourceType cst = new com.twinsoft.convertigo.beans.mobile.components.MobileSmartSourceType();
cst.setMode(com.twinsoft.convertigo.beans.mobile.components.MobileSmartSourceType.Mode.SOURCE);
cst.setSmartValue(jsonString);
mcto.setPropertyValue(propertyName, cst);
refreshPropertiesView(explorerView, mcto);
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
}
});
}
}
}
dropMenu.setVisible(true);
}
if (targetTreeObject instanceof NgxUIComponentTreeObject) {
Shell shell = ConvertigoPlugin.getMainShell();
Menu dropMenu = new Menu(shell, SWT.POP_UP);
shell.setMenu(dropMenu);
NgxUIComponentTreeObject mcto = GenericUtils.cast(targetTreeObject);
for (IPropertyDescriptor descriptor : mcto.getPropertyDescriptors()) {
if (descriptor instanceof NgxSmartSourcePropertyDescriptor) {
NgxSmartSourcePropertyDescriptor cspd = GenericUtils.cast(descriptor);
if (!cspd.isReadOnly()) {
String propertyName = (String) cspd.getId();
String propertyLabel = (String) cspd.getDisplayName();
MenuItem itemCheck = new MenuItem(dropMenu, SWT.NONE);
itemCheck.setText(propertyLabel);
itemCheck.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
com.twinsoft.convertigo.beans.ngx.components.MobileSmartSourceType cst = new com.twinsoft.convertigo.beans.ngx.components.MobileSmartSourceType();
cst.setMode(com.twinsoft.convertigo.beans.ngx.components.MobileSmartSourceType.Mode.SOURCE);
cst.setSmartValue(jsonString);
mcto.setPropertyValue(propertyName, cst);
refreshPropertiesView(explorerView, mcto);
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
}
});
}
}
}
dropMenu.setVisible(true);
} else {
throw new Exception();
}
} catch (Exception ex) {
ConvertigoPlugin.logError("failed to add mobile source");
}
}
}
use of com.twinsoft.convertigo.beans.common.XMLVector in project convertigo by convertigo.
the class TransactionWithVariables method getVariablesDefinition.
/**
* Compatibility for version older than 4.6.0 *
*/
@Deprecated
public XMLVector<XMLVector<Object>> getVariablesDefinition() {
XMLVector<XMLVector<Object>> xmlv = new XMLVector<XMLVector<Object>>();
getVariablesList();
if (hasVariables()) {
for (int i = 0; i < numberOfVariables(); i++) {
RequestableVariable variable = (RequestableVariable) getVariable(i);
XMLVector<Object> v = new XMLVector<Object>();
v.add(variable.getName());
v.add(variable.getDescription());
v.add(variable.getDefaultValue());
v.add(variable.isWsdl());
v.add(variable.isMultiValued());
v.add(variable.isPersonalizable());
v.add(variable.isCachedKey());
xmlv.add(v);
}
}
return xmlv;
}
use of com.twinsoft.convertigo.beans.common.XMLVector in project convertigo by convertigo.
the class ServletRequester method initContext.
@Override
public void initContext(Context context) throws Exception {
HttpServletRequest request = (HttpServletRequest) inputData;
context.setRequest(request);
super.initContext(context);
context.subPath = subPath;
boolean bConnectorGivenByUser = false;
Engine.logContext.debug("(Servlet requester.initContext) Query string: " + request.getQueryString());
// We transform the HTTP post data into XML data.
Enumeration<?> parameterNames = request.getParameterNames();
String parameterName, parameterValue;
String[] parameterValues = null;
while (parameterNames.hasMoreElements()) {
parameterName = (String) parameterNames.nextElement();
parameterValues = request.getParameterValues(parameterName);
parameterValue = parameterValues[0];
handleParameter(context, parameterName, parameterValue);
if (parameterName.equals(Parameter.Connector.getName())) {
bConnectorGivenByUser = true;
}
}
TestCase tc = TestCase.getTestCase(request, context.projectName);
if (tc != null) {
for (TestCaseVariable var : tc.getVariables()) {
parameterName = var.getName();
if (request.getParameter(parameterName) == null) {
Object value = var.getValueOrNull();
if (value == null || (var.isMultiValued() && ((XMLVector<?>) value).isEmpty())) {
continue;
}
parameterValue = (String) (var.isMultiValued() ? ((XMLVector<?>) value).get(0) : value);
handleParameter(context, parameterName, parameterValue);
if (parameterName.equals(Parameter.Connector.getName())) {
bConnectorGivenByUser = true;
}
}
}
}
if (!bConnectorGivenByUser) {
if (context.project != null && context.project.getName().equals(context.projectName)) {
String defaultConnectorName = context.project.getDefaultConnector().getName();
if (!defaultConnectorName.equals(context.connectorName)) {
context.connectorName = defaultConnectorName;
}
}
}
Engine.logContext.debug("Context initialized!");
}
use of com.twinsoft.convertigo.beans.common.XMLVector in project convertigo by convertigo.
the class GenericRequester method findBrowserFromUserAgent.
private String findBrowserFromUserAgent(Project project, String userAgent) {
XMLVector<XMLVector<String>> browserDefinitions = project.getBrowserDefinitions();
if (browserDefinitions != null) {
int len = browserDefinitions.size();
String keyword, browser;
RE regexp;
for (int i = 0; i < len; i++) {
browser = browserDefinitions.get(i).get(0);
keyword = browserDefinitions.get(i).get(1);
try {
regexp = REUtil.createRE(keyword);
if (regexp.match(userAgent)) {
return browser;
}
} catch (Exception e) {
Engine.logContext.error("Unable to parse keyword regular expression for browser \"" + browser + "\"", e);
}
}
}
return Sheet.BROWSER_ALL;
}
use of com.twinsoft.convertigo.beans.common.XMLVector in project convertigo by convertigo.
the class HttpTriggerScreenClassEditorComposite method getTriggerXMLizer.
public TriggerXMLizer getTriggerXMLizer() {
String[] items = scrClass_list.getSelection();
XMLVector<String> list = new XMLVector<String>();
for (int i = 0; i < items.length; i++) {
list.add(items[i]);
}
return new TriggerXMLizer(new ScreenClassTrigger(list, parent.getTimeout()));
}
Aggregations