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

WorkItem : All releated information

Hi,

I am not a strong java developer but I needed work item related information.

I spent quite some time to achieve following information from various sources from this forum.

This is a big thanks for sharing, pl. find end code below..

Hth, cheers,




package jazz;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;

import com.ibm.team.build.common.model.IBuildResult;
import com.ibm.team.build.internal.common.model.impl.BuildResultHandleImpl;
import com.ibm.team.links.common.IReference;
import com.ibm.team.links.common.registry.IEndPointDescriptor;
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.ItemNotFoundException;
import com.ibm.team.repository.common.TeamRepositoryException;
import com.ibm.team.workitem.client.IWorkItemClient;
import com.ibm.team.workitem.client.IWorkItemWorkingCopyManager;
import com.ibm.team.workitem.client.WorkItemWorkingCopy;
import com.ibm.team.workitem.common.internal.model.impl.WorkItemHandleImpl;
import com.ibm.team.workitem.common.model.IWorkItem;
import com.ibm.team.workitem.common.model.IWorkItemHandle;
import com.ibm.team.workitem.common.model.IWorkItemReferences;

public class WIInfo2 {

/**
* @param args
*/

static ITeamRepository teamRepository = null;
static IProgressMonitor monitor = new NullProgressMonitor();
static Logger _log = Logger.getLogger("jazz");
static BufferedWriter out = null;

private static ITeamRepository getTeamRepository() {
return teamRepository;
}

private static void setTeamRepository(ITeamRepository teamRepositoryIn) {
teamRepository = teamRepositoryIn;
}

public static void main(String[] args) {
if (args.length != 3) {
System.out.println("Usage: RequestBuild <repository> <userId> <password>");
System.exit(1);
}

String repositoryURI = args[0];
String userId = args[1];
String password = args[2];

TeamPlatform.startup();
_log.info("Team Platform Startup");
try {
IProgressMonitor monitor = new NullProgressMonitor();
setTeamRepository(login(repositoryURI, userId, password, monitor));
_log.info("Logged In");

out = new BufferedWriter(new FileWriter("c:\\rtc.csv"));

for (int i=1; i < 1431; i++)
{
fetchWIInfo(i);
out.flush();
} // end for

out.close();

} catch (TeamRepositoryException e) {
_log.error("TeamRepositoryException : " + e.getMessage());
e.printStackTrace();
} catch (Exception e) {
_log.error(e.getMessage());
e.printStackTrace();
} finally {
TeamPlatform.shutdown();
_log.info("Logged out");
}
}

/**
* To print all information about the work item
* @param workItemNumber
* @throws IOException
* @throws TeamRepositoryException
*/
private static void fetchWIInfo(int workItemNumber) throws IOException {

try {
IWorkItemClient itemClient = (IWorkItemClient) getTeamRepository().getClientLibrary(IWorkItemClient.class);
IWorkItemWorkingCopyManager copyManager = itemClient.getWorkItemWorkingCopyManager();
IWorkItemHandle handle = itemClient.findWorkItemById(workItemNumber,IWorkItem.FULL_PROFILE, monitor);

if (handle ==null)
{
System.out.println(workItemNumber + ",,,,,");
return;
}
copyManager.connect(handle, IWorkItem.FULL_PROFILE, monitor);
WorkItemWorkingCopy itemCopy= copyManager.getWorkingCopy(handle);
IWorkItem workItemDetail= itemCopy.getWorkItem();
IWorkItemReferences workItemReferences= itemCopy.getReferences();

//IWorkspaceManager wm = SCMPlatform.getWorkspaceManager(getTeamRepository());
//IVersionableManager vm = wm.versionableManager();
//IVersionedContentManager contentManager = SCMPlatform.getContentManager(getTeamRepository());

Timestamp wiCreateDate = workItemDetail.getCreationDate();
String wiItemType = workItemDetail.getWorkItemType();
int parent = -1;
int totalChangeSet = -1;
ArrayList<String> builds = new ArrayList<String>();


List<IEndPointDescriptor> types = workItemReferences.getTypes();

for (IEndPointDescriptor endPointDesc : types)
{
_log.debug(workItemNumber + " > IEndPointDescriptor : " + endPointDesc.getId() + "," + endPointDesc.getLinkType().getLinkTypeId()+","+endPointDesc.getLinkType().getComponentId() + "," + endPointDesc.getDisplayName());
_log.info(workItemNumber + " > IEndPointDescriptor : " + endPointDesc.getId());

List<IReference> refList = workItemReferences.getReferences(endPointDesc);

if (endPointDesc.getId().equalsIgnoreCase("parent")) {
IWorkItem parentWI = (IWorkItem) getTeamRepository().itemManager().fetchCompleteItem((WorkItemHandleImpl) refList.get(0).resolve(), IItemManager.DEFAULT, monitor);
parent=parentWI.getId();
}
else if(endPointDesc.getId().equalsIgnoreCase("com.ibm.team.scm.ChangeSet")) {
/*
for (int i=0; i < refList.size(); i++) {
IChangeSet changeSetWI = (IChangeSet) getTeamRepository().itemManager().fetchCompleteItem((ChangeSetHandleImpl) refList.get(0).resolve(), IItemManager.DEFAULT, monitor);
List<IChange> changes = changeSetWI.changes();
for (IChange change : changes) {
IFileItemHandle after = (IFileItemHandle) change.afterState();
if( after != null ) {
IFileItem f = (IFileItem) vm.fetchCompleteState(after, null);
IContributor x = (IContributor) getTeamRepository().itemManager().fetchCompleteItem(f.getModifiedBy(), IItemManager.DEFAULT, monitor);
_log.info("changed : " + f.getName() + x.getName());
} // end if
} // end for
} // end for
*/
totalChangeSet = refList.size();
}
else if(endPointDesc.getId().equalsIgnoreCase("com.ibm.team.build.common.link.includedInBuilds")) {
for (int i=0; i < refList.size(); i++) {
try {
IBuildResult buildResultWI = (IBuildResult) getTeamRepository().itemManager().fetchCompleteItem((BuildResultHandleImpl) refList.get(i).resolve(), IItemManager.DEFAULT, monitor);
builds.add(buildResultWI.getLabel());
_log.info(buildResultWI.getLabel());
}
catch (ItemNotFoundException e)
{
_log.warn(refList.get(i).getComment());
}
} // end for
_log.info("included in builds..." + refList.size());
}
} // end for

if (builds.size() == 0) {
System.out.println(workItemNumber + "," + wiCreateDate + "," + wiItemType + "," + parent + "," + totalChangeSet + ",");
out.write(workItemNumber + "," + wiCreateDate + "," + wiItemType + "," + parent + "," + totalChangeSet + ",\n");
}
else
{
for (int i=0; i < builds.size(); i++){
System.out.println(workItemNumber + "," + wiCreateDate + "," + wiItemType + "," + parent + "," + totalChangeSet + "," + builds.get(i));
out.write(workItemNumber + "," + wiCreateDate + "," + wiItemType + "," + parent + "," + totalChangeSet + "," + builds.get(i) + "\n");
} // end for
} // end if
} catch (TeamRepositoryException e) {
_log.error("TeamRepositoryException !!" + workItemNumber + "!! " + e.getMessage());
e.printStackTrace();
}
}

/**
*
* @param repositoryURI
* @param userId
* @param password
* @param monitor
* @return
* @throws TeamRepositoryException
*/
public static ITeamRepository login(String repositoryURI, String userId,
String password, IProgressMonitor monitor)
throws TeamRepositoryException {

ITeamRepository teamRepository = TeamPlatform.getTeamRepositoryService().getTeamRepository(repositoryURI);
teamRepository.registerLoginHandler(new LoginHandler(userId, password));
teamRepository.login(monitor);
return teamRepository;
}

/**
* LoginHandler required by login function
*
*/
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;
}
}
}



log4j.properties


log4j.rootLogger=WARN, CONSOLE

# CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss,SSS} [%t] %-5p %C{1} : %m%n

# LIMIT CATEGORIES
log4j.logger.jazz=ERROR

0 votes



2 answers

Permanent link
Nice one Kartik.
Thanks
On 18/11/2010 6:08 PM, kartikgajjar wrote:
Hi,

I am not a strong java developer but I needed work item related
information.

I spent quite some time to achieve following information from various
sources from this forum.

This is a big thanks for sharing, pl. find end code below..

Hth, cheers,

0 votes


Permanent link
There's even more goodness in our SDK ;-)

https://jazz.net/wiki/bin/view/Main/RtcSdk20

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
× 10,922

Question asked: Nov 18 '10, 2:05 a.m.

Question was seen: 6,925 times

Last updated: Nov 18 '10, 2:05 a.m.

Confirmation Cancel Confirm