Example #1
0
  protected List<IRepositoryViewObject> getSerializable(
      Project project, String id, boolean allVersion, boolean avoidSaveProject)
      throws PersistenceException {
    List<IRepositoryViewObject> toReturn = new ArrayList<IRepositoryViewObject>();

    if (lastFolderForItemMap.containsKey(id)) {
      ERepositoryObjectType itemType = lastRepositoryTypeForItemMap.get(id);
      String currentPath = lastFolderForItemMap.get(id);
      Object fullFolder = getFullFolder(project, itemType, currentPath);

      try {
        if (fullFolder != null
            && (fullFolder instanceof FolderItem || ((IFolder) fullFolder).exists())) {
          List<IRepositoryViewObject> itemsFound =
              getSerializableFromFolder(
                  project, fullFolder, id, itemType, allVersion, false, true, avoidSaveProject);
          if (!itemsFound.isEmpty()) { // add for items in recycle-bin
            toReturn.addAll(itemsFound);
            return toReturn;
          }
        }
      } catch (PersistenceException e) {
        // do nothing.
        // if any exception happen or can't find the item, just try to look for it everywhere.
      }
    }

    // added
    for (ERepositoryObjectType repositoryObjectType :
        (ERepositoryObjectType[]) ERepositoryObjectType.values()) {
      if (!repositoryObjectType.isResourceItem()) {
        continue;
      }
      Object folder = getFolder(project, repositoryObjectType);
      if (folder != null) {
        List<IRepositoryViewObject> itemsFound =
            getSerializableFromFolder(
                project,
                folder,
                id,
                repositoryObjectType,
                allVersion,
                true,
                true,
                avoidSaveProject);
        if (!itemsFound.isEmpty()) {
          addToHistory(
              id,
              repositoryObjectType,
              itemsFound.get(0).getProperty().getItem().getState().getPath());
          toReturn.addAll(itemsFound);
          // all items from the same id are always in the same folder
          // as we shouldn't find any other item with the same id in another folder.
          return toReturn;
        }
      }
    }
    return toReturn;
  }
Example #2
0
 @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);
 }
/** DOC ggu class global comment. Detailled comment */
public class ExampleDemoRepositoryNodeType {

  /**
   * this value is same the attribute "type" of extension point
   * "org.talend.core.repository.repository_node_provider"
   */
  public static final String EXAMPLE_DEMO = "EXAMPLE_DEMO"; // $NON-NLS-1$

  public static ERepositoryObjectType repositoryExampleDemoType =
      ERepositoryObjectType.valueOf(ERepositoryObjectType.class, EXAMPLE_DEMO);

  public static final String EXTENDED_EXAMPLE_DEMO = "EXTENDED_EXAMPLE_DEMO"; // $NON-NLS-1$

  public static ERepositoryObjectType repositoryExtendedExampleDemoType =
      ERepositoryObjectType.valueOf(ERepositoryObjectType.class, EXTENDED_EXAMPLE_DEMO);
}
 public ERepositoryObjectType getType() {
   Item item = getItem();
   if (item != null) {
     return ERepositoryObjectType.getItemType(item);
   }
   return null;
 }
  /**
   * create jrxml file.
   *
   * @param path
   * @param label
   * @param initFile
   * @param extendtion
   * @return
   */
  public TDQJrxmlItem createJrxml(IPath path, String label, File initFile, String extendtion) {
    Property property = PropertiesFactory.eINSTANCE.createProperty();
    property.setVersion(VersionUtils.DEFAULT_VERSION);
    property.setStatusCode(PluginConstant.EMPTY_STRING);
    property.setLabel(label);

    TDQJrxmlItem routineItem =
        org.talend.dataquality.properties.PropertiesFactory.eINSTANCE.createTDQJrxmlItem();
    routineItem.setProperty(property);
    routineItem.setExtension(extendtion);
    routineItem.setName(label);

    ByteArray byteArray = duplicateByteArray(initFile);
    routineItem.setContent(byteArray);
    IProxyRepositoryFactory repositoryFactory = ProxyRepositoryFactory.getInstance();
    try {
      property.setId(repositoryFactory.getNextId());
      if (path != null) {
        repositoryFactory.createParentFoldersRecursively(
            ERepositoryObjectType.getItemType(routineItem), path);
      }
      repositoryFactory.create(routineItem, path);
    } catch (PersistenceException e) {
      ExceptionHandler.process(e);
    }
    return routineItem;
  }
  /*
   * (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;
  }
  private void openedByBrowser(Item item, URL url) {
    if (url == null || item == null) {
      return;
    }

    WebBrowserEditorInput input = new WebBrowserEditorInput(url);
    // add for bug TDI-21189 at 2012-6-8,that a document exist is only opened one time in studio
    try {
      IWorkbenchPage page = getActivePage();
      IEditorReference[] iEditorReference = page.getEditorReferences();
      for (IEditorReference editors : iEditorReference) {
        if (WebBrowserEditor.WEB_BROWSER_EDITOR_ID.equals(editors.getId())) {
          IEditorPart iEditorPart = editors.getEditor(true);
          if (iEditorPart != null && iEditorPart instanceof WebBrowserEditor) {
            WebBrowserEditorInput webBrowserEditorInput =
                (WebBrowserEditorInput) iEditorPart.getEditorInput();
            if (webBrowserEditorInput != null && url.equals(webBrowserEditorInput.getURL())) {
              // page.activate(iEditorPart);
              iEditorPart.init(iEditorPart.getEditorSite(), webBrowserEditorInput);
              DocumentationUtil.setPartItemId(
                  (WebBrowserEditor) iEditorPart,
                  item.getProperty().getId(),
                  ERepositoryObjectType.getItemType(item));
              return;
            }
          }
        }
      }
      input.setName(item.getProperty().getLabel());
      input.setToolTipText(
          item.getProperty().getLabel() + " " + item.getProperty().getVersion()); // $NON-NLS-1$
      IEditorPart editorPart = page.openEditor(input, WebBrowserEditor.WEB_BROWSER_EDITOR_ID);
      if (editorPart != null && editorPart instanceof WebBrowserEditor) {
        DocumentationUtil.setPartItemId(
            (WebBrowserEditor) editorPart,
            item.getProperty().getId(),
            ERepositoryObjectType.getItemType(item));
      }
    } catch (PartInitException e) {
      MessageBoxExceptionHandler.process(e);
    }
  }
  public String getItemName() {
    if (itemName == null) {
      IBrandingService brandingService =
          (IBrandingService) GlobalServiceRegister.getDefault().getService(IBrandingService.class);
      boolean allowVerchange = brandingService.getBrandingConfiguration().isAllowChengeVersion();
      ERepositoryObjectType itemType = ERepositoryObjectType.getItemType(property.getItem());

      StringBuffer sb = new StringBuffer();
      if (itemType != null) {
        sb.append(itemType.toString());
        sb.append(' ');
      }
      sb.append(property.getLabel());

      if (allowVerchange) {
        sb.append(' ');
        sb.append(property.getVersion());
      }
      itemName = sb.toString();
    }
    return itemName;
  }
Example #9
0
 @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;
 }
Example #10
0
  @Override
  public boolean isNameAvailable(
      Project project, Item item, String name, List<IRepositoryViewObject>... givenList)
      throws PersistenceException {
    if (name == null) {
      name = item.getProperty().getLabel();
    }

    if (item instanceof FolderItem) {
      FolderHelper folderHelper = getFolderHelper(project.getEmfProject());
      return !folderHelper.pathExists((FolderItem) item, name);
    }

    ERepositoryObjectType type = ERepositoryObjectType.getItemType(item);

    if (type == ERepositoryObjectType.METADATA_CON_TABLE) {
      return false;
    }
    boolean isAllowMultipleName =
        (type == ERepositoryObjectType.SQLPATTERNS
            || type == ERepositoryObjectType.METADATA_FILE_XML);
    String path = "";
    if (item.getState() != null) {
      path = item.getState().getPath();
    }

    List<IRepositoryViewObject> list;

    if (givenList.length == 0) {
      list = getAll(project, type, true, false);
    } else {
      list = givenList[0];
    }

    for (IRepositoryViewObject current : list) {
      if (name.equalsIgnoreCase(current.getProperty().getLabel())
          && item.getProperty().getId() != current.getProperty().getId()) {
        // To check SQLPattern in same path. see bug 0005038: unable to add a SQLPattern into
        // repository.
        if (!isAllowMultipleName
            || current.getProperty().getItem().getState().getPath().equals(path)) {
          return false;
        }
      }
    }
    return true;
  }
Example #11
0
  @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;
  }
 @Override
 public boolean select(Viewer viewer, Object parentElement, Object element) {
   if (element instanceof RepositoryNode) {
     RepositoryNode node = (RepositoryNode) element;
     if (ERepositoryObjectType.REFERENCED_PROJECTS.equals(node.getContentType())) {
       return true;
     }
     IRepositoryNode typeNode = node.getRoot().getRootRepositoryNode(repositoryType);
     if (typeNode == node) {
       return true;
     }
     if (repositoryType.equals(node.getContentType())) {
       return true;
     }
     return false;
   }
   return true; // if others, no filter
 }
Example #13
0
  private void getAllVersions(
      Project project, Property property, List<IRepositoryViewObject> allVersion)
      throws PersistenceException {
    ERepositoryObjectType itemType = ERepositoryObjectType.getItemType(property.getItem());
    Object fullFolder = getFullFolder(project, itemType, property.getItem().getState().getPath());
    if (fullFolder != null) {
      allVersion.addAll(
          getSerializableFromFolder(
              project, fullFolder, property.getId(), itemType, true, false, false, true));
      if (allVersion.size() == 0) {
        // if no item found in current directory, look for all directory
        allVersion.addAll(getAllVersion(project, property.getId(), false));
      }
    } else {
      allVersion.addAll(getAllVersion(project, property.getId(), false));
    }
    if (allVersion.size() == 0 && project.getEmfProject().getReferencedProjects().size() > 0) {
      String parentBranch = ProjectManager.getInstance().getMainProjectBranch(project);

      for (ProjectReference refProject :
          (List<ProjectReference>) project.getEmfProject().getReferencedProjects()) {
        if (refProject.getBranch() != null && !parentBranch.equals(refProject.getBranch())) {
          continue;
        }
        org.talend.core.model.properties.Project emfProject = refProject.getReferencedProject();
        getAllVersions(new Project(emfProject), property, allVersion);
        if (allVersion.size() > 0) {
          break;
        }
      }
    }
    // MOD mzhao Temporary return original object. In this case, the object hasn't been updated from
    // svn server.
    if (allVersion.size() == 0) {
      allVersion.add(new RepositoryViewObject(property));
    }
  }
Example #14
0
  @Override
  protected JSONObject getTokenDetailsForCurrentProject() throws Exception {
    JSONObject typesHadoop = new JSONObject();

    for (IRepositoryViewObject rvo :
        ProxyRepositoryFactory.getInstance().getAll(ERepositoryObjectType.getType(HADOOPCLUSTER))) {
      HadoopClusterConnectionItem item = (HadoopClusterConnectionItem) rvo.getProperty().getItem();
      HadoopClusterConnection connection = (HadoopClusterConnection) item.getConnection();
      String distrib =
          connection.getDistribution() + "/" + connection.getDfVersion(); // $NON-NLS-1$
      int nbDbTypes = 1;
      if (typesHadoop.has(distrib)) {
        nbDbTypes = typesHadoop.getInt(distrib);
        nbDbTypes++;
      }
      typesHadoop.put(distrib, nbDbTypes);
    }

    JSONObject hadoopCluster = new JSONObject();
    JSONObject types = new JSONObject();
    types.put("types", typesHadoop);
    hadoopCluster.put(HADOOPCLUSTER, types);
    return hadoopCluster;
  }
 public ERepositoryObjectType getRepositoryType() {
   if (repositoryType == null) {
     repositoryType = ERepositoryObjectType.getItemType(property.getItem());
   }
   return repositoryType;
 }
Example #16
0
 @Override
 public String getLabel() {
   return type.toString();
 }
Example #17
0
 public TypeNode(ERepositoryObjectType type) {
   super(type.toString());
   this.type = type;
 }
Example #18
0
 @Override
 public ERepositoryObjectType getRepositoryObjectType(Item item) {
   return item instanceof ContextItem ? ERepositoryObjectType.getType("JOB_DOC_EXT") : null;
 }
Example #19
0
  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);
      }
    }
  }
/** DOC ycbai class global comment. Detailled comment */
public class HDFSRepositoryNodeType {

  public static ERepositoryObjectType HDFS =
      ERepositoryObjectType.valueOf(ERepositoryObjectType.class, "HDFS"); // $NON-NLS-1$
}
Example #21
0
  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);
      }
    }
  }