parent
0ad52ac4c3
commit
acb9f04e80
@ -1,67 +0,0 @@
|
||||
/**
|
||||
* MetadataVocabulary
|
||||
* Copyright 2012 by Michael Peter Christen
|
||||
* First released 12.4.2012 at http://yacy.net
|
||||
*
|
||||
* This file is part of YaCy Content Integration
|
||||
*
|
||||
* 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.kelondro.data.meta;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import net.yacy.cora.lod.Literal;
|
||||
import net.yacy.cora.lod.Vocabulary;
|
||||
|
||||
public enum MetadataVocabulary implements Vocabulary {
|
||||
|
||||
moddate, url;
|
||||
|
||||
public final static String IDENTIFIER = "http://yacy.net/metadata";
|
||||
public final static String PREFIX = "ym";
|
||||
|
||||
private final String predicate;
|
||||
|
||||
private MetadataVocabulary() {
|
||||
this.predicate = PREFIX + ":" + this.name().toLowerCase();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNamespace() {
|
||||
return IDENTIFIER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getNamespacePrefix() {
|
||||
return PREFIX;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPredicate() {
|
||||
return this.predicate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Literal> getLiterals() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getURIref() {
|
||||
return PREFIX + ':' + this.name();
|
||||
}
|
||||
}
|
@ -1,70 +0,0 @@
|
||||
/**
|
||||
* URIReference
|
||||
* Copyright 2012 by Michael Peter Christen
|
||||
* First released 3.4.2012 at http://yacy.net
|
||||
*
|
||||
* This file is part of YaCy Content Integration
|
||||
*
|
||||
* 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.kelondro.data.meta;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public interface URIReference {
|
||||
|
||||
/**
|
||||
* The hash of a URIReference is a unique key for the stored URL.
|
||||
* It is in fact equal to url().hash()
|
||||
* @return the hash of the stored url
|
||||
*/
|
||||
public byte[] hash();
|
||||
|
||||
/**
|
||||
* the second half of a uri hash is the host hash
|
||||
* @return
|
||||
*/
|
||||
public String hosthash();
|
||||
|
||||
/**
|
||||
* The modification date of the URIReference is given if
|
||||
* the record was created first and is defined with the
|
||||
* creation date. If the record is modified later, the date shall change.
|
||||
* @return the modification date of this record
|
||||
*/
|
||||
public Date moddate();
|
||||
|
||||
/**
|
||||
* The DigestURI is the payload of the URIReference
|
||||
* @return the url as DigestURI with assigned URL hash according to the record hash
|
||||
*/
|
||||
public DigestURI url();
|
||||
|
||||
/**
|
||||
* check if the url matches agains a given matcher
|
||||
* @param matcher
|
||||
* @return true if the url() matches
|
||||
*/
|
||||
public boolean matches(final Pattern matcher);
|
||||
|
||||
/**
|
||||
* produce a visible representation of the record
|
||||
* @return a string for the url()
|
||||
*/
|
||||
@Override
|
||||
public String toString();
|
||||
}
|
@ -1,86 +0,0 @@
|
||||
/**
|
||||
* URIReferenceNode
|
||||
* Copyright 2012 by Michael Peter Christen
|
||||
* First released 5.4.2012 at http://yacy.net
|
||||
*
|
||||
* This file is part of YaCy Content Integration
|
||||
*
|
||||
* 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.kelondro.data.meta;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.text.ParseException;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import net.yacy.cora.date.ISO8601Formatter;
|
||||
import net.yacy.cora.document.ASCII;
|
||||
|
||||
public class URIReferenceNode extends HashMap<String, byte[]> implements URIReference {
|
||||
|
||||
private static final long serialVersionUID = -1580155759116466570L;
|
||||
|
||||
private final byte[] hash;
|
||||
|
||||
public URIReferenceNode(DigestURI uri, Date date) {
|
||||
this.hash = uri.hash();
|
||||
this.put(MetadataVocabulary.url.name(), ASCII.getBytes(uri.toNormalform(true, false)));
|
||||
this.put(MetadataVocabulary.moddate.name(), ASCII.getBytes(ISO8601Formatter.FORMATTER.format(date)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public byte[] hash() {
|
||||
return this.hash;
|
||||
}
|
||||
|
||||
private String hostHash = null;
|
||||
@Override
|
||||
public String hosthash() {
|
||||
if (this.hostHash != null) return this.hostHash;
|
||||
this.hostHash = ASCII.String(this.hash, 6, 6);
|
||||
return this.hostHash;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date moddate() {
|
||||
byte[] x = this.get(MetadataVocabulary.moddate.name());
|
||||
try {
|
||||
return x == null ? null : ISO8601Formatter.FORMATTER.parse(ASCII.String(x));
|
||||
} catch (ParseException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public DigestURI url() {
|
||||
byte[] x = this.get(MetadataVocabulary.moddate.name());
|
||||
try {
|
||||
return x == null ? null : new DigestURI(ASCII.String(x), this.hash);
|
||||
} catch (MalformedURLException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(Pattern matcher) {
|
||||
byte[] x = this.get(MetadataVocabulary.moddate.name());
|
||||
if (x == null) return false;
|
||||
return matcher.matcher(ASCII.String(x)).matches();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in new issue