TinkerPop Frames - сохранение карты<String, String> в свойствах вершины
Я хотел бы сохранить чистую карту в свойствах вершин. Мотивация заключается в том, что я заранее не знаю, какие свойства будет содержать карта. И сохранение одной вершины на свойство не кажется эффективным. Как бы я это сделал?
interface Foo {
@Properties...?
Map<String,String> getProperties();
@Properties
Map<String,String> addProperty();
}
Возможно, через обработчики методов. Как? И есть ли нативная поддержка?
1 ответ
Решение
Я добавил поддержку для этого с помощью обработчиков. Смотрите проект Windup. https://github.com/windup/windup/pull/157
Вот так это выглядит в моделях.
Этот хранит карту в подпорках вершины данного кадра, используя префикс map:
@TypeValue("MapInAdjPropsModelMain")
public interface MapMainModel extends WindupVertexFrame
{
@InProperties(propPrefix = "map") void setMap(Map<String, String> map);
@InProperties(propPrefix = "map") Map<String, String> getMap();
}
И этот хранит карту в соседней вершине, следовательно, может хранить несколько карт:
@TypeValue("MapInAdjPropsModelMain")
public interface MapMainModel extends WindupVertexFrame
{
@InAdjacentProperties(edgeLabel = "map")
void setMap(Map<String, String> map);
@InAdjacentProperties(edgeLabel = "map")
Map<String, String> getMap();
@InAdjacentProperties(edgeLabel = "map2")
void setMap2(Map<String, String> map);
@InAdjacentProperties(edgeLabel = "map2")
Map<String, String> getMap2();
}