/* * (non-Jsdoc) * * @see * org.talend.designer.codegen.ITalendSynchronizer#getRoutinesFile(org.talend.core.model.properties.RoutineItem) */ @Override public IFile getRoutinesFile(Item item) throws SystemException { try { if (item instanceof BeanItem) { BeanItem routineItem = (BeanItem) item; ProjectManager projectManager = ProjectManager.getInstance(); org.talend.core.model.properties.Project project = projectManager.getProject(routineItem); IProject iProject = ResourcesPlugin.getWorkspace().getRoot().getProject(project.getTechnicalLabel()); String repositoryPath = ERepositoryObjectType.getFolderName(CamelRepositoryNodeType.repositoryBeansType); String folderPath = RepositoryNodeUtilities.getPath(routineItem.getProperty().getId()).toString(); String fileName = routineItem.getProperty().getLabel() + '_' + routineItem.getProperty().getVersion() + JavaUtils.ITEM_EXTENSION; String path = null; if (folderPath != null && folderPath.trim().length() > 0) { path = repositoryPath + '/' + folderPath + '/' + fileName; } else { path = repositoryPath + '/' + fileName; } IFile file = iProject.getFile(path); return file; } } catch (Exception e) { throw new SystemException(e); } return null; }
@Override public RootContainer<String, IRepositoryViewObject> getTdqRepositoryViewObjects( Project project, ERepositoryObjectType type, String folderName, boolean[] options) throws PersistenceException { String relativeFolder = folderName; if (type != null && type.hasFolder()) { // Compatible to the existing behavior which keep the full path relative to the project in DQ. String baseFolder = ERepositoryObjectType.getFolderName(type); relativeFolder = StringUtils.removeStart(relativeFolder, baseFolder); } return getObjectFromFolder( project, type, relativeFolder, OPTION_ONLY_LAST_VERSION | OPTION_DYNAMIC_OBJECTS); }
@Override public FolderItem getFolderItem(Project project, ERepositoryObjectType itemType, IPath path) { if (project == null) { // add this to fix NPE of junit for logon return null; } FolderHelper folderHelper = getFolderHelper(project.getEmfProject()); String pathStr = ERepositoryObjectType.getFolderName(itemType) + IPath.SEPARATOR + path; FolderItem folderItem = folderHelper.getFolder(pathStr); if (folderItem == null && itemType != null) { folderItem = folderHelper.createFolder(pathStr); } return folderItem; }
@Override public RootContainer<String, IRepositoryViewObject> getRoutineFromProject(Project project) throws PersistenceException { RootContainer<String, IRepositoryViewObject> toReturn = new RootContainer<String, IRepositoryViewObject>(); ERepositoryObjectType type = ERepositoryObjectType.ROUTINES; if (type != null) { IProject fsProject = ResourceUtils.getProject(project); IFolder objectFolder = ResourceUtils.getFolder(fsProject, ERepositoryObjectType.getFolderName(type), true); addFolderMembers(project, type, toReturn, objectFolder, true); saveProject(project); } return toReturn; }
protected void createSystemSQLPatterns() throws PersistenceException { ERepositoryObjectType sqlpatternsType = ERepositoryObjectType.SQLPATTERNS; if (sqlpatternsType == null) { return; // don't load, nothing to do } ILibrariesService service = null; if (!GlobalServiceRegister.getDefault().isServiceRegistered(ILibrariesService.class)) { return; } service = (ILibrariesService) GlobalServiceRegister.getDefault().getService(ILibrariesService.class); Project project = getRepositoryContext().getProject(); FolderHelper folderHelper = getFolderHelper(project.getEmfProject()); // will automatically set the children folders // FolderItem folderItem = folderHelper.getFolder("sqlPatterns/system"); // if (folderItem == null) { // folderItem = folderHelper.createFolder("sqlPatterns/system"); //$NON-NLS-1$ // } List<URL> routines = service.getSystemSQLPatterns(); List<IRepositoryViewObject> repositoryObjects = getAll(project, sqlpatternsType, false, false); for (URL url : routines) { String[] fragments = url.toString().split("/"); // $NON-NLS-1$ String label = fragments[fragments.length - 1]; String[] tmp = label.split("\\."); // $NON-NLS-1$ Path relativePath = new Path(url.getFile()); // for instance: categoryName is Teradata; fileName is // Loadfile.sqlpattern String fileName = relativePath.segment(relativePath.segmentCount() - 1); String categoryName = relativePath.segment(relativePath.segmentCount() - 2); tmp = fileName.split("\\."); // $NON-NLS-1$ String sqlPatternLabel = tmp[0]; SQLPatternItem existingItem = null; for (IRepositoryViewObject object : repositoryObjects) { if (object.getLabel().equals(sqlPatternLabel) && object.getProperty().getItem() instanceof SQLPatternItem && ((SQLPatternItem) object.getProperty().getItem()) .getEltName() .equals(categoryName)) { existingItem = (SQLPatternItem) object.getProperty().getItem(); break; } } // check the folder for categoryName,system,UserDefined // set the item's relative path in the repository view IPath categoryPath = new Path(categoryName); IPath systemPath = categoryPath.append(RepositoryConstants.SYSTEM_DIRECTORY); IPath userPath = categoryPath.append(RepositoryConstants.USER_DEFINED); IPath parentPath = new Path(ERepositoryObjectType.getFolderName(sqlpatternsType)); if (folderHelper.getFolder(parentPath.append(categoryPath)) == null) { createFolder( getRepositoryContext().getProject(), sqlpatternsType, new Path(""), categoryPath //$NON-NLS-1$ .lastSegment()); } FolderItem systemFolder = folderHelper.getFolder(parentPath.append(systemPath)); if (systemFolder == null) { Folder folder = createFolder( getRepositoryContext().getProject(), sqlpatternsType, categoryPath, systemPath.lastSegment()); ((FolderItem) folder.getProperty().getItem()).setType(FolderType.FOLDER_LITERAL); } if (folderHelper.getFolder(parentPath.append(userPath)) == null) { Folder folder = createFolder( getRepositoryContext().getProject(), sqlpatternsType, categoryPath, userPath.lastSegment()); ((FolderItem) folder.getProperty().getItem()).setType(FolderType.FOLDER_LITERAL); } // if (existingItem == null) { createSQLPattern(url, sqlPatternLabel, categoryName); } else { updateSQLPattern(url, existingItem); existingItem.setParent(systemFolder); } } }
protected void createSystemRoutines() throws PersistenceException { ERepositoryObjectType routinesType = ERepositoryObjectType.ROUTINES; if (routinesType == null) { return; // don't load, nothing to do } ILibrariesService service = null; if (!GlobalServiceRegister.getDefault().isServiceRegistered(ILibrariesService.class)) { return; } service = (ILibrariesService) GlobalServiceRegister.getDefault().getService(ILibrariesService.class); Project project = getRepositoryContext().getProject(); FolderHelper folderHelper = getFolderHelper(project.getEmfProject()); List<URL> routines = service.getSystemRoutines(); Path path = new Path(RepositoryConstants.SYSTEM_DIRECTORY); // will automatically set the children folders IPath systemRoutinePath = new Path(ERepositoryObjectType.getFolderName(routinesType)); systemRoutinePath = systemRoutinePath.append(RepositoryConstants.SYSTEM_DIRECTORY); FolderItem folderItem = folderHelper.getFolder(systemRoutinePath); if (folderItem == null) { folderItem = folderHelper.createFolder(systemRoutinePath.toString()); } IPath systemRoutineApiPath = new Path(ERepositoryObjectType.getFolderName(routinesType)); systemRoutineApiPath = systemRoutinePath.append(RepositoryConstants.SYSTEM_DIRECTORY).append("api"); FolderItem folderItemApi = folderHelper.getFolder(systemRoutineApiPath); if (folderItemApi == null) { folderItemApi = folderHelper.createFolder(systemRoutineApiPath.toString()); } List<IRepositoryViewObject> repositoryObjects = getAll(project, routinesType, false, false); Map<String, List<LibraryInfo>> routineAndJars = coreSerivce.getRoutineAndJars(); for (URL url : routines) { String[] fragments = url.toString().split("/"); // $NON-NLS-1$ String label = fragments[fragments.length - 1]; String[] tmp = label.split("\\."); // $NON-NLS-1$ String routineLabel = tmp[0]; if (routineLabel.equals(coreSerivce.getTemplateString())) { continue; } RoutineItem existingItem = null; for (IRepositoryViewObject object : repositoryObjects) { if (object.getLabel().equals(routineLabel) && object.getProperty().getItem() instanceof RoutineItem) { existingItem = (RoutineItem) object.getProperty().getItem(); break; } } if (existingItem == null) { createRoutine( url, path, routineLabel, routineAndJars != null ? routineAndJars.get(routineLabel) : null); } else { updateRoutine(url, existingItem); existingItem.setParent(folderItem); } } }