/* * Copyright (c) 2015 BISON Schweiz AG, All Rights Reserved. */ package to.rtc.rtc2jira.exporter.jira.mapping; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import to.rtc.rtc2jira.ExportManager; import to.rtc.rtc2jira.exporter.jira.entities.Issue; import to.rtc.rtc2jira.exporter.jira.entities.IssueFields; import to.rtc.rtc2jira.exporter.jira.entities.Version; import to.rtc.rtc2jira.importer.mapping.TargetMapping; import to.rtc.rtc2jira.importer.mapping.TargetMapping.IterationInfo; import to.rtc.rtc2jira.importer.mapping.TargetMapping.RtcIterationType; import to.rtc.rtc2jira.storage.StorageEngine; /** * @author gustaf.hansen * */ public class IterationMapping implements Mapping { static Logger LOGGER = Logger.getLogger(IterationMapping.class.getName()); static { LOGGER.addHandler(ExportManager.DEFAULT_LOG_HANDLER); } @Override public void map(Object value, Issue issue, StorageEngine storage) { IterationInfo iterInfo = new IterationInfo(); if (value != null && !TargetMapping.NO_ITERATION.equals(value)) { try { iterInfo.unmarshall((String) value); IssueFields fields = issue.getFields(); IterationHandler iterationHandler = IterationHandler.INSTANCE; fields.setPlannedFor(iterationHandler.getIterationQName(iterInfo)); IterationInfo versionIterInfo = getVersionIteration(iterInfo); if (versionIterInfo != null) { Version version = iterationHandler.getVersion(versionIterInfo, fields.getProject()); fields.getFixVersions().add(version); } } catch (IOException e) { LOGGER.log(Level.SEVERE, "Could not unmarshall Iteration json: " + e.getMessage()); } } } IterationInfo getVersionIteration(IterationInfo iterInfo) { IterationInfo result = null; IterationInfo current = iterInfo; // release while (current != null) { if (current.iterationType == RtcIterationType.release) { result = current; break; } current = current.parent; } // time slot if (result == null) { current = iterInfo; while (current != null) { if (current.iterationType == RtcIterationType.timeslot) { result = current; break; } current = current.parent; } } return result; } }