Search in sources :

Example 1 with SQLPatternItem

use of org.talend.core.model.properties.SQLPatternItem in project tdi-studio-se by Talend.

the class ImportItemUtil method checkItem.

private boolean checkItem(ItemRecord itemRecord, boolean overwrite) {
    boolean result = false;
    try {
        Item item = itemRecord.getItem();
        if (item instanceof TDQItem) {
            // hide tdq first
            return false;
        }
        ERepositoryObjectType itemType = ERepositoryObjectType.getItemType(item);
        if (itemType == null) {
            //$NON-NLS-1$
            itemRecord.addError(Messages.getString("ImportItemUtil.unsupportItem"));
            // can't import this item.
            return false;
        }
        cache.initialize(itemType);
        boolean isAllowMultipleName = (itemType == ERepositoryObjectType.SQLPATTERNS || itemType == ERepositoryObjectType.METADATA_FILE_XML);
        String itemPath = null;
        if (item.getState() != null) {
            itemPath = item.getState().getPath();
        } else {
            itemRecord.addError(Messages.getString("ImportItemUtil.unsupportItem"));
            return false;
        }
        boolean nameAvailable = true;
        IRepositoryViewObject itemWithSameId = null;
        IRepositoryViewObject itemWithSameName = null;
        // take care, in cache it's RepositoryViewObject, not RepositoryObject
        for (IRepositoryViewObject current : cache.getItemsFromRepository().get(itemType)) {
            final Property property = itemRecord.getProperty();
            if (property != null) {
                if (property.getLabel() != null && property.getLabel().equalsIgnoreCase(current.getLabel()) && property.getId() != current.getId()) {
                    // repository.
                    if (!isAllowMultipleName || current.getPath().equals(itemPath)) {
                        nameAvailable = false;
                    }
                    // elements
                    if (!nameAvailable) {
                        itemWithSameName = current;
                    }
                }
                if (property.getId() != null && property.getId().equalsIgnoreCase(current.getId())) {
                    itemWithSameId = current;
                }
            }
        }
        itemRecord.setExistingItemWithSameId(itemWithSameId);
        boolean idAvailable = itemWithSameId == null;
        boolean isSystem = false;
        // we do not import built in routines
        if (item.eClass().equals(PropertiesPackage.eINSTANCE.getRoutineItem())) {
            RoutineItem routineItem = (RoutineItem) item;
            if (routineItem.isBuiltIn()) {
                isSystem = true;
            }
        }
        // we do not import system sql patterns
        if (item.eClass().equals(PropertiesPackage.eINSTANCE.getSQLPatternItem())) {
            SQLPatternItem sqlPatternItem = (SQLPatternItem) item;
            if (sqlPatternItem.isSystem()) {
                isSystem = true;
            }
        }
        if (isSystem) {
            itemRecord.addError(Messages.getString("RepositoryUtil.isSystem"));
            return false;
        }
        if (nameAvailable) {
            if (idAvailable) {
                if (!isSystem) {
                    result = true;
                }
            /*
                       * else { itemRecord.addError(Messages.getString("RepositoryUtil.isSystemRoutine")); //$NON-NLS-1$
                       * }
                       */
            } else {
                // same id but different name,no need to care overwrite cause the item will be considered as a
                // different one,see bug 20445
                itemRecord.setState(State.ID_EXISTED);
                // if (overwrite) {
                // result = true;
                // } else {
                // see bug 0005222: [Import items] [Errors and Warnings]
                // id is already in use
                result = true;
            // RepositoryNode nodeWithSameId = RepositoryNodeUtilities.getRepositoryNode(itemWithSameId);
            // IPath path = getPath(nodeWithSameId);
            // itemRecord.addError(Messages.getString(
            //                                "RepositoryUtil.idUsed", itemWithSameId.getLabel(), path.toOSString())); //$NON-NLS-1$
            // }
            }
        } else {
            if (idAvailable) {
                // same name but different id
                itemRecord.setState(State.NAME_EXISTED);
                if (!isSystem && overwrite) {
                    // if anything system, don't replace the source item if same name.
                    // if not from system, can overwrite.
                    itemRecord.setExistingItemWithSameId(itemWithSameName);
                    result = true;
                }
                // if item is locked, cannot overwrite
                if (result && overwrite && itemWithSameName != null) {
                    ERepositoryStatus status = itemWithSameName.getRepositoryStatus();
                    if (status == ERepositoryStatus.LOCK_BY_OTHER || status == ERepositoryStatus.LOCK_BY_USER) {
                        //$NON-NLS-1$
                        itemRecord.addError(Messages.getString("RepositoryUtil.itemLocked"));
                        return false;
                    }
                }
            } else {
                // same name and same id
                itemRecord.setState(State.NAME_AND_ID_EXISTED);
                if (overwrite) {
                    result = true;
                }
                if (!isSystem && overwrite && !itemWithSameName.getProperty().getLabel().equals(itemWithSameId.getProperty().getLabel())) {
                    // if anything system, don't replace the source item if same name.
                    // if not from system, can overwrite.
                    itemRecord.setExistingItemWithSameId(itemWithSameName);
                    result = true;
                }
            }
            if (!result && !isSystem) {
                //$NON-NLS-1$
                itemRecord.addError(Messages.getString("RepositoryUtil.nameUsed"));
            }
        }
        if (result && overwrite && itemRecord.getState() == State.NAME_AND_ID_EXISTED) {
            // if item is locked, cannot overwrite
            if (checkIfLocked(itemRecord)) {
                //$NON-NLS-1$
                itemRecord.addError(Messages.getString("RepositoryUtil.itemLocked"));
                result = false;
            }
        }
    } catch (Exception e) {
        log.error("Error when checking item :" + itemRecord.getPath(), e);
    }
    return result;
}
Also used : ReferenceFileItem(org.talend.core.model.properties.ReferenceFileItem) JobletProcessItem(org.talend.core.model.properties.JobletProcessItem) ConnectionItem(org.talend.core.model.properties.ConnectionItem) SQLPatternItem(org.talend.core.model.properties.SQLPatternItem) ProcessItem(org.talend.core.model.properties.ProcessItem) ContextItem(org.talend.core.model.properties.ContextItem) SnippetItem(org.talend.core.model.properties.SnippetItem) Item(org.talend.core.model.properties.Item) LinkDocumentationItem(org.talend.core.model.properties.LinkDocumentationItem) FolderItem(org.talend.core.model.properties.FolderItem) RoutineItem(org.talend.core.model.properties.RoutineItem) TDQItem(org.talend.core.model.properties.TDQItem) BusinessProcessItem(org.talend.core.model.properties.BusinessProcessItem) FileItem(org.talend.core.model.properties.FileItem) ERepositoryStatus(org.talend.commons.runtime.model.repository.ERepositoryStatus) IRepositoryViewObject(org.talend.core.model.repository.IRepositoryViewObject) TDQItem(org.talend.core.model.properties.TDQItem) RoutineItem(org.talend.core.model.properties.RoutineItem) SQLPatternItem(org.talend.core.model.properties.SQLPatternItem) ERepositoryObjectType(org.talend.core.model.repository.ERepositoryObjectType) Property(org.talend.core.model.properties.Property) CoreException(org.eclipse.core.runtime.CoreException) InvocationTargetException(java.lang.reflect.InvocationTargetException) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException) MalformedURLException(java.net.MalformedURLException) PersistenceException(org.talend.commons.exception.PersistenceException)

Example 2 with SQLPatternItem

use of org.talend.core.model.properties.SQLPatternItem in project tdi-studio-se by Talend.

the class SqlTemplateImportHandler method isValidSystemItem.

@Override
public boolean isValidSystemItem(ImportItem importItem) {
    boolean valid = super.valid(importItem);
    if (!valid) {
        return false;
    }
    Item item = importItem.getItem();
    if (item instanceof SQLPatternItem) {
        if (isSystemItem(item)) {
            return true;
        }
    }
    return false;
}
Also used : ImportItem(org.talend.repository.items.importexport.handlers.model.ImportItem) Item(org.talend.core.model.properties.Item) SQLPatternItem(org.talend.core.model.properties.SQLPatternItem) SQLPatternItem(org.talend.core.model.properties.SQLPatternItem)

Example 3 with SQLPatternItem

use of org.talend.core.model.properties.SQLPatternItem in project tdi-studio-se by Talend.

the class SaveAsSQLPatternAction method run.

@Override
public void run() {
    SaveAsSQLPatternWizard processWizard = new SaveAsSQLPatternWizard(editorPart);
    WizardDialog dlg = new WizardDialog(Display.getCurrent().getActiveShell(), processWizard);
    if (dlg.open() == Window.OK) {
        try {
            SQLPatternItem sqlpatternItem = processWizard.getSQLPatternItem();
            // get the IFile
            ICodeGeneratorService service = (ICodeGeneratorService) GlobalServiceRegister.getDefault().getService(ICodeGeneratorService.class);
            // only for talend java version
            ISQLPatternSynchronizer sqlPatternSynchronizer = service.getSQLPatternSynchronizer();
            IFile file = sqlPatternSynchronizer.getSQLPatternFile(sqlpatternItem);
            if (file == null) {
                return;
            }
            // Set readonly to false since created job will always be editable.
            RepositoryEditorInput repositoryEditorInput = new RepositoryEditorInput(file, sqlpatternItem);
            IWorkbenchPage page = getActivePage();
            IRepositoryNode repositoryNode = RepositoryNodeUtilities.getRepositoryNode(repositoryEditorInput.getItem().getProperty().getId(), false);
            repositoryEditorInput.setRepositoryNode(repositoryNode);
            // here really do the normal save as function
            IDocumentProvider provider = ((StandAloneTalendJavaEditor) this.editorPart).getDocumentProvider();
            provider.aboutToChange(repositoryEditorInput);
            provider.saveDocument(null, repositoryEditorInput, provider.getDocument(this.editorPart.getEditorInput()), true);
            provider.changed(repositoryEditorInput);
            // copy back from the *.java file to *.item file.
            // @see:StandAloneTalendJavaEditor.doSave(IProgressMonitor monitor)
            ByteArray byteArray = sqlpatternItem.getContent();
            byteArray.setInnerContentFromFile(repositoryEditorInput.getFile());
            IProxyRepositoryFactory repFactory = DesignerPlugin.getDefault().getRepositoryService().getProxyRepositoryFactory();
            repFactory.save(sqlpatternItem);
            // close the old editor
            page.closeEditor(this.editorPart, false);
            // open the new editor, because at the same time, there will update the jobSetting/componentSetting view
            page.openEditor(repositoryEditorInput, StandAloneTalendJavaEditor.ID, true);
        } catch (Exception e) {
            MessageDialog.openError(Display.getCurrent().getActiveShell(), "Error", "SQLTemplate could not be saved" + " : " + e.getMessage());
            ExceptionHandler.process(e);
        }
    }
}
Also used : SaveAsSQLPatternWizard(org.talend.designer.core.ui.wizards.SaveAsSQLPatternWizard) IFile(org.eclipse.core.resources.IFile) RepositoryEditorInput(org.talend.core.repository.ui.editor.RepositoryEditorInput) IRepositoryNode(org.talend.repository.model.IRepositoryNode) ISQLPatternSynchronizer(org.talend.designer.codegen.ISQLPatternSynchronizer) SQLPatternItem(org.talend.core.model.properties.SQLPatternItem) StandAloneTalendJavaEditor(org.talend.designer.core.ui.editor.StandAloneTalendJavaEditor) ICodeGeneratorService(org.talend.designer.codegen.ICodeGeneratorService) IDocumentProvider(org.eclipse.ui.texteditor.IDocumentProvider) IWorkbenchPage(org.eclipse.ui.IWorkbenchPage) ByteArray(org.talend.core.model.properties.ByteArray) WizardDialog(org.eclipse.jface.wizard.WizardDialog) IProxyRepositoryFactory(org.talend.repository.model.IProxyRepositoryFactory)

Example 4 with SQLPatternItem

use of org.talend.core.model.properties.SQLPatternItem in project tdi-studio-se by Talend.

the class ComponentChooseDialog method createSQLPattern.

private void createSQLPattern(List<Object> sourceList) {
    if (sourceList.size() == 0) {
        return;
    }
    NodeContainerPart nodePart = (NodeContainerPart) getTargetEditPart();
    Object model = nodePart.getModel();
    if (model instanceof NodeContainer) {
        Node node = ((NodeContainer) model).getNode();
        IElementParameter sqlPatternValue = node.getElementParameter(EParameterName.SQLPATTERN_VALUE.getName());
        if (sqlPatternValue != null) {
            boolean created = false;
            for (Object source : sourceList) {
                if (source instanceof RepositoryNode) {
                    RepositoryNode sourceNode = (RepositoryNode) source;
                    Item item = sourceNode.getObject().getProperty().getItem();
                    if (item instanceof SQLPatternItem) {
                        SQLPatternItem pattern = (SQLPatternItem) item;
                        Property property = pattern.getProperty();
                        String propertyId = property.getId();
                        String propertyLabel = property.getLabel();
                        List<Map> values = (List<Map>) sqlPatternValue.getValue();
                        Map<String, String> patternMap = new HashMap<String, String>();
                        boolean contains = false;
                        for (Map map : values) {
                            String compoundId = (String) map.get(SQLPatternUtils.SQLPATTERNLIST);
                            String id = compoundId.split(SQLPatternUtils.ID_SEPARATOR)[0];
                            String name = compoundId.split(SQLPatternUtils.ID_SEPARATOR)[1];
                            if (id.equals(propertyId) && name.equals(propertyLabel)) {
                                contains = true;
                                break;
                            }
                        }
                        if (!contains) {
                            patternMap.put(SQLPatternUtils.SQLPATTERNLIST, propertyId + SQLPatternUtils.ID_SEPARATOR + propertyLabel);
                            values.add(patternMap);
                            sqlPatternValue.setValue(values);
                            created = true;
                        }
                    }
                }
            }
            if (created) {
                RepositoryPlugin.getDefault().getDesignerCoreService().switchToCurComponentSettingsView();
            }
        }
    }
}
Also used : NodeContainerPart(org.talend.designer.core.ui.editor.nodecontainer.NodeContainerPart) HashMap(java.util.HashMap) INode(org.talend.core.model.process.INode) RepositoryNode(org.talend.repository.model.RepositoryNode) HL7FileNode(org.talend.core.model.metadata.builder.connection.HL7FileNode) IRepositoryNode(org.talend.repository.model.IRepositoryNode) Node(org.talend.designer.core.ui.editor.nodes.Node) IExternalNode(org.talend.core.model.process.IExternalNode) XMLFileNode(org.talend.core.model.metadata.builder.connection.XMLFileNode) MapperExternalNode(org.talend.core.model.process.node.MapperExternalNode) NodeContainer(org.talend.designer.core.ui.editor.nodecontainer.NodeContainer) SQLPatternItem(org.talend.core.model.properties.SQLPatternItem) RepositoryNode(org.talend.repository.model.RepositoryNode) IRepositoryNode(org.talend.repository.model.IRepositoryNode) ValidationRulesConnectionItem(org.talend.core.model.properties.ValidationRulesConnectionItem) JobletProcessItem(org.talend.core.model.properties.JobletProcessItem) ConnectionItem(org.talend.core.model.properties.ConnectionItem) MDMConnectionItem(org.talend.core.model.properties.MDMConnectionItem) SQLPatternItem(org.talend.core.model.properties.SQLPatternItem) LinkRulesItem(org.talend.core.model.properties.LinkRulesItem) SAPConnectionItem(org.talend.core.model.properties.SAPConnectionItem) ProcessItem(org.talend.core.model.properties.ProcessItem) ContextItem(org.talend.core.model.properties.ContextItem) Item(org.talend.core.model.properties.Item) DatabaseConnectionItem(org.talend.core.model.properties.DatabaseConnectionItem) EbcdicConnectionItem(org.talend.core.model.properties.EbcdicConnectionItem) RulesItem(org.talend.core.model.properties.RulesItem) HL7ConnectionItem(org.talend.core.model.properties.HL7ConnectionItem) FileItem(org.talend.core.model.properties.FileItem) IElementParameter(org.talend.core.model.process.IElementParameter) SAPFunctionRepositoryObject(org.talend.core.repository.model.repositoryObject.SAPFunctionRepositoryObject) IRepositoryViewObject(org.talend.core.model.repository.IRepositoryViewObject) QueryRepositoryObject(org.talend.core.repository.model.repositoryObject.QueryRepositoryObject) MetadataTableRepositoryObject(org.talend.core.repository.model.repositoryObject.MetadataTableRepositoryObject) SalesforceModuleRepositoryObject(org.talend.core.repository.model.repositoryObject.SalesforceModuleRepositoryObject) MetadataColumnRepositoryObject(org.talend.core.repository.model.repositoryObject.MetadataColumnRepositoryObject) SAPIDocRepositoryObject(org.talend.core.repository.model.repositoryObject.SAPIDocRepositoryObject) ArrayList(java.util.ArrayList) List(java.util.List) EList(org.eclipse.emf.common.util.EList) Property(org.talend.core.model.properties.Property) Map(java.util.Map) HashMap(java.util.HashMap)

Example 5 with SQLPatternItem

use of org.talend.core.model.properties.SQLPatternItem in project tdi-studio-se by Talend.

the class ComponentChooseDialog method containsSQLPatternSource.

private boolean containsSQLPatternSource(List<Object> source) {
    if (source.size() == 0) {
        return false;
    }
    for (Object object : source) {
        if (object instanceof RepositoryNode) {
            RepositoryNode sourceNode = (RepositoryNode) object;
            Item item = sourceNode.getObject().getProperty().getItem();
            if (item instanceof SQLPatternItem) {
                return true;
            }
        }
    }
    return false;
}
Also used : ValidationRulesConnectionItem(org.talend.core.model.properties.ValidationRulesConnectionItem) JobletProcessItem(org.talend.core.model.properties.JobletProcessItem) ConnectionItem(org.talend.core.model.properties.ConnectionItem) MDMConnectionItem(org.talend.core.model.properties.MDMConnectionItem) SQLPatternItem(org.talend.core.model.properties.SQLPatternItem) LinkRulesItem(org.talend.core.model.properties.LinkRulesItem) SAPConnectionItem(org.talend.core.model.properties.SAPConnectionItem) ProcessItem(org.talend.core.model.properties.ProcessItem) ContextItem(org.talend.core.model.properties.ContextItem) Item(org.talend.core.model.properties.Item) DatabaseConnectionItem(org.talend.core.model.properties.DatabaseConnectionItem) EbcdicConnectionItem(org.talend.core.model.properties.EbcdicConnectionItem) RulesItem(org.talend.core.model.properties.RulesItem) HL7ConnectionItem(org.talend.core.model.properties.HL7ConnectionItem) FileItem(org.talend.core.model.properties.FileItem) SAPFunctionRepositoryObject(org.talend.core.repository.model.repositoryObject.SAPFunctionRepositoryObject) IRepositoryViewObject(org.talend.core.model.repository.IRepositoryViewObject) QueryRepositoryObject(org.talend.core.repository.model.repositoryObject.QueryRepositoryObject) MetadataTableRepositoryObject(org.talend.core.repository.model.repositoryObject.MetadataTableRepositoryObject) SalesforceModuleRepositoryObject(org.talend.core.repository.model.repositoryObject.SalesforceModuleRepositoryObject) MetadataColumnRepositoryObject(org.talend.core.repository.model.repositoryObject.MetadataColumnRepositoryObject) SAPIDocRepositoryObject(org.talend.core.repository.model.repositoryObject.SAPIDocRepositoryObject) SQLPatternItem(org.talend.core.model.properties.SQLPatternItem) RepositoryNode(org.talend.repository.model.RepositoryNode) IRepositoryNode(org.talend.repository.model.IRepositoryNode)

Aggregations

SQLPatternItem (org.talend.core.model.properties.SQLPatternItem)24 PersistenceException (org.talend.commons.exception.PersistenceException)11 Item (org.talend.core.model.properties.Item)11 IRepositoryViewObject (org.talend.core.model.repository.IRepositoryViewObject)11 IProxyRepositoryFactory (org.talend.repository.model.IProxyRepositoryFactory)8 PartInitException (org.eclipse.ui.PartInitException)7 ConnectionItem (org.talend.core.model.properties.ConnectionItem)7 RepositoryNode (org.talend.repository.model.RepositoryNode)7 IRepositoryNode (org.talend.repository.model.IRepositoryNode)6 RoutineItem (org.talend.core.model.properties.RoutineItem)5 RepositoryEditorInput (org.talend.core.repository.ui.editor.RepositoryEditorInput)5 InvocationTargetException (java.lang.reflect.InvocationTargetException)4 ArrayList (java.util.ArrayList)4 CoreException (org.eclipse.core.runtime.CoreException)4 Project (org.talend.core.model.general.Project)4 IElementParameter (org.talend.core.model.process.IElementParameter)4 FileItem (org.talend.core.model.properties.FileItem)4 ProcessItem (org.talend.core.model.properties.ProcessItem)4 Property (org.talend.core.model.properties.Property)4 HashMap (java.util.HashMap)3