http://git-wip-us.apache.org/repos/asf/oodt/blob/fa572a2e/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/XmlRpcFileManagerClient.java ---------------------------------------------------------------------- diff --cc filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/XmlRpcFileManagerClient.java index f76ddbc,5e84249..db64716 --- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/XmlRpcFileManagerClient.java +++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/system/XmlRpcFileManagerClient.java @@@ -58,1276 -66,1326 +66,1326 @@@ import java.util.logging.Logger * @author mattmann (Chris Mattmann) * @author bfoster (Brian Foster) * @version $Revision$ - * - * <p> - * The XML RPC based file manager client. - * </p> - * + * <p/> + * <p> The XML RPC based file manager client. </p> */ -public class XmlRpcFileManagerClient { +public class XmlRpcFileManagerClient implements FileManagerClient { - /* our xml rpc client */ - private XmlRpcClient client = null; - - /* our log stream */ - private static Logger LOG = Logger.getLogger(XmlRpcFileManagerClient.class - .getName()); - - /* file manager url */ - private URL fileManagerUrl = null; - - /* data transferer needed if client is request to move files itself */ - private DataTransfer dataTransfer = null; - - public XmlRpcFileManagerClient(final URL url) throws ConnectionException { - this(url, true); - } - - /** - * <p> - * Constructs a new XmlRpcFileManagerClient with the given <code>url</code>. - * </p> - * - * @param url - * The url pointer to the xml rpc file manager service. - * @param testConnection - * Whether or not to check if server at given url is alive. - */ - public XmlRpcFileManagerClient(final URL url, boolean testConnection) - throws ConnectionException { - - XmlRpcTransportFactory transportFactory = new XmlRpcTransportFactory() { - - public XmlRpcTransport createTransport() - throws XmlRpcClientException { - HttpClient client = new HttpClient(); - client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, - new HttpMethodRetryHandler() { - - public boolean retryMethod(HttpMethod method, - IOException e, int count) { - if (count < Integer - .getInteger( - "org.apache.oodt.cas.filemgr.system.xmlrpc.connection.retries", - 3).intValue()) { - try { - Thread - .sleep(Integer - .getInteger( - "org.apache.oodt.cas.filemgr.system.xmlrpc.connection.retry.interval.seconds", - 0).intValue() * 1000); - return true; - } catch (Exception e1) { - } - } - return false; - } - - }); - CommonsXmlRpcTransport transport = new CommonsXmlRpcTransport( - url, client); - transport - .setConnectionTimeout(Integer - .getInteger( - "org.apache.oodt.cas.filemgr.system.xmlrpc.connectionTimeout.minutes", - 20).intValue() * 60 * 1000); - transport - .setTimeout(Integer - .getInteger( - "org.apache.oodt.cas.filemgr.system.xmlrpc.requestTimeout.minutes", - 60).intValue() * 60 * 1000); - - return transport; - } - - public void setProperty(String arg0, Object arg1) { - } - - }; - - client = new XmlRpcClient(url, transportFactory); - fileManagerUrl = url; - - if (testConnection && !isAlive()) { - throw new ConnectionException("Exception connecting to filemgr: [" - + this.fileManagerUrl + "]"); - } - - } - - public boolean refreshConfigAndPolicy() { - boolean success = false; - - Vector<Object> argList = new Vector<Object>(); - try { - success = ((Boolean) client.execute("filemgr.refreshConfigAndPolicy", - argList)).booleanValue(); - } catch (XmlRpcException e) { - LOG.log(Level.WARNING, "XmlRpcException when connecting to filemgr: [" - + this.fileManagerUrl + "]"); - success = false; - } catch (IOException e) { - LOG.log(Level.WARNING, "IOException when connecting to filemgr: [" - + this.fileManagerUrl + "]"); - success = false; - } - - return success; - } - - public boolean isAlive() { - boolean connected = false; + /* our xml rpc client */ + private XmlRpcClient client = null; - Vector<Object> argList = new Vector<Object>(); - try { - connected = ((Boolean) client.execute("filemgr.isAlive", argList)) - .booleanValue(); - } catch (XmlRpcException e) { - LOG.log(Level.WARNING, - "XmlRpcException when connecting to filemgr: [" - + this.fileManagerUrl + "]"); - connected = false; - } catch (IOException e) { - LOG.log(Level.WARNING, "IOException when connecting to filemgr: [" - + this.fileManagerUrl + "]"); - connected = false; - } + /* our log stream */ + private static Logger LOG = Logger.getLogger(XmlRpcFileManagerClient.class + .getName()); - return connected; - } + /* file manager url */ + private URL fileManagerUrl = null; - public boolean transferringProduct(Product product) - throws DataTransferException { - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - argList.add(productHash); + /* data transferer needed if client is request to move files itself */ + private DataTransfer dataTransfer = null; - boolean success = false; + public XmlRpcFileManagerClient(final URL url) throws ConnectionException { + this(url, true); + } - try { - success = ((Boolean) client.execute("filemgr.transferringProduct", - argList)).booleanValue(); - } catch (XmlRpcException e) { - throw new DataTransferException(e.getMessage()); - } catch (IOException e) { - throw new DataTransferException(e.getMessage()); - } + /** + * <p> Constructs a new XmlRpcFileManagerClient with the given <code>url</code>. </p> + * + * @param url The url pointer to the xml rpc file manager service. + * @param testConnection Whether or not to check if server at given url is alive. + */ + public XmlRpcFileManagerClient(final URL url, boolean testConnection) + throws ConnectionException { + // set up the configuration, if there is any + if (System.getProperty("org.apache.oodt.cas.filemgr.properties") != null) { + String configFile = System + .getProperty("org.apache.oodt.cas.filemgr.properties"); + LOG.log(Level.INFO, + "Loading File Manager Configuration Properties from: [" + + configFile + "]"); + try { + System.getProperties().load( + new FileInputStream(new File(configFile))); + } catch (Exception e) { + LOG.log(Level.INFO, + "Error loading configuration properties from: [" + + configFile + "]"); + } - return success; } - public boolean removeProductTransferStatus(Product product) - throws DataTransferException { - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - Vector<Object> argList = new Vector<Object>(); - argList.add(productHash); - - boolean success = false; + XmlRpcTransportFactory transportFactory = new XmlRpcTransportFactory() { - try { - success = ((Boolean) client.execute( - "filemgr.removeProductTransferStatus", argList)) - .booleanValue(); - } catch (XmlRpcException e) { - throw new DataTransferException(e.getMessage()); - } catch (IOException e) { - throw new DataTransferException(e.getMessage()); - } + public XmlRpcTransport createTransport() + throws XmlRpcClientException { + HttpClient client = new HttpClient(); + client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, + new HttpMethodRetryHandler() { - return success; - } + public boolean retryMethod(HttpMethod method, + IOException e, int count) { + if (count < Integer + .getInteger( + "org.apache.oodt.cas.filemgr.system.xmlrpc.connection.retries", + 3)) { + try { + Thread + .sleep(Integer + .getInteger( + "org.apache.oodt.cas.filemgr.system.xmlrpc.connection.retry.interval.seconds", + 0) * 1000); + return true; + } catch (Exception ignored) { + } + } + return false; + } + + }); + CommonsXmlRpcTransport transport = new CommonsXmlRpcTransport( + url, client); + transport + .setConnectionTimeout(Integer + .getInteger( + "org.apache.oodt.cas.filemgr.system.xmlrpc.connectionTimeout.minutes", + 20) * 60 * 1000); + transport + .setTimeout(Integer + .getInteger( + "org.apache.oodt.cas.filemgr.system.xmlrpc.requestTimeout.minutes", + 60) * 60 * 1000); + + return transport; + } - public boolean isTransferComplete(Product product) - throws DataTransferException { - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - Vector<Object> argList = new Vector<Object>(); - argList.add(productHash); + public void setProperty(String arg0, Object arg1) { + } - boolean success = false; + }; - try { - success = ((Boolean) client.execute("filemgr.isTransferComplete", - argList)).booleanValue(); - } catch (XmlRpcException e) { - throw new DataTransferException(e.getMessage()); - } catch (IOException e) { - throw new DataTransferException(e.getMessage()); - } + client = new XmlRpcClient(url, transportFactory); + fileManagerUrl = url; - return success; + if (testConnection && !isAlive()) { + throw new ConnectionException("Exception connecting to filemgr: [" + + this.fileManagerUrl + "]"); } - public boolean moveProduct(Product product, String newPath) - throws DataTransferException { - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - Vector<Object> argList = new Vector<Object>(); - argList.add(productHash); - argList.add(newPath); - - boolean success = false; + } - try { - success = ((Boolean) client.execute("filemgr.moveProduct", argList)) - .booleanValue(); - } catch (XmlRpcException e) { - throw new DataTransferException(e.getMessage()); - } catch (IOException e) { - throw new DataTransferException(e.getMessage()); - } + public boolean refreshConfigAndPolicy() { + boolean success; - return success; + Vector<Object> argList = new Vector<Object>(); + try { + success = (Boolean) client.execute("filemgr.refreshConfigAndPolicy", + argList); + } catch (XmlRpcException e) { + LOG.log(Level.WARNING, "XmlRpcException when connecting to filemgr: [" + + this.fileManagerUrl + "]"); + success = false; + } catch (IOException e) { + LOG.log(Level.WARNING, "IOException when connecting to filemgr: [" + + this.fileManagerUrl + "]"); + success = false; } - public boolean modifyProduct(Product product) throws CatalogException { - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - - Vector<Object> argList = new Vector<Object>(); - argList.add(productHash); - - boolean success = false; - - try { - success = ((Boolean) client.execute("filemgr.modifyProduct", - argList)).booleanValue(); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + return success; + } - return success; + public boolean isAlive() { + boolean connected; + Vector<Object> argList = new Vector<Object>(); + try { + connected = (Boolean) client.execute("filemgr.isAlive", argList); + } catch (XmlRpcException e) { + LOG.log(Level.WARNING, + "XmlRpcException when connecting to filemgr: [" + + this.fileManagerUrl + "]"); + connected = false; + } catch (IOException e) { + LOG.log(Level.WARNING, "IOException when connecting to filemgr: [" + + this.fileManagerUrl + "]"); + connected = false; } - public boolean removeProduct(Product product) throws CatalogException { - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - - Vector<Object> argList = new Vector<Object>(); - argList.add(productHash); - - boolean success = false; + return connected; + } - try { - success = ((Boolean) client.execute("filemgr.removeProduct", - argList)).booleanValue(); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + public boolean transferringProduct(Product product) + throws DataTransferException { + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); + argList.add(productHash); - return success; + boolean success; + try { + success = (Boolean) client.execute("filemgr.transferringProduct", + argList); + } catch (XmlRpcException e) { + throw new DataTransferException(e); + } catch (IOException e) { + throw new DataTransferException(e); } - @SuppressWarnings("unchecked") - public FileTransferStatus getCurrentFileTransfer() - throws DataTransferException { - Vector<Object> argList = new Vector<Object>(); - - Hashtable<String, Object> statusHash = null; - FileTransferStatus status = null; + return success; + } - try { - statusHash = (Hashtable<String, Object>) client.execute( - "filemgr.getCurrentFileTransfer", argList); - } catch (XmlRpcException e) { - throw new DataTransferException(e.getMessage()); - } catch (IOException e) { - throw new DataTransferException(e.getMessage()); - } + public boolean removeProductTransferStatus(Product product) + throws DataTransferException { + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); + Vector<Object> argList = new Vector<Object>(); + argList.add(productHash); - if (statusHash != null) { - status = XmlRpcStructFactory - .getFileTransferStatusFromXmlRpc(statusHash); - } + boolean success; - return status; + try { + success = (Boolean) client.execute( + "filemgr.removeProductTransferStatus", argList); + } catch (XmlRpcException e) { + throw new DataTransferException(e); + } catch (IOException e) { + throw new DataTransferException(e); } - @SuppressWarnings("unchecked") - public List<FileTransferStatus> getCurrentFileTransfers() - throws DataTransferException { - Vector<Object> argList = new Vector<Object>(); - - Vector<Hashtable<String, Object>> statusVector = null; - List<FileTransferStatus> statuses = null; + return success; + } - try { - statusVector = (Vector<Hashtable<String, Object>>) client.execute( - "filemgr.getCurrentFileTransfers", argList); - } catch (XmlRpcException e) { - throw new DataTransferException(e.getMessage()); - } catch (IOException e) { - throw new DataTransferException(e.getMessage()); - } + public boolean isTransferComplete(Product product) + throws DataTransferException { + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); + Vector<Object> argList = new Vector<Object>(); + argList.add(productHash); - if (statusVector != null) { - statuses = XmlRpcStructFactory - .getFileTransferStatusesFromXmlRpc(statusVector); - } + boolean success; - return statuses; + try { + success = (Boolean) client.execute("filemgr.isTransferComplete", + argList); + } catch (XmlRpcException e) { + throw new DataTransferException(e); + } catch (IOException e) { + throw new DataTransferException(e); } - public double getProductPctTransferred(Product product) - throws DataTransferException { - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - argList.add(productHash); - Double pct = null; + return success; + } - try { - pct = (Double) client.execute("filemgr.getProductPctTransferred", - argList); - } catch (XmlRpcException e) { - throw new DataTransferException(e.getMessage()); - } catch (IOException e) { - throw new DataTransferException(e.getMessage()); - } + public boolean moveProduct(Product product, String newPath) + throws DataTransferException { + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); + Vector<Object> argList = new Vector<Object>(); + argList.add(productHash); + argList.add(newPath); - if (pct != null) { - return pct.doubleValue(); - } + boolean success; - return -1.0; + try { + success = (Boolean) client.execute("filemgr.moveProduct", argList); + } catch (XmlRpcException e) { + throw new DataTransferException(e); + } catch (IOException e) { + throw new DataTransferException(e); } - public double getRefPctTransferred(Reference reference) - throws DataTransferException { - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> refHash = XmlRpcStructFactory - .getXmlRpcReference(reference); - argList.add(refHash); - Double pct = null; - - try { - pct = (Double) client.execute("filemgr.getRefPctTransferred", - argList); - } catch (XmlRpcException e) { - throw new DataTransferException(e.getMessage()); - } catch (IOException e) { - throw new DataTransferException(e.getMessage()); - } - - if (pct != null) { - return pct.doubleValue(); - } - - return -1.0; - } + return success; + } - @SuppressWarnings("unchecked") - public ProductPage pagedQuery(Query query, ProductType type, int pageNum) - throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> queryHash = XmlRpcStructFactory - .getXmlRpcQuery(query); - Hashtable<String, Object> typeHash = XmlRpcStructFactory - .getXmlRpcProductType(type); - argList.add(queryHash); - argList.add(typeHash); - argList.add(new Integer(pageNum)); + public boolean modifyProduct(Product product) throws CatalogException { + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); - Hashtable<String, Object> pageHash = null; + Vector<Object> argList = new Vector<Object>(); + argList.add(productHash); - try { - pageHash = (Hashtable<String, Object>) client.execute( - "filemgr.pagedQuery", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + boolean success; - return XmlRpcStructFactory.getProductPageFromXmlRpc(pageHash); + try { + success = (Boolean) client.execute("filemgr.modifyProduct", + argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - @SuppressWarnings("unchecked") - public ProductPage getFirstPage(ProductType type) throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - argList.add(XmlRpcStructFactory.getXmlRpcProductType(type)); + return success; - ProductPage page = null; - Hashtable<String, Object> pageHash = null; + } - try { - pageHash = (Hashtable<String, Object>) client.execute( - "filemgr.getFirstPage", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + public boolean removeProduct(Product product) throws CatalogException { + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); - if (pageHash != null) { - page = XmlRpcStructFactory.getProductPageFromXmlRpc(pageHash); - } + Vector<Object> argList = new Vector<Object>(); + argList.add(productHash); - return page; + boolean success; + try { + success = (Boolean) client.execute("filemgr.removeProduct", + argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - @SuppressWarnings("unchecked") - public ProductPage getLastPage(ProductType type) throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - argList.add(XmlRpcStructFactory.getXmlRpcProductType(type)); + return success; - ProductPage page = null; - Hashtable<String, Object> pageHash = null; + } - try { - pageHash = (Hashtable<String, Object>) client.execute( - "filemgr.getLastPage", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + @SuppressWarnings("unchecked") + public FileTransferStatus getCurrentFileTransfer() + throws DataTransferException { + Vector<Object> argList = new Vector<Object>(); - if (pageHash != null) { - page = XmlRpcStructFactory.getProductPageFromXmlRpc(pageHash); - } + Map<String, Object> statusHash; + FileTransferStatus status = null; - return page; + try { + statusHash = (Map<String, Object>) client.execute( + "filemgr.getCurrentFileTransfer", argList); + } catch (XmlRpcException e) { + throw new DataTransferException(e); + } catch (IOException e) { + throw new DataTransferException(e); } - @SuppressWarnings("unchecked") - public ProductPage getNextPage(ProductType type, ProductPage currPage) - throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - argList.add(XmlRpcStructFactory.getXmlRpcProductType(type)); - argList.add(XmlRpcStructFactory.getXmlRpcProductPage(currPage)); + if (statusHash != null) { + status = XmlRpcStructFactory + .getFileTransferStatusFromXmlRpc(statusHash); + } - ProductPage page = null; - Hashtable<String, Object> pageHash = null; + return status; + } - try { - pageHash = (Hashtable<String, Object>) client.execute( - "filemgr.getNextPage", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + @SuppressWarnings("unchecked") + public List<FileTransferStatus> getCurrentFileTransfers() + throws DataTransferException { + Vector<Object> argList = new Vector<Object>(); - if (pageHash != null) { - page = XmlRpcStructFactory.getProductPageFromXmlRpc(pageHash); - } + Vector<Map<String, Object>> statusVector; + List<FileTransferStatus> statuses = null; - return page; + try { + statusVector = (Vector<Map<String, Object>>) client.execute( + "filemgr.getCurrentFileTransfers", argList); + } catch (XmlRpcException e) { + throw new DataTransferException(e); + } catch (IOException e) { + throw new DataTransferException(e); } - @SuppressWarnings("unchecked") - public ProductPage getPrevPage(ProductType type, ProductPage currPage) - throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - argList.add(XmlRpcStructFactory.getXmlRpcProductType(type)); - argList.add(XmlRpcStructFactory.getXmlRpcProductPage(currPage)); - - ProductPage page = null; - Hashtable<String, Object> pageHash = null; + if (statusVector != null) { + statuses = XmlRpcStructFactory + .getFileTransferStatusesFromXmlRpc(statusVector); + } - try { - pageHash = (Hashtable<String, Object>) client.execute( - "filemgr.getPrevPage", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + return statuses; + } - if (pageHash != null) { - page = XmlRpcStructFactory.getProductPageFromXmlRpc(pageHash); - } + public double getProductPctTransferred(Product product) + throws DataTransferException { + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); + argList.add(productHash); + Double pct; - return page; + try { + pct = (Double) client.execute("filemgr.getProductPctTransferred", + argList); + } catch (XmlRpcException e) { + throw new DataTransferException(e); + } catch (IOException e) { + throw new DataTransferException(e); } - public String addProductType(ProductType type) - throws RepositoryManagerException { - String productTypeId = null; - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> typeHash = XmlRpcStructFactory - .getXmlRpcProductType(type); - argList.add(typeHash); + if (pct != null) { + return pct; + } - try { - productTypeId = (String) client.execute("filemgr.addProductType", - argList); - } catch (XmlRpcException e) { - throw new RepositoryManagerException(e.getMessage()); - } catch (IOException e) { - throw new RepositoryManagerException(e.getMessage()); - } + return -1.0; + } - return productTypeId; + public double getRefPctTransferred(Reference reference) + throws DataTransferException { + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> refHash = XmlRpcStructFactory + .getXmlRpcReference(reference); + argList.add(refHash); + Double pct; + try { + pct = (Double) client.execute("filemgr.getRefPctTransferred", + argList); + } catch (XmlRpcException e) { + throw new DataTransferException(e); + } catch (IOException e) { + throw new DataTransferException(e); } - public boolean hasProduct(String productName) throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - argList.add(productName); + if (pct != null) { + return pct; + } - boolean hasProduct = false; + return -1.0; + } - try { - hasProduct = ((Boolean) client.execute("filemgr.hasProduct", - argList)).booleanValue(); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + @SuppressWarnings("unchecked") + public ProductPage pagedQuery(Query query, ProductType type, int pageNum) + throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> queryHash = XmlRpcStructFactory + .getXmlRpcQuery(query); + Map<String, Object> typeHash = XmlRpcStructFactory + .getXmlRpcProductType(type); + argList.add(queryHash); + argList.add(typeHash); + argList.add(pageNum); - return hasProduct; + Map<String, Object> pageHash; + try { + pageHash = (Map<String, Object>) client.execute( + "filemgr.pagedQuery", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - public int getNumProducts(ProductType type) throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - argList.add(XmlRpcStructFactory.getXmlRpcProductType(type)); + return XmlRpcStructFactory.getProductPageFromXmlRpc(pageHash); + } - Integer numProducts = new Integer(-1); + @SuppressWarnings("unchecked") + public ProductPage getFirstPage(ProductType type) throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + argList.add(XmlRpcStructFactory.getXmlRpcProductType(type)); - try { - numProducts = (Integer) client.execute("filemgr.getNumProducts", - argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + ProductPage page = null; + Map<String, Object> pageHash; - return numProducts.intValue(); + try { + pageHash = (Map<String, Object>) client.execute( + "filemgr.getFirstPage", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - @SuppressWarnings("unchecked") - public List<Product> getTopNProducts(int n) throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - argList.add(new Integer(n)); - - Vector<Hashtable<String, Object>> topNProducts = null; - - try { - topNProducts = (Vector<Hashtable<String, Object>>) client.execute( - "filemgr.getTopNProducts", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } - - List<Product> topNProductList = XmlRpcStructFactory - .getProductListFromXmlRpc(topNProducts); - return topNProductList; + if (pageHash != null) { + page = XmlRpcStructFactory.getProductPageFromXmlRpc(pageHash); } + return page; - @SuppressWarnings("unchecked") - public List<Product> getTopNProducts(int n, ProductType type) - throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - argList.add(new Integer(n)); - Hashtable<String, Object> productTypeHash = XmlRpcStructFactory - .getXmlRpcProductType(type); - argList.add(productTypeHash); + } - Vector<Hashtable<String, Object>> topNProducts = null; + @SuppressWarnings("unchecked") + public ProductPage getLastPage(ProductType type) throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + argList.add(XmlRpcStructFactory.getXmlRpcProductType(type)); - try { - topNProducts = (Vector<Hashtable<String, Object>>) client.execute( - "filemgr.getTopNProducts", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + ProductPage page = null; + Map<String, Object> pageHash; - List<Product> topNProductList = XmlRpcStructFactory - .getProductListFromXmlRpc(topNProducts); - return topNProductList; + try { + pageHash = (Map<String, Object>) client.execute( + "filemgr.getLastPage", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - public void setProductTransferStatus(Product product) - throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - argList.add(productHash); - - try { - client.execute("filemgr.setProductTransferStatus", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } - + if (pageHash != null) { + page = XmlRpcStructFactory.getProductPageFromXmlRpc(pageHash); } - public void addProductReferences(Product product) throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - argList.add(productHash); - - try { - client.execute("filemgr.addProductReferences", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } - } + return page; + } - public void addMetadata(Product product, Metadata metadata) + @SuppressWarnings("unchecked") + public ProductPage getNextPage(ProductType type, ProductPage currPage) throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - argList.add(XmlRpcStructFactory.getXmlRpcProduct(product)); - argList.add(metadata.getHashtable()); + argList.add(XmlRpcStructFactory.getXmlRpcProductType(type)); + argList.add(XmlRpcStructFactory.getXmlRpcProductPage(currPage)); + + ProductPage page = null; + Map<String, Object> pageHash; try { - client.execute("filemgr.addMetadata", argList); + pageHash = (Map<String, Object>) client.execute( + "filemgr.getNextPage", argList); } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); + throw new CatalogException(e); } catch (IOException e) { - throw new CatalogException(e.getMessage()); + throw new CatalogException(e); + } + + if (pageHash != null) { + page = XmlRpcStructFactory.getProductPageFromXmlRpc(pageHash); } + + return page; } - public boolean updateMetadata(Product product, Metadata met) + @SuppressWarnings("unchecked") + public ProductPage getPrevPage(ProductType type, ProductPage currPage) throws CatalogException { Vector<Object> argList = new Vector<Object>(); - argList.add(XmlRpcStructFactory.getXmlRpcProduct(product)); - argList.add(met.getHashtable()); + argList.add(XmlRpcStructFactory.getXmlRpcProductType(type)); + argList.add(XmlRpcStructFactory.getXmlRpcProductPage(currPage)); - boolean result = false; + ProductPage page = null; + Map<String, Object> pageHash; try { - result = (Boolean) client.execute("filemgr.updateMetadata", argList); + pageHash = (Map<String, Object>) client.execute( + "filemgr.getPrevPage", argList); } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); + throw new CatalogException(e); } catch (IOException e) { - throw new CatalogException(e.getMessage()); + throw new CatalogException(e); } - return result; + if (pageHash != null) { + page = XmlRpcStructFactory.getProductPageFromXmlRpc(pageHash); + } + return page; } - public String catalogProduct(Product product) throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - argList.add(XmlRpcStructFactory.getXmlRpcProduct(product)); + public String addProductType(ProductType type) + throws RepositoryManagerException { + String productTypeId; + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> typeHash = XmlRpcStructFactory + .getXmlRpcProductType(type); + argList.add(typeHash); - String productId = null; + try { + productTypeId = (String) client.execute("filemgr.addProductType", + argList); + } catch (XmlRpcException e) { + throw new RepositoryManagerException(e); + } catch (IOException e) { + throw new RepositoryManagerException(e); + } - try { - productId = (String) client.execute("filemgr.catalogProduct", - argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + return productTypeId; - return productId; + } + + public boolean hasProduct(String productName) throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + argList.add(productName); + + boolean hasProduct; + + try { + hasProduct = (Boolean) client.execute("filemgr.hasProduct", + argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - @SuppressWarnings("unchecked") - public Metadata getMetadata(Product product) throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - argList.add(productHash); + return hasProduct; - Hashtable<String, Object> metadata = null; + } - try { - metadata = (Hashtable<String, Object>) client.execute( - "filemgr.getMetadata", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + public int getNumProducts(ProductType type) throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + argList.add(XmlRpcStructFactory.getXmlRpcProductType(type)); - Metadata m = new Metadata(); - m.addMetadata(metadata); - return m; + Integer numProducts; + try { + numProducts = (Integer) client.execute("filemgr.getNumProducts", + argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - @SuppressWarnings({ "unchecked", "rawtypes" }) - public Metadata getReducedMetadata(Product product, List<?> elements) - throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - argList.add(productHash); - argList.add(new Vector(elements)); - - Hashtable<String, Object> metadata = null; + return numProducts; + } - try { - metadata = (Hashtable<String, Object>) client.execute( - "filemgr.getReducedMetadata", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + @SuppressWarnings("unchecked") + public List<Product> getTopNProducts(int n) throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + argList.add(n); - Metadata m = new Metadata(); - m.addMetadata(metadata); - return m; + Vector<Map<String, Object>> topNProducts; + try { + topNProducts = (Vector<Map<String, Object>>) client.execute( + "filemgr.getTopNProducts", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - public boolean removeFile(String filePath) throws DataTransferException { - Vector<Object> argList = new Vector<Object>(); - argList.add(filePath); + return XmlRpcStructFactory + .getProductListFromXmlRpc(topNProducts); + } - boolean success = false; + @SuppressWarnings("unchecked") + public List<Product> getTopNProducts(int n, ProductType type) + throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + argList.add(n); + Map<String, Object> productTypeHash = XmlRpcStructFactory + .getXmlRpcProductType(type); + argList.add(productTypeHash); - try { - success = ((Boolean) client.execute("filemgr.removeFile", argList)) - .booleanValue(); - } catch (XmlRpcException e) { - throw new DataTransferException(e.getMessage()); - } catch (IOException e) { - throw new DataTransferException(e.getMessage()); - } + Vector<Map<String, Object>> topNProducts; - return success; + try { + topNProducts = (Vector<Map<String, Object>>) client.execute( + "filemgr.getTopNProducts", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - public byte[] retrieveFile(String filePath, int offset, int numBytes) - throws DataTransferException { - Vector<Object> argList = new Vector<Object>(); - argList.add(filePath); - argList.add(new Integer(offset)); - argList.add(new Integer(numBytes)); + return XmlRpcStructFactory + .getProductListFromXmlRpc(topNProducts); + } - try { - return (byte[]) client.execute("filemgr.retrieveFile", argList); - } catch (XmlRpcException e) { - throw new DataTransferException(e.getMessage()); - } catch (IOException e) { - throw new DataTransferException(e.getMessage()); - } - } + public void setProductTransferStatus(Product product) + throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); + argList.add(productHash); - public void transferFile(String filePath, byte[] fileData, int offset, - int numBytes) throws DataTransferException { - Vector<Object> argList = new Vector<Object>(); - argList.add(filePath); - argList.add(fileData); - argList.add(new Integer(offset)); - argList.add(new Integer(numBytes)); + try { + client.execute("filemgr.setProductTransferStatus", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); + } - try { - client.execute("filemgr.transferFile", argList); - } catch (XmlRpcException e) { - throw new DataTransferException(e.getMessage()); - } catch (IOException e) { - throw new DataTransferException(e.getMessage()); - } + } + + public void addProductReferences(Product product) throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); + argList.add(productHash); + + try { + client.execute("filemgr.addProductReferences", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } + } - @SuppressWarnings("unchecked") - public List<Product> getProductsByProductType(ProductType type) - throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> productTypeHash = XmlRpcStructFactory - .getXmlRpcProductType(type); - argList.add(productTypeHash); + public void addMetadata(Product product, Metadata metadata) + throws CatalogException { - Vector<Hashtable<String, Object>> productVector = null; + Vector<Object> argList = new Vector<Object>(); + argList.add(XmlRpcStructFactory.getXmlRpcProduct(product)); + argList.add(metadata.getHashTable()); - try { - productVector = (Vector<Hashtable<String, Object>>) client.execute( - "filemgr.getProductsByProductType", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + try { + client.execute("filemgr.addMetadata", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); + } + } - if (productVector == null) { - return null; - } else { - return XmlRpcStructFactory.getProductListFromXmlRpc(productVector); - } + public boolean updateMetadata(Product product, Metadata met) + throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + argList.add(XmlRpcStructFactory.getXmlRpcProduct(product)); + argList.add(met.getHashTable()); + + boolean result; + + try { + result = (Boolean) client.execute("filemgr.updateMetadata", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - @SuppressWarnings("unchecked") - public List<Element> getElementsByProductType(ProductType type) - throws ValidationLayerException { - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> productTypeHash = XmlRpcStructFactory - .getXmlRpcProductType(type); + return result; - argList.add(productTypeHash); + } - Vector<Hashtable<String, Object>> elementVector = null; + public String catalogProduct(Product product) throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + argList.add(XmlRpcStructFactory.getXmlRpcProduct(product)); - try { - elementVector = (Vector<Hashtable<String, Object>>) client.execute( - "filemgr.getElementsByProductType", argList); - } catch (XmlRpcException e) { - throw new ValidationLayerException(e.getMessage()); - } catch (IOException e) { - throw new ValidationLayerException(e.getMessage()); - } + String productId; - if (elementVector == null) { - return null; - } else { - return XmlRpcStructFactory.getElementListFromXmlRpc(elementVector); - } + try { + productId = (String) client.execute("filemgr.catalogProduct", + argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - @SuppressWarnings("unchecked") - public Element getElementById(String elementId) - throws ValidationLayerException { - Vector<Object> argList = new Vector<Object>(); - argList.add(elementId); + return productId; + } - Hashtable<String, Object> elementHash = null; + @SuppressWarnings("unchecked") + public Metadata getMetadata(Product product) throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); + argList.add(productHash); - try { - elementHash = (Hashtable<String, Object>) client.execute( - "filemgr.getElementById", argList); - } catch (XmlRpcException e) { - throw new ValidationLayerException(e.getMessage()); - } catch (IOException e) { - throw new ValidationLayerException(e.getMessage()); - } + Map<String, Object> metadata; - if (elementHash == null) { - return null; - } else { - return XmlRpcStructFactory.getElementFromXmlRpc(elementHash); - } + try { + metadata = (Map<String, Object>) client.execute( + "filemgr.getMetadata", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - @SuppressWarnings("unchecked") - public Element getElementByName(String elementName) - throws ValidationLayerException { - Vector<Object> argList = new Vector<Object>(); - argList.add(elementName); + Metadata m = new Metadata(); + m.addMetadata(metadata); + return m; - Hashtable<String, Object> elementHash = null; + } - try { - elementHash = (Hashtable<String, Object>) client.execute( - "filemgr.getElementByName", argList); - } catch (XmlRpcException e) { - throw new ValidationLayerException(e.getMessage()); - } catch (IOException e) { - throw new ValidationLayerException(e.getMessage()); - } + @SuppressWarnings({ "unchecked", "rawtypes" }) + public Metadata getReducedMetadata(Product product, List<?> elements) + throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); + argList.add(productHash); + argList.add(new Vector(elements)); - if (elementHash == null) { - return null; - } else { - return XmlRpcStructFactory.getElementFromXmlRpc(elementHash); - } + Map<String, Object> metadata; + + try { + metadata = (Map<String, Object>) client.execute( + "filemgr.getReducedMetadata", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - public List<QueryResult> complexQuery(ComplexQuery complexQuery) - throws CatalogException { - try { - Hashtable<String, Object> complexQueryHash = XmlRpcStructFactory - .getXmlRpcComplexQuery(complexQuery); - Vector<Object> argList = new Vector<Object>(); - argList.add(complexQueryHash); - @SuppressWarnings("unchecked") - Vector<Hashtable<String, Object>> queryResultHashVector = (Vector<Hashtable<String, Object>>) client - .execute("filemgr.complexQuery", argList); - return XmlRpcStructFactory - .getQueryResultsFromXmlRpc(queryResultHashVector); - } catch (Exception e) { - e.printStackTrace(); - throw new CatalogException(e.getMessage()); - } + Metadata m = new Metadata(); + m.addMetadata(metadata); + return m; + + } + + public boolean removeFile(String filePath) throws DataTransferException { + Vector<Object> argList = new Vector<Object>(); + argList.add(filePath); + + boolean success; + + try { + success = (Boolean) client.execute("filemgr.removeFile", argList); + } catch (XmlRpcException e) { + throw new DataTransferException(e); + } catch (IOException e) { + throw new DataTransferException(e); } - @SuppressWarnings("unchecked") - public List<Product> query(Query query, ProductType type) - throws CatalogException { - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> queryHash = XmlRpcStructFactory - .getXmlRpcQuery(query); - Hashtable<String, Object> typeHash = XmlRpcStructFactory - .getXmlRpcProductType(type); - argList.add(queryHash); - argList.add(typeHash); + return success; + } - Vector<Hashtable<String, Object>> productVector = null; + public byte[] retrieveFile(String filePath, int offset, int numBytes) + throws DataTransferException { + Vector<Object> argList = new Vector<Object>(); + argList.add(filePath); + argList.add(offset); + argList.add(numBytes); - try { - productVector = (Vector<Hashtable<String, Object>>) client.execute( - "filemgr.query", argList); - } catch (XmlRpcException e) { - e.printStackTrace(); - throw new CatalogException(e.getMessage()); - - } catch (IOException e) { - e.printStackTrace(); - throw new CatalogException(e.getMessage()); - } + try { + return (byte[]) client.execute("filemgr.retrieveFile", argList); + } catch (XmlRpcException e) { + throw new DataTransferException(e); + } catch (IOException e) { + throw new DataTransferException(e); + } + } - if (productVector == null) { - return null; - } else { - return XmlRpcStructFactory.getProductListFromXmlRpc(productVector); - } + public void transferFile(String filePath, byte[] fileData, int offset, + int numBytes) throws DataTransferException { + Vector<Object> argList = new Vector<Object>(); + argList.add(filePath); + argList.add(fileData); + argList.add(offset); + argList.add(numBytes); + + try { + client.execute("filemgr.transferFile", argList); + } catch (XmlRpcException e) { + throw new DataTransferException(e); + } catch (IOException e) { + throw new DataTransferException(e); } + } - @SuppressWarnings("unchecked") - public ProductType getProductTypeByName(String productTypeName) - throws RepositoryManagerException { - Hashtable<String, Object> productTypeHash = new Hashtable<String, Object>(); - Vector<Object> argList = new Vector<Object>(); - argList.add(productTypeName); + @SuppressWarnings("unchecked") + public List<Product> getProductsByProductType(ProductType type) + throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> productTypeHash = XmlRpcStructFactory + .getXmlRpcProductType(type); + argList.add(productTypeHash); - try { - productTypeHash = (Hashtable<String, Object>) client.execute( - "filemgr.getProductTypeByName", argList); - } catch (XmlRpcException e) { - throw new RepositoryManagerException(e.getLocalizedMessage()); - } catch (IOException e) { - throw new RepositoryManagerException(e.getMessage()); - } + Vector<Map<String, Object>> productVector; - if (productTypeHash == null) { - return null; - } else - return XmlRpcStructFactory - .getProductTypeFromXmlRpc(productTypeHash); + try { + productVector = (Vector<Map<String, Object>>) client.execute( + "filemgr.getProductsByProductType", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - @SuppressWarnings("unchecked") - public ProductType getProductTypeById(String productTypeId) - throws RepositoryManagerException { - Hashtable<String, Object> productTypeHash = new Hashtable<String, Object>(); - Vector<Object> argList = new Vector<Object>(); - argList.add(productTypeId); + if (productVector == null) { + return null; + } else { + return XmlRpcStructFactory.getProductListFromXmlRpc(productVector); + } + } - try { - productTypeHash = (Hashtable<String, Object>) client.execute( - "filemgr.getProductTypeById", argList); - } catch (XmlRpcException e) { - throw new RepositoryManagerException(e.getMessage()); - } catch (IOException e) { - throw new RepositoryManagerException(e.getMessage()); - } + @SuppressWarnings("unchecked") + public List<Element> getElementsByProductType(ProductType type) + throws ValidationLayerException { + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> productTypeHash = XmlRpcStructFactory + .getXmlRpcProductType(type); - if (productTypeHash == null) { - return null; - } else - return XmlRpcStructFactory - .getProductTypeFromXmlRpc(productTypeHash); + argList.add(productTypeHash); + + Vector<Map<String, Object>> elementVector; + + try { + elementVector = (Vector<Map<String, Object>>) client.execute( + "filemgr.getElementsByProductType", argList); + } catch (XmlRpcException e) { + throw new ValidationLayerException(e); + } catch (IOException e) { + throw new ValidationLayerException(e); } - @SuppressWarnings("unchecked") - public List<ProductType> getProductTypes() - throws RepositoryManagerException { - Vector<Object> argList = new Vector<Object>(); + if (elementVector == null) { + return null; + } else { + return XmlRpcStructFactory.getElementListFromXmlRpc(elementVector); + } + } - Vector<Hashtable<String, Object>> productTypeVector = null; + @SuppressWarnings("unchecked") + public Element getElementById(String elementId) + throws ValidationLayerException { + Vector<Object> argList = new Vector<Object>(); + argList.add(elementId); - try { - productTypeVector = (Vector<Hashtable<String, Object>>) client - .execute("filemgr.getProductTypes", argList); - } catch (XmlRpcException e) { - throw new RepositoryManagerException(e.getMessage()); - } catch (IOException e) { - throw new RepositoryManagerException(e.getMessage()); - } + Hashtable<String, Object> elementHash; - if (productTypeVector == null) { - return null; - } else { - return XmlRpcStructFactory - .getProductTypeListFromXmlRpc(productTypeVector); - } + try { + elementHash = (Hashtable<String, Object>) client.execute( + "filemgr.getElementById", argList); + } catch (XmlRpcException e) { + throw new ValidationLayerException(e); + } catch (IOException e) { + throw new ValidationLayerException(e); } - @SuppressWarnings("unchecked") - public List<Reference> getProductReferences(Product product) - throws CatalogException { - Vector<Object> argList = new Vector<Object>(); + if (elementHash == null) { + return null; + } else { + return XmlRpcStructFactory.getElementFromXmlRpc(elementHash); + } + } - Vector<Hashtable<String, Object>> productReferenceVector = null; - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - argList.add(productHash); + @SuppressWarnings("unchecked") + public Element getElementByName(String elementName) + throws ValidationLayerException { + Vector<Object> argList = new Vector<Object>(); + argList.add(elementName); - try { - productReferenceVector = (Vector<Hashtable<String, Object>>) client - .execute("filemgr.getProductReferences", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + Hashtable<String, Object> elementHash; - if (productReferenceVector == null) { - return null; - } else { - return XmlRpcStructFactory - .getReferencesFromXmlRpc(productReferenceVector); - } + try { + elementHash = (Hashtable<String, Object>) client.execute( + "filemgr.getElementByName", argList); + } catch (XmlRpcException e) { + throw new ValidationLayerException(e); + } catch (IOException e) { + throw new ValidationLayerException(e); } - @SuppressWarnings("unchecked") - public Product getProductById(String productId) throws CatalogException { - Vector<Object> argList = new Vector<Object>(); + if (elementHash == null) { + return null; + } else { + return XmlRpcStructFactory.getElementFromXmlRpc(elementHash); + } + } - Hashtable<String, Object> productHash = null; - argList.add(productId); + @SuppressWarnings("unchecked") + public Element getElementByName(String elementName, ProductType type) + throws ValidationLayerException { + Vector<Object> argList = new Vector<Object>(); + argList.add(elementName); + argList.add(XmlRpcStructFactory.getXmlRpcProductType(type)); - try { - productHash = (Hashtable<String, Object>) client.execute( - "filemgr.getProductById", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + Hashtable<String, Object> elementHash; - if (productHash == null) { - return null; - } else { - return XmlRpcStructFactory.getProductFromXmlRpc(productHash); - } + try { + elementHash = (Hashtable<String, Object>) client.execute( + "filemgr.getElementByName", argList); + } catch (XmlRpcException e) { + throw new ValidationLayerException(e); + } catch (IOException e) { + throw new ValidationLayerException(e); } - @SuppressWarnings("unchecked") - public Product getProductByName(String productName) throws CatalogException { - Vector<Object> argList = new Vector<Object>(); + if (elementHash == null) { + return null; + } else { + return XmlRpcStructFactory.getElementFromXmlRpc(elementHash); + } + } - Hashtable<String, Object> productHash = null; - argList.add(productName); + public List<QueryResult> complexQuery(ComplexQuery complexQuery) + throws CatalogException { + try { + Map<String, Object> complexQueryHash = XmlRpcStructFactory + .getXmlRpcComplexQuery(complexQuery); + Vector<Object> argList = new Vector<Object>(); + argList.add(complexQueryHash); + @SuppressWarnings("unchecked") + Vector<Map<String, Object>> queryResultHashVector = (Vector<Map<String, Object>>) client + .execute("filemgr.complexQuery", argList); + return XmlRpcStructFactory + .getQueryResultsFromXmlRpc(queryResultHashVector); + } catch (Exception e) { + LOG.log(Level.SEVERE, e.getMessage()); + throw new CatalogException(e); + } + } - try { - productHash = (Hashtable<String, Object>) client.execute( - "filemgr.getProductByName", argList); - } catch (XmlRpcException e) { - throw new CatalogException(e.getMessage()); - } catch (IOException e) { - throw new CatalogException(e.getMessage()); - } + @SuppressWarnings("unchecked") + public List<Product> query(Query query, ProductType type) + throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> queryHash = XmlRpcStructFactory + .getXmlRpcQuery(query); + Map<String, Object> typeHash = XmlRpcStructFactory + .getXmlRpcProductType(type); + argList.add(queryHash); + argList.add(typeHash); - if (productHash == null) { - return null; - } else { - return XmlRpcStructFactory.getProductFromXmlRpc(productHash); - } + Vector<Map<String, Object>> productVector; + + try { + productVector = (Vector<Map<String, Object>>) client.execute( + "filemgr.query", argList); + } catch (XmlRpcException e) { + LOG.log(Level.SEVERE, e.getMessage()); + throw new CatalogException(e); + + } catch (IOException e) { + LOG.log(Level.SEVERE, e.getMessage()); + throw new CatalogException(e); } - public String ingestProduct(Product product, Metadata metadata, - boolean clientTransfer) throws Exception { - try { - // ingest product - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - argList.add(productHash); - argList.add(metadata.getHashtable()); - argList.add(Boolean.valueOf(clientTransfer)); - String productId = (String) client.execute("filemgr.ingestProduct", - argList); - - if (clientTransfer) { - LOG.log(Level.FINEST, - "File Manager Client: clientTransfer enabled: " - + "transfering product [" - + product.getProductName() + "]"); - - // we need to transfer the product ourselves - // make sure we have the product ID - if (productId == null) { - throw new Exception("Request to ingest product: " - + product.getProductName() - + " but no product ID returned from File " - + "Manager ingest"); - } + if (productVector == null) { + return null; + } else { + return XmlRpcStructFactory.getProductListFromXmlRpc(productVector); + } + } - if (dataTransfer == null) { - throw new Exception("Request to ingest product: [" - + product.getProductName() - + "] using client transfer, but no " - + "dataTransferer specified!"); - } + @SuppressWarnings("unchecked") + public ProductType getProductTypeByName(String productTypeName) + throws RepositoryManagerException { + Hashtable<String, Object> productTypeHash; + Vector<Object> argList = new Vector<Object>(); + argList.add(productTypeName); - product.setProductId(productId); + try { + productTypeHash = (Hashtable<String, Object>) client.execute( + "filemgr.getProductTypeByName", argList); + } catch (XmlRpcException e) { + throw new RepositoryManagerException(e.getLocalizedMessage()); + } catch (IOException e) { + throw new RepositoryManagerException(e); + } - if (!Boolean.getBoolean("org.apache.oodt.cas.filemgr.serverside.versioning")) { - // version the product - Versioner versioner = GenericFileManagerObjectFactory - .getVersionerFromClassName(product.getProductType() - .getVersioner()); - versioner.createDataStoreReferences(product, metadata); - - // add the newly versioned references to the data store - try { - addProductReferences(product); - } catch (CatalogException e) { - LOG - .log( - Level.SEVERE, - "ingestProduct: RepositoryManagerException " - + "when adding Product References for Product : " - + product.getProductName() - + " to RepositoryManager: Message: " - + e.getMessage()); - throw e; - } - } else { - product.setProductReferences(getProductReferences(product)); - } - - // now transfer the product - try { - dataTransfer.transferProduct(product); - // now update the product's transfer status in the data - // store - product.setTransferStatus(Product.STATUS_RECEIVED); - - try { - setProductTransferStatus(product); - } catch (CatalogException e) { - LOG - .log( - Level.SEVERE, - "ingestProduct: RepositoryManagerException " - + "when updating product transfer status for Product: " - + product.getProductName() - + " Message: " + e.getMessage()); - throw e; - } - } catch (Exception e) { - LOG.log(Level.SEVERE, - "ingestProduct: DataTransferException when transfering Product: " - + product.getProductName() + ": Message: " - + e.getMessage()); - throw new DataTransferException(e); - } + if (productTypeHash == null) { + return null; + } else { + return XmlRpcStructFactory + .getProductTypeFromXmlRpc(productTypeHash); + } + } - } - return productId; - - // error versioning file - } catch (VersioningException e) { - e.printStackTrace(); - LOG.log(Level.SEVERE, - "ingestProduct: VersioningException when versioning Product: " - + product.getProductName() + " with Versioner " - + product.getProductType().getVersioner() - + ": Message: " + e.getMessage()); - throw new VersioningException(e); - } catch (Exception e) { - e.printStackTrace(); - LOG.log(Level.SEVERE, "Failed to ingest product [" + product - + "] : " + e.getMessage() + " -- rolling back ingest"); - try { - Vector<Object> argList = new Vector<Object>(); - Hashtable<String, Object> productHash = XmlRpcStructFactory - .getXmlRpcProduct(product); - argList.add(productHash); - client.execute("filemgr.removeProduct", argList); - } catch (Exception e1) { - LOG.log(Level.SEVERE, "Failed to rollback ingest of product [" - + product + "] : " + e.getMessage()); - } - throw new Exception("Failed to ingest product [" + product + "] : " - + e.getMessage()); - } + @SuppressWarnings("unchecked") + public ProductType getProductTypeById(String productTypeId) + throws RepositoryManagerException { + Hashtable<String, Object> productTypeHash; + Vector<Object> argList = new Vector<Object>(); + argList.add(productTypeId); + try { + productTypeHash = (Hashtable<String, Object>) client.execute( + "filemgr.getProductTypeById", argList); + } catch (XmlRpcException e) { + throw new RepositoryManagerException(e); + } catch (IOException e) { + throw new RepositoryManagerException(e); } - @SuppressWarnings("unchecked") - public Metadata getCatalogValues(Metadata metadata, ProductType productType) - throws XmlRpcException, IOException { - Vector<Object> args = new Vector<Object>(); - args.add(metadata.getHashtable()); - args.add(XmlRpcStructFactory.getXmlRpcProductType(productType)); + if (productTypeHash == null) { + return null; + } else { + return XmlRpcStructFactory + .getProductTypeFromXmlRpc(productTypeHash); + } + } - Metadata m = new Metadata(); - m.addMetadata((Hashtable<String, Object>) this.client.execute( - "filemgr.getCatalogValues", args)); + @SuppressWarnings("unchecked") + public List<ProductType> getProductTypes() + throws RepositoryManagerException { + Vector<Object> argList = new Vector<Object>(); + + Vector<Map<String, Object>> productTypeVector; - return m; + try { + productTypeVector = (Vector<Map<String, Object>>) client + .execute("filemgr.getProductTypes", argList); + } catch (XmlRpcException e) { + throw new RepositoryManagerException(e); + } catch (IOException e) { + throw new RepositoryManagerException(e); } - @SuppressWarnings("unchecked") - public Metadata getOrigValues(Metadata metadata, ProductType productType) - throws XmlRpcException, IOException { - Vector<Object> args = new Vector<Object>(); - args.add(metadata.getHashtable()); - args.add(XmlRpcStructFactory.getXmlRpcProductType(productType)); + if (productTypeVector == null) { + return null; + } else { + return XmlRpcStructFactory + .getProductTypeListFromXmlRpc(productTypeVector); + } + } + + @SuppressWarnings("unchecked") + public List<Reference> getProductReferences(Product product) + throws CatalogException { + Vector<Object> argList = new Vector<Object>(); - Metadata m = new Metadata(); - m.addMetadata((Hashtable<String, Object>) this.client.execute( - "filemgr.getOrigValues", args)); + Vector<Map<String, Object>> productReferenceVector; + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); + argList.add(productHash); - return m; + try { + productReferenceVector = (Vector<Map<String, Object>>) client + .execute("filemgr.getProductReferences", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - @SuppressWarnings("unchecked") - public Query getCatalogQuery(Query query, ProductType productType) - throws XmlRpcException, IOException { - Vector<Object> args = new Vector<Object>(); - args.add(XmlRpcStructFactory.getXmlRpcQuery(query)); - args.add(XmlRpcStructFactory.getXmlRpcProductType(productType)); - return XmlRpcStructFactory - .getQueryFromXmlRpc((Hashtable<String, Object>) this.client - .execute("filemgr.getCatalogQuery", args)); + if (productReferenceVector == null) { + return null; + } else { + return XmlRpcStructFactory + .getReferencesFromXmlRpc(productReferenceVector); } - /** - * @return Returns the fileManagerUrl. - */ - public URL getFileManagerUrl() { - return fileManagerUrl; + } + + @SuppressWarnings("unchecked") + public Product getProductById(String productId) throws CatalogException { + Vector<Object> argList = new Vector<Object>(); + + Map<String, Object> productHash; + argList.add(productId); + + try { + productHash = (Map<String, Object>) client.execute( + "filemgr.getProductById", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); + } + + if (productHash == null) { + return null; + } else { + return XmlRpcStructFactory.getProductFromXmlRpc(productHash); } + } + + @SuppressWarnings("unchecked") + public Product getProductByName(String productName) throws CatalogException { + Vector<Object> argList = new Vector<Object>(); - /** - * @param fileManagerUrl - * The fileManagerUrl to set. - */ - public void setFileManagerUrl(URL fileManagerUrl) { - this.fileManagerUrl = fileManagerUrl; + Map<String, Object> productHash; + argList.add(productName); - // reset the client - this.client = new XmlRpcClient(fileManagerUrl); + try { + productHash = (Map<String, Object>) client.execute( + "filemgr.getProductByName", argList); + } catch (XmlRpcException e) { + throw new CatalogException(e); + } catch (IOException e) { + throw new CatalogException(e); } - /** - * @return Returns the dataTransfer. - */ - public DataTransfer getDataTransfer() { - return dataTransfer; + if (productHash == null) { + return null; + } else { + return XmlRpcStructFactory.getProductFromXmlRpc(productHash); } + } - /** - * @param dataTransfer - * The dataTransfer to set. - */ - public void setDataTransfer(DataTransfer dataTransfer) { - this.dataTransfer = dataTransfer; - this.dataTransfer.setFileManagerUrl(this.fileManagerUrl); + public String ingestProduct(Product product, Metadata metadata, + boolean clientTransfer) + throws VersioningException, XmlRpcException, FileManagerException { + try { + // ingest product + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); + argList.add(productHash); + argList.add(metadata.getHashTable()); + argList.add(clientTransfer); + String productId = (String) client.execute("filemgr.ingestProduct", + argList); + + if (clientTransfer) { + LOG.log(Level.FINEST, + "File Manager Client: clientTransfer enabled: " + + "transfering product [" + + product.getProductName() + "]"); + + // we need to transfer the product ourselves + // make sure we have the product ID + if (productId == null) { + throw new Exception("Request to ingest product: " + + product.getProductName() + + " but no product ID returned from File " + + "Manager ingest"); + } + + if (dataTransfer == null) { + throw new Exception("Request to ingest product: [" + + product.getProductName() + + "] using client transfer, but no " + + "dataTransferer specified!"); + } + + product.setProductId(productId); + + if (!Boolean.getBoolean("org.apache.oodt.cas.filemgr.serverside.versioning")) { + // version the product + Versioner versioner = GenericFileManagerObjectFactory + .getVersionerFromClassName(product.getProductType() + .getVersioner()); + if (versioner != null) { + versioner.createDataStoreReferences(product, metadata); + } + + // add the newly versioned references to the data store + try { + addProductReferences(product); + } catch (CatalogException e) { + LOG + .log( + Level.SEVERE, + "ingestProduct: RepositoryManagerException " + + "when adding Product References for Product : " + + product.getProductName() + + " to RepositoryManager: Message: " + + e); + throw e; + } + } else { + product.setProductReferences(getProductReferences(product)); + } + + // now transfer the product + try { + dataTransfer.transferProduct(product); + // now update the product's transfer status in the data + // store + product.setTransferStatus(Product.STATUS_RECEIVED); + + try { + setProductTransferStatus(product); + } catch (CatalogException e) { + LOG + .log( + Level.SEVERE, + "ingestProduct: RepositoryManagerException " + + "when updating product transfer status for Product: " + + product.getProductName() + + " Message: " + e); + throw e; + } + } catch (Exception e) { + LOG.log(Level.SEVERE, + "ingestProduct: DataTransferException when transfering Product: " + + product.getProductName() + ": Message: " + + e); + throw new DataTransferException(e); + } + + } + return productId; + + // error versioning file + } catch (VersioningException e) { + LOG.log(Level.SEVERE, e.getMessage()); + LOG.log(Level.SEVERE, + "ingestProduct: VersioningException when versioning Product: " + + product.getProductName() + " with Versioner " + + product.getProductType().getVersioner() + + ": Message: " + e); + throw new VersioningException(e); + } catch (XmlRpcException e2) { + LOG.log(Level.SEVERE, "Failed to ingest product [ name:" + product.getProductName() + "] :" + e2.getMessage() + + " -- rolling back ingest"); + try { + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); + argList.add(productHash); + client.execute("filemgr.removeProduct", argList); + } catch (Exception e1) { + LOG.log(Level.SEVERE, "Failed to rollback ingest of product [" + + product + "] : " + e2.getMessage()); + } + throw e2; + } catch (Exception e) { + LOG.log(Level.SEVERE, "Failed to ingest product [ id: " + product.getProductId() + + "/ name:" + product.getProductName() + "] :" + e + " -- rolling back ingest"); + try { + Vector<Object> argList = new Vector<Object>(); + Map<String, Object> productHash = XmlRpcStructFactory + .getXmlRpcProduct(product); + argList.add(productHash); + client.execute("filemgr.removeProduct", argList); + } catch (Exception e1) { + LOG.log(Level.SEVERE, "Failed to rollback ingest of product [" + + product + "] : " + e); + } + throw new FileManagerException("Failed to ingest product [" + product + "] : " + + e); } + } + + @SuppressWarnings("unchecked") + public Metadata getCatalogValues(Metadata metadata, ProductType productType) + throws XmlRpcException, IOException { + Vector<Object> args = new Vector<Object>(); + args.add(metadata.getHashTable()); + args.add(XmlRpcStructFactory.getXmlRpcProductType(productType)); + + Metadata m = new Metadata(); + m.addMetadata((Map<String, Object>) this.client.execute( + "filemgr.getCatalogValues", args)); + + return m; + } + + @SuppressWarnings("unchecked") + public Metadata getOrigValues(Metadata metadata, ProductType productType) + throws XmlRpcException, IOException { + Vector<Object> args = new Vector<Object>(); + args.add(metadata.getHashTable()); + args.add(XmlRpcStructFactory.getXmlRpcProductType(productType)); + + Metadata m = new Metadata(); + m.addMetadata((Map<String, Object>) this.client.execute( + "filemgr.getOrigValues", args)); + + return m; + } + + @SuppressWarnings("unchecked") + public Query getCatalogQuery(Query query, ProductType productType) + throws XmlRpcException, IOException { + Vector<Object> args = new Vector<Object>(); + args.add(XmlRpcStructFactory.getXmlRpcQuery(query)); + args.add(XmlRpcStructFactory.getXmlRpcProductType(productType)); + return XmlRpcStructFactory + .getQueryFromXmlRpc((Hashtable<String, Object>) this.client + .execute("filemgr.getCatalogQuery", args)); + } + + public static void main(String[] args) { + CmdLineUtility cmdLineUtility = new CmdLineUtility(); + cmdLineUtility.run(args); + } + + /** + * @return Returns t
<TRUNCATED>
