// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.trustosm.data;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.bouncycastle.openpgp.PGPSignature;
import org.openstreetmap.josm.data.coor.CoordinateFormat;
import org.openstreetmap.josm.data.coor.LatLon;
import org.openstreetmap.josm.data.osm.Node;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
public class TrustNode extends TrustOsmPrimitive {
public static Node generateNodeFromSigtext(String sigtext) {
Pattern p = Pattern.compile("^(\\d*)\\((\\d*\\.?\\d*),(\\d*\\.?\\d*)\\)");
Matcher m = p.matcher(sigtext);
if (m.matches()) {
Node node = new Node(Long.parseLong(m.group(1)));
node.setCoor(new LatLon(Double.parseDouble(m.group(2)), Double.parseDouble(m.group(3))));
return node;
}
return null;
}
public static String generateNodeSigtext(Node node) {
LatLon point = node.getCoor();
String sigtext = node.getUniqueId() + "(";
sigtext += point.latToString(CoordinateFormat.DECIMAL_DEGREES) + ",";
sigtext += point.lonToString(CoordinateFormat.DECIMAL_DEGREES) + ")";
return sigtext;
}
private TrustSignatures ratings;
public TrustNode(Node osmItem) {
super(osmItem);
}
@Override
public void setOsmPrimitive(OsmPrimitive osmItem) {
if (osmItem instanceof Node) {
osm = osmItem;
} else {
System.err.println("Error while creating TrustNode: OsmPrimitive "+osmItem.getUniqueId()+" is not a Node!");
}
}
public void storeNodeSig(PGPSignature sig) {
if (ratings == null) {
ratings = new TrustSignatures(sig, TrustNode.generateNodeSigtext((Node) osm), TrustSignatures.SIG_VALID);
} else {
ratings.addSignature(sig, TrustNode.generateNodeSigtext((Node) osm));
}
}
public void setNodeRatings(TrustSignatures ratings) {
this.ratings = ratings;
}
public TrustSignatures getNodeSigs() {
return ratings;
}
}