diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/EntitiesToUpdate.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/EntitiesToUpdate.java new file mode 100644 index 0000000000000000000000000000000000000000..79e4a07cd9a712f7a437187a9472d33a540bd656 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/search/EntitiesToUpdate.java @@ -0,0 +1,87 @@ +/* + * Copyright 2010 ETH Zuerich, CISD + * + * 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 ch.systemsx.cisd.openbis.generic.server.dataaccess.db.search; + +import java.io.Serializable; +import java.util.List; + +import ch.systemsx.cisd.common.collections.CollectionUtils; + +/** + * Encapsulates operation kind and data for an update operation to be performed on an index. + * + * @author Piotr Buczek + */ +public class EntitiesToUpdate implements Serializable +{ + public enum IndexUpdateOperationKind + { + /** update indexed entity */ + REINDEX, + + /** remove from index */ + REMOVE + } + + private static final long serialVersionUID = 1L; + + private final Class<?> clazz; + + private final List<Long> ids; + + private final IndexUpdateOperationKind operationKind; + + public static EntitiesToUpdate remove(Class<?> clazz, List<Long> ids) + { + return new EntitiesToUpdate(IndexUpdateOperationKind.REMOVE, clazz, ids); + } + + public static EntitiesToUpdate reindex(Class<?> clazz, List<Long> ids) + { + return new EntitiesToUpdate(IndexUpdateOperationKind.REINDEX, clazz, ids); + } + + private EntitiesToUpdate(IndexUpdateOperationKind operationKind, Class<?> clazz, + List<Long> ids) + { + this.clazz = clazz; + this.ids = ids; + this.operationKind = operationKind; + } + + public Class<?> getClazz() + { + return clazz; + } + + public List<Long> getIds() + { + return ids; + } + + public IndexUpdateOperationKind getOperationKind() + { + return operationKind; + } + + @Override + public String toString() + { + return operationKind + " " + clazz.getName() + ": " + CollectionUtils.abbreviate(ids, 10); + } + +}