| /******************************************************************************* |
| * Copyright (c) 2009, 2012 Frank Becker and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Frank Becker - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.mylyn.internal.bugzilla.core; |
| |
| import java.util.Date; |
| |
| import org.eclipse.core.runtime.Assert; |
| import org.eclipse.mylyn.tasks.core.data.TaskAttachmentMapper; |
| import org.eclipse.mylyn.tasks.core.data.TaskAttribute; |
| import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper; |
| import org.eclipse.mylyn.tasks.core.data.TaskAttributeMetaData; |
| import org.eclipse.mylyn.tasks.core.data.TaskData; |
| |
| /** |
| * @author Frank Becker |
| */ |
| public class BugzillaAttachmentMapper extends TaskAttachmentMapper { |
| private String token; |
| |
| private Date deltaDate; |
| |
| public String getToken() { |
| return token; |
| } |
| |
| public void setToken(String token) { |
| this.token = token; |
| } |
| |
| @Override |
| public void applyTo(TaskAttribute taskAttribute) { |
| Assert.isNotNull(taskAttribute); |
| TaskData taskData = taskAttribute.getTaskData(); |
| TaskAttributeMapper mapper = taskData.getAttributeMapper(); |
| taskAttribute.getMetaData().defaults().setType(TaskAttribute.TYPE_ATTACHMENT); |
| if (getAttachmentId() != null) { |
| mapper.setValue(taskAttribute, getAttachmentId()); |
| } |
| if (getAuthor() != null && getAuthor().getPersonId() != null) { |
| TaskAttribute child = taskAttribute.createMappedAttribute(TaskAttribute.ATTACHMENT_AUTHOR); |
| TaskAttributeMetaData defaults = child.getMetaData().defaults(); |
| defaults.setType(TaskAttribute.TYPE_PERSON); |
| defaults.setLabel(Messages.BugzillaAttachmentMapper_Author); |
| mapper.setRepositoryPerson(child, getAuthor()); |
| } |
| if (getContentType() != null) { |
| TaskAttribute child = taskAttribute.createMappedAttribute(TaskAttribute.ATTACHMENT_CONTENT_TYPE); |
| TaskAttributeMetaData defaults = child.getMetaData().defaults(); |
| defaults.setType(TaskAttribute.TYPE_SHORT_TEXT); |
| defaults.setLabel(Messages.BugzillaAttachmentMapper_Content_Type); |
| mapper.setValue(child, getContentType()); |
| } |
| if (getCreationDate() != null) { |
| TaskAttribute child = taskAttribute.createMappedAttribute(TaskAttribute.ATTACHMENT_DATE); |
| TaskAttributeMetaData defaults = child.getMetaData().defaults(); |
| defaults.setType(TaskAttribute.TYPE_DATE); |
| defaults.setLabel(Messages.BugzillaAttachmentMapper_Creation_Date); |
| mapper.setDateValue(child, getCreationDate()); |
| } |
| if (getDescription() != null) { |
| TaskAttribute child = taskAttribute.createMappedAttribute(TaskAttribute.ATTACHMENT_DESCRIPTION); |
| TaskAttributeMetaData defaults = child.getMetaData().defaults(); |
| defaults.setType(TaskAttribute.TYPE_SHORT_TEXT); |
| defaults.setLabel(Messages.BugzillaAttachmentMapper_Description); |
| mapper.setValue(child, getDescription()); |
| } |
| if (getFileName() != null) { |
| TaskAttribute child = taskAttribute.createMappedAttribute(TaskAttribute.ATTACHMENT_FILENAME); |
| TaskAttributeMetaData defaults = child.getMetaData().defaults(); |
| defaults.setType(TaskAttribute.TYPE_SHORT_TEXT); |
| defaults.setLabel(Messages.BugzillaAttachmentMapper_Filename); |
| mapper.setValue(child, getFileName()); |
| } |
| if (isDeprecated() != null) { |
| TaskAttribute child = taskAttribute.createMappedAttribute(TaskAttribute.ATTACHMENT_IS_DEPRECATED); |
| TaskAttributeMetaData defaults = child.getMetaData().defaults(); |
| defaults.setType(TaskAttribute.TYPE_BOOLEAN); |
| defaults.setLabel(Messages.BugzillaAttachmentMapper_obsolete); |
| mapper.setBooleanValue(child, isDeprecated()); |
| } |
| if (isPatch() != null) { |
| TaskAttribute child = taskAttribute.createMappedAttribute(TaskAttribute.ATTACHMENT_IS_PATCH); |
| TaskAttributeMetaData defaults = child.getMetaData().defaults(); |
| defaults.setType(TaskAttribute.TYPE_BOOLEAN); |
| defaults.setLabel(Messages.BugzillaAttachmentMapper_patch); |
| mapper.setBooleanValue(child, isPatch()); |
| } |
| if (getLength() != null) { |
| TaskAttribute child = taskAttribute.createMappedAttribute(TaskAttribute.ATTACHMENT_SIZE); |
| TaskAttributeMetaData defaults = child.getMetaData().defaults(); |
| defaults.setType(TaskAttribute.TYPE_SHORT_TEXT); |
| defaults.setLabel(Messages.BugzillaAttachmentMapper_Size); |
| mapper.setLongValue(child, getLength()); |
| } |
| if (getUrl() != null) { |
| TaskAttribute child = taskAttribute.createMappedAttribute(TaskAttribute.ATTACHMENT_URL); |
| TaskAttributeMetaData defaults = child.getMetaData().defaults(); |
| defaults.setType(TaskAttribute.TYPE_URL); |
| defaults.setLabel(Messages.BugzillaAttachmentMapper_URL); |
| mapper.setValue(child, getUrl()); |
| } |
| if (getToken() != null) { |
| TaskAttribute child = taskAttribute.createMappedAttribute(BugzillaAttribute.TOKEN.getKey()); |
| TaskAttributeMetaData defaults = child.getMetaData().defaults(); |
| defaults.setType(TaskAttribute.TYPE_SHORT_TEXT); |
| defaults.setLabel(Messages.BugzillaAttachmentMapper_Token); |
| mapper.setValue(child, getToken()); |
| } |
| if (getDeltaDate() != null) { |
| TaskAttribute child = taskAttribute.createMappedAttribute(BugzillaAttribute.DELTA_TS.getKey()); |
| TaskAttributeMetaData defaults = child.getMetaData().defaults(); |
| defaults.setType(TaskAttribute.TYPE_DATE); |
| defaults.setLabel(Messages.BugzillaAttachmentMapper_DELTA_TS); |
| mapper.setDateValue(child, getDeltaDate()); |
| } |
| } |
| |
| public static BugzillaAttachmentMapper createFrom(TaskAttribute taskAttribute) { |
| Assert.isNotNull(taskAttribute); |
| TaskAttributeMapper mapper = taskAttribute.getTaskData().getAttributeMapper(); |
| BugzillaAttachmentMapper attachment = new BugzillaAttachmentMapper(); |
| attachment.setAttachmentId(mapper.getValue(taskAttribute)); |
| TaskAttribute child = taskAttribute.getMappedAttribute(TaskAttribute.ATTACHMENT_AUTHOR); |
| if (child != null) { |
| attachment.setAuthor(mapper.getRepositoryPerson(child)); |
| } |
| child = taskAttribute.getMappedAttribute(TaskAttribute.ATTACHMENT_CONTENT_TYPE); |
| if (child != null) { |
| attachment.setContentType(mapper.getValue(child)); |
| } |
| child = taskAttribute.getMappedAttribute(TaskAttribute.ATTACHMENT_DATE); |
| if (child != null) { |
| attachment.setCreationDate(mapper.getDateValue(child)); |
| } |
| child = taskAttribute.getMappedAttribute(TaskAttribute.ATTACHMENT_DESCRIPTION); |
| if (child != null) { |
| attachment.setDescription(mapper.getValue(child)); |
| } |
| child = taskAttribute.getMappedAttribute(TaskAttribute.ATTACHMENT_FILENAME); |
| if (child != null) { |
| attachment.setFileName(mapper.getValue(child)); |
| } |
| child = taskAttribute.getMappedAttribute(TaskAttribute.ATTACHMENT_IS_DEPRECATED); |
| if (child != null) { |
| attachment.setDeprecated(mapper.getBooleanValue(child)); |
| } |
| child = taskAttribute.getMappedAttribute(TaskAttribute.ATTACHMENT_IS_PATCH); |
| if (child != null) { |
| attachment.setPatch(mapper.getBooleanValue(child)); |
| } |
| child = taskAttribute.getMappedAttribute(TaskAttribute.ATTACHMENT_SIZE); |
| if (child != null) { |
| Long value = mapper.getLongValue(child); |
| if (value != null) { |
| attachment.setLength(value); |
| } |
| } |
| child = taskAttribute.getMappedAttribute(TaskAttribute.ATTACHMENT_URL); |
| if (child != null) { |
| attachment.setUrl(mapper.getValue(child)); |
| } |
| child = taskAttribute.getMappedAttribute(BugzillaAttribute.TOKEN.getKey()); |
| if (child != null) { |
| attachment.setToken(mapper.getValue(child)); |
| } |
| child = taskAttribute.getMappedAttribute(BugzillaAttribute.DELTA_TS.getKey()); |
| if (child != null) { |
| attachment.setDeltaDate(mapper.getDateValue(child)); |
| } |
| return attachment; |
| } |
| |
| public Date getDeltaDate() { |
| return deltaDate; |
| } |
| |
| public void setDeltaDate(Date deltaDate) { |
| this.deltaDate = deltaDate; |
| } |
| } |