/**
* EmbedEntry
* Copyright 2012 by Michael Peter Christen, mc@yacy.net, Frankfurt am Main, Germany
* First released 27.04.2012 at http://yacy.net
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program in the file lgpl21.txt
* If not, see <http://www.gnu.org/licenses/>.
*/
package net.yacy.document.parser.html;
import net.yacy.cora.document.id.DigestURL;
public class EmbedEntry {
private final DigestURL url;
private final int width, height;
private final String type, pluginspage;
public EmbedEntry(final DigestURL url, int width, int height, String type, String pluginspage) {
this.url = url;
this.width = width;
this.height = height;
this.type = type;
this.pluginspage = pluginspage;
}
public DigestURL getUrl() {
return this.url;
}
public final int getWidth() {
return this.width;
}
public final int getHeight() {
return this.height;
}
public final String getType() {
return this.type;
}
public final String getPluginspage() {
return this.pluginspage;
}
@Override
public String toString() {
return "<embed url=\"" + this.url.toNormalform(false) + "\"" +
(this.type != null && this.type.length() > 0 ? " type=\"" + this.type + "\"" : "") +
(this.pluginspage != null && this.pluginspage.length() > 0 ? " pluginspage=\"" + this.pluginspage + "\"" : "") +
(this.width >= 0 ? " width=\"" + this.width + "\"" : "") +
(this.height >= 0 ? " height=\"" + this.height + "\"" : "") +
">";
}
@Override
public int hashCode() {
// if htmlFilterImageEntry elements are stored in a TreeSet, the biggest images shall be listed first
// this hash method therefore tries to compute a 'perfect hash' based on the size of the images
// unfortunately it can not be ensured that all images get different hashes, but this should appear
// only in very rare cases
if (this.width < 0 || this.height < 0)
return /*0x7FFF0000 |*/ (this.url.hashCode() & 0xFFFF);
return ((0x7FFF - (((this.width * this.height) >> 9) & 0x7FFF)) << 16) | (this.url.hashCode() & 0xFFFF);
}
}