/*
* Copyright (c) 2015 BISON Schweiz AG, All Rights Reserved.
*/
package to.rtc.rtc2jira.importer.mapping;
import to.rtc.rtc2jira.exporter.jira.entities.JiraUser;
import to.rtc.rtc2jira.importer.mapping.spi.MappingAdapter;
import com.ibm.team.repository.common.model.Contributor;
import com.ibm.team.workitem.common.model.IAttribute;
import com.orientechnologies.orient.core.record.impl.ODocument;
/**
* Can handle all attributes pointing to a contributor.
*
* @author roman.schaller
*
*/
public class ContributorMapping extends MappingAdapter {
private String value;
private String localStorageIdentifier;
public ContributorMapping(String localStorageIdentifier) {
this.localStorageIdentifier = localStorageIdentifier;
}
@Override
protected void beforeWorkItem() {
value = null;
}
@Override
public void acceptAttribute(IAttribute attribute) {
Contributor contributor = fetchCompleteItem(getValue(attribute));
value = contributorToString(contributor);
}
@Override
public void afterWorkItem(ODocument doc) {
doc.field(localStorageIdentifier, value);
}
public static String contributorToString(Contributor contributor) {
return String.format("%s <%s>", contributor.getName(), contributor.getEmailAddress());
}
public static JiraUser stringToUser(String str) {
str = str.substring(0, str.length() - 1);
String[] split = str.split(" <");
JiraUser jiraUser = new JiraUser();
jiraUser.setDisplayName(split[0]);
String emailAddress = split[1];
if (emailAddress == null || !emailAddress.contains("@")) {
emailAddress = "no_rtc_email@bison-group.com";
}
jiraUser.setEmailAddress(emailAddress);
String[] segs = emailAddress.toLowerCase().split("@");
jiraUser.setKey(segs[0]);
jiraUser.setName(segs[0]);
return jiraUser;
}
}