/******************************************************************************* * Copyright (c) 2010, 2013 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.regex.Matcher; import java.util.regex.Pattern; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.mylyn.tasks.core.TaskRepository; import org.eclipse.mylyn.tasks.core.data.TaskAttribute; import org.eclipse.mylyn.tasks.core.data.TaskData; import org.eclipse.osgi.util.NLS; public class BugzillaUtil { private static boolean getParamValue(TaskRepository taskRepository, String propertyName, boolean trueIfUndefined) { boolean result; String useParam = taskRepository.getProperty(propertyName); result = trueIfUndefined ? (useParam == null || (useParam != null && useParam.equals("true"))) //$NON-NLS-1$ : (useParam != null && useParam.equals("true")); //$NON-NLS-1$ return result; } public static void addAttributeIfUsed(BugzillaAttribute constant, String propertyName, TaskRepository taskRepository, TaskData existingReport, boolean createWhenNull) { if (getParamValue(taskRepository, propertyName, createWhenNull)) { BugzillaTaskDataHandler.createAttribute(existingReport, constant); } } public static void createAttributeWithKindDefaultIfUsed(String parsedText, BugzillaAttribute tag, TaskData repositoryTaskData, String propertyName, boolean defaultWhenNull) { TaskAttribute attribute = repositoryTaskData.getRoot().getMappedAttribute(tag.getKey()); if (attribute == null) { attribute = BugzillaTaskDataHandler.createAttribute(repositoryTaskData, tag); attribute.setValue(parsedText); } else { attribute.addValue(parsedText); } if (BugzillaAttribute.QA_CONTACT.equals(tag)) { attribute.getMetaData().setKind(null); } else { if (getParamValue(repositoryTaskData.getAttributeMapper().getTaskRepository(), propertyName, defaultWhenNull)) { attribute.getMetaData().setKind(TaskAttribute.KIND_DEFAULT); } else { attribute.getMetaData().setKind(null); } } } /** * Call this method if you did not know if an property exists * * @param taskRepository * @param property * @return true if the property is undefined or if the property is true */ public static boolean getTaskPropertyWithDefaultTrue(TaskRepository taskRepository, String property) { String useParam = taskRepository.getProperty(property); return (useParam == null || (useParam != null && useParam.equals("true"))); //$NON-NLS-1$ } private static final Pattern TIME_STAMP_PATTERN = Pattern.compile( "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$ public static String removeTimezone(String timeWithTimezone) throws CoreException { Matcher matcher = TIME_STAMP_PATTERN.matcher(timeWithTimezone); if (matcher.find()) { return matcher.group(); } throw new CoreException(new Status(IStatus.ERROR, BugzillaCorePlugin.ID_PLUGIN, NLS.bind( "{0} is not a valid time", timeWithTimezone))); //$NON-NLS-1$ } }