| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| package org.apache.s2graph.core |
| |
| import org.apache.commons.configuration.BaseConfiguration |
| import org.apache.s2graph.core.Management.JsonModel.Prop |
| import org.apache.s2graph.core.S2Graph.{DefaultColumnName, DefaultServiceName} |
| import org.apache.s2graph.core.schema.{ColumnMeta, ServiceColumn} |
| import org.apache.s2graph.core.types.HBaseType |
| import org.apache.tinkerpop.gremlin.structure.T |
| |
| object S2GraphFactory { |
| |
| def generateClassic(g: S2Graph): Unit = { |
| val marko = g.addVertex(T.id, Int.box(1), "name", "marko", "age", Int.box(29)) |
| val vadas = g.addVertex(T.id, Int.box(2), "name", "vadas", "age", Int.box(27)) |
| val lop = g.addVertex(T.id, Int.box(3), "name", "lop", "lang", "java") |
| val josh = g.addVertex(T.id, Int.box(4), "name", "josh", "age", Int.box(32)) |
| val ripple = g.addVertex(T.id, Int.box(5), "name", "ripple", "lang", "java") |
| val peter = g.addVertex(T.id, Int.box(6), "name", "peter", "age", Int.box(35)) |
| marko.addEdge("knows", vadas, T.id, Int.box(7), "weight", Float.box(0.5f)) |
| marko.addEdge("knows", josh, T.id, Int.box(8), "weight", Float.box(1.0f)) |
| marko.addEdge("created", lop, T.id, Int.box(9), "weight", Float.box(0.4f)) |
| josh.addEdge("created", ripple, T.id, Int.box(10), "weight", Float.box(1.0f)) |
| josh.addEdge("created", lop, T.id, Int.box(11), "weight", Float.box(0.4f)) |
| peter.addEdge("created", lop, T.id, Int.box(12), "weight", Float.box(0.2f)) |
| } |
| |
| def generateModern(g: S2Graph): Unit = { |
| val marko = g.addVertex(T.id, Int.box(1), T.label, "person", "name", "marko", "age", Int.box(29)) |
| val vadas = g.addVertex(T.id, Int.box(2), T.label, "person", "name", "vadas", "age", Int.box(27)) |
| val lop = g.addVertex(T.id, Int.box(3), T.label, "software", "name", "lop", "lang", "java") |
| val josh = g.addVertex(T.id, Int.box(4), T.label, "person", "name", "josh", "age", Int.box(32)) |
| val ripple = g.addVertex(T.id, Int.box(5), T.label, "software", "name", "ripple", "lang", "java") |
| val peter = g.addVertex(T.id, Int.box(6), T.label, "person", "name", "peter", "age", Int.box(35)) |
| |
| marko.addEdge("knows", vadas, T.id, Int.box(7), "weight", Double.box(0.5d)) |
| marko.addEdge("knows", josh, T.id, Int.box(8), "weight", Double.box(1.0d)) |
| marko.addEdge("created", lop, T.id, Int.box(9), "weight", Double.box(0.4d)) |
| josh.addEdge("created", ripple, T.id, Int.box(10), "weight", Double.box(1.0d)) |
| josh.addEdge("created", lop, T.id, Int.box(11), "weight", Double.box(0.4d)) |
| peter.addEdge("created", lop, T.id, Int.box(12), "weight", Double.box(0.2d)) |
| } |
| |
| def initDefaultSchema(graph: S2Graph): Unit = { |
| val management = graph.management |
| |
| // Management.deleteService(DefaultServiceName) |
| val DefaultService = management.createService(DefaultServiceName, "localhost", "s2graph", 0, None).get |
| |
| // Management.deleteColumn(DefaultServiceName, DefaultColumnName) |
| val DefaultColumn = ServiceColumn.findOrInsert(DefaultService.id.get, DefaultColumnName, Some("integer"), HBaseType.DEFAULT_VERSION, options = None, useCache = false) |
| |
| val DefaultColumnMetas = { |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "test", "string", "-", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "name", "string", "-", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "age", "integer", "0", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "lang", "string", "-", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "oid", "integer", "0", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "communityIndex", "integer", "0", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "testing", "string", "-", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "string", "string", "-", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "boolean", "boolean", "true", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "long", "long", "0", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "float", "float", "0.0", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "double", "double", "0.0", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "integer", "integer", "0", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "aKey", "string", "-", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "x", "integer", "0", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "y", "integer", "0", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "location", "string", "-", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "status", "string", "-", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "myId", "integer", "0", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "acl", "string", "-", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "some", "string", "-", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "this", "string", "-", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "that", "string", "-", storeInGlobalIndex = true, useCache = false) |
| ColumnMeta.findOrInsert(DefaultColumn.id.get, "any", "string", "-", storeInGlobalIndex = true, useCache = false) |
| } |
| |
| // Management.deleteLabel("_s2graph") |
| val DefaultLabel = management.createLabel("_s2graph", DefaultService.serviceName, DefaultColumn.columnName, DefaultColumn.columnType, |
| DefaultService.serviceName, DefaultColumn.columnName, DefaultColumn.columnType, DefaultService.serviceName, Nil, Nil, |
| isDirected = true, consistencyLevel = "weak", hTableName = None, hTableTTL = None, |
| options = Option("""{"skipReverse": false}""") |
| ) |
| } |
| |
| def initModernSchema(g: S2Graph): Unit = { |
| val mnt = g.management |
| val softwareColumn = Management.createServiceColumn(S2Graph.DefaultServiceName, "software", "integer", Seq(Prop(T.id.toString, "-1", "integer"), Prop("name", "-", "string"), Prop("lang", "-", "string"))) |
| val personColumn = Management.createServiceColumn(S2Graph.DefaultServiceName, "person", "integer", |
| Seq(Prop(T.id.toString, "-1", "integer"), Prop("name", "-", "string"), Prop("age", "0", "integer"), Prop("location", "-", "string"))) |
| |
| val knows = mnt.createLabel("knows", |
| S2Graph.DefaultServiceName, "person", "integer", |
| S2Graph.DefaultServiceName, "person", "integer", |
| S2Graph.DefaultServiceName, Nil, Seq(Prop("weight", "0.0", "double"), Prop("year", "0", "integer")), |
| isDirected = true, consistencyLevel = "strong", hTableName = None, hTableTTL = None) |
| |
| val created = mnt.createLabel("created", |
| S2Graph.DefaultServiceName, "person", "integer", |
| S2Graph.DefaultServiceName, "software", "integer", |
| S2Graph.DefaultServiceName, Nil, Seq(Prop("weight", "0.0", "double")), |
| isDirected = true, consistencyLevel = "strong", hTableName = None, hTableTTL = None) |
| } |
| |
| def cleanupDefaultSchema(): Unit = { |
| val columnNames = Set(S2Graph.DefaultColumnName, "person", "software", "product", "dog", |
| "animal", "song", "artist", "STEPHEN") |
| |
| val labelNames = Set(S2Graph.DefaultLabelName, "knows", "created", "bought", "test", "self", "friends", "friend", "hate", "collaborator", |
| "test1", "test2", "test3", "pets", "walks", "hates", "link", |
| "codeveloper", "createdBy", "existsWith", "writtenBy", "sungBy", "followedBy", "uses", "likes", "foo", "bar") |
| |
| columnNames.foreach { columnName => |
| Management.deleteColumn(S2Graph.DefaultServiceName, columnName) |
| } |
| labelNames.foreach { labelName => |
| Management.deleteLabel(labelName) |
| } |
| } |
| } |