use of com.twinsoft.convertigo.beans.steps.XMLElementStep in project convertigo by convertigo.
the class ClipboardAction method pasteStep.
private Object pasteStep(Shell shell, String source, DatabaseObject targetObject) throws ParserConfigurationException, SAXException, IOException {
// Can only paste on Sequence or Step
if (targetObject instanceof Sequence)
return targetObject;
else if (!(targetObject instanceof Step))
return null;
// cannot paste to IThenElseContainer
if (targetObject instanceof IThenElseContainer)
return null;
else {
List<Object> objects = clipboardManager.read(source);
int size = objects.size();
for (Object ob : objects) {
// Can only paste step objects
if (!(ob instanceof Step))
return null;
// Can paste only on step which may contain children
if ((ob instanceof StepWithExpressions) && (!(targetObject instanceof StepWithExpressions)))
return null;
// cannot paste a ThenStep
if (ob instanceof ThenStep)
return null;
// cannot paste a ElseStep
if (ob instanceof ElseStep)
return null;
// cannot paste a ThenStatement
if (ob instanceof ThenStatement)
return null;
// cannot paste a ElseStatement
if (ob instanceof ElseStatement)
return null;
// Special case of XMLElementStep, ElementStep
if ((targetObject instanceof XMLElementStep) || (targetObject instanceof ElementStep)) {
// Case paste on itself -> target is changed to parent
if ((size == 1) && ((ob instanceof XMLElementStep) || (ob instanceof ElementStep))) {
if (((Step) ob).getName().equals(targetObject.getName())) {
return targetObject.getParent();
}
return null;
} else // Else, only accept paste of XMLAttributeStep
if (!(ob instanceof XMLAttributeStep || ob instanceof AttributeStep)) {
return null;
}
} else // Case of step which may contain children
if (targetObject instanceof StepWithExpressions) {
// Case paste on itself -> ask user what to do
if ((size == 1) && (ob.getClass().equals(targetObject.getClass()))) {
if (((Step) ob).getName().equals(targetObject.getName())) {
CustomDialog customDialog = new CustomDialog(shell, "Paste a step", "Do you want to paste the step as a sibling or a child step?", 500, 150, new ButtonSpec("As a sibling", true), new ButtonSpec("As a child", false), new ButtonSpec(IDialogConstants.CANCEL_LABEL, false));
int response = customDialog.open();
if (response == 0) {
return targetObject.getParent();
} else if (response == 2) {
return null;
} else
break;
}
}
// Else, paste
break;
} else // Other case
{
// Case paste on itself -> target is changed to parent
if ((size == 1) && (ob.getClass().equals(targetObject.getClass()))) {
if (((Step) ob).getName().equals(targetObject.getName())) {
return targetObject.getParent();
}
return null;
}
// Else, not permitted
return null;
}
}
}
return targetObject;
}
use of com.twinsoft.convertigo.beans.steps.XMLElementStep in project convertigo by convertigo.
the class StepUtils method createElementStep.
private static Step createElementStep(Sequence mainSequence, Object parent, Element element) throws EngineException {
Step step = null;
if (element != null) {
if (parent != null) {
// element.getAttribute(xsd.getXmlGenerationDescription().getOccursAttribute());
String occurs = element.getAttribute("maxOccurs");
if (!occurs.equals("")) {
if (occurs.equals("unbounded"))
occurs = "10";
if (Long.parseLong(occurs, 10) > 1) {
parent = createIteratorStep(mainSequence, parent, element);
}
}
}
String tagName = element.getTagName();
String localName = element.getLocalName();
String elementNodeName = (localName == null) ? tagName : localName;
Node firstChild = element.getFirstChild();
boolean isComplex = ((firstChild != null) && (firstChild.getNodeType() != Node.TEXT_NODE));
if (isComplex) {
step = new XMLComplexStep();
((XMLComplexStep) step).setNodeName(elementNodeName);
} else {
step = new XMLElementStep();
((XMLElementStep) step).setNodeName(elementNodeName);
}
step.bNew = true;
addStepToParent(mainSequence, parent, step);
}
return step;
}
use of com.twinsoft.convertigo.beans.steps.XMLElementStep in project convertigo by convertigo.
the class ChangeToElementStepAction method run.
/* (non-Javadoc)
* @see com.twinsoft.convertigo.eclipse.popup.actions.MyAbstractAction#run()
*/
@Override
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();
Object databaseObject = treeObject.getObject();
// Attribute
if ((databaseObject != null) && (databaseObject instanceof AttributeStep)) {
AttributeStep attributeStep = (AttributeStep) databaseObject;
TreeParent treeParent = treeObject.getParent();
DatabaseObjectTreeObject parentTreeObject = null;
if (treeParent instanceof DatabaseObjectTreeObject)
parentTreeObject = (DatabaseObjectTreeObject) treeParent;
else
parentTreeObject = (DatabaseObjectTreeObject) treeParent.getParent();
if (parentTreeObject != null) {
// New Element step
ElementStep jelementStep = new ElementStep();
if (DatabaseObjectsManager.acceptDatabaseObjects(attributeStep.getParent(), jelementStep)) {
// Set properties
jelementStep.setOutput(attributeStep.isOutput());
jelementStep.setEnabled(attributeStep.isEnabled());
jelementStep.setComment(attributeStep.getComment());
jelementStep.setExpression(attributeStep.getExpression());
jelementStep.setNodeText(attributeStep.getNodeText());
jelementStep.setNodeName(attributeStep.getNodeName());
jelementStep.bNew = true;
jelementStep.hasChanged = true;
// Add new Element step to parent
DatabaseObject parentDbo = attributeStep.getParent();
parentDbo.add(jelementStep);
// Set correct order
if (parentDbo instanceof StepWithExpressions)
((StepWithExpressions) parentDbo).insertAtOrder(jelementStep, attributeStep.priority);
else if (parentDbo instanceof Sequence)
((Sequence) parentDbo).insertAtOrder(jelementStep, attributeStep.priority);
// Add new Element step in Tree
StepTreeObject stepTreeObject = new StepTreeObject(explorerView.viewer, attributeStep);
treeParent.addChild(stepTreeObject);
// Delete Attribute step
long oldPriority = attributeStep.priority;
attributeStep.delete();
jelementStep.getSequence().fireStepMoved(new StepEvent(jelementStep, String.valueOf(oldPriority)));
parentTreeObject.hasBeenModified(true);
explorerView.reloadTreeObject(parentTreeObject);
explorerView.setSelectedTreeObject(explorerView.findTreeObjectByUserObject(jelementStep));
} else {
throw new EngineException("You cannot paste to a " + attributeStep.getParent().getClass().getSimpleName() + " a database object of type " + jelementStep.getClass().getSimpleName());
}
}
}
// XML Element
if ((databaseObject != null) && (databaseObject instanceof XMLElementStep)) {
XMLElementStep elementStep = (XMLElementStep) databaseObject;
TreeParent treeParent = treeObject.getParent();
DatabaseObjectTreeObject parentTreeObject = null;
if (treeParent instanceof DatabaseObjectTreeObject)
parentTreeObject = (DatabaseObjectTreeObject) treeParent;
else
parentTreeObject = (DatabaseObjectTreeObject) treeParent.getParent();
if (parentTreeObject != null) {
// New Element step
ElementStep jelementStep = new ElementStep();
if (DatabaseObjectsManager.acceptDatabaseObjects(elementStep.getParent(), jelementStep)) {
// Set properties
jelementStep.setOutput(elementStep.isOutput());
jelementStep.setEnabled(elementStep.isEnabled());
jelementStep.setComment(elementStep.getComment());
// jelementStep.setSourceDefinition(elementStep.getSourceDefinition());
jelementStep.setNodeText(elementStep.getNodeText());
jelementStep.setNodeName(elementStep.getNodeName());
jelementStep.bNew = true;
jelementStep.hasChanged = true;
// Add new XMLElement step to parent
DatabaseObject parentDbo = elementStep.getParent();
parentDbo.add(jelementStep);
for (Step step : elementStep.getAllSteps()) {
try {
jelementStep.addStep(step);
} catch (Throwable t) {
}
}
// Set correct order
if (parentDbo instanceof StepWithExpressions)
((StepWithExpressions) parentDbo).insertAtOrder(jelementStep, elementStep.priority);
else if (parentDbo instanceof Sequence)
((Sequence) parentDbo).insertAtOrder(jelementStep, elementStep.priority);
// Add new Element step in Tree
StepTreeObject stepTreeObject = new StepTreeObject(explorerView.viewer, elementStep);
treeParent.addChild(stepTreeObject);
// Delete XMLAttribute step
long oldPriority = elementStep.priority;
elementStep.delete();
jelementStep.getSequence().fireStepMoved(new StepEvent(jelementStep, String.valueOf(oldPriority)));
parentTreeObject.hasBeenModified(true);
explorerView.reloadTreeObject(parentTreeObject);
explorerView.setSelectedTreeObject(explorerView.findTreeObjectByUserObject(jelementStep));
} else {
throw new EngineException("You cannot paste to a " + elementStep.getParent().getClass().getSimpleName() + " a database object of type " + jelementStep.getClass().getSimpleName());
}
}
}
}
} catch (Throwable e) {
ConvertigoPlugin.logException(e, "Unable to change step to Element step!");
} finally {
shell.setCursor(null);
waitCursor.dispose();
}
}
use of com.twinsoft.convertigo.beans.steps.XMLElementStep in project convertigo by convertigo.
the class ChangeToXMLConcatStepAction method run.
/* (non-Javadoc)
* @see com.twinsoft.convertigo.eclipse.popup.actions.MyAbstractAction#run()
*/
@Override
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();
Object databaseObject = treeObject.getObject();
if ((databaseObject != null) && (databaseObject instanceof XMLElementStep)) {
XMLElementStep elementStep = (XMLElementStep) databaseObject;
TreeParent treeParent = treeObject.getParent();
DatabaseObjectTreeObject parentTreeObject = null;
if (treeParent instanceof DatabaseObjectTreeObject)
parentTreeObject = (DatabaseObjectTreeObject) treeParent;
else
parentTreeObject = (DatabaseObjectTreeObject) treeParent.getParent();
if (parentTreeObject != null) {
// New XMLConcatStep step
XMLConcatStep concatStep = new XMLConcatStep();
if (DatabaseObjectsManager.acceptDatabaseObjects(elementStep.getParent(), concatStep)) {
XMLVector<XMLVector<Object>> sources = new XMLVector<XMLVector<Object>>();
XMLVector<Object> source = new XMLVector<Object>();
source.add("description");
source.add(elementStep.getSourceDefinition());
source.add(elementStep.getNodeText());
sources.add(source);
concatStep.setOutput(elementStep.isOutput());
concatStep.setEnabled(elementStep.isEnabled());
concatStep.setComment(elementStep.getComment());
// elementStep.getNodeText();
concatStep.setNodeName(elementStep.getNodeName());
concatStep.setSourcesDefinition(sources);
concatStep.bNew = true;
concatStep.hasChanged = true;
// Add new XMLConcatStep step to parent
DatabaseObject parentDbo = elementStep.getParent();
parentDbo.add(concatStep);
// Set correct order
if (parentDbo instanceof StepWithExpressions)
((StepWithExpressions) parentDbo).insertAtOrder(concatStep, elementStep.priority);
else if (parentDbo instanceof Sequence)
((Sequence) parentDbo).insertAtOrder(concatStep, elementStep.priority);
// Add new XMLConcatStep step in Tree
StepTreeObject stepTreeObject = new StepTreeObject(explorerView.viewer, concatStep);
treeParent.addChild(stepTreeObject);
// Delete XMLElementStep step
long oldPriority = elementStep.priority;
elementStep.delete();
concatStep.getSequence().fireStepMoved(new StepEvent(concatStep, String.valueOf(oldPriority)));
parentTreeObject.hasBeenModified(true);
explorerView.reloadTreeObject(parentTreeObject);
explorerView.setSelectedTreeObject(explorerView.findTreeObjectByUserObject(concatStep));
} else {
throw new EngineException("You cannot paste to a " + elementStep.getParent().getClass().getSimpleName() + " a database object of type " + concatStep.getClass().getSimpleName());
}
}
}
}
} catch (Throwable e) {
ConvertigoPlugin.logException(e, "Unable to change XMLElement to XMLConcat step!");
} finally {
shell.setCursor(null);
waitCursor.dispose();
}
}
use of com.twinsoft.convertigo.beans.steps.XMLElementStep in project convertigo by convertigo.
the class ChangeToXMLAttributeStepAction method run.
/* (non-Javadoc)
* @see com.twinsoft.convertigo.eclipse.popup.actions.MyAbstractAction#run()
*/
@Override
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();
Object databaseObject = treeObject.getObject();
// Attribute
if ((databaseObject != null) && (databaseObject instanceof AttributeStep)) {
AttributeStep attributeStep = (AttributeStep) databaseObject;
TreeParent treeParent = treeObject.getParent();
DatabaseObjectTreeObject parentTreeObject = null;
if (treeParent instanceof DatabaseObjectTreeObject)
parentTreeObject = (DatabaseObjectTreeObject) treeParent;
else
parentTreeObject = (DatabaseObjectTreeObject) treeParent.getParent();
if (parentTreeObject != null) {
// New XMLAttribute step
XMLAttributeStep xmlAttributeStep = new XMLAttributeStep();
if (DatabaseObjectsManager.acceptDatabaseObjects(attributeStep.getParent(), xmlAttributeStep)) {
// Set properties
xmlAttributeStep.setOutput(attributeStep.isOutput());
xmlAttributeStep.setEnabled(attributeStep.isEnabled());
xmlAttributeStep.setComment(attributeStep.getComment());
// xmlAttributeStep.setSourceDefinition(xmlElementStep.getSourceDefinition());
xmlAttributeStep.setNodeText(attributeStep.getNodeText());
xmlAttributeStep.setNodeName(attributeStep.getNodeName());
xmlAttributeStep.bNew = true;
xmlAttributeStep.hasChanged = true;
// Add new XMLAttribute step to parent
DatabaseObject parentDbo = attributeStep.getParent();
parentDbo.add(xmlAttributeStep);
// Set correct order
if (parentDbo instanceof StepWithExpressions)
((StepWithExpressions) parentDbo).insertAtOrder(xmlAttributeStep, attributeStep.priority);
else if (parentDbo instanceof Sequence)
((Sequence) parentDbo).insertAtOrder(xmlAttributeStep, attributeStep.priority);
// Add new XMLAttribute step in Tree
StepTreeObject stepTreeObject = new StepTreeObject(explorerView.viewer, attributeStep);
treeParent.addChild(stepTreeObject);
// Delete XMLElement step
long oldPriority = attributeStep.priority;
attributeStep.delete();
xmlAttributeStep.getSequence().fireStepMoved(new StepEvent(xmlAttributeStep, String.valueOf(oldPriority)));
parentTreeObject.hasBeenModified(true);
explorerView.reloadTreeObject(parentTreeObject);
explorerView.setSelectedTreeObject(explorerView.findTreeObjectByUserObject(xmlAttributeStep));
} else {
throw new EngineException("You cannot paste to a " + attributeStep.getParent().getClass().getSimpleName() + " a database object of type " + xmlAttributeStep.getClass().getSimpleName());
}
}
}
// XML Element
if ((databaseObject != null) && (databaseObject instanceof XMLElementStep)) {
XMLElementStep xmlElementStep = (XMLElementStep) databaseObject;
TreeParent treeParent = treeObject.getParent();
DatabaseObjectTreeObject parentTreeObject = null;
if (treeParent instanceof DatabaseObjectTreeObject)
parentTreeObject = (DatabaseObjectTreeObject) treeParent;
else
parentTreeObject = (DatabaseObjectTreeObject) treeParent.getParent();
if (parentTreeObject != null) {
// New XMLAttribute step
XMLAttributeStep xmlAttributeStep = new XMLAttributeStep();
if (DatabaseObjectsManager.acceptDatabaseObjects(xmlElementStep.getParent(), xmlAttributeStep)) {
// Set properties
xmlAttributeStep.setOutput(xmlElementStep.isOutput());
xmlAttributeStep.setEnabled(xmlElementStep.isEnabled());
xmlAttributeStep.setComment(xmlElementStep.getComment());
xmlAttributeStep.setSourceDefinition(xmlElementStep.getSourceDefinition());
xmlAttributeStep.setNodeText(xmlElementStep.getNodeText());
xmlAttributeStep.setNodeName(xmlElementStep.getNodeName());
xmlAttributeStep.bNew = true;
xmlAttributeStep.hasChanged = true;
// Add new XMLAttribute step to parent
DatabaseObject parentDbo = xmlElementStep.getParent();
parentDbo.add(xmlAttributeStep);
// Set correct order
if (parentDbo instanceof StepWithExpressions)
((StepWithExpressions) parentDbo).insertAtOrder(xmlAttributeStep, xmlElementStep.priority);
else if (parentDbo instanceof Sequence)
((Sequence) parentDbo).insertAtOrder(xmlAttributeStep, xmlElementStep.priority);
// Add new XMLAttribute step in Tree
StepTreeObject stepTreeObject = new StepTreeObject(explorerView.viewer, xmlElementStep);
treeParent.addChild(stepTreeObject);
// Delete XMLElement step
long oldPriority = xmlElementStep.priority;
xmlElementStep.delete();
xmlAttributeStep.getSequence().fireStepMoved(new StepEvent(xmlAttributeStep, String.valueOf(oldPriority)));
parentTreeObject.hasBeenModified(true);
explorerView.reloadTreeObject(parentTreeObject);
explorerView.setSelectedTreeObject(explorerView.findTreeObjectByUserObject(xmlAttributeStep));
} else {
throw new EngineException("You cannot paste to a " + xmlElementStep.getParent().getClass().getSimpleName() + " a database object of type " + xmlAttributeStep.getClass().getSimpleName());
}
}
}
}
} catch (Throwable e) {
ConvertigoPlugin.logException(e, "Unable to change to XMLAttribute step!");
} finally {
shell.setCursor(null);
waitCursor.dispose();
}
}
Aggregations