001/*
002 * JPPF.
003 * Copyright (C) 2005-2018 JPPF Team.
004 * http://www.jppf.org
005 *
006 * Licensed under the Apache License, Version 2.0 (the "License");
007 * you may not use this file except in compliance with the License.
008 * You may obtain a copy of the License at
009 *
010 *   http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019package org.jppf.job;
020
021import java.util.*;
022
023import org.jppf.node.protocol.JPPFDistributedJob;
024
025/**
026 * A job selector which accepts all jobs whose uuids are in the set specified in one of its constructors.
027 * @author Laurent Cohen
028 * @since 5.1
029 */
030public class JobUuidSelector implements JobSelector {
031  /**
032   * Explicit serialVersionUID.
033   */
034  private static final long serialVersionUID = 1L;
035  /**
036   * The set of accepted job uuids.
037   */
038  private final Set<String> uuids;
039
040  /**
041   * Initiialize this selector with the specified collection of accepted job uuids.
042   * @param uuids a collection of string uuids.
043   */
044  public JobUuidSelector(final Collection<String> uuids) {
045    this.uuids = (uuids == null) ? Collections.<String>emptySet() : new HashSet<>(uuids);
046  }
047
048  /**
049   * Initiialize this selector with the specified array of accepted job uuids.
050   * @param uuids a collection of string uuids.
051   */
052  public JobUuidSelector(final String...uuids) {
053    this.uuids = new HashSet<>(Arrays.asList(uuids));
054  }
055
056  @Override
057  public boolean accepts(final JPPFDistributedJob job) {
058    return uuids.contains(job.getUuid());
059  }
060
061  /**
062   * Get the set of job uuids accepted by this selector.
063   * @return a set of uuids, possibly empty.
064   */
065  public Set<String> getUuids() {
066    return uuids;
067  }
068}