/** * Copyright (c) 2015-2016 Intel Corporation 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: * Stephane Bouchet (Intel Corporation) - initial API and implementation * Olivier Constant (Thales Global Services) - tight integration */ package org.eclipse.emf.diffmerge.connector.core.ext; import java.text.DateFormat; import java.util.Calendar; import org.eclipse.compare.ITypedElement; import org.eclipse.emf.diffmerge.connector.core.Messages; import org.eclipse.team.core.history.IFileRevision; import org.eclipse.team.core.variants.IResourceVariant; import org.eclipse.team.internal.core.history.LocalFileRevision; /** * A scope definition factory for file revisions in the Eclipse local history. */ @SuppressWarnings("restriction") // Specific IFileRevision sub-types public class LocalHistoryScopeDefinitionFactory extends AbstractRevisionScopeDefinitionFactory { /** * @see org.eclipse.emf.diffmerge.connector.core.ext.AbstractRevisionScopeDefinitionFactory#getLabelForRevision(org.eclipse.team.core.history.IFileRevision, org.eclipse.compare.ITypedElement) */ @Override protected String getLabelForRevision(IFileRevision revision_p, ITypedElement entrypoint_p) { String result; IResourceVariant variant = getVariant(revision_p); if (variant != null) { // Known variant result = variant.getContentIdentifier(); } else if (revision_p.getTimestamp() != -1) { // Known time stamp Calendar fileRevDate = Calendar.getInstance(); fileRevDate.setTimeInMillis(revision_p.getTimestamp()); result = String.format( Messages.LocalHistoryModelScopeDefinitionFactory_RevisionLabel, revision_p.getName(), DateFormat.getInstance().format(fileRevDate.getTime())); } else { // No variant and unknown time stamp result = super.getLabelForRevision(revision_p, entrypoint_p); } return result; } /** * @see org.eclipse.emf.diffmerge.connector.core.ext.AbstractRevisionScopeDefinitionFactory#isApplicableToRevision(org.eclipse.team.core.history.IFileRevision, org.eclipse.compare.ITypedElement) */ @Override protected boolean isApplicableToRevision(IFileRevision revision_p, ITypedElement entrypoint_p) { return revision_p instanceof LocalFileRevision; } }