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. |
Accepted answer
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
|
One other answer
Hi Ohsawa-san,
Thank you for the sample code.
Best regards, |
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.