/******************************************************************************* * Copyright (c) 2016 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.rest.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; public class BugzillaRestAttachmentMapper extends TaskAttachmentMapper { private Date deltaDate; @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("Attachment 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("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("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("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("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("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("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("Size in Bytes:"); 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("URL:"); mapper.setValue(child, getUrl()); } if (getDeltaDate() != null) { TaskAttribute child = taskAttribute.createMappedAttribute("delta_ts"); //$NON-NLS-1$ TaskAttributeMetaData defaults = child.getMetaData().defaults(); defaults.setType(TaskAttribute.TYPE_DATE); defaults.setLabel("Modification Date"); mapper.setDateValue(child, getDeltaDate()); } } public static BugzillaRestAttachmentMapper createFrom(TaskAttribute taskAttribute) { Assert.isNotNull(taskAttribute); TaskAttributeMapper mapper = taskAttribute.getTaskData().getAttributeMapper(); BugzillaRestAttachmentMapper attachment = new BugzillaRestAttachmentMapper(); 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("delta_ts"); //$NON-NLS-1$ if (child != null) { attachment.setDeltaDate(mapper.getDateValue(child)); } return attachment; } public Date getDeltaDate() { return deltaDate; } public void setDeltaDate(Date deltaDate) { this.deltaDate = deltaDate; } public void addMissingFlags(TaskAttribute taskAttribute) { Assert.isNotNull(taskAttribute); TaskData taskData = taskAttribute.getTaskData(); BugzillaRestTaskAttributeMapper mapper = (BugzillaRestTaskAttributeMapper) taskData.getAttributeMapper(); mapper.updateNewAttachmentAttribute(taskAttribute); } }