Search in sources :

Example 6 with EngineException

use of com.twinsoft.convertigo.engine.EngineException 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;
        boolean bIncName = false;
        long oldPriority = databaseObject.priority;
        // Verify if a child object with same name exist and change name
        while (bContinue) {
            if (bIncName) {
                dboName = DatabaseObject.incrementName(dboName);
                databaseObject.setName(dboName);
            }
            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);
                }
                if (bChangeName) {
                    bIncName = true;
                }
            } 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.UISharedComponentEvent || 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 EngineException

use of com.twinsoft.convertigo.engine.EngineException in project convertigo by convertigo.

the class ClipboardManager method read.

public Object read(Node node) throws EngineException {
    Class<?> objectClass = null;
    Object object = null;
    Element element = (Element) node;
    String objectClassName = element.getAttribute("classname");
    try {
        objectClass = Class.forName(objectClassName);
        Method readMethod = objectClass.getMethod("read", new Class[] { Node.class });
        object = readMethod.invoke(null, new Object[] { node });
    } catch (Exception e) {
        throw new EngineException("Unable to read object", e);
    }
    return object;
}
Also used : Element(org.w3c.dom.Element) EngineException(com.twinsoft.convertigo.engine.EngineException) 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) Method(java.lang.reflect.Method) 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)

Example 8 with EngineException

use of com.twinsoft.convertigo.engine.EngineException in project convertigo by convertigo.

the class ClipboardManager method read.

public List<Object> read(String xmlData) throws SAXException, IOException {
    List<Object> objectList = new ArrayList<Object>();
    if (xmlData != null) {
        DocumentBuilder builder = XMLUtils.getDefaultDocumentBuilder();
        // avoid 'content not allowed in prolog' to be printed out
        builder.setErrorHandler(null);
        Document document = builder.parse(new InputSource(new StringReader(xmlData)));
        Element rootElement = document.getDocumentElement();
        NodeList nodeList = rootElement.getChildNodes();
        int len = nodeList.getLength();
        Object object;
        Node node;
        for (int i = 0; i < len; i++) {
            node = (Node) nodeList.item(i);
            if (node.getNodeType() != Node.TEXT_NODE) {
                try {
                    object = read(node);
                    objectList.add(object);
                } catch (EngineException e) {
                }
            }
        }
    }
    return objectList;
}
Also used : InputSource(org.xml.sax.InputSource) DocumentBuilder(javax.xml.parsers.DocumentBuilder) Element(org.w3c.dom.Element) NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) ArrayList(java.util.ArrayList) StringReader(java.io.StringReader) EngineException(com.twinsoft.convertigo.engine.EngineException) 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) Document(org.w3c.dom.Document)

Example 9 with EngineException

use of com.twinsoft.convertigo.engine.EngineException in project convertigo by convertigo.

the class ClipboardManager method copy.

public String copy(TreePath[] treePaths) throws EngineException {
    ProjectExplorerView projectExplorerView = ConvertigoPlugin.getDefault().getProjectExplorerView();
    clipboardDocument = XMLUtils.getDefaultDocumentBuilder().newDocument();
    ProcessingInstruction pi = clipboardDocument.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"ISO-8859-1\"");
    clipboardDocument.appendChild(pi);
    clipboardRootElement = clipboardDocument.createElement("convertigo-clipboard");
    clipboardDocument.appendChild(clipboardRootElement);
    TreePath[] selectedPaths = ((treePaths == null) ? projectExplorerView.getSelectionPaths() : treePaths);
    treeObjectsList = new ArrayList<TreeObject>();
    treeParentsList = new ArrayList<TreeObject>();
    for (int i = 0; i < selectedPaths.length; i++) {
        TreeObject treeObject = (TreeObject) selectedPaths[i].getLastPathComponent();
        if (treeObject instanceof DatabaseObjectTreeObject) {
            DatabaseObjectTreeObject databaseObjectTreeObject = (DatabaseObjectTreeObject) treeObject;
            DatabaseObjectTreeObject parentDatabaseObjectTreeObject = databaseObjectTreeObject.getParentDatabaseObjectTreeObject();
            treeObjectsList.add(databaseObjectTreeObject);
            treeParentsList.add(parentDatabaseObjectTreeObject);
            copyDatabaseObject((DatabaseObject) databaseObjectTreeObject.getObject());
        } else if (treeObject instanceof IPropertyTreeObject) {
            IPropertyTreeObject propertyTreeObject = (IPropertyTreeObject) treeObject;
            treeObjectsList.add(treeObject);
            treeParentsList.add(((IPropertyTreeObject) treeObject).getTreeObjectOwner());
            copyPropertyObject(propertyTreeObject);
        } else if (treeObject instanceof IDesignTreeObject) {
            IDesignTreeObject designTreeObject = (IDesignTreeObject) treeObject;
            treeObjectsList.add(treeObject);
            treeParentsList.add(((IDesignTreeObject) treeObject).getTreeObjectOwner());
            copyDesignObject(designTreeObject);
        } else {
            throw new EngineException("Tree item not supported :" + treeObject.getClass().getName());
        }
    }
    objects = treeObjectsList.toArray(new Object[selectedPaths.length]);
    parentTreeNodeOfCutObjects = treeParentsList.toArray(new TreeObject[selectedPaths.length]);
    String strObject = XMLUtils.prettyPrintDOM(clipboardDocument);
    return strObject;
}
Also used : DatabaseObjectTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject) IDesignTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.IDesignTreeObject) EngineException(com.twinsoft.convertigo.engine.EngineException) IPropertyTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.IPropertyTreeObject) 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) 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) ProcessingInstruction(org.w3c.dom.ProcessingInstruction) IPropertyTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.IPropertyTreeObject)

Example 10 with EngineException

use of com.twinsoft.convertigo.engine.EngineException in project convertigo by convertigo.

the class TreeObjectSorter method compare.

@Override
public int compare(Viewer viewer, Object e1, Object e2) {
    if ((e1 instanceof DatabaseObjectTreeObject) && (e2 instanceof DatabaseObjectTreeObject)) {
        DatabaseObject d1 = ((DatabaseObjectTreeObject) e1).getObject();
        DatabaseObject d2 = ((DatabaseObjectTreeObject) e2).getObject();
        DatabaseObjectTreeObject p1 = ((DatabaseObjectTreeObject) e1).getOwnerDatabaseObjectTreeObject();
        DatabaseObjectTreeObject p2 = ((DatabaseObjectTreeObject) e2).getOwnerDatabaseObjectTreeObject();
        if (p1.equals(p2)) {
            DatabaseObject p = (DatabaseObject) p1.getObject();
            try {
                Object o1 = p.getOrder(d1);
                Object o2 = p.getOrder(d2);
                if ((o1 instanceof Long) && (o2 instanceof Long)) {
                    long l1 = ((Long) o1).longValue();
                    long l2 = ((Long) o2).longValue();
                    int dp = (int) (l1 - l2);
                    if (dp != 0)
                        return dp;
                }
            } catch (EngineException e) {
                ConvertigoPlugin.logException(e, "Error while sorting objects \"" + d1.getQName() + "\" and \"" + d2.getQName() + "\" in Tree.");
            }
        }
    } else if ((e1 instanceof PropertyTableRowTreeObject) && (e2 instanceof PropertyTableRowTreeObject)) {
        PropertyTableRowTreeObject r1 = (PropertyTableRowTreeObject) e1;
        PropertyTableRowTreeObject r2 = (PropertyTableRowTreeObject) e2;
        int i1 = r1.getParent().indexOf(r1);
        int i2 = r2.getParent().indexOf(r2);
        return i1 - i2;
    } else if ((e1 instanceof PropertyTableColumnTreeObject) && (e2 instanceof PropertyTableColumnTreeObject)) {
        PropertyTableColumnTreeObject c1 = (PropertyTableColumnTreeObject) e1;
        PropertyTableColumnTreeObject c2 = (PropertyTableColumnTreeObject) e2;
        int i1 = c1.getParent().indexOf(c1);
        int i2 = c2.getParent().indexOf(c2);
        return i1 - i2;
    } else if ((e1 instanceof ObjectsFolderTreeObject) && !(e2 instanceof ObjectsFolderTreeObject)) {
        return -1;
    } else if (!(e1 instanceof ObjectsFolderTreeObject) && (e2 instanceof ObjectsFolderTreeObject)) {
        return 1;
    }
    return super.compare(viewer, e1, e2);
}
Also used : PropertyTableRowTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.PropertyTableRowTreeObject) DatabaseObjectTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject) EngineException(com.twinsoft.convertigo.engine.EngineException) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) PropertyTableRowTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.PropertyTableRowTreeObject) UnloadedProjectTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.UnloadedProjectTreeObject) ObjectsFolderTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.ObjectsFolderTreeObject) PropertyTableColumnTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.PropertyTableColumnTreeObject) DatabaseObjectTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject) ObjectsFolderTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.ObjectsFolderTreeObject) PropertyTableColumnTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.PropertyTableColumnTreeObject)

Aggregations

EngineException (com.twinsoft.convertigo.engine.EngineException)426 IOException (java.io.IOException)155 File (java.io.File)117 Element (org.w3c.dom.Element)84 NodeList (org.w3c.dom.NodeList)64 DatabaseObject (com.twinsoft.convertigo.beans.core.DatabaseObject)62 Document (org.w3c.dom.Document)43 JSONObject (org.codehaus.jettison.json.JSONObject)41 Node (org.w3c.dom.Node)40 Project (com.twinsoft.convertigo.beans.core.Project)35 ArrayList (java.util.ArrayList)35 JSONException (org.codehaus.jettison.json.JSONException)33 Sequence (com.twinsoft.convertigo.beans.core.Sequence)31 RequestableVariable (com.twinsoft.convertigo.beans.variables.RequestableVariable)29 TreeObject (com.twinsoft.convertigo.eclipse.views.projectexplorer.model.TreeObject)27 DatabaseObjectTreeObject (com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject)25 Connector (com.twinsoft.convertigo.beans.core.Connector)24 HashMap (java.util.HashMap)23 Transaction (com.twinsoft.convertigo.beans.core.Transaction)21 ObjectWithSameNameException (com.twinsoft.convertigo.engine.ObjectWithSameNameException)20