| /* |
| * Sun Public License Notice |
| * |
| * The contents of this file are subject to the Sun Public License |
| * Version 1.0 (the "License"). You may not use this file except in |
| * compliance with the License. A copy of the License is available at |
| * http://www.sun.com/ |
| * |
| * The Original Code is NetBeans. The Initial Developer of the Original |
| * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun |
| * Microsystems, Inc. All Rights Reserved. |
| */ |
| package org.netbeans.lib.cvsclient.admin; |
| |
| /** |
| * A class for comparing the file's date and the CVS/Entries date. |
| * |
| * @author Thomas Singer |
| * @version Sep 29, 2001 |
| */ |
| public final class DateComparator { |
| |
| private static final long SECONDS_PER_HOUR = 3600; |
| |
| private static final DateComparator singleton = new DateComparator(); |
| |
| /** |
| * Returns an instance of a DateComparator. |
| */ |
| public static DateComparator getInstance() { |
| return singleton; |
| } |
| |
| /** |
| * This class is a singleton. There is no need to subclass or |
| * instantiate it outside. |
| */ |
| private DateComparator() { |
| } |
| |
| /** |
| * Compares the specified dates, whether they should be treated as equal. |
| * Returns true to indicate equality. |
| */ |
| public boolean equals(final long fileTime, final long entryTime) { |
| final long fileTimeSeconds = fileTime / 1000; |
| final long entryTimeSeconds = entryTime / 1000; |
| final long difference = Math.abs(fileTimeSeconds - entryTimeSeconds); |
| // differences smaller than 3 seconds are treated as equal |
| if (difference < 3) { |
| return true; |
| } |
| |
| // 1-hour-differences (caused by daylight-saving) are treated as equal |
| if (difference >= SECONDS_PER_HOUR - 3 |
| && difference <= SECONDS_PER_HOUR + 3) { |
| return true; |
| } |
| return false; |
| } |
| } |