diff options
Diffstat (limited to 'org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepository.java')
-rw-r--r-- | org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepository.java | 836 |
1 files changed, 0 insertions, 836 deletions
diff --git a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepository.java b/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepository.java deleted file mode 100644 index 12580cf43..000000000 --- a/org.eclipse.mylyn.tasks.core/src/org/eclipse/mylyn/tasks/core/TaskRepository.java +++ /dev/null @@ -1,836 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2008 Tasktop Technologies 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: - * Tasktop Technologies - initial API and implementation - * Eugene Kuleshov - improvements - *******************************************************************************/ - -package org.eclipse.mylyn.tasks.core; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; -import java.util.TimeZone; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.PlatformObject; -import org.eclipse.core.runtime.Status; -import org.eclipse.mylyn.commons.core.StatusHandler; -import org.eclipse.mylyn.commons.net.AuthenticationCredentials; -import org.eclipse.mylyn.commons.net.AuthenticationType; -import org.eclipse.mylyn.internal.tasks.core.IRepositoryConstants; -import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants; -import org.eclipse.mylyn.internal.tasks.core.RepositoryPerson; - -/** - * Note that task repositories use Strings for storing time stamps because using Date objects led to the following - * problems: - * <ul> - * <li>Often we are unable to get the time zone of the repository so interpreting the date string correctly doesn't - * work.</li> - * <li>Even if we do know the time zone information the local clock may be wrong. This can cause lost incoming when - * asking the repository for all changes since date X.</li> - * <li>The solution we have come up with thus far is not to interpret the date as a DATE object but rather simply use - * the date string given to us by the repository itself.</li> - * </ul> - * - * @author Mik Kersten - * @author Rob Elves - * @author Eugene Kuleshov - * @author Steffen Pingel - * @since 2.0 - * @noextend This class is not intended to be subclassed by clients. - */ -@SuppressWarnings("deprecation") -public final class TaskRepository extends PlatformObject { - - public static final String DEFAULT_CHARACTER_ENCODING = "UTF-8"; //$NON-NLS-1$ - - private static final String USERNAME = ".username"; //$NON-NLS-1$ - - private static final String PASSWORD = ".password"; //$NON-NLS-1$ - - private static final String SAVE_PASSWORD = ".savePassword"; //$NON-NLS-1$ - - private static final String ENABLED = ".enabled"; //$NON-NLS-1$ - - private static final String AUTH_REPOSITORY = "org.eclipse.mylyn.tasklist.repositories"; //$NON-NLS-1$ - - // transient - private IStatus errorStatus = null; - - /** - * @deprecated use {@link #setCredentials(AuthenticationType, AuthenticationCredentials, boolean)} to access - * credentials - */ - @Deprecated - public static final String AUTH_PASSWORD = AUTH_REPOSITORY + PASSWORD; - - /** - * @deprecated use {@link #setCredentials(AuthenticationType, AuthenticationCredentials, boolean)} to access - * credentials - */ - @Deprecated - public static final String AUTH_USERNAME = AUTH_REPOSITORY + USERNAME; - - @Deprecated - public static final String ANONYMOUS_LOGIN = "org.eclipse.mylyn.tasklist.repositories.anonymous"; //$NON-NLS-1$ - - private static final String AUTH_HTTP = "org.eclipse.mylyn.tasklist.repositories.httpauth"; //$NON-NLS-1$ - - /** - * @deprecated use {@link #setCredentials(AuthenticationType, AuthenticationCredentials, boolean)} to access - * credentials - */ - @Deprecated - public static final String AUTH_HTTP_PASSWORD = AUTH_HTTP + PASSWORD; - - /** - * @deprecated use {@link #setCredentials(AuthenticationType, AuthenticationCredentials, boolean)} to access - * credentials - */ - @Deprecated - public static final String AUTH_HTTP_USERNAME = AUTH_HTTP + USERNAME; - - public static final String NO_VERSION_SPECIFIED = "unknown"; //$NON-NLS-1$ - - private static final String AUTH_SCHEME = "Basic"; //$NON-NLS-1$ - - private static final String AUTH_REALM = ""; //$NON-NLS-1$ - - private static final URL DEFAULT_URL; - - private static final String PROPERTY_CONFIG_TIMESTAMP = "org.eclipse.mylyn.tasklist.repositories.configuration.timestamp"; //$NON-NLS-1$ - - public static final String PROXY_USEDEFAULT = "org.eclipse.mylyn.tasklist.repositories.proxy.usedefault"; //$NON-NLS-1$ - - public static final String PROXY_HOSTNAME = "org.eclipse.mylyn.tasklist.repositories.proxy.hostname"; //$NON-NLS-1$ - - public static final String PROXY_PORT = "org.eclipse.mylyn.tasklist.repositories.proxy.port"; //$NON-NLS-1$ - - private static final String AUTH_PROXY = "org.eclipse.mylyn.tasklist.repositories.proxy"; //$NON-NLS-1$ - - /** - * @deprecated use {@link #setCredentials(AuthenticationType, AuthenticationCredentials, boolean)} to access - * credentials - */ - @Deprecated - public static final String PROXY_USERNAME = AUTH_PROXY + USERNAME; - - /** - * @deprecated use {@link #setCredentials(AuthenticationType, AuthenticationCredentials, boolean)} to access - * credentials - */ - @Deprecated - public static final String PROXY_PASSWORD = AUTH_PROXY + PASSWORD; - - public static final String OFFLINE = "org.eclipse.mylyn.tasklist.repositories.offline"; //$NON-NLS-1$ - - // HACK: Lock used to work around race condition in - // Platform.add/get/flushAuthorizationInfo() - private static final Object LOCK = new Object(); - - private final Set<PropertyChangeListener> propertyChangeListeners = new HashSet<PropertyChangeListener>(); - - // HACK: private credentials for headless operation - private static Map<String, Map<String, String>> credentials = new HashMap<String, Map<String, String>>(); - - static { - URL url = null; - try { - url = new URL("http://eclipse.org/mylyn"); //$NON-NLS-1$ - } catch (Exception ex) { - // TODO ? - } - DEFAULT_URL = url; - } - - private static String getKeyPrefix(AuthenticationType type) { - switch (type) { - case HTTP: - return AUTH_HTTP; - case PROXY: - return AUTH_PROXY; - case REPOSITORY: - return AUTH_REPOSITORY; - } - throw new IllegalArgumentException("Unknown authentication type: " + type); //$NON-NLS-1$ - } - - private boolean isCachedUserName; - - private String cachedUserName; - - private final Map<String, String> properties = new LinkedHashMap<String, String>(); - - /** - * Stores properties that are not persisted. Note that this map is currently cleared when flushCredentials() is - * invoked. - */ - private final Map<String, String> transientProperties = new HashMap<String, String>(); - - /* - * TODO: should be externalized and added to extension point, see bug 183606 - */ - private boolean isBugRepository = false; - - private transient volatile boolean updating; - - public TaskRepository(String connectorKind, String repositoryUrl) { - this(connectorKind, repositoryUrl, NO_VERSION_SPECIFIED); - } - - /** - * @deprecated use {@link #setProperty(String, String)} instead of passing a map - */ - @Deprecated - public TaskRepository(String kind, String serverUrl, Map<String, String> properties) { - setProperty(IRepositoryConstants.PROPERTY_CONNECTOR_KIND, kind); - setProperty(IRepositoryConstants.PROPERTY_URL, serverUrl); - this.properties.putAll(properties); - // use platform proxy by default (headless will need to set this to false) - this.setProperty(TaskRepository.PROXY_USEDEFAULT, new Boolean(true).toString()); - } - - /** - * for testing purposes sets repository time zone to local default time zone sets character encoding to - * DEFAULT_CHARACTER_ENCODING - */ - @Deprecated - public TaskRepository(String kind, String serverUrl, String version) { - this(kind, serverUrl, version, DEFAULT_CHARACTER_ENCODING, TimeZone.getDefault().getID()); - } - - @Deprecated - public TaskRepository(String connectorKind, String repositoryUrl, String version, String encoding, String timeZoneId) { - Assert.isNotNull(connectorKind); - Assert.isNotNull(repositoryUrl); - setProperty(IRepositoryConstants.PROPERTY_CONNECTOR_KIND, connectorKind); - setProperty(IRepositoryConstants.PROPERTY_URL, repositoryUrl); - setProperty(IRepositoryConstants.PROPERTY_VERSION, version); - setProperty(IRepositoryConstants.PROPERTY_ENCODING, encoding); - setProperty(IRepositoryConstants.PROPERTY_TIMEZONE, timeZoneId); - // use platform proxy by default (headless will need to set this to false) - this.setProperty(TaskRepository.PROXY_USEDEFAULT, new Boolean(true).toString()); - - // for backwards compatibility to versions prior to 2.2 - this.setProperty(AUTH_REPOSITORY + SAVE_PASSWORD, String.valueOf(true)); - this.setProperty(AUTH_HTTP + SAVE_PASSWORD, String.valueOf(true)); - this.setProperty(AUTH_PROXY + SAVE_PASSWORD, String.valueOf(true)); - } - - // TODO e3.4 move to new api - private void addAuthInfo(Map<String, String> map) { - synchronized (LOCK) { - try { - if (Platform.isRunning()) { - // write the map to the keyring - try { - Platform.addAuthorizationInfo(new URL(getRepositoryUrl()), AUTH_REALM, AUTH_SCHEME, map); - } catch (MalformedURLException ex) { - Platform.addAuthorizationInfo(DEFAULT_URL, getRepositoryUrl(), AUTH_SCHEME, map); - } - } else { - Map<String, String> headlessCreds = getAuthInfo(); - headlessCreds.putAll(map); - } - } catch (CoreException e) { - StatusHandler.log(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN, - "Could not set authorization credentials", e)); //$NON-NLS-1$ - } - } - } - - public void clearCredentials() { - } - - @Override - public boolean equals(Object object) { - if (object == this) { - return true; - } - if (object instanceof TaskRepository) { - TaskRepository repository = (TaskRepository) object; - return getConnectorKind().equals(repository.getConnectorKind()) - && getRepositoryUrl().equals(repository.getRepositoryUrl()); - } - return false; - } - - // TODO e3.4 move to new api - public void flushAuthenticationCredentials() { - // legacy support for versions prior to 2.2 that did not set the enable flag - setProperty(getKeyPrefix(AuthenticationType.HTTP) + ENABLED, null); - setProperty(getKeyPrefix(AuthenticationType.PROXY) + ENABLED, null); - setProperty(getKeyPrefix(AuthenticationType.REPOSITORY) + ENABLED, null); - - synchronized (LOCK) { - isCachedUserName = false; - - transientProperties.clear(); - - try { - if (Platform.isRunning()) { - try { - Platform.flushAuthorizationInfo(new URL(getRepositoryUrl()), AUTH_REALM, AUTH_SCHEME); - } catch (MalformedURLException ex) { - Platform.flushAuthorizationInfo(DEFAULT_URL, getRepositoryUrl(), AUTH_SCHEME); - } - } else { - Map<String, String> headlessCreds = getAuthInfo(); - headlessCreds.clear(); - } - } catch (CoreException e) { - // FIXME propagate exception? - StatusHandler.fail(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN, - "Could not flush authorization credentials", e)); //$NON-NLS-1$ - } - } - } - - // TODO e3.4 move to new api - @SuppressWarnings( { "unchecked" }) - private Map<String, String> getAuthInfo() { - synchronized (LOCK) { - if (Platform.isRunning()) { - try { - return Platform.getAuthorizationInfo(new URL(getRepositoryUrl()), AUTH_REALM, AUTH_SCHEME); - } catch (MalformedURLException ex) { - return Platform.getAuthorizationInfo(DEFAULT_URL, getRepositoryUrl(), AUTH_SCHEME); - } catch (Exception e) { - StatusHandler.log(new Status(IStatus.ERROR, ITasksCoreConstants.ID_PLUGIN, - "Could not retrieve authorization credentials", e)); //$NON-NLS-1$ - } - } else { - Map<String, String> headlessCreds = credentials.get(getRepositoryUrl()); - if (headlessCreds == null) { - headlessCreds = new HashMap<String, String>(); - credentials.put(getRepositoryUrl(), headlessCreds); - } - return headlessCreds; - } - return null; - } - } - - private String getAuthInfo(String property) { - Map<String, String> map = getAuthInfo(); - return map == null ? null : map.get(property); - } - - public String getCharacterEncoding() { - final String encoding = properties.get(IRepositoryConstants.PROPERTY_ENCODING); - return encoding == null || "".equals(encoding) ? DEFAULT_CHARACTER_ENCODING : encoding; //$NON-NLS-1$ - } - - /** - * Get the last refresh date as initialized {@link Date} object, null if not set<br /> - * - * @return {@link Date} configuration date, null if not set - */ - public Date getConfigurationDate() { - Date configDate = null; - String value = this.getProperty(PROPERTY_CONFIG_TIMESTAMP); - try { - configDate = new Date(Long.valueOf(value).longValue()); - - } catch (Exception e) { - - } - return configDate; - } - - /** - * @return "<unknown>" if kind is unknown - */ - public String getConnectorKind() { - String kind = properties.get(IRepositoryConstants.PROPERTY_CONNECTOR_KIND); - if (kind != null) { - return kind; - } else { - return IRepositoryConstants.KIND_UNKNOWN; - } - } - - /** - * Returns the credentials for an authentication type. - * - * @param authType - * the type of authentication - * @return null, if no credentials are set for <code>authType</code> - * @since 3.0 - */ - public synchronized AuthenticationCredentials getCredentials(AuthenticationType authType) { - String key = getKeyPrefix(authType); - - String enabled = getProperty(key + ENABLED); - if (enabled == null || "true".equals(enabled)) { //$NON-NLS-1$ - String userName = getAuthInfo(key + USERNAME); - String password; - - String savePassword = getProperty(key + SAVE_PASSWORD); - if (savePassword != null && "true".equals(savePassword)) { //$NON-NLS-1$ - password = getAuthInfo(key + PASSWORD); - } else { - password = transientProperties.get(key + PASSWORD); - } - - if (userName == null) { - userName = ""; //$NON-NLS-1$ - } - if (password == null) { - password = ""; //$NON-NLS-1$ - } - - if (enabled == null && userName.length() == 0) { - // API30: legacy support for versions prior to 2.2 that did not set the enable flag, remove for 3.0 - return null; - } - - return new AuthenticationCredentials(userName, password); - } else { - return null; - } - } - - /** - * @deprecated use {@link #getCredentials(AuthenticationType)} instead - */ - @Deprecated - public String getHttpPassword() { - return getPassword(AuthenticationType.HTTP); - } - - /** - * @deprecated use {@link #getCredentials(AuthenticationType)} instead - */ - @Deprecated - public String getHttpUser() { - return getUserName(AuthenticationType.HTTP); - } - - /** - * @deprecated use {@link #getCredentials(AuthenticationType)} instead - */ - @Deprecated - public String getPassword() { - return getPassword(AuthenticationType.REPOSITORY); - } - - /** - * Legacy support for < 2.2. Remove in 2.3. - */ - private String getPassword(AuthenticationType authType) { - AuthenticationCredentials credentials = getCredentials(authType); - return (credentials != null) ? credentials.getPassword() : null; - } - - public Map<String, String> getProperties() { - return new LinkedHashMap<String, String>(this.properties); - } - - public String getProperty(String name) { - return this.properties.get(name); - } - -// /** -// * @deprecated use {@link TaskRepositoryLocation#getProxyForHost(String, String)} instead -// */ -// @Deprecated -// public Proxy getProxy() { -// Proxy proxy = Proxy.NO_PROXY; -// if (isDefaultProxyEnabled()) { -// proxy = WebClientUtil.getPlatformProxy(getRepositoryUrl()); -// } else { -// -// String proxyHost = getProperty(PROXY_HOSTNAME); -// String proxyPort = getProperty(PROXY_PORT); -// String proxyUsername = ""; -// String proxyPassword = ""; -// if (proxyHost != null && proxyHost.length() > 0) { -// proxyUsername = getProxyUsername(); -// proxyPassword = getProxyPassword(); -// } -// proxy = WebClientUtil.getProxy(proxyHost, proxyPort, proxyUsername, proxyPassword); -// } -// return proxy; -// } - - /** - * @deprecated use {@link #getCredentials(AuthenticationType)} instead - */ - @Deprecated - public String getProxyPassword() { - return getPassword(AuthenticationType.PROXY); - } - - /** - * @deprecated use {@link #getCredentials(AuthenticationType)} instead - */ - @Deprecated - public String getProxyUsername() { - return getUserName(AuthenticationType.PROXY); - } - - /** - * @return the URL if the label property is not set - */ - public String getRepositoryLabel() { - String label = properties.get(IRepositoryConstants.PROPERTY_LABEL); - if (label != null && label.length() > 0) { - return label; - } else { - return getRepositoryUrl(); - } - } - - /** - * @since 3.0 - */ - public boolean getSavePassword(AuthenticationType authType) { - String value = getProperty(getKeyPrefix(authType) + SAVE_PASSWORD); - return value != null && "true".equals(value); //$NON-NLS-1$ - } - - public String getSynchronizationTimeStamp() { - return this.properties.get(IRepositoryConstants.PROPERTY_SYNCTIMESTAMP); - } - - public String getTimeZoneId() { - final String timeZoneId = properties.get(IRepositoryConstants.PROPERTY_TIMEZONE); - return timeZoneId == null || "".equals(timeZoneId) ? TimeZone.getDefault().getID() : timeZoneId; //$NON-NLS-1$ - } - - public String getUrl() { - return getRepositoryUrl(); - } - - /** - * @since 3.0 - */ - public String getRepositoryUrl() { - return properties.get(IRepositoryConstants.PROPERTY_URL); - } - - /** - * The username is cached since it needs to be retrieved frequently (e.g. for Task List decoration). - */ - public String getUserName() { - // NOTE: if anonymous, user name is "" string so we won't go to keyring - if (!isCachedUserName) { - cachedUserName = getUserName(AuthenticationType.REPOSITORY); - isCachedUserName = true; - } - return cachedUserName; - } - - /** - * Legacy support for < 2.2. Remove in 2.3. - */ - private String getUserName(AuthenticationType authType) { - AuthenticationCredentials credentials = getCredentials(authType); - return (credentials != null) ? credentials.getUserName() : null; - } - - public String getVersion() { - final String version = properties.get(IRepositoryConstants.PROPERTY_VERSION); - return version == null || "".equals(version) ? NO_VERSION_SPECIFIED : version; //$NON-NLS-1$ - } - - /** - * @deprecated use #getCredentials(AuthenticationType) instead - */ - @Deprecated - public boolean hasCredentials() { - String username = getUserName(); - String password = getPassword(); - return username != null && username.length() > 0 && password != null && password.length() > 0; - } - - @Override - public int hashCode() { - return getRepositoryUrl().hashCode() * 31 + getConnectorKind().hashCode(); - } - - public boolean hasProperty(String name) { - String value = getProperty(name); - return value != null && value.trim().length() > 0; - } - - /** - * @deprecated #getCredentials(AuthenticationType) instead - */ - @Deprecated - public boolean isAnonymous() { - return getProperty(ANONYMOUS_LOGIN) == null || "true".equals(getProperty(ANONYMOUS_LOGIN)); //$NON-NLS-1$ - } - - public boolean isBugRepository() { - return isBugRepository; - } - - /** - * Use platform proxy settings - */ - public boolean isDefaultProxyEnabled() { - return "true".equals(getProperty(PROXY_USEDEFAULT)); //$NON-NLS-1$ - } - - public boolean isOffline() { - return getProperty(OFFLINE) != null && "true".equals(getProperty(OFFLINE)); //$NON-NLS-1$ - } - - public void removeProperty(String key) { - this.properties.remove(key); - } - - /** - * @deprecated use {@link #setCredentials(AuthenticationType, AuthenticationCredentials, boolean)} instead - */ - @Deprecated - public void setAuthenticationCredentials(String username, String password) { - setCredentials(AuthenticationType.REPOSITORY, username, password); - } - - public void setBugRepository(boolean isBugRepository) { - this.isBugRepository = isBugRepository; - } - - public void setCharacterEncoding(String characterEncoding) { - properties.put(IRepositoryConstants.PROPERTY_ENCODING, characterEncoding == null ? DEFAULT_CHARACTER_ENCODING - : characterEncoding); - } - - /** - * Set the Configuration date to the {@link Date} indicated. - * - * @param configuration - * date {@link {@link Date} - */ - final public void setConfigurationDate(final Date date) { - this.setProperty(PROPERTY_CONFIG_TIMESTAMP, String.valueOf(date.getTime())); - // should persist here, but that can only be done by the TaskRepositoryManager - // However this is also included when persisting ordinary sync time - } - - /** - * Sets the credentials for <code>authType</code>. - * - * @param authType - * the type of authentication - * @param credentials - * the credentials, if null, the credentials for <code>authType</code> will be flushed - * @param savePassword - * if true, the password will be persisted in the platform key ring; otherwise it will be stored in - * memory only - * @since 3.0 - */ - public synchronized void setCredentials(AuthenticationType authType, AuthenticationCredentials credentials, - boolean savePassword) { - String key = getKeyPrefix(authType); - - setProperty(key + SAVE_PASSWORD, String.valueOf(savePassword)); - - if (credentials == null) { - setProperty(key + ENABLED, String.valueOf(false)); - transientProperties.remove(key + PASSWORD); - setCredentialsInternal("", "", key + USERNAME, key + PASSWORD); //$NON-NLS-1$ //$NON-NLS-2$ - } else { - setProperty(key + ENABLED, String.valueOf(true)); - if (savePassword) { - setCredentialsInternal(credentials.getUserName(), credentials.getPassword(), key + USERNAME, key - + PASSWORD); - transientProperties.remove(key + PASSWORD); - } else { - setCredentialsInternal(credentials.getUserName(), "", key + USERNAME, key + PASSWORD); //$NON-NLS-1$ - transientProperties.put(key + PASSWORD, credentials.getPassword()); - } - } - - if (authType == AuthenticationType.REPOSITORY) { - if (credentials == null) { - this.cachedUserName = null; - this.isCachedUserName = false; - } else { - this.cachedUserName = credentials.getUserName(); - this.isCachedUserName = true; - } - } - } - - /** - * Legacy support for < 2.2. Remove in 2.3. - */ - private void setCredentials(AuthenticationType type, String username, String password) { - if (username == null) { - setCredentials(type, null, true); - } else { - setCredentials(type, new AuthenticationCredentials(username, password), true); - } - - } - - private void setCredentialsInternal(String username, String password, String userProperty, String passwordProperty) { - Map<String, String> map = getAuthInfo(); - if (map == null) { - map = new HashMap<String, String>(); - } - - if (username != null) { - map.put(userProperty, username); - } - if (password != null) { - map.put(passwordProperty, password); - } - addAuthInfo(map); - } - - /** - * @deprecated use esetCredentials(AuthenticationType, AuthenticationCredentials, boolean) - */ - @Deprecated - public void setHttpAuthenticationCredentials(String username, String password) { - setCredentials(AuthenticationType.HTTP, username, password); - } - - public void setOffline(boolean offline) { - properties.put(OFFLINE, String.valueOf(offline)); - } - - /** - * @deprecated use {@link #setCredentials(AuthenticationType, AuthenticationCredentials, boolean)} instead - */ - @Deprecated - public void setProxyAuthenticationCredentials(String username, String password) { - setCredentials(AuthenticationType.PROXY, username, password); - } - - public void setRepositoryLabel(String repositoryLabel) { - setProperty(IRepositoryConstants.PROPERTY_LABEL, repositoryLabel); - } - - /** - * ONLY for use by IRepositoryConstants. To set the sync time call IRepositoryConstants.setSyncTime(repository, - * date); - */ - public void setSynchronizationTimeStamp(String syncTime) { - setProperty(IRepositoryConstants.PROPERTY_SYNCTIMESTAMP, syncTime); - } - - public void setProperty(String key, String newValue) { - String oldValue = this.properties.get(key); - if ((oldValue != null && !oldValue.equals(newValue)) || (oldValue == null && newValue != null)) { - this.properties.put(key, newValue); - notifyChangeListeners(key, oldValue, newValue); - } - } - - private void notifyChangeListeners(String key, String old, String value) { - PropertyChangeEvent event = new PropertyChangeEvent(this, key, old, value); - for (PropertyChangeListener listener : propertyChangeListeners) { - listener.propertyChange(event); - } - } - - public void setTimeZoneId(String timeZoneId) { - setProperty(IRepositoryConstants.PROPERTY_TIMEZONE, timeZoneId == null ? TimeZone.getDefault().getID() - : timeZoneId); - } - - /** - * @deprecated Use {@link #setRepositoryUrl(String)} instead - */ - @Deprecated - public void setUrl(String newUrl) { - setRepositoryUrl(newUrl); - } - - /** - * @since 3.0 - */ - public void setRepositoryUrl(String repositoryUrl) { - Assert.isNotNull(repositoryUrl); - properties.put(IRepositoryConstants.PROPERTY_URL, repositoryUrl); - } - - public void setVersion(String ver) { - properties.put(IRepositoryConstants.PROPERTY_VERSION, ver == null ? NO_VERSION_SPECIFIED : ver); - } - - @Override - public String toString() { - return getRepositoryUrl(); - } - - /** - * @since 3.0 - */ - public boolean isUpdating() { - return updating; - } - - /** - * @since 3.0 - */ - public void setUpdating(boolean updating) { - this.updating = updating; - } - - /** - * @since 3.0 - */ - public IRepositoryPerson createPerson(String personId) { - return new RepositoryPerson(this, personId); - } - - /** - * @since 3.0 - */ - public IStatus getStatus() { - return errorStatus; - } - - /** - * @since 3.0 - */ - public void setStatus(IStatus errorStatus) { - this.errorStatus = errorStatus; - } - - /** - * @since 3.0 - */ - public void addChangeListener(PropertyChangeListener listener) { - propertyChangeListeners.add(listener); - } - - /** - * @since 3.0 - */ - public void removeChangeListener(PropertyChangeListener listener) { - propertyChangeListeners.remove(listener); - } - - /** - * @since 3.1 - */ - public void setDefaultProxyEnabled(boolean useDefaultProxy) { - setProperty(TaskRepository.PROXY_USEDEFAULT, String.valueOf(useDefaultProxy)); - } - -} |