Search in sources :

Example 6 with StatementWithExpressions

use of com.twinsoft.convertigo.beans.core.StatementWithExpressions in project convertigo by convertigo.

the class ClipboardManager method paste.

public Object paste(Node node, DatabaseObject parentDatabaseObject, boolean bChangeName) throws EngineException {
    Object object = read(node);
    if (object instanceof DatabaseObject) {
        DatabaseObject databaseObject = (DatabaseObject) object;
        String dboName = databaseObject.getName();
        String name = null;
        if (objectsType != ProjectExplorerView.TREE_OBJECT_TYPE_DBO_PROJECT) {
            // Verify if object is accepted for paste
            if (!DatabaseObjectsManager.acceptDatabaseObjects(parentDatabaseObject, databaseObject)) {
                throw new EngineException("You cannot paste to a " + parentDatabaseObject.getClass().getSimpleName() + " a database object of type " + databaseObject.getClass().getSimpleName());
            }
            if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.MobileComponent) {
                if (!com.twinsoft.convertigo.beans.mobile.components.dynamic.ComponentManager.acceptDatabaseObjects(parentDatabaseObject, databaseObject)) {
                    throw new EngineException("You cannot paste to a " + parentDatabaseObject.getClass().getSimpleName() + " a database object of type " + databaseObject.getClass().getSimpleName());
                }
                if (!com.twinsoft.convertigo.beans.mobile.components.dynamic.ComponentManager.isTplCompatible(parentDatabaseObject, databaseObject)) {
                    String tplVersion = com.twinsoft.convertigo.beans.mobile.components.dynamic.ComponentManager.getTplRequired(databaseObject);
                    throw new EngineException("Template project " + tplVersion + " compatibility required");
                }
            } else if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.MobileComponent) {
                if (!com.twinsoft.convertigo.beans.ngx.components.dynamic.ComponentManager.acceptDatabaseObjects(parentDatabaseObject, databaseObject)) {
                    throw new EngineException("You cannot paste to a " + parentDatabaseObject.getClass().getSimpleName() + " a database object of type " + databaseObject.getClass().getSimpleName());
                }
                if (!com.twinsoft.convertigo.beans.ngx.components.dynamic.ComponentManager.isTplCompatible(parentDatabaseObject, databaseObject)) {
                    String tplVersion = com.twinsoft.convertigo.beans.ngx.components.dynamic.ComponentManager.getTplRequired(databaseObject);
                    throw new EngineException("Template project " + tplVersion + " compatibility required");
                }
            }
            // Disable the isDefault boolean flag when the connector is pasted
            if (databaseObject instanceof Connector) {
                Connector connector = (Connector) databaseObject;
                if (connector.isDefault) {
                    connector.isDefault = false;
                }
            }
            // Disable the isRoot boolean flag when the page is pasted
            if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.PageComponent) {
                com.twinsoft.convertigo.beans.mobile.components.PageComponent page = GenericUtils.cast(databaseObject);
                if (page.isRoot) {
                    page.isRoot = false;
                }
            } else if (databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.PageComponent) {
                com.twinsoft.convertigo.beans.ngx.components.PageComponent page = GenericUtils.cast(databaseObject);
                if (page.isRoot) {
                    page.isRoot = false;
                }
            }
            if (objectsType != ProjectExplorerView.TREE_OBJECT_TYPE_DBO_CONNECTOR) {
                // Disable the isDefault boolean flag when the transaction is pasted
                if (databaseObject instanceof Transaction) {
                    Transaction transaction = (Transaction) databaseObject;
                    if (transaction.isDefault) {
                        transaction.isDefault = false;
                    }
                }
            }
        }
        // Special case of project
        if (databaseObject instanceof Project) {
            return databaseObject;
        }
        boolean bContinue = true;
        int index = 0;
        long oldPriority = databaseObject.priority;
        // Verify if a child object with same name exist and change name
        while (bContinue) {
            if (bChangeName) {
                if (index == 0)
                    name = dboName;
                else
                    name = dboName + index;
                databaseObject.setName(name);
            }
            databaseObject.hasChanged = true;
            databaseObject.bNew = true;
            try {
                new WalkHelper() {

                    boolean root = true;

                    boolean find = false;

                    @Override
                    protected boolean before(DatabaseObject dbo, Class<? extends DatabaseObject> dboClass) {
                        boolean isInstance = dboClass.isInstance(databaseObject);
                        find |= isInstance;
                        return isInstance;
                    }

                    @Override
                    protected void walk(DatabaseObject dbo) throws Exception {
                        if (root) {
                            root = false;
                            super.walk(dbo);
                            if (!find) {
                            // ignore: we must accept special paste: e.g. transaction over sequence
                            }
                        } else {
                            if (databaseObject.getName().equalsIgnoreCase(dbo.getName())) {
                                throw new ObjectWithSameNameException("Unable to paste the object because an object with the same name already exists in target.");
                            }
                        }
                    }
                }.init(parentDatabaseObject);
                bContinue = false;
            } catch (ObjectWithSameNameException owsne) {
                if ((parentDatabaseObject instanceof HtmlTransaction) && (databaseObject instanceof Statement)) {
                    throw new EngineException("HtmlTransaction already contains a statement named \"" + name + "\".", owsne);
                }
                // Silently ignore
                index++;
            } catch (EngineException ee) {
                throw ee;
            } catch (Exception e) {
                throw new EngineException("Exception in paste", e);
            }
        }
        // reset ordered properties
        if (databaseObject instanceof IContainerOrdered) {
            // Mobile beans
            if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.MobileComponent) {
                if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.ApplicationComponent) {
                    com.twinsoft.convertigo.beans.mobile.components.ApplicationComponent ac = GenericUtils.cast(databaseObject);
                    ac.setOrderedRoutes(getNewOrdered());
                    ac.setOrderedMenus(getNewOrdered());
                    ac.setOrderedPages(getNewOrdered());
                    ac.setOrderedComponents(getNewOrdered());
                    ac.setOrderedSharedActions(getNewOrdered());
                    ac.setOrderedSharedComponents(getNewOrdered());
                }
                if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.RouteComponent) {
                    com.twinsoft.convertigo.beans.mobile.components.RouteComponent rc = GenericUtils.cast(databaseObject);
                    rc.setOrderedActions(getNewOrdered());
                    rc.setOrderedEvents(getNewOrdered());
                }
                if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.PageComponent) {
                    com.twinsoft.convertigo.beans.mobile.components.PageComponent pc = GenericUtils.cast(databaseObject);
                    pc.setOrderedComponents(getNewOrdered());
                }
                if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIComponent) {
                    com.twinsoft.convertigo.beans.mobile.components.UIComponent uic = GenericUtils.cast(databaseObject);
                    uic.setOrderedComponents(getNewOrdered());
                }
            } else if (databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.MobileComponent) {
                if (databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.ApplicationComponent) {
                    com.twinsoft.convertigo.beans.ngx.components.ApplicationComponent ac = GenericUtils.cast(databaseObject);
                    ac.setOrderedMenus(getNewOrdered());
                    ac.setOrderedPages(getNewOrdered());
                    ac.setOrderedComponents(getNewOrdered());
                    ac.setOrderedSharedActions(getNewOrdered());
                    ac.setOrderedSharedComponents(getNewOrdered());
                }
                if (databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.PageComponent) {
                    com.twinsoft.convertigo.beans.ngx.components.PageComponent pc = GenericUtils.cast(databaseObject);
                    pc.setOrderedComponents(getNewOrdered());
                }
                if (databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIComponent) {
                    com.twinsoft.convertigo.beans.ngx.components.UIComponent uic = GenericUtils.cast(databaseObject);
                    uic.setOrderedComponents(getNewOrdered());
                }
            }
            // Sequence beans
            if (databaseObject instanceof Sequence) {
                ((Sequence) databaseObject).setOrderedSteps(getNewOrdered());
                ((Sequence) databaseObject).setOrderedVariables(getNewOrdered());
            }
            if (databaseObject instanceof StepWithExpressions) {
                ((StepWithExpressions) databaseObject).setOrderedSteps(getNewOrdered());
            }
            if (databaseObject instanceof RequestableStep) {
                ((RequestableStep) databaseObject).setOrderedVariables(getNewOrdered());
            }
            // Transaction beans
            if (databaseObject instanceof TransactionWithVariables) {
                ((TransactionWithVariables) databaseObject).setOrderedVariables(getNewOrdered());
            }
            if (databaseObject instanceof StatementWithExpressions) {
                ((StatementWithExpressions) databaseObject).setOrderedStatements(getNewOrdered());
            }
            if (databaseObject instanceof HTTPStatement) {
                ((HTTPStatement) databaseObject).setOrderedVariables(getNewOrdered());
            }
            if (databaseObject instanceof ScreenClass) {
                ((ScreenClass) databaseObject).setOrderedCriterias(getNewOrdered());
                ((ScreenClass) databaseObject).setOrderedExtractionRules(getNewOrdered());
            }
            // TestCase bean
            if (databaseObject instanceof TestCase) {
                ((TestCase) databaseObject).setOrderedVariables(getNewOrdered());
            }
        }
        // Now add dbo to target
        try {
            if (parentDatabaseObject instanceof ScreenClass) {
                if (parentDatabaseObject instanceof JavelinScreenClass) {
                    JavelinScreenClass screenClass = (JavelinScreenClass) parentDatabaseObject;
                    if (databaseObject instanceof BlockFactory) {
                        screenClass.add(databaseObject);
                        screenClass.setBlockFactory((BlockFactory) databaseObject);
                    }
                }
                ScreenClass screenClass = (ScreenClass) parentDatabaseObject;
                if (databaseObject instanceof Criteria) {
                    if ((!screenClass.bNew) && (screenClass.equals(((IScreenClassContainer<?>) screenClass.getConnector()).getDefaultScreenClass()))) {
                        throw new EngineException("You cannot paste a new criterion to the default screen class");
                    }
                    databaseObject.priority = databaseObject.getNewOrderValue();
                    screenClass.add(databaseObject);
                } else if (databaseObject instanceof ExtractionRule) {
                    databaseObject.priority = databaseObject.getNewOrderValue();
                    screenClass.add(databaseObject);
                } else if (databaseObject instanceof Sheet) {
                    screenClass.add(databaseObject);
                } else if (databaseObject instanceof ScreenClass) {
                    databaseObject.priority = screenClass.priority + 1;
                    screenClass.add(databaseObject);
                }
            } else if (parentDatabaseObject instanceof HtmlTransaction) {
                HtmlTransaction transaction = (HtmlTransaction) parentDatabaseObject;
                if (databaseObject instanceof Sheet) {
                    transaction.add(databaseObject);
                } else if (databaseObject instanceof TestCase) {
                    transaction.add(databaseObject);
                } else if (databaseObject instanceof Variable) {
                    databaseObject.priority = databaseObject.getNewOrderValue();
                    transaction.add(databaseObject);
                } else if (databaseObject instanceof FunctionStatement) {
                    if (databaseObject instanceof StatementWithExpressions) {
                        databaseObject.priority = 0;
                    }
                    transaction.add(databaseObject);
                } else {
                    throw new EngineException("You cannot paste to an HtmlTransaction a database object of type " + databaseObject.getClass().getName());
                }
            } else if (parentDatabaseObject instanceof TransactionWithVariables) {
                TransactionWithVariables transaction = (TransactionWithVariables) parentDatabaseObject;
                if (databaseObject instanceof Sheet) {
                    transaction.add(databaseObject);
                } else if (databaseObject instanceof TestCase) {
                    transaction.add(databaseObject);
                } else if (databaseObject instanceof Variable) {
                    databaseObject.priority = databaseObject.getNewOrderValue();
                    transaction.add(databaseObject);
                }
            } else if (parentDatabaseObject instanceof Sequence) {
                Sequence sequence = (Sequence) parentDatabaseObject;
                if (databaseObject instanceof Sheet) {
                    sequence.add(databaseObject);
                } else if (databaseObject instanceof TestCase) {
                    sequence.add(databaseObject);
                } else if (databaseObject instanceof Step) {
                    databaseObject.priority = databaseObject.getNewOrderValue();
                    sequence.add(databaseObject);
                } else if (databaseObject instanceof Variable) {
                    databaseObject.priority = databaseObject.getNewOrderValue();
                    sequence.add(databaseObject);
                } else {
                    throw new EngineException("You cannot paste to a Sequence a database object of type " + databaseObject.getClass().getName());
                }
            } else if (parentDatabaseObject instanceof StatementWithExpressions) {
                StatementWithExpressions statement = (StatementWithExpressions) parentDatabaseObject;
                databaseObject.priority = databaseObject.getNewOrderValue();
                statement.add(databaseObject);
            } else if (parentDatabaseObject instanceof HTTPStatement) {
                HTTPStatement statement = (HTTPStatement) parentDatabaseObject;
                if (databaseObject instanceof Variable) {
                    databaseObject.priority = databaseObject.getNewOrderValue();
                    statement.add(databaseObject);
                }
            } else if (parentDatabaseObject instanceof StepWithExpressions) {
                StepWithExpressions step = (StepWithExpressions) parentDatabaseObject;
                databaseObject.priority = databaseObject.getNewOrderValue();
                step.add(databaseObject);
            } else if (parentDatabaseObject instanceof RequestableStep) {
                RequestableStep step = (RequestableStep) parentDatabaseObject;
                if (databaseObject instanceof Variable) {
                    databaseObject.priority = databaseObject.getNewOrderValue();
                    step.add(databaseObject);
                }
            } else if (parentDatabaseObject instanceof TestCase) {
                TestCase testCase = (TestCase) parentDatabaseObject;
                if (databaseObject instanceof Variable) {
                    databaseObject.priority = databaseObject.getNewOrderValue();
                    testCase.add(databaseObject);
                }
            } else // MOBILE COMPONENTS
            if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.MobileComponent) {
                if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.ApplicationComponent) {
                    com.twinsoft.convertigo.beans.mobile.components.ApplicationComponent app = GenericUtils.cast(parentDatabaseObject);
                    if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.PageComponent) {
                        databaseObject.priority = databaseObject.getNewOrderValue();
                        app.add(databaseObject);
                    } else if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.RouteComponent) {
                        databaseObject.priority = databaseObject.getNewOrderValue();
                        app.add(databaseObject);
                    } else if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIDynamicMenu) {
                        databaseObject.priority = databaseObject.getNewOrderValue();
                        app.add(databaseObject);
                    } else if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIComponent) {
                        databaseObject.priority = databaseObject.getNewOrderValue();
                        app.add(databaseObject);
                    }
                } else if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.RouteComponent) {
                    com.twinsoft.convertigo.beans.mobile.components.RouteComponent route = GenericUtils.cast(parentDatabaseObject);
                    if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.RouteActionComponent) {
                        databaseObject.priority = databaseObject.getNewOrderValue();
                        com.twinsoft.convertigo.beans.mobile.components.RouteActionComponent rac = GenericUtils.cast(databaseObject);
                        int i = rac.getPage().lastIndexOf(".");
                        if (i != -1) {
                            String pageName = rac.getPage().substring(i);
                            String pageQName = route.getParent().getQName() + pageName;
                            rac.setPage(pageQName);
                        }
                        route.add(rac);
                    } else if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.RouteEventComponent) {
                        databaseObject.priority = databaseObject.getNewOrderValue();
                        route.add(databaseObject);
                    }
                } else if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.PageComponent) {
                    com.twinsoft.convertigo.beans.mobile.components.PageComponent page = GenericUtils.cast(parentDatabaseObject);
                    if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIComponent) {
                        databaseObject.priority = databaseObject.getNewOrderValue();
                        page.add(databaseObject);
                    }
                } else if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIDynamicMenu) {
                    com.twinsoft.convertigo.beans.mobile.components.UIDynamicMenu menu = GenericUtils.cast(parentDatabaseObject);
                    if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIComponent) {
                        databaseObject.priority = databaseObject.getNewOrderValue();
                        menu.add(databaseObject);
                    }
                } else if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIComponent) {
                    com.twinsoft.convertigo.beans.mobile.components.UIComponent component = GenericUtils.cast(parentDatabaseObject);
                    databaseObject.priority = databaseObject.getNewOrderValue();
                    component.add(databaseObject);
                }
            } else // NGX COMPONENTS
            if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.MobileComponent) {
                if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.ApplicationComponent) {
                    com.twinsoft.convertigo.beans.ngx.components.ApplicationComponent app = GenericUtils.cast(parentDatabaseObject);
                    if (databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.PageComponent) {
                        databaseObject.priority = databaseObject.getNewOrderValue();
                        app.add(databaseObject);
                    } else if (databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIDynamicMenu) {
                        databaseObject.priority = databaseObject.getNewOrderValue();
                        app.add(databaseObject);
                    } else if (databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIComponent) {
                        databaseObject.priority = databaseObject.getNewOrderValue();
                        app.add(databaseObject);
                    }
                } else if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.PageComponent) {
                    com.twinsoft.convertigo.beans.ngx.components.PageComponent page = GenericUtils.cast(parentDatabaseObject);
                    if (databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIComponent) {
                        databaseObject.priority = databaseObject.getNewOrderValue();
                        page.add(databaseObject);
                    }
                } else if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIDynamicMenu) {
                    com.twinsoft.convertigo.beans.ngx.components.UIDynamicMenu menu = GenericUtils.cast(parentDatabaseObject);
                    if (databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIComponent) {
                        databaseObject.priority = databaseObject.getNewOrderValue();
                        menu.add(databaseObject);
                    }
                } else if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIComponent) {
                    com.twinsoft.convertigo.beans.ngx.components.UIComponent component = GenericUtils.cast(parentDatabaseObject);
                    databaseObject.priority = databaseObject.getNewOrderValue();
                    component.add(databaseObject);
                }
            } else if (parentDatabaseObject == null) {
                if (databaseObject instanceof Project) {
                    if (Engine.theApp.databaseObjectsManager.existsProject(databaseObject.getName())) {
                        throw new ObjectWithSameNameException("Project already exist!");
                    }
                }
            } else {
                parentDatabaseObject.add(databaseObject);
            }
        } catch (ObjectWithSameNameException owsne) {
            if ((parentDatabaseObject instanceof HtmlTransaction) && (databaseObject instanceof Statement)) {
                throw new EngineException("HtmlTransaction already contains a statement named \"" + name + "\".", owsne);
            }
            if ((parentDatabaseObject instanceof Sequence) && (databaseObject instanceof Step)) {
                throw new EngineException("Sequence already contains a step named \"" + name + "\".", owsne);
            }
        }
        NodeList childNodes = node.getChildNodes();
        int len = childNodes.getLength();
        Node childNode;
        String childNodeName;
        for (int i = 0; i < len; i++) {
            childNode = childNodes.item(i);
            if (childNode.getNodeType() != Node.ELEMENT_NODE) {
                continue;
            }
            childNodeName = childNode.getNodeName();
            if (!(childNodeName.equalsIgnoreCase("property")) && !(childNodeName.equalsIgnoreCase("handlers")) && !(childNodeName.equalsIgnoreCase("wsdltype")) && !(childNodeName.equalsIgnoreCase("docdata")) && !(childNodeName.equalsIgnoreCase("dnd"))) {
                paste(childNode, databaseObject, bChangeName);
            }
        }
        // For update of sources which reference this step
        if (databaseObject instanceof Step) {
            pastedSteps.put(String.valueOf(oldPriority), (Step) databaseObject);
        }
        // For update of sources which reference this mobile component
        if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.MobileComponent) {
            if (databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.IAction || databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIActionStack || databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIControlDirective || databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIForm || databaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UISharedComponent) {
                pastedComponents.put(String.valueOf(oldPriority), GenericUtils.cast(databaseObject));
            }
        } else if (databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.MobileComponent) {
            if (databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.IAction || databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIActionStack || databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIControlDirective || databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIForm || databaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UISharedComponent) {
                pastedComponents.put(String.valueOf(oldPriority), GenericUtils.cast(databaseObject));
            }
        }
        // needed
        databaseObject.isImporting = false;
        databaseObject.isSubLoaded = true;
        return databaseObject;
    } else if (object instanceof JsonData) {
        if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.MobileComponent) {
            if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIPageEvent || parentDatabaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIAppEvent || parentDatabaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIDynamicAction || parentDatabaseObject instanceof com.twinsoft.convertigo.beans.mobile.components.UIActionStack) {
                JsonData jsonData = (JsonData) object;
                JSONObject json = jsonData.getData();
                if (json.has("qname")) {
                    try {
                        com.twinsoft.convertigo.beans.mobile.components.UIComponent uiComponent = GenericUtils.cast(parentDatabaseObject);
                        DatabaseObject call = com.twinsoft.convertigo.beans.mobile.components.dynamic.ComponentManager.createBean(com.twinsoft.convertigo.beans.mobile.components.dynamic.ComponentManager.getComponentByName("FullSyncViewAction"));
                        if (call != null && call instanceof com.twinsoft.convertigo.beans.mobile.components.UIDynamicAction) {
                            com.twinsoft.convertigo.beans.mobile.components.UIDynamicAction dynAction = GenericUtils.cast(call);
                            com.twinsoft.convertigo.beans.mobile.components.dynamic.IonBean ionBean = dynAction.getIonBean();
                            if (ionBean != null && ionBean.hasProperty("fsview")) {
                                call.bNew = true;
                                call.hasChanged = true;
                                ionBean.setPropertyValue("fsview", new com.twinsoft.convertigo.beans.mobile.components.MobileSmartSourceType(json.getString("qname")));
                                uiComponent.add(call);
                                uiComponent.hasChanged = true;
                            }
                            return call;
                        }
                    } catch (JSONException e) {
                        Engine.logStudio.warn("Failed to create a FullSyncViewAction", e);
                    }
                }
            }
        } else if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.MobileComponent) {
            if (parentDatabaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIPageEvent || parentDatabaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIAppEvent || parentDatabaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIDynamicAction || parentDatabaseObject instanceof com.twinsoft.convertigo.beans.ngx.components.UIActionStack) {
                JsonData jsonData = (JsonData) object;
                JSONObject json = jsonData.getData();
                if (json.has("qname")) {
                    try {
                        com.twinsoft.convertigo.beans.ngx.components.UIComponent uiComponent = GenericUtils.cast(parentDatabaseObject);
                        DatabaseObject call = com.twinsoft.convertigo.beans.ngx.components.dynamic.ComponentManager.createBean(com.twinsoft.convertigo.beans.ngx.components.dynamic.ComponentManager.getComponentByName("FullSyncViewAction"));
                        if (call != null && call instanceof com.twinsoft.convertigo.beans.ngx.components.UIDynamicAction) {
                            com.twinsoft.convertigo.beans.ngx.components.UIDynamicAction dynAction = GenericUtils.cast(call);
                            com.twinsoft.convertigo.beans.ngx.components.dynamic.IonBean ionBean = dynAction.getIonBean();
                            if (ionBean != null && ionBean.hasProperty("fsview")) {
                                call.bNew = true;
                                call.hasChanged = true;
                                ionBean.setPropertyValue("fsview", new com.twinsoft.convertigo.beans.ngx.components.MobileSmartSourceType(json.getString("qname")));
                                uiComponent.add(call);
                                uiComponent.hasChanged = true;
                            }
                            return call;
                        }
                    } catch (JSONException e) {
                        Engine.logStudio.warn("Failed to create a FullSyncViewAction", e);
                    }
                }
            }
        }
    }
    return null;
}
Also used : BlockFactory(com.twinsoft.convertigo.beans.core.BlockFactory) JavelinScreenClass(com.twinsoft.convertigo.beans.screenclasses.JavelinScreenClass) ScreenClass(com.twinsoft.convertigo.beans.core.ScreenClass) Node(org.w3c.dom.Node) EngineException(com.twinsoft.convertigo.engine.EngineException) StepWithExpressions(com.twinsoft.convertigo.beans.core.StepWithExpressions) HTTPStatement(com.twinsoft.convertigo.beans.statements.HTTPStatement) FunctionStatement(com.twinsoft.convertigo.beans.statements.FunctionStatement) StatementWithExpressions(com.twinsoft.convertigo.beans.core.StatementWithExpressions) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) JavelinScreenClass(com.twinsoft.convertigo.beans.screenclasses.JavelinScreenClass) NodeList(org.w3c.dom.NodeList) Sequence(com.twinsoft.convertigo.beans.core.Sequence) Project(com.twinsoft.convertigo.beans.core.Project) Transaction(com.twinsoft.convertigo.beans.core.Transaction) HtmlTransaction(com.twinsoft.convertigo.beans.transactions.HtmlTransaction) JSONObject(org.codehaus.jettison.json.JSONObject) RequestableStep(com.twinsoft.convertigo.beans.core.RequestableStep) IContainerOrdered(com.twinsoft.convertigo.beans.core.IContainerOrdered) IPropertyTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.IPropertyTreeObject) RequestableObject(com.twinsoft.convertigo.beans.core.RequestableObject) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) JSONObject(org.codehaus.jettison.json.JSONObject) TreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.TreeObject) DatabaseObjectTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject) IDesignTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.IDesignTreeObject) MobileObject(com.twinsoft.convertigo.beans.core.MobileObject) Connector(com.twinsoft.convertigo.beans.core.Connector) Variable(com.twinsoft.convertigo.beans.core.Variable) ExtractionRule(com.twinsoft.convertigo.beans.core.ExtractionRule) WalkHelper(com.twinsoft.convertigo.engine.helpers.WalkHelper) Criteria(com.twinsoft.convertigo.beans.core.Criteria) Step(com.twinsoft.convertigo.beans.core.Step) ElseStep(com.twinsoft.convertigo.beans.steps.ElseStep) RequestableStep(com.twinsoft.convertigo.beans.core.RequestableStep) ThenStep(com.twinsoft.convertigo.beans.steps.ThenStep) ElseStatement(com.twinsoft.convertigo.beans.statements.ElseStatement) FunctionStatement(com.twinsoft.convertigo.beans.statements.FunctionStatement) HTTPStatement(com.twinsoft.convertigo.beans.statements.HTTPStatement) Statement(com.twinsoft.convertigo.beans.core.Statement) ThenStatement(com.twinsoft.convertigo.beans.statements.ThenStatement) HtmlTransaction(com.twinsoft.convertigo.beans.transactions.HtmlTransaction) JSONException(org.codehaus.jettison.json.JSONException) SAXException(org.xml.sax.SAXException) EngineException(com.twinsoft.convertigo.engine.EngineException) ConvertigoException(com.twinsoft.convertigo.engine.ConvertigoException) IOException(java.io.IOException) JSONException(org.codehaus.jettison.json.JSONException) InvalidOperationException(com.twinsoft.convertigo.engine.InvalidOperationException) ObjectWithSameNameException(com.twinsoft.convertigo.engine.ObjectWithSameNameException) ObjectWithSameNameException(com.twinsoft.convertigo.engine.ObjectWithSameNameException) TestCase(com.twinsoft.convertigo.beans.core.TestCase) TransactionWithVariables(com.twinsoft.convertigo.beans.core.TransactionWithVariables) Sheet(com.twinsoft.convertigo.beans.core.Sheet)

Example 7 with StatementWithExpressions

use of com.twinsoft.convertigo.beans.core.StatementWithExpressions in project convertigo by convertigo.

the class ChangeToIfThenElseStatementAction 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 IfStatement)) {
                IfStatement ifStatement = (IfStatement) databaseObject;
                List<Statement> list = ifStatement.getStatements();
                TreePath[] selectedPaths = new TreePath[list.size()];
                for (int i = 0; i < list.size(); i++) {
                    StatementTreeObject statementTreeObject = (StatementTreeObject) explorerView.findTreeObjectByUserObject(list.get(i));
                    selectedPaths[i] = new TreePath(statementTreeObject);
                }
                TreeParent treeParent = treeObject.getParent();
                DatabaseObjectTreeObject parentTreeObject = null;
                if (treeParent instanceof DatabaseObjectTreeObject)
                    parentTreeObject = (DatabaseObjectTreeObject) treeParent;
                else
                    parentTreeObject = (DatabaseObjectTreeObject) treeParent.getParent();
                if (parentTreeObject != null) {
                    // New IfThenElseStatement statement
                    IfThenElseStatement ifThenElseStatement = new IfThenElseStatement(ifStatement.getCondition());
                    ifThenElseStatement.bNew = true;
                    ifThenElseStatement.hasChanged = true;
                    // Add new IfThenElseStatement statement to parent
                    DatabaseObject parentDbo = ifStatement.getParent();
                    parentDbo.add(ifThenElseStatement);
                    // Set correct order
                    if (parentDbo instanceof StatementWithExpressions) {
                        int index = ((StatementWithExpressions) parentDbo).getOrderedStatements().get(0).indexOf(ifStatement.priority);
                        ((StatementWithExpressions) parentDbo).getOrderedStatements().get(0).add(index, ifThenElseStatement.priority);
                    }
                    // Add Then/Else statement
                    ThenStatement thenStatement = new ThenStatement();
                    thenStatement.bNew = true;
                    ifThenElseStatement.addStatement(thenStatement);
                    ElseStatement elseStatement = new ElseStatement();
                    elseStatement.bNew = true;
                    ifThenElseStatement.addStatement(elseStatement);
                    // Add new IfThenElseStep statement in Tree
                    StatementTreeObject statementTreeObject = new StatementTreeObject(explorerView.viewer, ifThenElseStatement);
                    treeParent.addChild(statementTreeObject);
                    StatementTreeObject thenTreeObject = new StatementTreeObject(explorerView.viewer, thenStatement);
                    statementTreeObject.addChild(thenTreeObject);
                    StatementTreeObject elseTreeObject = new StatementTreeObject(explorerView.viewer, elseStatement);
                    statementTreeObject.addChild(elseTreeObject);
                    // Cut/Paste steps under Then statement
                    if (selectedPaths.length > 0) {
                        new ClipboardAction(ConvertigoPlugin.clipboardManagerDND).cut(explorerView, selectedPaths, ProjectExplorerView.TREE_OBJECT_TYPE_DBO_STEP);
                        for (int i = 0; i < ConvertigoPlugin.clipboardManagerDND.objects.length; i++) {
                            ConvertigoPlugin.clipboardManagerDND.cutAndPaste(ConvertigoPlugin.clipboardManagerDND.objects[i], thenTreeObject);
                        }
                        ConvertigoPlugin.clipboardManagerDND.reset();
                    }
                    // Delete If statement
                    ifStatement.delete();
                    parentTreeObject.hasBeenModified(true);
                    explorerView.reloadTreeObject(parentTreeObject);
                    explorerView.setSelectedTreeObject(explorerView.findTreeObjectByUserObject(ifThenElseStatement));
                }
            }
        }
    } catch (Throwable e) {
        ConvertigoPlugin.logException(e, "Unable to change statement to IfThenElse statement!");
    } finally {
        shell.setCursor(null);
        waitCursor.dispose();
    }
}
Also used : ProjectExplorerView(com.twinsoft.convertigo.eclipse.views.projectexplorer.ProjectExplorerView) DatabaseObjectTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject) IfThenElseStatement(com.twinsoft.convertigo.beans.statements.IfThenElseStatement) ElseStatement(com.twinsoft.convertigo.beans.statements.ElseStatement) IfStatement(com.twinsoft.convertigo.beans.statements.IfStatement) ThenStatement(com.twinsoft.convertigo.beans.statements.ThenStatement) Statement(com.twinsoft.convertigo.beans.core.Statement) TreeParent(com.twinsoft.convertigo.eclipse.views.projectexplorer.TreeParent) IfThenElseStatement(com.twinsoft.convertigo.beans.statements.IfThenElseStatement) ThenStatement(com.twinsoft.convertigo.beans.statements.ThenStatement) Cursor(org.eclipse.swt.graphics.Cursor) IfStatement(com.twinsoft.convertigo.beans.statements.IfStatement) Shell(org.eclipse.swt.widgets.Shell) TreePath(com.twinsoft.convertigo.eclipse.views.projectexplorer.TreePath) StatementWithExpressions(com.twinsoft.convertigo.beans.core.StatementWithExpressions) StatementTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.StatementTreeObject) IfThenElseStatement(com.twinsoft.convertigo.beans.statements.IfThenElseStatement) ElseStatement(com.twinsoft.convertigo.beans.statements.ElseStatement) TreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.TreeObject) DatabaseObjectTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject) StatementTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.StatementTreeObject) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) TreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.TreeObject) DatabaseObjectTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject) StatementTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.StatementTreeObject) Display(org.eclipse.swt.widgets.Display)

Example 8 with StatementWithExpressions

use of com.twinsoft.convertigo.beans.core.StatementWithExpressions in project convertigo by convertigo.

the class HtmlXpathEvaluatorComposite method isButtonEnabled.

protected boolean isButtonEnabled(String name) {
    boolean enable = true;
    if (name.equals("screenclass") || name.equals("criterion") || name.equals("extractionrule")) {
        enable = lastEval != null;
    } else if (name.equals("statement")) {
        enable = lastEval != null && (ConvertigoPlugin.getDefault().getProjectExplorerView().getFirstSelectedDatabaseObject() instanceof StatementWithExpressions);
    }
    if (enable && (name.equals("screenclass") || name.equals("criterion") || name.equals("extractionrule") || name.equals("statement"))) {
        Document doc = nodesResult.getDocument();
        if (doc == null)
            enable = false;
        else {
            Node root = doc.getFirstChild();
            enable = (root.getChildNodes().getLength() != 0) ? true : root.getAttributes().getLength() != 0;
        }
    }
    return enable;
}
Also used : StatementWithExpressions(com.twinsoft.convertigo.beans.core.StatementWithExpressions) Node(org.w3c.dom.Node) Document(org.w3c.dom.Document)

Example 9 with StatementWithExpressions

use of com.twinsoft.convertigo.beans.core.StatementWithExpressions in project convertigo by convertigo.

the class HtmlConnectorDesignComposite method createStatementFromGenerator.

public void createStatementFromGenerator(Document dom) {
    // Retrieve selected statement generator xpath
    String statementGeneratorXpath = xpathEvaluator.getSelectionXpath();
    // retrieve element on which generate a statement
    // every test has been done before activating the button, no need to do them again
    Element element = (Element) (dom.getDocumentElement().getChildNodes().item(0));
    boolean clickable = false, valuable = false, checkable = false, selectable = false, radioable = false, formable = false;
    if (element.getTagName().equalsIgnoreCase("A")) {
        clickable = true;
    } else if (element.getTagName().equalsIgnoreCase("INPUT")) {
        String type = element.getAttribute("type");
        // warning, must be sort
        clickable = Arrays.binarySearch(new String[] { "button", "checkbox", "radio", "submit" }, type) > -1;
        // warning, must be sort
        valuable = Arrays.binarySearch(new String[] { "", "password", "text" }, type) > -1;
        // warning, must be sort
        checkable = Arrays.binarySearch(new String[] { "checkbox", "radio" }, type) > -1;
        radioable = type.equals("radio");
    } else if (element.getTagName().equalsIgnoreCase("TEXTAREA")) {
        valuable = true;
    } else if (element.getTagName().equalsIgnoreCase("SELECT")) {
        selectable = true;
    } else if (element.getTagName().equalsIgnoreCase("FORM")) {
        formable = true;
    }
    // Retrieve parent Statement
    StatementWithExpressions parentObject = getParentStatement();
    // launch wizard
    StatementGeneratorWizard statementGeneratorWizard = new StatementGeneratorWizard(parentObject, statementGeneratorXpath, new boolean[] { clickable, valuable, checkable, selectable, radioable, formable });
    WizardDialog wzdlg = new WizardDialog(Display.getCurrent().getActiveShell(), statementGeneratorWizard);
    wzdlg.open();
    if (wzdlg.getReturnCode() != Window.CANCEL) {
    // TODO
    }
}
Also used : StatementWithExpressions(com.twinsoft.convertigo.beans.core.StatementWithExpressions) StatementGeneratorWizard(com.twinsoft.convertigo.eclipse.wizards.new_statement.StatementGeneratorWizard) Element(org.w3c.dom.Element) WizardDialog(org.eclipse.jface.wizard.WizardDialog)

Aggregations

StatementWithExpressions (com.twinsoft.convertigo.beans.core.StatementWithExpressions)9 DatabaseObject (com.twinsoft.convertigo.beans.core.DatabaseObject)6 Statement (com.twinsoft.convertigo.beans.core.Statement)5 DatabaseObjectTreeObject (com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject)5 ThenStatement (com.twinsoft.convertigo.beans.statements.ThenStatement)4 ProjectExplorerView (com.twinsoft.convertigo.eclipse.views.projectexplorer.ProjectExplorerView)4 TreeObject (com.twinsoft.convertigo.eclipse.views.projectexplorer.model.TreeObject)4 Cursor (org.eclipse.swt.graphics.Cursor)4 Display (org.eclipse.swt.widgets.Display)4 Shell (org.eclipse.swt.widgets.Shell)4 ElseStatement (com.twinsoft.convertigo.beans.statements.ElseStatement)3 Node (org.w3c.dom.Node)3 IfStatement (com.twinsoft.convertigo.beans.statements.IfStatement)2 IfThenElseStatement (com.twinsoft.convertigo.beans.statements.IfThenElseStatement)2 IfXpathExistsStatement (com.twinsoft.convertigo.beans.statements.IfXpathExistsStatement)2 IfXpathExistsThenElseStatement (com.twinsoft.convertigo.beans.statements.IfXpathExistsThenElseStatement)2 EngineException (com.twinsoft.convertigo.engine.EngineException)2 IOException (java.io.IOException)2 BlockFactory (com.twinsoft.convertigo.beans.core.BlockFactory)1 Connector (com.twinsoft.convertigo.beans.core.Connector)1