data.traits.elasticTraits.grvt Maven / Gradle / Ivy
/*******************************************************************************
* © 2018 Disney | ABC Television Group
*
* Licensed under the Apache License, Version 2.0 (the "Apache License")
* with the following modification; you may not use this file except in
* compliance with the Apache License and the following modification to it:
* Section 6. Trademarks. is deleted and replaced with:
*
* 6. Trademarks. This License does not grant permission to use the trade
* names, trademarks, service marks, or product names of the Licensor
* and its affiliates, except as required to comply with Section 4(c) of
* the License and to reproduce the content of the NOTICE file.
*
* You may obtain a copy of the Apache License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the Apache License with the above modification is
* distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the Apache License for the specific
* language governing permissions and limitations under the Apache License.
*******************************************************************************/
import com.disney.groovity.elasticsearch.EsQueryString
import com.disney.groovity.data.StorePayload
trait IsElasticDoc implements Store, Ingest{
String _index
String _type
String _id
Long _version
@CompileStatic public boolean ingest(String key, Object value){
if(key=='_source'){
ingest((Map)value)
return true
}
super.ingest(key, value)
}
Store store(){
def ptr = getPointer()
if(!ptr.id && _index && _type){
ptr = new Pointer(ptr.type,"${_index}/${_type}?")
setPointer(ptr)
}
super.store()
ptr = getPointer()
def eqs = new EsQueryString(ptr.id,conf)
_id = eqs.idValue
_type = eqs.type
_index = eqs.index
this
}
void delete(){
super.delete()
}
void storeFilters(List filters){
filters.add(ModelFilter.exclude('_index','_id','_type'))
filters.add(ModelFilter.add('_version_capture',{{ v -> _version = v }}))
super.storeFilters(filters)
}
}
@CompileStatic
class VersionCapturingMap extends LinkedHashMap{
@ModelSkip Closure receiver
public VersionCapturingMap(Map data, Closure receiver){
super(data)
this.receiver = receiver;
}
def put(k,v){
if(k=='_version'){
receiver(v)
}
super.put(k,v)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy