| /* |
| * 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.s2graph.core.schema.ColumnMeta |
| import org.apache.s2graph.core.types.InnerValLike |
| |
| object S2VertexPropertyHelper { |
| def propertyValue(v: S2VertexLike, key: String): Option[InnerValLike] = { |
| key match { |
| case "id" => Option(v.innerId) |
| case _ => |
| v.serviceColumn.metasInvMap.get(key).map(x => propertyValueInner(v, x)) |
| } |
| } |
| |
| |
| def propertyValuesInner(vertex: S2VertexLike, columnMetas: Seq[ColumnMeta] = Nil): Map[ColumnMeta, InnerValLike] = { |
| if (columnMetas.isEmpty) { |
| vertex.serviceColumn.metaPropsDefaultMap.map { case (columnMeta, defaultVal) => |
| columnMeta -> propertyValueInner(vertex, columnMeta) |
| } |
| } else { |
| (ColumnMeta.reservedMetas ++ columnMetas).map { columnMeta => |
| columnMeta -> propertyValueInner(vertex, columnMeta) |
| }.toMap |
| } |
| } |
| |
| def propertyValueInner(vertex: S2VertexLike, columnMeta: ColumnMeta): InnerValLike = { |
| if (vertex.props.containsKey(columnMeta.name)) { |
| vertex.props.get(columnMeta.name).innerVal |
| } else { |
| vertex.serviceColumn.metaPropsDefaultMap(columnMeta) |
| } |
| } |
| |
| def toColumnMetas(vertex: S2VertexLike, keys: Seq[String]): Seq[ColumnMeta] = { |
| for { |
| key <- keys |
| columnMeta <- vertex.serviceColumn.metasInvMap.get(key) |
| } yield columnMeta |
| } |
| } |