Search in sources :

Example 26 with DatabaseObject

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

the class SchemaView method makeTreeViewer.

private TreeViewer makeTreeViewer(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayoutData(new GridData(GridData.FILL_BOTH));
    composite.setLayout(SwtUtils.newGridLayout(1, false, 0, 0, 0, 0));
    ToolBar toolbar = new ToolBar(composite, SWT.NONE);
    toolbar.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    final TreeViewer treeViewer = new TreeViewer(composite);
    ToolItem toolItem = new ToolItem(toolbar, SWT.PUSH);
    setToolItemIcon(toolItem, "icons/studio/collapse_all_nodes.gif", "C", "Collapse all");
    toolItem.addSelectionListener(new SelectionListener() {

        public void widgetSelected(SelectionEvent e) {
            treeViewer.collapseAll();
        }

        public void widgetDefaultSelected(SelectionEvent e) {
        }
    });
    toolItem = new ToolItem(toolbar, SWT.PUSH);
    setToolItemIcon(toolItem, "icons/studio/expand_all_nodes.gif", "E", "Expand all");
    toolItem.addSelectionListener(new SelectionListener() {

        public void widgetSelected(SelectionEvent e) {
            treeViewer.expandToLevel(50);
        }

        public void widgetDefaultSelected(SelectionEvent e) {
        }
    });
    treeViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
    treeViewer.setLabelProvider(SchemaViewContentProvider.decoratingLabelProvider);
    treeViewer.setComparer(new IElementComparer() {

        public int hashCode(Object element) {
            String txt = SchemaViewContentProvider.decoratingLabelProvider.getText(element);
            int hash = txt.hashCode();
            if (element instanceof XmlSchemaObject) {
                Iterator<DatabaseObject> ref = SchemaMeta.getReferencedDatabaseObjects((XmlSchemaObject) element).iterator();
                if (ref.hasNext()) {
                    hash += ref.next().hashCode();
                }
            }
            return hash;
        }

        public boolean equals(Object a, Object b) {
            boolean ret = false;
            if (a != null && b != null && a.getClass().equals(b.getClass())) {
                String aTxt = SchemaViewContentProvider.decoratingLabelProvider.getText(a);
                String bTxt = SchemaViewContentProvider.decoratingLabelProvider.getText(b);
                if (aTxt.equals(bTxt)) {
                    if (a instanceof XmlSchemaObject) {
                        Iterator<DatabaseObject> aRef = SchemaMeta.getReferencedDatabaseObjects((XmlSchemaObject) a).iterator();
                        Iterator<DatabaseObject> bRef = SchemaMeta.getReferencedDatabaseObjects((XmlSchemaObject) b).iterator();
                        if (aRef.hasNext() && bRef.hasNext()) {
                            ret = aRef.next() == bRef.next();
                        }
                    } else {
                        ret = true;
                    }
                }
            }
            return ret;
        }
    });
    return treeViewer;
}
Also used : Composite(org.eclipse.swt.widgets.Composite) XmlSchemaObject(org.apache.ws.commons.schema.XmlSchemaObject) TreeViewer(org.eclipse.jface.viewers.TreeViewer) GridData(org.eclipse.swt.layout.GridData) ToolBar(org.eclipse.swt.widgets.ToolBar) SelectionEvent(org.eclipse.swt.events.SelectionEvent) IElementComparer(org.eclipse.jface.viewers.IElementComparer) Iterator(java.util.Iterator) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) DatabaseObjectTreeObject(com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject) XmlSchemaObject(org.apache.ws.commons.schema.XmlSchemaObject) ToolItem(org.eclipse.swt.widgets.ToolItem) ISelectionListener(org.eclipse.ui.ISelectionListener) SelectionListener(org.eclipse.swt.events.SelectionListener)

Example 27 with DatabaseObject

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

the class ComponentInfoWizardPage method dialogChanged.

private void dialogChanged(boolean increment) {
    DatabaseObject dbo = ((ComponentExplorerWizardPage) getWizard().getPage("ComponentExplorerWizardPage")).getCreatedBean();
    if (dbo != null) {
        String name = getBeanName();
        if (name.length() == 0) {
            updateStatus("Name must be specified");
            return;
        }
        if (!StringUtils.isNormalized(name)) {
            updateStatus("Name must be normalized.\nDon't start with number and don't use non ASCII caracters.");
            return;
        }
        Matcher m = Pattern.compile("\\d+$").matcher("");
        boolean sameName;
        do {
            sameName = false;
            try {
                dbo.setName(name);
            } catch (ObjectWithSameNameException e) {
                if (!increment) {
                    updateStatus("Name already used by siblings");
                    return;
                }
                sameName = true;
                m.reset(name);
                if (m.find()) {
                    name = name.substring(0, m.start()) + (Integer.parseInt(m.group()) + 1);
                } else {
                    name = name + "_1";
                }
                setBeanName(name);
            } catch (EngineException e) {
                updateStatus("Name could not be set on bean");
                return;
            } catch (NullPointerException e) {
                updateStatus("New Bean has not been instanciated");
                return;
            }
        } while (sameName);
    }
    updateStatus(null);
}
Also used : ObjectWithSameNameException(com.twinsoft.convertigo.engine.ObjectWithSameNameException) Matcher(java.util.regex.Matcher) EngineException(com.twinsoft.convertigo.engine.EngineException) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject)

Example 28 with DatabaseObject

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

the class SharedComponentWizard method scanForVariables.

private void scanForVariables(final UIComponent origin) throws Exception {
    final Set<String> identifierSet = new HashSet<String>();
    try {
        new WalkHelper() {

            private void addDeclaration(String var_name, String var_value) {
                if (var_name != null && !var_name.isEmpty() && !main_map.containsKey(var_name)) {
                    main_map.put(var_name, var_value == null ? "''" : var_value);
                }
            }

            private void getMainDeclarations() {
                try {
                    List<String> declarations = new ArrayList<String>();
                    String c8o_Declarations = "", markerId = "";
                    if (isInPage(origin)) {
                        markerId = "PageDeclaration";
                        String c8o_UserCustoms = origin.getPage().getScriptContent().getString();
                        c8o_Declarations = Ionic3Builder.getMarker(c8o_UserCustoms, markerId);
                    } else if (isInSharedComponent(origin)) {
                        markerId = "SharedCompDeclaration";
                        UISharedComponent uisc = origin.getSharedComponent();
                        for (UICompVariable var : uisc.getVariables()) {
                            c8o_Declarations += "let " + var.getVariableName() + " = " + var.getVariableValue() + ";" + System.lineSeparator();
                        }
                    } else if (isInApplication(origin)) {
                        markerId = "AppDeclaration";
                        String c8o_UserCustoms = origin.getApplication().getComponentScriptContent().getString();
                        c8o_Declarations = Ionic3Builder.getMarker(c8o_UserCustoms, markerId);
                    }
                    if (!c8o_Declarations.isEmpty()) {
                        for (String line : Arrays.asList(c8o_Declarations.split(System.lineSeparator()))) {
                            line = line.trim();
                            if (!line.isEmpty() && line.indexOf(markerId) == -1) {
                                declarations.add(line);
                            }
                        }
                    }
                    for (String line : declarations) {
                        // "(((\\w+)\\s(\\w+)([^\\=]+))(\\=([^\\=]+))?)"
                        Matcher matcher = d_var.matcher(line);
                        while (matcher.find()) {
                            String var_name = matcher.group(4);
                            String var_value = matcher.group(7);
                            if (var_value != null) {
                                var_value = var_value.trim();
                                if (var_value.charAt(var_value.length() - 1) == ';') {
                                    var_value = var_value.substring(0, var_value.length() - 1);
                                }
                                var_value = escapeString(var_value);
                            }
                            addDeclaration(var_name, var_value);
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            private boolean isInForDirective(UIComponent uic) {
                return getForDirective(uic) != null;
            }

            private UIControlDirective getForDirective(UIComponent uic) {
                DatabaseObject databaseObject = uic;
                while (databaseObject != null && (!(databaseObject instanceof UIControlDirective) || !AttrDirective.ForEach.name().equals(((UIControlDirective) databaseObject).getDirectiveName()))) {
                    databaseObject = databaseObject.getParent();
                }
                if (databaseObject == null)
                    return null;
                else
                    return (UIControlDirective) databaseObject;
            }

            private void getForDirectiveVariables(UIComponent uic) {
                UIComponent uicomponent = uic;
                while (isInForDirective(uicomponent)) {
                    UIControlDirective uicd = getForDirective(uicomponent);
                    if (!uic.equals(uicd)) {
                        String item = "item" + uicd.priority;
                        addDeclaration(item, "[]");
                        addMapVariable(item, item, "this._params_." + item);
                        addMapVariable(item, uicd.toString() + " : found  variable which stands for the iterator's item");
                        String itemName = uicd.getDirectiveItemName();
                        addDeclaration(itemName, "{}");
                        addMapVariable(itemName, itemName, "this._params_." + itemName);
                        addMapVariable(itemName, uicd.toString() + " : found variable which stands for the customized iterator's item");
                        String indexName = uicd.getDirectiveIndexName();
                        addDeclaration(indexName, "0");
                        addMapVariable(indexName, indexName, "this._params_." + indexName);
                        addMapVariable(indexName, uicd.toString() + " : found variable which stands for the customized iterator's index");
                        String expression = uicd.getDirectiveExpression();
                        if (!expression.isEmpty()) {
                            Matcher matcher = null;
                            List<String> list = Arrays.asList(expression.split("\\;"));
                            for (String s : list) {
                                matcher = d_var_let.matcher(s);
                                while (matcher.find()) {
                                    String expvar = matcher.group(3);
                                    addDeclaration(expvar, "''");
                                    addMapVariable(expvar, expvar, "this._params_." + expvar);
                                    addMapVariable(expvar, uicd.toString() + " : found variable used by the customized iterator's expression");
                                }
                                matcher = d_var_as.matcher(s);
                                while (matcher.find()) {
                                    String expvar = matcher.group(4);
                                    addDeclaration(expvar, "''");
                                    addMapVariable(expvar, expvar, "this._params_." + expvar);
                                    addMapVariable(expvar, uicd.toString() + " : found variable used by the customized iterator's expression");
                                }
                            }
                        }
                    }
                    DatabaseObject dbo = uicd.getParent();
                    uicomponent = dbo instanceof UIComponent ? (UIComponent) dbo : null;
                }
            }

            private boolean checkVariable(String name) {
                if (name == null || name.isEmpty())
                    return false;
                if (identifierSet.contains(name)) {
                    return false;
                }
                if ("global".equals(name))
                    return false;
                if ("router".equals(name))
                    return false;
                return true;
            }

            private void addMapVariable(String name, String target, String replacement) {
                if (checkVariable(name)) {
                    String normalized_name = StringUtils.normalize(name);
                    String var_name = normalized_name;
                    if (ovarMap.containsKey(var_name)) {
                    // System.out.println("var_name: "+ var_name + " already in ovarMap");
                    } else {
                        ovarMap.put(var_name, new HashMap<String, String>());
                    }
                    ovarMap.get(var_name).put(target, replacement.replace("_params_." + name, "_params_.") + var_name);
                }
            }

            private void addMapVariable(String name, String infos) {
                if (checkVariable(name)) {
                    String normalized_name = StringUtils.normalize(name);
                    String var_name = normalized_name;
                    if (infoMap.containsKey(var_name)) {
                    // System.out.println("var_name: "+ var_name + " already in infoMap");
                    } else {
                        infoMap.put(var_name, infos);
                    }
                }
            }

            private void scanSmartSource(UIComponent uic, String p_name, MobileSmartSourceType msst) throws Exception {
                boolean extended = !forTemplate(uic);
                String s = null;
                if (Mode.SCRIPT.equals(msst.getMode())) {
                    s = msst.getValue(extended);
                }
                if (Mode.SOURCE.equals(msst.getMode())) {
                    s = msst.getSmartSource().toJsonString();
                }
                if (s != null) {
                    String infos = uic.toString() + " : found variable used by '" + p_name + "' property";
                    Matcher matcher = p_var.matcher(s);
                    while (matcher.find()) {
                        String group1 = matcher.group(1);
                        String group2 = matcher.group(2);
                        // String group3 = matcher.group(3);
                        String group4 = matcher.group(4);
                        String name = group4;
                        String target = group1;
                        String replacement = group2 + "._params_." + name;
                        if (isInControlEvent(uic)) {
                            if (forTemplate(uic)) {
                                replacement = "_params_." + name;
                            } else {
                                replacement = "scope._params_." + name;
                            }
                        }
                        addMapVariable(name, target, replacement);
                        addMapVariable(name, infos);
                    }
                }
            }

            @Override
            public void init(DatabaseObject databaseObject) throws Exception {
                getMainDeclarations();
                if (isInForDirective(origin)) {
                    getForDirectiveVariables(origin);
                }
                super.init(databaseObject);
            }

            @Override
            protected void walk(DatabaseObject databaseObject) throws Exception {
                if (databaseObject instanceof UIComponent) {
                    UIComponent uic = (UIComponent) databaseObject;
                    if (uic.isEnabled() && !isInControlEvent(uic)) {
                        if (databaseObject instanceof UIDynamicElement) {
                            String identifier = ((UIDynamicElement) databaseObject).getIdentifier();
                            if (!identifier.isEmpty()) {
                                identifierSet.add(identifier);
                            }
                        }
                        for (java.beans.PropertyDescriptor pd : CachedIntrospector.getBeanInfo(databaseObject).getPropertyDescriptors()) {
                            if (pd.getPropertyEditorClass() != null) {
                                if (pd.getPropertyEditorClass().getSimpleName().equals("MobileSmartSourcePropertyDescriptor")) {
                                    Method getter = pd.getReadMethod();
                                    Object value = getter.invoke(databaseObject, new Object[] {});
                                    if (value != null && value instanceof MobileSmartSourceType) {
                                        MobileSmartSourceType msst = (MobileSmartSourceType) value;
                                        if (Mode.SCRIPT.equals(msst.getMode()) || Mode.SOURCE.equals(msst.getMode())) {
                                            scanSmartSource(uic, pd.getName(), msst);
                                        }
                                    }
                                }
                            }
                        }
                        if (databaseObject instanceof UIDynamicElement) {
                            UIDynamicElement uide = (UIDynamicElement) databaseObject;
                            IonBean ionBean = uide.getIonBean();
                            if (ionBean != null) {
                                for (IonProperty property : ionBean.getProperties().values()) {
                                    Object p_value = property.getValue();
                                    if (!p_value.equals(false)) {
                                        MobileSmartSourceType msst = property.getSmartType();
                                        if (Mode.SCRIPT.equals(msst.getMode()) || Mode.SOURCE.equals(msst.getMode())) {
                                            scanSmartSource(uide, property.getName(), msst);
                                        }
                                    }
                                }
                            }
                        }
                        super.walk(databaseObject);
                    }
                }
            }
        }.init(origin);
    } catch (Exception e) {
        throw new Exception("Unable to scan for variables", e);
    }
}
Also used : UICompVariable(com.twinsoft.convertigo.beans.mobile.components.UICompVariable) IonProperty(com.twinsoft.convertigo.beans.mobile.components.dynamic.IonProperty) Matcher(java.util.regex.Matcher) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) MobileSmartSourceType(com.twinsoft.convertigo.beans.mobile.components.MobileSmartSourceType) IonBean(com.twinsoft.convertigo.beans.mobile.components.dynamic.IonBean) UIComponent(com.twinsoft.convertigo.beans.mobile.components.UIComponent) UIControlDirective(com.twinsoft.convertigo.beans.mobile.components.UIControlDirective) UIDynamicElement(com.twinsoft.convertigo.beans.mobile.components.UIDynamicElement) WalkHelper(com.twinsoft.convertigo.engine.helpers.WalkHelper) Method(java.lang.reflect.Method) UISharedComponent(com.twinsoft.convertigo.beans.mobile.components.UISharedComponent) CoreException(org.eclipse.core.runtime.CoreException) InvocationTargetException(java.lang.reflect.InvocationTargetException) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) ArrayList(java.util.ArrayList) List(java.util.List) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) HashSet(java.util.HashSet)

Example 29 with DatabaseObject

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

the class SharedComponentWizard method createSharedComponent.

private UISharedComponent createSharedComponent() throws Exception {
    UIComponent uic = (UIComponent) getFirstInList();
    UISharedComponent uisc = new UISharedComponent();
    uisc.setName(shared_comp_name);
    uisc.hasChanged = true;
    uisc.bNew = true;
    // must be added before copy/paste !
    uic.getApplication().add(uisc);
    for (DatabaseObject dbo : objectList) {
        ConvertigoPlugin.clipboardManagerSystem.reset();
        ConvertigoPlugin.clipboardManagerSystem.isCopy = true;
        String sXml = ConvertigoPlugin.clipboardManagerSystem.copy(dbo);
        ConvertigoPlugin.clipboardManagerSystem.paste(sXml, uisc, false);
    }
    updateMobileSmartSources(uisc);
    for (String name : dlg_map.keySet()) {
        String value = getVariablesDefaultValue(name);
        uisc.add(createCompVariable(dlg_map.get(name), value));
    }
    return uisc;
}
Also used : UIComponent(com.twinsoft.convertigo.beans.mobile.components.UIComponent) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) UISharedComponent(com.twinsoft.convertigo.beans.mobile.components.UISharedComponent)

Example 30 with DatabaseObject

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

the class ViewRefLabelProvider method getImage.

public Image getImage(Object element) {
    String iconName = null;
    Image image = null;
    if (element instanceof AbstractNodeWithDatabaseObjectReference) {
        AbstractNodeWithDatabaseObjectReference node = (AbstractNodeWithDatabaseObjectReference) element;
        DatabaseObject databaseObject = node.getRefDatabaseObject();
        /**
         * treat case Entry handlers, Exit handlers etc... where dbo == null
         * could be cleaner if having its own icon etc...
         */
        if (databaseObject == null) {
            if (node.getName().contains("entry"))
                iconName = "/com/twinsoft/convertigo/beans/statements/images/handler_entry_16x16.png";
            else if (node.getName().contains("exit"))
                iconName = "/com/twinsoft/convertigo/beans/statements/images/handler_exit_16x16.png";
            else
                iconName = null;
        } else
            iconName = MySimpleBeanInfo.getIconName(databaseObject, BeanInfo.ICON_COLOR_16x16);
    } else {
        if (element instanceof InformationNode) {
            iconName = "/com/twinsoft/convertigo/eclipse/views/references/images/information_color_16x16.png";
        } else if (element instanceof IsUsedByNode) {
            iconName = "/com/twinsoft/convertigo/eclipse/views/references/images/isusedby_16x16.png";
        } else if (element instanceof RequiresNode) {
            iconName = "/com/twinsoft/convertigo/eclipse/views/references/images/requires_16x16.png";
        } else {
            return null;
        }
    }
    image = ViewImageProvider.getImageFromCache(iconName, element);
    return image;
}
Also used : IsUsedByNode(com.twinsoft.convertigo.eclipse.views.references.model.IsUsedByNode) RequiresNode(com.twinsoft.convertigo.eclipse.views.references.model.RequiresNode) DatabaseObject(com.twinsoft.convertigo.beans.core.DatabaseObject) InformationNode(com.twinsoft.convertigo.eclipse.views.references.model.InformationNode) AbstractNodeWithDatabaseObjectReference(com.twinsoft.convertigo.eclipse.views.references.model.AbstractNodeWithDatabaseObjectReference) Image(org.eclipse.swt.graphics.Image)

Aggregations

DatabaseObject (com.twinsoft.convertigo.beans.core.DatabaseObject)296 TreeObject (com.twinsoft.convertigo.eclipse.views.projectexplorer.model.TreeObject)98 DatabaseObjectTreeObject (com.twinsoft.convertigo.eclipse.views.projectexplorer.model.DatabaseObjectTreeObject)97 EngineException (com.twinsoft.convertigo.engine.EngineException)88 Shell (org.eclipse.swt.widgets.Shell)46 ProjectExplorerView (com.twinsoft.convertigo.eclipse.views.projectexplorer.ProjectExplorerView)45 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)43 Cursor (org.eclipse.swt.graphics.Cursor)42 Display (org.eclipse.swt.widgets.Display)42 Sequence (com.twinsoft.convertigo.beans.core.Sequence)41 Project (com.twinsoft.convertigo.beans.core.Project)38 CoreException (org.eclipse.core.runtime.CoreException)36 IOException (java.io.IOException)35 Step (com.twinsoft.convertigo.beans.core.Step)33 ActionModel (com.twinsoft.convertigo.engine.studio.ActionModel)33 TreeParent (com.twinsoft.convertigo.eclipse.views.projectexplorer.TreeParent)31 Element (org.w3c.dom.Element)30 ObjectsFolderTreeObject (com.twinsoft.convertigo.eclipse.views.projectexplorer.model.ObjectsFolderTreeObject)27 StepTreeObject (com.twinsoft.convertigo.eclipse.views.projectexplorer.model.StepTreeObject)27 PartInitException (org.eclipse.ui.PartInitException)26