Jazz Forum Welcome to the Jazz Community Forum Connect and collaborate with IBM Engineering experts and users

Is it possible to rename a component via API?

I'm looking for  API to change the component name in the stream.
It was not to SCM CLI.

Is it possible to rename a component via  API?

Any help is appreciated.
Thanks.

0 votes


Accepted answer

Permanent link
Hi Ochiai-san,

Yes, it would be possible by using IWorkspaceManager#renameComponent. Here is a sample. This sample finds all project areas, streams and components from a repository, but I think you can arrange it with defining query criteria. Hopefully it would help you.

*****

package update.sample;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;

import com.ibm.team.build.client.ITeamBuildClient;
import com.ibm.team.build.common.model.BuildState;
import com.ibm.team.build.common.model.IBuildDefinition;
import com.ibm.team.build.common.model.IBuildEngine;
import com.ibm.team.build.common.model.IBuildResult;
import com.ibm.team.build.common.model.IBuildResultContribution;
import com.ibm.team.build.common.model.query.IBaseBuildDefinitionQueryModel;
import com.ibm.team.build.common.model.query.IBaseBuildResultQueryModel;
import com.ibm.team.build.common.model.query.IBaseBuildDefinitionQueryModel.IBuildDefinitionQueryModel;
import com.ibm.team.build.internal.common.model.query.BaseBuildDefinitionQueryModel.BuildDefinitionQueryModel;
import com.ibm.team.process.client.IProcessItemService;
import com.ibm.team.process.common.IProcessAreaHandle;
import com.ibm.team.process.common.IProjectArea;
import com.ibm.team.process.common.IProjectAreaHandle;
import com.ibm.team.process.common.ITeamArea;
import com.ibm.team.process.common.ITeamAreaHandle;
import com.ibm.team.process.common.ITeamAreaHierarchy;
import com.ibm.team.repository.client.IItemManager;
import com.ibm.team.repository.client.ITeamRepository;
import com.ibm.team.repository.client.TeamPlatform;
import com.ibm.team.repository.client.ITeamRepository.ILoginHandler;
import com.ibm.team.repository.client.ITeamRepository.ILoginHandler.ILoginInfo;
import com.ibm.team.repository.common.IFetchResult;
import com.ibm.team.repository.common.IItemHandle;
import com.ibm.team.repository.common.ItemNotFoundException;
import com.ibm.team.repository.common.TeamRepositoryException;
import com.ibm.team.repository.common.query.IItemQuery;
import com.ibm.team.repository.common.query.IItemQueryPage;
import com.ibm.team.repository.common.query.ast.IItemHandleInputArg;
import com.ibm.team.repository.common.query.ast.IPredicate;
import com.ibm.team.repository.common.service.IQueryService;
import com.ibm.team.repository.common.transport.ConnectionException;
import com.ibm.team.scm.client.IWorkspaceConnection;
import com.ibm.team.scm.client.IWorkspaceManager;
import com.ibm.team.scm.client.SCMPlatform;
import com.ibm.team.scm.common.IChangeSet;
import com.ibm.team.scm.common.IChangeSetHandle;
import com.ibm.team.scm.common.IComponent;
import com.ibm.team.scm.common.IComponentHandle;
import com.ibm.team.scm.common.IWorkspace;
import com.ibm.team.scm.common.IWorkspaceHandle;
import com.ibm.team.scm.common.dto.IChangeSetSearchCriteria;
import com.ibm.team.scm.common.dto.IWorkspaceSearchCriteria;
import com.ibm.team.scm.common.internal.dto.WorkspaceSearchCriteria;
import com.ibm.team.workitem.client.IAuditableClient;
import com.ibm.team.workitem.client.IQueryClient;
import com.ibm.team.workitem.common.expression.AttributeExpression;
import com.ibm.team.workitem.common.expression.Expression;
import com.ibm.team.workitem.common.expression.IQueryableAttribute;
import com.ibm.team.workitem.common.expression.QueryableAttributes;
import com.ibm.team.workitem.common.model.AttributeOperation;
import com.ibm.team.workitem.common.model.IWorkItem;
import com.ibm.team.workitem.common.query.IQueryResult;
import com.ibm.team.workitem.common.query.IResolvedResult;

public class RenameComponentSample {
   
    private static class LoginHandler implements ILoginHandler, ILoginInfo {
       
        private String fUserId;
        private String fPassword;
       
        private LoginHandler(String userId, String password) {
            fUserId= userId;
            fPassword= password;
        }
       
        public String getUserId() {
            return fUserId;
        }
       
        public String getPassword() {
            return fPassword;
        }
       
        public ILoginInfo challenge(ITeamRepository repository) {
            return this;
        }
    }
   
    public static void main(String[] args) {
       
        String repositoryURI= "https://localhost:9443/ccm";
        String userId= "clmadmin";
        String password= "password";
       
        try {
            TeamPlatform.startup();
            ITeamRepository repository= login(repositoryURI, userId, password);
           
            findAllProjectAreas(repository);
           
        } catch (ItemNotFoundException e) {
            System.err.println(e.getMessage());
        } catch (ConnectionException e) {
            System.err.println(e.getMessage());
        } catch (TeamRepositoryException e) {
            e.printStackTrace();
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            TeamPlatform.shutdown();
        }
    }
   
    private static void findAllProjectAreas(ITeamRepository repository) throws TeamRepositoryException {
        IProcessItemService itemService = (IProcessItemService) repository.getClientLibrary(IProcessItemService.class);
        List projectAreaList = itemService.findAllProjectAreas(null, null);
        for (Object obj: projectAreaList) {
            IProjectArea projectArea = (IProjectArea)obj;
            findAllStreams(projectArea);
        }
    }
   
    private static void findAllStreams(IProjectArea projectArea) throws TeamRepositoryException {
        IProgressMonitor monitor = new NullProgressMonitor();
        ITeamRepository repository = (ITeamRepository)projectArea.getOrigin();
        IWorkspaceManager workspaceManager = SCMPlatform.getWorkspaceManager(repository);
        IWorkspaceSearchCriteria wsSearchCriteria = WorkspaceSearchCriteria.FACTORY.newInstance();
        wsSearchCriteria.setKind(IWorkspaceSearchCriteria.ALL);
        wsSearchCriteria.setPartialOwnerNameIgnoreCase(projectArea.getName());
   
        List <IWorkspaceHandle> workspaceHandles = workspaceManager.findWorkspaces(wsSearchCriteria, Integer.MAX_VALUE, monitor);
        for (IWorkspaceHandle workspaceHandle: workspaceHandles) {
            IWorkspace workspace = (IWorkspace)repository.itemManager().fetchCompleteItem(workspaceHandle, IItemManager.DEFAULT, monitor);
            System.out.println("Workspace: " + workspace.getName() + " (Project Area:" + projectArea.getName() + ")");
           
            findAllComponents(repository, workspaceHandle);
        }
       
        List teamAreaList = projectArea.getTeamAreas();
        for(Object obj: teamAreaList){
            ITeamAreaHandle teamAreaHandle = (ITeamAreaHandle)obj;
            ITeamArea teamArea = (ITeamArea)repository.itemManager().fetchCompleteItem(teamAreaHandle, IItemManager.DEFAULT, monitor);
            wsSearchCriteria = WorkspaceSearchCriteria.FACTORY.newInstance();
            wsSearchCriteria.setKind(IWorkspaceSearchCriteria.ALL);
            wsSearchCriteria.setPartialOwnerNameIgnoreCase(teamArea.getName());
       
            workspaceHandles = workspaceManager.findWorkspaces(wsSearchCriteria, Integer.MAX_VALUE, monitor);
            for (IWorkspaceHandle workspaceHandle: workspaceHandles) {
                IWorkspace workspace = (IWorkspace)repository.itemManager().fetchCompleteItem(workspaceHandle, IItemManager.DEFAULT, monitor);
                System.out.println("Workspace: " + workspace.getName() + " (Project Area:" + teamArea.getName() + ")");
               
                findAllComponents(repository, workspaceHandle);
            }
        }
    }
   
    private static void findAllComponents(ITeamRepository repository, IWorkspaceHandle workspaceHandle) throws TeamRepositoryException {
        IProgressMonitor monitor = new NullProgressMonitor();
        IWorkspaceManager workspaceManager = SCMPlatform.getWorkspaceManager(repository);
        IWorkspaceConnection workspaceConnection = workspaceManager.getWorkspaceConnection(workspaceHandle, null);
        List componentList = workspaceConnection.getComponents();

        for (Object obj : componentList) {
            int i = 0;
            IComponentHandle componentHandle = (IComponentHandle)obj;
            IComponent component = (IComponent)repository.itemManager().fetchCompleteItem(componentHandle, IItemManager.DEFAULT, monitor);
            System.out.println("Component: " + component.getName() + ", Component UUID: " + componentHandle.getItemId());
            workspaceManager.renameComponent(componentHandle, "renamed1", null);
        }
    }
       
    private static ITeamRepository login(String repositoryURI, String userId, String password) throws TeamRepositoryException {
        ITeamRepository teamRepository= TeamPlatform.getTeamRepositoryService().getTeamRepository(repositoryURI);
        teamRepository.registerLoginHandler(new LoginHandler(userId, password));
        teamRepository.login(null);
        return teamRepository;
    }
}


hidetaka ochiai selected this answer as the correct answer

3 votes


One other answer

Permanent link

Hi Ohsawa-san,

Thank you for the sample code.
By reference to this sample code, it is going to result to expect.

Best regards,

0 votes

Your answer

Register or log in to post your answer.

Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.

Search context
Follow this question

By Email: 

Once you sign in you will be able to subscribe for any updates here.

By RSS:

Answers
Answers and Comments
Question details
× 11,052

Question asked: Aug 28 '15, 9:03 a.m.

Question was seen: 3,816 times

Last updated: Aug 31 '15, 12:14 p.m.

Confirmation Cancel Confirm