/** * Copyright 2010 Molindo GmbH * * 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 at.molindo.esi4j.chain.impl; import org.elasticsearch.action.bulk.BulkRequestBuilder; import org.elasticsearch.client.Client; import at.molindo.esi4j.chain.Esi4JEntityResolver; import at.molindo.esi4j.chain.Esi4JEntityTask; import at.molindo.esi4j.core.Esi4JOperation.OperationContext; import at.molindo.esi4j.mapping.ObjectKey; import at.molindo.esi4j.mapping.TypeMapping; public final class DeleteEntityTask extends AbstractEntityTask { private static final long serialVersionUID = 1L; public DeleteEntityTask(final Object entity) { super(entity); } @Override public boolean isUpdate() { return false; } @Override protected void initClone(final Esi4JEntityTask clone) { } @Override public void replaceEntity(final Esi4JEntityResolver entityResolver) { // always use ObjectKey setEntity(entityResolver.toObjectKey(getEntity())); } @Override public void resolveEntity(final Esi4JEntityResolver entityResolver) { // noop - already deleted object, ObjectKey is sufficient } @Override public void addToBulk(final Client client, final BulkRequestBuilder bulk, final String indexName, final OperationContext context) { final Object entity = getEntity(); TypeMapping mapping; String id; if (entity instanceof ObjectKey) { final ObjectKey key = (ObjectKey) entity; mapping = context.findTypeMapping(key.getType()); id = mapping.toIdString(key.getId()); } else { mapping = context.findTypeMapping(entity); id = mapping.getIdString(entity); } bulk.add(mapping.deleteBuilderRequest(client, indexName, id, null)); } }