use of com.google.security.zynamics.binnavi.disassembly.CommentManager.CommentOperation in project binnavi by google.
the class PostgreSQLCommentNotificationParser method processTextNodeCommentNotification.
/**
* Parses the {@link PGNotification} notifications from the PostgreSQL database back end for text
* node comments by using a regular expression. If the regular expression matches the supplied
* {@link PGNotification} notification, it is determined if the text node in the notification is
* currently loaded, and if a {@link CommentNotificationContainer} with the gathered data from the
* notification is returned.
*
* @param notification The {@link PGNotification} from the PostgreSQL database server.
* @param provider The {@link SQLProvider} which is used to communicate with the database.
*/
static CommentNotification processTextNodeCommentNotification(final PGNotification notification, final SQLProvider provider) {
final Matcher matcher = TEXT_NODE_PATTERN.matcher(notification.getParameter());
if (!matcher.find()) {
return null;
}
final Integer nodeId = Integer.parseInt(matcher.group(3));
final Integer commentId = matcher.group(4).equals("null") ? null : Integer.parseInt(matcher.group(4));
final INaviTextNode node = (INaviTextNode) NodeCache.get(provider).getNodeById(nodeId);
if (node == null) {
return null;
}
final CommentOperation operation = commentId == null ? CommentOperation.DELETE : CommentOperation.APPEND;
return new TextNodeCommentNotificationContainer(node, operation, commentId);
}
use of com.google.security.zynamics.binnavi.disassembly.CommentManager.CommentOperation in project binnavi by google.
the class PostgreSQLCommentNotificationParser method processEdgeLocalCommentNotification.
/**
* Parses the notifications from the database back end for local edge comments by using a regular
* expression. If the regular expression matches the supplied {@link PGNotification} notification,
* it is determined if the edge in question is loaded, and if a
* {@link CommentNotificationContainer} is build with the data from the notification.
*
* @param notification The {@link PGNotification} from the PostgreSQL database server.
* @param provider The {@link SQLProvider} which is used to communicate with the database.
*/
static CommentNotification processEdgeLocalCommentNotification(final PGNotification notification, final SQLProvider provider) {
final Matcher matcher = EDGE_LOCAL_PATTERN.matcher(notification.getParameter());
if (!matcher.find()) {
return null;
}
final Integer edgeId = Integer.parseInt(matcher.group(3));
final Integer commentId = matcher.group(4).equals("null") ? null : Integer.parseInt(matcher.group(4));
final INaviEdge edge = EdgeCache.get(provider).getEdgeById(edgeId);
if (edge == null) {
return null;
}
final CommentOperation operation = commentId == null ? CommentOperation.DELETE : CommentOperation.APPEND;
return new EdgeCommentNotificationContainer(edge, operation, CommentScope.LOCAL, commentId);
}
Aggregations