| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.nutch.scoring.webgraph; |
| |
| import java.io.DataInput; |
| import java.io.DataOutput; |
| import java.io.IOException; |
| |
| import org.apache.hadoop.io.Text; |
| import org.apache.hadoop.io.Writable; |
| |
| /** |
| * A class for holding link information including the url, anchor text, a score, |
| * the timestamp of the link and a link type. |
| */ |
| public class LinkDatum implements Writable { |
| |
| public final static byte INLINK = 1; |
| public final static byte OUTLINK = 2; |
| |
| private String url = null; |
| private String anchor = ""; |
| private float score = 0.0f; |
| private long timestamp = 0L; |
| private byte linkType = 0; |
| |
| /** |
| * Default constructor, no url, timestamp, score, or link type. |
| */ |
| public LinkDatum() { |
| |
| } |
| |
| /** |
| * Creates a LinkDatum with a given url. Timestamp is set to current time. |
| * |
| * @param url |
| * The link url. |
| */ |
| public LinkDatum(String url) { |
| this(url, "", System.currentTimeMillis()); |
| } |
| |
| /** |
| * Creates a LinkDatum with a url and an anchor text. Timestamp is set to |
| * current time. |
| * |
| * @param url |
| * The link url. |
| * @param anchor |
| * The link anchor text. |
| */ |
| public LinkDatum(String url, String anchor) { |
| this(url, anchor, System.currentTimeMillis()); |
| } |
| |
| public LinkDatum(String url, String anchor, long timestamp) { |
| this.url = url; |
| this.anchor = anchor; |
| this.timestamp = timestamp; |
| } |
| |
| public String getUrl() { |
| return url; |
| } |
| |
| public String getAnchor() { |
| return anchor; |
| } |
| |
| public void setAnchor(String anchor) { |
| this.anchor = anchor; |
| } |
| |
| public float getScore() { |
| return score; |
| } |
| |
| public void setScore(float score) { |
| this.score = score; |
| } |
| |
| public void setUrl(String url) { |
| this.url = url; |
| } |
| |
| public long getTimestamp() { |
| return timestamp; |
| } |
| |
| public void setTimestamp(long timestamp) { |
| this.timestamp = timestamp; |
| } |
| |
| public byte getLinkType() { |
| return linkType; |
| } |
| |
| public void setLinkType(byte linkType) { |
| this.linkType = linkType; |
| } |
| |
| public void readFields(DataInput in) throws IOException { |
| url = Text.readString(in); |
| anchor = Text.readString(in); |
| score = in.readFloat(); |
| timestamp = in.readLong(); |
| linkType = in.readByte(); |
| } |
| |
| public void write(DataOutput out) throws IOException { |
| Text.writeString(out, url); |
| Text.writeString(out, anchor != null ? anchor : ""); |
| out.writeFloat(score); |
| out.writeLong(timestamp); |
| out.writeByte(linkType); |
| } |
| |
| public String toString() { |
| |
| String type = (linkType == INLINK ? "inlink" |
| : (linkType == OUTLINK) ? "outlink" : "unknown"); |
| return "url: " + url + ", anchor: " + anchor + ", score: " + score |
| + ", timestamp: " + timestamp + ", link type: " + type; |
| } |
| } |