use of org.gephi.graph.api.Graph in project gephi by gephi.
the class FilterModelPersistenceProvider method readXML.
public void readXML(XMLStreamReader reader, FilterModelImpl model) throws XMLStreamException {
Map<Integer, Query> idMap = new HashMap<>();
boolean end = false;
while (reader.hasNext() && !end) {
Integer eventType = reader.next();
if (eventType.equals(XMLEvent.START_ELEMENT)) {
String name = reader.getLocalName();
if ("autorefresh".equalsIgnoreCase(name)) {
String val = reader.getAttributeValue(null, "value");
model.setAutoRefresh(Boolean.parseBoolean(val));
} else if ("query".equalsIgnoreCase(name)) {
String id = reader.getAttributeValue(null, "id");
String parent = reader.getAttributeValue(null, "parent");
Query query = readQuery(reader, model);
if (query != null) {
idMap.put(Integer.parseInt(id), query);
if (parent != null) {
int parentId = Integer.parseInt(parent);
Query parentQuery = idMap.get(parentId);
//For example a partition filter, which depends on partitions, and partitions are not serialized
if (parentQuery != null) {
model.setSubQuery(parentQuery, query);
}
} else {
//Top query
model.addFirst(query);
}
}
} else if ("savedquery".equalsIgnoreCase(name)) {
String id = reader.getAttributeValue(null, "id");
String parent = reader.getAttributeValue(null, "parent");
Query query = readQuery(reader, model);
if (query != null) {
idMap.put(Integer.parseInt(id), query);
if (parent != null) {
int parentId = Integer.parseInt(parent);
Query parentQuery = idMap.get(parentId);
if (parentQuery != null) {
AbstractQueryImpl impl = (AbstractQueryImpl) parentQuery;
impl.addSubQuery(query);
}
} else {
model.getLibrary().saveQuery(query);
}
}
}
} else if (eventType.equals(XMLStreamReader.END_ELEMENT)) {
if ("filtermodel".equalsIgnoreCase(reader.getLocalName())) {
end = true;
}
}
}
//Init filters
Graph graph;
graph = model.getGraphModel().getGraph();
for (Query rootQuery : model.getQueries()) {
for (Query q : rootQuery.getDescendantsAndSelf()) {
Filter filter = q.getFilter();
if (filter instanceof NodeFilter || filter instanceof EdgeFilter || filter instanceof ElementFilter) {
FilterProcessor filterProcessor = new FilterProcessor();
filterProcessor.init(filter, graph);
}
}
}
}
use of org.gephi.graph.api.Graph in project gephi by gephi.
the class InterEdgesBuilder method getBuilders.
@Override
public FilterBuilder[] getBuilders(Workspace workspace) {
List<FilterBuilder> builders = new ArrayList<>();
GraphModel gm = Lookup.getDefault().lookup(GraphController.class).getGraphModel(workspace);
Graph graph = gm.getGraph();
AppearanceModel am = Lookup.getDefault().lookup(AppearanceController.class).getModel(workspace);
//Force refresh
am.getNodeFunctions(graph);
for (Column nodeCol : gm.getNodeTable()) {
if (!nodeCol.isProperty()) {
if (am.getNodePartition(graph, nodeCol) != null) {
InterEdgesFilterBuilder builder = new InterEdgesFilterBuilder(nodeCol, am);
builders.add(builder);
}
}
}
return builders.toArray(new FilterBuilder[0]);
}
use of org.gephi.graph.api.Graph in project gephi by gephi.
the class PartitionCountBuilder method getBuilders.
@Override
public FilterBuilder[] getBuilders(Workspace workspace) {
List<FilterBuilder> builders = new ArrayList<>();
GraphModel gm = Lookup.getDefault().lookup(GraphController.class).getGraphModel(workspace);
Graph graph = gm.getGraph();
AppearanceModel am = Lookup.getDefault().lookup(AppearanceController.class).getModel(workspace);
//Force refresh
am.getNodeFunctions(graph);
for (Column nodeCol : gm.getNodeTable()) {
if (!nodeCol.isProperty()) {
if (am.getNodePartition(graph, nodeCol) != null) {
PartitionCountFilterBuilder builder = new PartitionCountFilterBuilder(nodeCol, am);
builders.add(builder);
}
}
}
for (Column edgeCol : gm.getEdgeTable()) {
if (!edgeCol.isProperty()) {
if (am.getEdgePartition(graph, edgeCol) != null) {
PartitionCountFilterBuilder builder = new PartitionCountFilterBuilder(edgeCol, am);
builders.add(builder);
}
}
}
return builders.toArray(new FilterBuilder[0]);
}
use of org.gephi.graph.api.Graph in project gephi by gephi.
the class FilterThread method select.
private void select(AbstractQueryImpl query) {
FilterProcessor processor = new FilterProcessor();
GraphModel graphModel = model.getGraphModel();
Graph result = processor.process((AbstractQueryImpl) query, graphModel);
if (running) {
VisualizationController visController = Lookup.getDefault().lookup(VisualizationController.class);
if (visController != null) {
visController.selectNodes(result.getNodes().toArray());
visController.selectEdges(result.getEdges().toArray());
}
GraphView view = result.getView();
model.setCurrentResult(view);
} else {
//destroy view
graphModel.destroyView(result.getView());
}
}
use of org.gephi.graph.api.Graph in project gephi by gephi.
the class LegacyAttributeRowsPersistenceProvider method readRows.
public void readRows(XMLStreamReader reader, GraphModel graphModel, LegacyMapHelper mapHelper) throws XMLStreamException {
Graph graph = graphModel.getGraph();
boolean end = false;
while (reader.hasNext() && !end) {
int type = reader.next();
switch(type) {
case XMLStreamReader.START_ELEMENT:
String name = reader.getLocalName();
if (ELEMENT_NODE_ROW.equalsIgnoreCase(name)) {
String id = reader.getAttributeValue(null, "for");
Node node = graph.getNode(id);
readRow(reader, node, graphModel.getNodeTable(), mapHelper);
} else if (ELEMENT_EDGE_ROW.equalsIgnoreCase(name)) {
String id = reader.getAttributeValue(null, "for");
Edge edge = graph.getEdge(id);
readRow(reader, edge, graphModel.getEdgeTable(), mapHelper);
}
break;
case XMLStreamReader.END_ELEMENT:
if (ELEMENT_ROWS.equalsIgnoreCase(reader.getLocalName())) {
end = true;
}
break;
}
}
}
Aggregations