예제 #1
0
  public void attachSQLiteDatabase(String sqliteDBFile) throws DBException {

    SQLiteAccess query = new SQLiteAccess(sqliteDBFile);

    Collection<String> tableList = query.getTableList();
    List<String> infoTableList =
        CollectionUtil.select(
            tableList,
            new Predicate<String>() {
              public boolean apply(String input) {
                return isInfoTable(input);
              }
            });
    List<String> dataTableList =
        CollectionUtil.select(
            tableList,
            new Predicate<String>() {
              public boolean apply(String input) {
                return !isInfoTable(input);
              }
            });

    // HashMap<String, HashMap<String, String>>
    for (String infoTable : infoTableList) {
      for (DataModelInfo info : query.amoebaQuery(DataModelInfo.class, infoTable)) {}
    }

    for (String dataTable : dataTableList) {
      Relation relation = new Relation();
      for (SQLiteDataTypeInfo dataType : query.getSQLiteDataTypeInfo(dataTable)) {
        relation.add(Relation.getDataType(dataType.getName(), dataType.getType()));
      }
      addRelation(relation);
    }
  }
예제 #2
0
  public void save(SQLiteAccess query) throws DBException {
    if (query.hasTable("node")) query.dropTable("node");
    if (query.hasTable("edge")) query.dropTable("edge");

    Relation nodeRelation = new Relation();
    nodeRelation.add(new DataTypeBase("id", TypeName.INTEGER, true, true));
    nodeRelation.add(new DataTypeBase("name", TypeName.STRING));
    query.createTable("node", nodeRelation);

    Relation edgeRelation = new Relation();
    edgeRelation.add(new DataTypeBase("id", TypeName.INTEGER, true, true));
    edgeRelation.add(new DataTypeBase("src", TypeName.INTEGER));
    edgeRelation.add(new DataTypeBase("dest", TypeName.INTEGER));
    edgeRelation.add(new DataTypeBase("relationship", TypeName.INTEGER));
    query.createTable("edge", edgeRelation);

    Vector<NodeData> nodeList = new Vector<NodeData>();
    for (int nodeID : _graph.getNodeIDSet()) {
      nodeList.add(new NodeData(nodeID, _graph.getNodeLabel(nodeID)));
    }

    Vector<EdgeData> edgeList = new Vector<EdgeData>();
    for (Edge edge : _graph.getEdgeSet()) {
      edgeList.add(
          new EdgeData(
              _graph.getEdgeID(edge),
              edge.getSourceNodeID(),
              edge.getDestNodeID(),
              _graph.getEdgeLabel(edge)));
    }

    for (NodeData node : nodeList) query.insert("node", node);
    for (EdgeData edge : edgeList) query.insert("edge", edge);
  }
예제 #3
0
  public void load(SQLiteAccess query) throws DBException {

    TreeSet<NodeData> nodeList = CollectionUtil.sort(query.amoebaQuery(NodeData.class, "node"));
    TreeSet<EdgeData> edgeList = CollectionUtil.sort(query.amoebaQuery(EdgeData.class, "edge"));

    for (NodeData node : nodeList) {
      _graph.addNode(node.getName());
    }
    for (EdgeData edge : edgeList) {
      _graph.addEdge(
          new Edge(edge.getSrc(), edge.getDest()), EdgeData.translate(edge.getRelationship()));
    }
  }