/******************************************************************************* | |
* Copyright (c) 2011 IBM 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: | |
* IBM Corporation - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.help.ui.internal.preferences; | |
import java.net.InetAddress; | |
import java.net.MalformedURLException; | |
import java.net.URL; | |
import java.net.UnknownHostException; | |
/** | |
* Information Center (IC) - stores URL info. | |
* | |
* @author chaustin | |
* | |
*/ | |
public class IC { | |
private String name; | |
private boolean enabled; | |
private String protocol; | |
private String host; | |
private String path; | |
private int port = -1; | |
public IC(String name,String href,boolean enabled) throws MalformedURLException | |
{ | |
this.name = name; | |
this.enabled = enabled; | |
setHref(href); | |
} | |
public void setHref(String href) throws MalformedURLException | |
{ | |
if (href.startsWith(":")) //$NON-NLS-1$ | |
href = "http"+href; //$NON-NLS-1$ | |
setHref(new URL(href)); | |
} | |
public void setHref(URL url) | |
{ | |
this.protocol = url.getProtocol(); | |
this.host = url.getHost(); | |
this.path = url.getPath(); | |
this.port = url.getPort(); | |
if (port==-1) | |
{ | |
if (protocol.equals("http")) //$NON-NLS-1$ | |
port = 80; | |
else if (protocol.equals("https")) //$NON-NLS-1$ | |
port = 443; | |
} | |
} | |
public String getHref() | |
{ | |
String portString = ":"+port; //$NON-NLS-1$ | |
if (port==80 && protocol.equals("http")) //$NON-NLS-1$ | |
portString = ""; //$NON-NLS-1$ | |
else if (port==443 && protocol.equals("https")) //$NON-NLS-1$ | |
portString = ""; //$NON-NLS-1$ | |
return protocol+"://"+host+portString+path; //$NON-NLS-1$ | |
} | |
public String getName() | |
{ | |
return name; | |
} | |
public boolean isEnabled() | |
{ | |
return enabled; | |
} | |
public String getProtocol() { | |
return protocol; | |
} | |
public void setProtocol(String protocol) { | |
this.protocol = protocol; | |
} | |
public String getHost() { | |
return host; | |
} | |
public void setHost(String host) { | |
this.host = host; | |
} | |
public String getPath() { | |
return path; | |
} | |
public void setPath(String path) { | |
this.path = path; | |
} | |
public int getPort() { | |
return port; | |
} | |
public void setPort(int port) { | |
this.port = port; | |
} | |
public void setName(String name) { | |
this.name = name; | |
} | |
public void setEnabled(boolean enabled) { | |
this.enabled = enabled; | |
} | |
@Override | |
public String toString() | |
{ | |
return name+" ("+getHref()+")"; //$NON-NLS-1$ //$NON-NLS-2$ | |
} | |
/** | |
* Tests to see if 2 ICs are equal. The state (enabled or disabled) is ignored | |
* during this operation. | |
* | |
*/ | |
@Override | |
public boolean equals(Object o) | |
{ | |
if (!(o instanceof IC)) | |
return false; | |
IC candidate = (IC)o; | |
if (getName().equals(candidate.getName()) | |
&& getPath().equals(candidate.getPath()) | |
&& getPort()==candidate.getPort() | |
&& getProtocol().equals(candidate.getProtocol())) | |
{ | |
try { | |
InetAddress host1 = InetAddress.getByName(getHost()); | |
InetAddress host2 = InetAddress.getByName(candidate.getHost()); | |
if (host1.getHostAddress().equals(host2.getHostAddress())) | |
return true; | |
} catch (UnknownHostException e) { | |
if (getHost().equals(candidate.getHost())) | |
return true; | |
} | |
} | |
return false; | |
} | |
} |