blob: cbb26ce5266ebc506b38892ba7baf153f0176eb0 [file] [log] [blame]
/*
* 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.oodt.cas.product.jaxrs.resources;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.apache.oodt.cas.filemgr.structs.Product;
import org.apache.oodt.cas.metadata.Metadata;
/**
* A JAX-RS resource representing a dataset - a set of {@link Product products}
* maintained by the file manager.
* @author rlaidlaw
* @version $Revision$
*/
@XmlRootElement(name="dataset")
@XmlType(propOrder = {"id", "name", "metadataResource", "productResources"})
@XmlAccessorType(XmlAccessType.NONE)
public class DatasetResource
{
private String id;
private String name;
private MetadataResource metadataResource;
private List<ProductResource> productResources =
new ArrayList<ProductResource>();
// The file manager's working directory for this resource, used for example
// when creating zip archives.
private File workingDir;
/**
* Default constructor required by JAXB.
*/
public DatasetResource()
{
}
/**
* Constructor that sets the name, metadata and working directory for the
* dataset resource.
* @param id the ID of the dataset
* @param name the name of the dataset
* @param metadata the metadata for the dataset
* @param workingDir the working directory for creating temporary files to
* attach to responses
*/
public DatasetResource(String id, String name, Metadata metadata,
File workingDir)
{
this.id = id;
this.name = name;
this.metadataResource = new MetadataResource(metadata);
this.workingDir = workingDir;
}
/**
* Adds a {@link ProductResource} to the list of product resources for the
* dataset.
* @param resource the resource to add to the dataset.
*/
public void addProductResource(ProductResource resource)
{
productResources.add(resource);
}
/**
* Gets the working directory for the dataset.
* @return the working directory
*/
public File getWorkingDir()
{
return workingDir;
}
/**
* Gets the id of the dataset.
* @return the id of the dataset
*/
@XmlElement
public String getId()
{
return id;
}
/**
* Gets the name of the dataset.
* @return the name of the dataset
*/
@XmlElement
public String getName()
{
return name;
}
/**
* Gets the product resources for the dataset.
* @return the productResources
*/
@XmlElementWrapper(name = "products")
@XmlElement(name = "product")
public List<ProductResource> getProductResources()
{
return productResources;
}
/**
* Gets the metadata resource for the dataset.
* @return the metadata resource
*/
@XmlElement(name = "metadata")
public MetadataResource getMetadataResource()
{
return metadataResource;
}
}