/** * personium.io * Copyright 2014 FUJITSU LIMITED * * Licensed 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 com.fujitsu.dc.core.model.impl.es.doc; import java.util.List; import java.util.Map; import org.json.simple.JSONObject; import org.odata4j.core.OEntity; import org.odata4j.edm.EdmDataServices; import org.odata4j.edm.EdmEntitySet; import org.odata4j.expression.EntitySimpleProperty; import com.fujitsu.dc.core.odata.OEntityWrapper; /** * ElasticSearchのドキュメントを生成するHandler. */ public interface EntitySetDocHandler extends EsDocHandler { /** * typeのゲッター. * @return type */ String getType(); /** * CellIDのゲッター. * @return cellId */ String getCellId(); /** * BoxIDのゲッター. * @return boxId */ String getBoxId(); /** * NodeIDのゲッター. * @return nodeId */ String getNodeId(); /** * EntityTypeIDのゲッター. * @return entityTypeId */ String getEntityTypeId(); /** * StaticFieldsのゲッター. * @return StaticFields */ Map<String, Object> getStaticFields(); /** * DynamicFieldsのゲッター. * @return DynamicFields */ Map<String, Object> getDynamicFields(); /** * AclFieldsのゲッター. * @return ManyToOnelinkId */ Map<String, JSONObject> getAclFields(); /** * HiddenFieldsのゲッター. * @return HiddenFields */ Map<String, Object> getHiddenFields(); /** * ManyToOnelinkIdのゲッター. * @return ManyToOnelinkId */ Map<String, Object> getManyToOnelinkId(); /** * StaticFieldsの文字列表現を返す. * @return StaticFields */ String getStaticFieldsString(); /** * DynamicFieldsの文字列表現を返す. * @return DynamicFields */ String getDynamicFieldsString(); /** * HiddenFieldsの文字列表現を返す. * @return HiddenFields */ String getHiddenFieldsString(); /** * ManyToOnelinkIdの文字列表現を返す. * @return ManyToOnelinkId */ String getManyToOnelinkIdString(); /** * Publishedのゲッター. * @return Published */ Long getPublished(); /** * Updatedのゲッター. * @return Updated */ Long getUpdated(); /** * UnitUserNameのゲッター. * @return UnitUser名 */ String getUnitUserName(); /** * Cellへのアクセス時にUnitUser名を設定する. * @param hiddenFieldsMap hiddenFieldsのマップオブジェクト */ void resolveUnitUserName(Map<String, Object> hiddenFieldsMap); /** * Idのセッター. * @param id elasticsearchのID */ void setId(String id); /** * staticFieldsのセッター. * @param staticFields staticFields */ void setStaticFields(Map<String, Object> staticFields); /** * cellIdのセッター. * @param cellId CellのID */ void setCellId(String cellId); /** * boxIdのセッター. * @param boxId BoxのID */ void setBoxId(String boxId); /** * nodeIdのセッター. * @param nodeId nodeのID */ void setNodeId(String nodeId); /** * entityTypeIdのセッター. * @param entityTypeId entityTypeのID */ void setEntityTypeId(String entityTypeId); /** * typeのセッター. * @param type type */ void setType(String type); /** * versionのセッター. * @param version version */ void setVersion(Long version); /** * HiddenFieldsのセッター. * @param hiddenFields hiddenFields */ void setHiddenFields(Map<String, Object> hiddenFields); /** * linksのセッター. * @param links links情報 */ void setManyToOnelinkId(Map<String, Object> links); /** * Publishedのセッター. * @param published published情報 */ void setPublished(Long published); /** * Updatedのセッター. * @param updated updated情報 */ void setUpdated(Long updated); /** * dynamicFieldsのセッター. * @param dynamicFields Dynamic Field の Map */ void setDynamicFields(Map<String, Object> dynamicFields); /** * OEntityを作成する. * @param eSet EdmEntitySet * @return OEntityWrapper */ OEntityWrapper createOEntity(EdmEntitySet eSet); /** * OEntityを作成する. * @param eSet EdmEntitySet * @param metadata metadata * @param relatedEntitiesList relatedEntitiesList * @return OEntityWrapper */ OEntityWrapper createOEntity(EdmEntitySet eSet, EdmDataServices metadata, Map<String, List<OEntity>> relatedEntitiesList); /** * OEntityを作成する. * @param eSet EdmEntitySet * @param metadata metadata * @param relatedEntitiesList relatedEntitiesList * @param selectQuery $selectクエリ * @return OEntityWrapper */ OEntityWrapper createOEntity(EdmEntitySet eSet, EdmDataServices metadata, Map<String, List<OEntity>> relatedEntitiesList, List<EntitySimpleProperty> selectQuery); /** * ETagを生成する. * @return ETag */ String createEtag(); /** * 静的プロパティをAlias名からプロパティ名に変更する. * @param metadata スキーマ情報 */ void convertAliasToName(EdmDataServices metadata); }