View Javadoc
1   /*
2    * Copyright 2012-2017 CodeLibs Project and the Others.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13   * either express or implied. See the License for the specific language
14   * governing permissions and limitations under the License.
15   */
16  package org.codelibs.fess.es.config.bsbhv;
17  
18  import java.util.List;
19  import java.util.Map;
20  
21  import org.codelibs.fess.es.config.allcommon.EsAbstractBehavior;
22  import org.codelibs.fess.es.config.allcommon.EsAbstractEntity.RequestOptionCall;
23  import org.codelibs.fess.es.config.bsentity.dbmeta.ElevateWordDbm;
24  import org.codelibs.fess.es.config.cbean.ElevateWordCB;
25  import org.codelibs.fess.es.config.exentity.ElevateWord;
26  import org.dbflute.Entity;
27  import org.dbflute.bhv.readable.CBCall;
28  import org.dbflute.bhv.readable.EntityRowHandler;
29  import org.dbflute.cbean.ConditionBean;
30  import org.dbflute.cbean.result.ListResultBean;
31  import org.dbflute.cbean.result.PagingResultBean;
32  import org.dbflute.exception.IllegalBehaviorStateException;
33  import org.dbflute.optional.OptionalEntity;
34  import org.dbflute.util.DfTypeUtil;
35  import org.elasticsearch.action.bulk.BulkRequestBuilder;
36  import org.elasticsearch.action.delete.DeleteRequestBuilder;
37  import org.elasticsearch.action.index.IndexRequestBuilder;
38  
39  /**
40   * @author ESFlute (using FreeGen)
41   */
42  public abstract class BsElevateWordBhv extends EsAbstractBehavior<ElevateWord, ElevateWordCB> {
43  
44      // ===================================================================================
45      //                                                                    Control Override
46      //                                                                    ================
47      @Override
48      public String asTableDbName() {
49          return asEsIndexType();
50      }
51  
52      @Override
53      protected String asEsIndex() {
54          return ".fess_config";
55      }
56  
57      @Override
58      public String asEsIndexType() {
59          return "elevate_word";
60      }
61  
62      @Override
63      public String asEsSearchType() {
64          return "elevate_word";
65      }
66  
67      @Override
68      public ElevateWordDbm asDBMeta() {
69          return ElevateWordDbm.getInstance();
70      }
71  
72      @Override
73      protected <RESULT extends ElevateWord> RESULT createEntity(Map<String, Object> source, Class<? extends RESULT> entityType) {
74          try {
75              final RESULT result = entityType.newInstance();
76              result.setBoost(DfTypeUtil.toFloat(source.get("boost")));
77              result.setCreatedBy(DfTypeUtil.toString(source.get("createdBy")));
78              result.setCreatedTime(DfTypeUtil.toLong(source.get("createdTime")));
79              result.setReading(DfTypeUtil.toString(source.get("reading")));
80              result.setSuggestWord(DfTypeUtil.toString(source.get("suggestWord")));
81              result.setTargetLabel(DfTypeUtil.toString(source.get("targetLabel")));
82              result.setTargetRole(DfTypeUtil.toString(source.get("targetRole")));
83              result.setPermissions(toStringArray(source.get("permissions")));
84              result.setUpdatedBy(DfTypeUtil.toString(source.get("updatedBy")));
85              result.setUpdatedTime(DfTypeUtil.toLong(source.get("updatedTime")));
86              return updateEntity(source, result);
87          } catch (InstantiationException | IllegalAccessException e) {
88              final String msg = "Cannot create a new instance: " + entityType.getName();
89              throw new IllegalBehaviorStateException(msg, e);
90          }
91      }
92  
93      protected <RESULT extends ElevateWord> RESULT updateEntity(Map<String, Object> source, RESULT result) {
94          return result;
95      }
96  
97      // ===================================================================================
98      //                                                                              Select
99      //                                                                              ======
100     public int selectCount(CBCall<ElevateWordCB> cbLambda) {
101         return facadeSelectCount(createCB(cbLambda));
102     }
103 
104     public OptionalEntity<ElevateWord> selectEntity(CBCall<ElevateWordCB> cbLambda) {
105         return facadeSelectEntity(createCB(cbLambda));
106     }
107 
108     protected OptionalEntity<ElevateWord> facadeSelectEntity(ElevateWordCB cb) {
109         return doSelectOptionalEntity(cb, typeOfSelectedEntity());
110     }
111 
112     protected <ENTITY extends ElevateWord> OptionalEntity<ENTITY> doSelectOptionalEntity(ElevateWordCB cb, Class<? extends ENTITY> tp) {
113         return createOptionalEntity(doSelectEntity(cb, tp), cb);
114     }
115 
116     @Override
117     public ElevateWordCB newConditionBean() {
118         return new ElevateWordCB();
119     }
120 
121     @Override
122     protected Entity doReadEntity(ConditionBean cb) {
123         return facadeSelectEntity(downcast(cb)).orElse(null);
124     }
125 
126     public ElevateWord selectEntityWithDeletedCheck(CBCall<ElevateWordCB> cbLambda) {
127         return facadeSelectEntityWithDeletedCheck(createCB(cbLambda));
128     }
129 
130     public OptionalEntity<ElevateWord> selectByPK(String id) {
131         return facadeSelectByPK(id);
132     }
133 
134     protected OptionalEntity<ElevateWord> facadeSelectByPK(String id) {
135         return doSelectOptionalByPK(id, typeOfSelectedEntity());
136     }
137 
138     protected <ENTITY extends ElevateWord> ENTITY doSelectByPK(String id, Class<? extends ENTITY> tp) {
139         return doSelectEntity(xprepareCBAsPK(id), tp);
140     }
141 
142     protected ElevateWordCB xprepareCBAsPK(String id) {
143         assertObjectNotNull("id", id);
144         return newConditionBean().acceptPK(id);
145     }
146 
147     protected <ENTITY extends ElevateWord> OptionalEntity<ENTITY> doSelectOptionalByPK(String id, Class<? extends ENTITY> tp) {
148         return createOptionalEntity(doSelectByPK(id, tp), id);
149     }
150 
151     @Override
152     protected Class<? extends ElevateWord> typeOfSelectedEntity() {
153         return ElevateWord.class;
154     }
155 
156     @Override
157     protected Class<ElevateWord> typeOfHandlingEntity() {
158         return ElevateWord.class;
159     }
160 
161     @Override
162     protected Class<ElevateWordCB> typeOfHandlingConditionBean() {
163         return ElevateWordCB.class;
164     }
165 
166     public ListResultBean<ElevateWord> selectList(CBCall<ElevateWordCB> cbLambda) {
167         return facadeSelectList(createCB(cbLambda));
168     }
169 
170     public PagingResultBean<ElevateWord> selectPage(CBCall<ElevateWordCB> cbLambda) {
171         // #pending same?
172         return (PagingResultBean<ElevateWord>) facadeSelectList(createCB(cbLambda));
173     }
174 
175     public void selectCursor(CBCall<ElevateWordCB> cbLambda, EntityRowHandler<ElevateWord> entityLambda) {
176         facadeSelectCursor(createCB(cbLambda), entityLambda);
177     }
178 
179     public void selectBulk(CBCall<ElevateWordCB> cbLambda, EntityRowHandler<List<ElevateWord>> entityLambda) {
180         delegateSelectBulk(createCB(cbLambda), entityLambda, typeOfSelectedEntity());
181     }
182 
183     // ===================================================================================
184     //                                                                              Update
185     //                                                                              ======
186     public void insert(ElevateWord entity) {
187         doInsert(entity, null);
188     }
189 
190     public void insert(ElevateWord entity, RequestOptionCall<IndexRequestBuilder> opLambda) {
191         entity.asDocMeta().indexOption(opLambda);
192         doInsert(entity, null);
193     }
194 
195     public void update(ElevateWord entity) {
196         doUpdate(entity, null);
197     }
198 
199     public void update(ElevateWord entity, RequestOptionCall<IndexRequestBuilder> opLambda) {
200         entity.asDocMeta().indexOption(opLambda);
201         doUpdate(entity, null);
202     }
203 
204     public void insertOrUpdate(ElevateWord entity) {
205         doInsertOrUpdate(entity, null, null);
206     }
207 
208     public void insertOrUpdate(ElevateWord entity, RequestOptionCall<IndexRequestBuilder> opLambda) {
209         entity.asDocMeta().indexOption(opLambda);
210         doInsertOrUpdate(entity, null, null);
211     }
212 
213     public void delete(ElevateWord entity) {
214         doDelete(entity, null);
215     }
216 
217     public void delete(ElevateWord entity, RequestOptionCall<DeleteRequestBuilder> opLambda) {
218         entity.asDocMeta().deleteOption(opLambda);
219         doDelete(entity, null);
220     }
221 
222     public int queryDelete(CBCall<ElevateWordCB> cbLambda) {
223         return doQueryDelete(createCB(cbLambda), null);
224     }
225 
226     public int[] batchInsert(List<ElevateWord> list) {
227         return batchInsert(list, null, null);
228     }
229 
230     public int[] batchInsert(List<ElevateWord> list, RequestOptionCall<BulkRequestBuilder> call) {
231         return batchInsert(list, call, null);
232     }
233 
234     public int[] batchInsert(List<ElevateWord> list, RequestOptionCall<BulkRequestBuilder> call,
235             RequestOptionCall<IndexRequestBuilder> entityCall) {
236         return doBatchInsert(new BulkList<>(list, call, entityCall), null);
237     }
238 
239     public int[] batchUpdate(List<ElevateWord> list) {
240         return batchUpdate(list, null, null);
241     }
242 
243     public int[] batchUpdate(List<ElevateWord> list, RequestOptionCall<BulkRequestBuilder> call) {
244         return batchUpdate(list, call, null);
245     }
246 
247     public int[] batchUpdate(List<ElevateWord> list, RequestOptionCall<BulkRequestBuilder> call,
248             RequestOptionCall<IndexRequestBuilder> entityCall) {
249         return doBatchUpdate(new BulkList<>(list, call, entityCall), null);
250     }
251 
252     public int[] batchDelete(List<ElevateWord> list) {
253         return batchDelete(list, null, null);
254     }
255 
256     public int[] batchDelete(List<ElevateWord> list, RequestOptionCall<BulkRequestBuilder> call) {
257         return batchDelete(list, call, null);
258     }
259 
260     public int[] batchDelete(List<ElevateWord> list, RequestOptionCall<BulkRequestBuilder> call,
261             RequestOptionCall<IndexRequestBuilder> entityCall) {
262         return doBatchDelete(new BulkList<>(list, call, entityCall), null);
263     }
264 
265     // #pending create, modify, remove
266 }