| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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 org.apache.sqoop.metastore; |
| |
| import java.io.Closeable; |
| import java.io.IOException; |
| import java.util.List; |
| import java.util.Map; |
| |
| import org.apache.hadoop.conf.Configured; |
| |
| /** |
| * API that defines how jobs are saved, restored, and manipulated. |
| * |
| * <p> |
| * JobStorage instances may be created and then not used; the |
| * JobStorage factory may create additional JobStorage instances |
| * that return false from accept() and then discard them. The close() |
| * method will only be triggered for a JobStorage if the connect() |
| * method is called. Connection should not be triggered by a call to |
| * accept().</p> |
| */ |
| public abstract class JobStorage extends Configured implements Closeable { |
| |
| /** |
| * Returns true if the JobStorage system can use the metadata in |
| * the descriptor to connect to an underlying storage resource. |
| */ |
| public abstract boolean canAccept(Map<String, String> descriptor); |
| |
| |
| /** |
| * Opens / connects to the underlying storage resource specified by the |
| * descriptor. |
| */ |
| public abstract void open(Map<String, String> descriptor) |
| throws IOException; |
| |
| /** |
| * Given a job name, reconstitute a JobData that contains all |
| * configuration information required for the job. Returns null if the |
| * job name does not match an available job. |
| */ |
| public abstract JobData read(String jobName) |
| throws IOException; |
| |
| /** |
| * Forget about a saved job. |
| */ |
| public abstract void delete(String jobName) throws IOException; |
| |
| /** |
| * Given a job name and the data describing a configured job, record the job |
| * information to the storage medium. |
| */ |
| public abstract void create(String jobName, JobData data) |
| throws IOException; |
| |
| /** |
| * Given a job name and configured job data, update the underlying resource |
| * to match the current job configuration. |
| */ |
| public abstract void update(String jobName, JobData data) |
| throws IOException; |
| |
| /** |
| * Close any resources opened by the JobStorage system. |
| */ |
| public void close() throws IOException { |
| } |
| |
| /** |
| * Enumerate all jobs held in the connected resource. |
| */ |
| public abstract List<String> list() throws IOException; |
| } |
| |